Kalkulacka  1.0.0
Jednoduchýkalkulátor
Dokumentace třídy team22::Calc::LexicalAnalyzer

#include <LexicalAnalyzer.h>

Diagram tříd pro team22::Calc::LexicalAnalyzer:
Collaboration graph

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 = ""
 

Detailní popis

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.

Dokumentace k členským výčtům

Hodnoty výčtu
Number 
Operator 
Init 

Definice je uvedena na řádku 28 v souboru LexicalAnalyzer.h.

Dokumentace k metodám

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().

Lex team22::Calc::LexicalAnalyzer::getCharLex ( char  c)
private

Vrací lexém daného znaku

Parametry
cznak 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

Parametry
symbol
Návratová hodnota

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

Parametry
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

Parametry
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

Parametry
symbolsymbol abecedy přijímané lexikálním analyzátorem
Výjimky
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

Parametry
lexCallbackObjectobjekt 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().

Math::Number team22::Calc::LexicalAnalyzer::savedToNumber ( )
private

Vrací číslo typu double převedené z textového řetězce

Parametry
stextový ř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().

void team22::Calc::LexicalAnalyzer::sendLex ( Lex  lex)
private

Předá lexém všem registrovaným objektům

Parametry
lexlexé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().

Dokumentace k datovým členům

std::set<LexIdentificationObserver *> team22::Calc::LexicalAnalyzer::lexCallbackObjects
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().

std::string team22::Calc::LexicalAnalyzer::saved = ""
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().

State team22::Calc::LexicalAnalyzer::state = Init
private

Definice je uvedena na řádku 34 v souboru LexicalAnalyzer.h.

Používá se v clear(), processNumberSymbol(), processOperator() a pushSymbol().


Dokumentace pro tuto třídu byla generována z následujících souborů: