aboutsummaryrefslogtreecommitdiff
path: root/src/utils.h
diff options
context:
space:
mode:
authorAdrian Kummerländer2013-10-20 00:10:54 +0200
committerAdrian Kummerländer2013-10-20 00:10:54 +0200
commitcf2aa4c9d70fc8ed658c213b2c46bb48ee10e6f7 (patch)
tree02eda2354acb6462977cf9c6babcbd62b446d0e2 /src/utils.h
parent2b5ed18ae11439897a64708a434e5d7a6edac91e (diff)
downloadSimpleParser-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.h29
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);
}