Mercurial > repo
view interps/rail/src/MultiLexer.h @ 8897:c7b65d0fe2f2
<shachaf> ` ln -s relcome bin/\x0304w\x0308e\x0309l\x0311c\x0312o\x0313m\x0304e\x0f
author | HackBot |
---|---|
date | Thu, 04 Aug 2016 02:22:10 +0000 |
parents | 859f9b4339e6 |
children |
line wrap: on
line source
// MultiLexer.h #ifndef MULTI_LEXER_H_RAIL_1 #define MULTI_LEXER_H_RAIL_1 class MultiLexer { public: MultiLexer(); void reset(void); void add(char letter); bool isStarted(void) const; bool isDone(void) const; bool isFunction(void) const; bool isConstant(void) const; bool isUse(void) const; bool isBind(void) const; std::string const & getToken(void) const; private: void inFunction(char letter); void inConstant(char letter); void inUse(char letter); void inBind(char letter); void tooManyLetters(char letter); private: enum StateT { EMPTY=0, FUNCTION_BEGIN, FUNCTION_END, CONSTANT_BEGIN, CONSTANT_END, ESCAPE_BEGIN, ESCAPE_END, VARIABLE_BEGIN, USE_BEGIN, USE_END, BIND_BEGIN, BIND_MIDDLE, BIND_END }; private: std::string token; StateT state; char openChar; char closeChar; }; #endif