Kalkulacka
1.0.0
Jednoduchýkalkulátor
|
#include <LexicalAnalyzer.h>
Veřejné metody | |
void | pushSymbol (char symbol) |
void | registrLexCallback (LexIdentificationObserver *lexCallbackObject) |
void | processNumberSymbol (char symbol) |
bool | isNumberSymbol (char symbol) const |
void | clear () |
void | processOperator (char symbol) |
Privátní typy | |
enum | State { Number, Operator, Init } |
Privátní metody | |
void | sendLex (Lex lex) |
Lex | getCharLex (char c) |
Math::Number | savedToNumber () |
Privátní atributy | |
State | state = Init |
std::set< LexIdentificationObserver * > | lexCallbackObjects |
std::string | saved = "" |
Třída sloužící k lexikální analyze vstupů přebírá znaky pomocí fce pushSymbol() a ve chvíli identifikace lexému předá tento interpretu a pokud byl registrovaný volá callback kterému tento lexém předá.
Definice je uvedena na řádku 26 v souboru LexicalAnalyzer.h.
|
private |
Hodnoty výčtu | |
---|---|
Number | |
Operator | |
Init |
Definice je uvedena na řádku 28 v souboru LexicalAnalyzer.h.
void team22::Calc::LexicalAnalyzer::clear | ( | ) |
Vyresetuje lexikální analyzátor
Definice je uvedena na řádku 167 v souboru LexicalAnalyzer.cpp.
Odkazuje se na Init, saved a state.
Používá se v processNumberSymbol(), processOperator() a pushSymbol().
|
private |
Vrací lexém daného znaku
c | znak nebo číslice k převodu na lexém |
Definice je uvedena na řádku 19 v souboru LexicalAnalyzer.cpp.
Odkazuje se na team22::Calc::Lex::ADD, team22::Calc::Lex::CLEAR, team22::Calc::Lex::DIV, team22::Calc::Lex::EVAL, team22::Calc::Lex::EXP, team22::Calc::Lex::FACTORIAL, team22::Calc::Lex::MOD, team22::Calc::Lex::MUL a team22::Calc::Lex::SUB.
Používá se v pushSymbol().
bool team22::Calc::LexicalAnalyzer::isNumberSymbol | ( | char | symbol | ) | const |
Jedná se o symbol tvořící číslo tedy číslice, . nebo i
symbol |
Definice je uvedena na řádku 138 v souboru LexicalAnalyzer.cpp.
Používá se v pushSymbol().
void team22::Calc::LexicalAnalyzer::processNumberSymbol | ( | char | symbol | ) |
Zpracuje uložený řetězec saved a vrátí jej jako číslo
symbol |
Definice je uvedena na řádku 148 v souboru LexicalAnalyzer.cpp.
Odkazuje se na clear(), Init, Number, saved, savedToNumber(), sendLex() a state.
Používá se v pushSymbol().
void team22::Calc::LexicalAnalyzer::processOperator | ( | char | symbol | ) |
Zpracuje výceznakový operátor
symbol |
Definice je uvedena na řádku 80 v souboru LexicalAnalyzer.cpp.
Odkazuje se na team22::Calc::Lex::BS, clear(), team22::Calc::Lex::NEG, Operator, team22::Calc::Lex::ROOT, saved, sendLex() a state.
Používá se v pushSymbol().
void team22::Calc::LexicalAnalyzer::pushSymbol | ( | char | symbol | ) |
Předá znak k analýze
symbol | symbol abecedy přijímané lexikálním analyzátorem |
LexicalAnalyserException |
Definice je uvedena na řádku 61 v souboru LexicalAnalyzer.cpp.
Odkazuje se na clear(), getCharLex(), isNumberSymbol(), Number, processNumberSymbol(), processOperator(), savedToNumber(), sendLex() a state.
Používá se v team22::Calc::Equation::backSpace() a team22::Calc::Equation::pushSymbol().
void team22::Calc::LexicalAnalyzer::registrLexCallback | ( | LexIdentificationObserver * | lexCallbackObject | ) |
Registruje objekt k odběru rozeznaných lexémů vícenásobná registrace stejné instance odběratele neprovede nic
lexCallbackObject | objekt na němž |
Definice je uvedena na řádku 143 v souboru LexicalAnalyzer.cpp.
Odkazuje se na lexCallbackObjects.
Používá se v team22::Test::Backend::BackendTester::BackendTester(), team22::Calc::Equation::Equation(), team22::Test::lexicalAnalyzer::LexicalAnalyzerTestBase::LexicalAnalyzerTestBase() a SignalManager::SignalManager().
|
private |
Vrací číslo typu double převedené z textového řetězce
s | textový řetězec pro převod |
Definice je uvedena na řádku 45 v souboru LexicalAnalyzer.cpp.
Odkazuje se na saved.
Používá se v processNumberSymbol() a pushSymbol().
|
private |
Předá lexém všem registrovaným objektům
lex | lexém k předání |
Definice je uvedena na řádku 13 v souboru LexicalAnalyzer.cpp.
Odkazuje se na lexCallbackObjects.
Používá se v processNumberSymbol(), processOperator() a pushSymbol().
|
private |
Množina Objektů na nichž bude volán callback při rozeznání lexemů
Definice je uvedena na řádku 39 v souboru LexicalAnalyzer.h.
Používá se v registrLexCallback() a sendLex().
|
private |
Řetězec, který obsahuje znaky, které ještě nebyly rozeznány jako lexém
Definice je uvedena na řádku 44 v souboru LexicalAnalyzer.h.
Používá se v clear(), processNumberSymbol(), processOperator() a savedToNumber().
Definice je uvedena na řádku 34 v souboru LexicalAnalyzer.h.
Používá se v clear(), processNumberSymbol(), processOperator() a pushSymbol().