summaryrefslogtreecommitdiffhomepage
path: root/lexer.h
diff options
context:
space:
mode:
Diffstat (limited to 'lexer.h')
-rw-r--r--lexer.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/lexer.h b/lexer.h
index a033cbc..aa724bb 100644
--- a/lexer.h
+++ b/lexer.h
@@ -18,23 +18,23 @@ class Lexer
// Graph
size_t states{}; // start, ...
- std::unordered_map<size_t, std::vector<std::pair<size_t, char>>> transitions; //transitions: state -> {state,character}, ...; empty transition is marked by \0
- std::vector<std::string> m_state_types;
+ std::unordered_map<size_t, std::vector<std::pair<size_t, char>>> transitions; // transitions: state -> {state,character}, ...; empty transition is marked by \0
+ std::unordered_map<size_t, std::string> m_state_types; // only necessary for 2nd level symbol names
size_t m_startState;
- size_t m_endState;
// Graph manipulation
- size_t newState(std::string state_type = "");
+ size_t newState();
+ bool isEndState(size_t state);
void addTransition(size_t state0, size_t state1, char c);
void removeTransition(size_t state0, size_t state1, char c);
std::vector<std::pair<size_t, char>> getSuccessorsViaEmpty(size_t state);
std::vector<std::pair<size_t, char>> getSuccessors(size_t state);
// Build up automaton, recursively
- void addPath(size_t state0, size_t state1, std::string s, std::string type);
- void addPathOrTransition(size_t state0, size_t state1, std::string symbol, std::string type);
- void addRule(const std::vector<std::string>& list, size_t list_index_from, size_t list_index_to, size_t state0, size_t state1, const std::string& rule_symbol, std::string type);
+ void addPath(size_t state0, size_t state1, std::string s);
+ void addPathOrTransition(size_t state0, size_t state1, std::string symbol);
+ void addRule(const std::vector<std::string>& list, size_t list_index_from, size_t list_index_to, size_t state0, size_t state1, const std::string& rule_symbol);
Token getToken(const std::string& s, Location& location);
void skipWhitespace(const std::string& s, Location& location);