diff options
author | Adrian Kummerländer | 2013-10-20 00:10:54 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2013-10-20 00:10:54 +0200 |
commit | cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7 (patch) | |
tree | 02eda2354acb6462977cf9c6babcbd62b446d0e2 /src/utils.h | |
parent | 2b5ed18ae11439897a64708a434e5d7a6edac91e (diff) | |
download | SimpleParser-cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7.tar SimpleParser-cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7.tar.gz SimpleParser-cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7.tar.bz2 SimpleParser-cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7.tar.lz SimpleParser-cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7.tar.xz SimpleParser-cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7.tar.zst SimpleParser-cf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7.zip |
Implemented constant identifier functionality
* SimpleParser optionally acceps a pointer to an ConstantMap containing string keys mapping to values
* Constants are handled in their own ConstantNode class derived from the standard Node class
* Operator precedence is now determined separated from the TokenType using a new PrecedenceLevel enum
** Conversion between tokens and their PrecedenceLevel is possible using the new utility function getPrecedence
* Added additional test cases for constant identifier resolutions
Diffstat (limited to 'src/utils.h')
-rw-r--r-- | src/utils.h | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/utils.h b/src/utils.h index 9727d6a..0145065 100644 --- a/src/utils.h +++ b/src/utils.h @@ -8,19 +8,28 @@ namespace SimpleParser { -enum class TokenType : int8_t { - OPERATOR_PLUS = 10, - OPERATOR_MINUS = 11, - OPERATOR_DIVIDE = 20, - OPERATOR_MULTIPLY = 21, - OPERATOR_POWER = 30, - PARENTHESES_OPEN = 90, - PARENTHESES_CLOSE = 91, - VALUE_NUMBER = -1, - VALUE_IDENTIFIER = -2, +enum class PrecedenceLevel : uint8_t { + FIRST = 1, + SECOND = 2, + THIRD = 3, + FOURTH = 4, + FIFTH = 5, +}; + +enum class TokenType { + OPERATOR_PLUS, + OPERATOR_MINUS, + OPERATOR_DIVIDE, + OPERATOR_MULTIPLY, + OPERATOR_POWER, + PARENTHESES_OPEN, + PARENTHESES_CLOSE, + VALUE_NUMBER, + VALUE_IDENTIFIER, }; TokenType getTokenType(char); +PrecedenceLevel getPrecedence(TokenType); std::vector<std::string> lexer(std::string); } |