Mercurial > repo
view interps/rail/src/MultiLexer.h @ 4004:c08a49fca968
<mrhmouse> wget http://nodejs.org/dist/v0.10.22/node-v0.10.22-linux-x64.tar.gz -O node.tar.gz
author | HackBot |
---|---|
date | Wed, 13 Nov 2013 16:29:23 +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