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/nodes.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/nodes.h')
-rw-r--r-- | src/nodes.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/nodes.h b/src/nodes.h index 6783f3d..170b88f 100644 --- a/src/nodes.h +++ b/src/nodes.h @@ -1,11 +1,13 @@ #ifndef PARSER_SRC_NODES_H_ #define PARSER_SRC_NODES_H_ +#include <map> #include <string> namespace SimpleParser { -enum class TokenType : int8_t; +enum class TokenType; +typedef std::map<std::string, double> ConstantMap; enum class NodeType { OPERAND, @@ -53,7 +55,7 @@ class OperandNode: public Node { class ConstantNode: public Node { public: - explicit ConstantNode(std::string); + explicit ConstantNode(std::string, const ConstantMap*); virtual double solve(); virtual NodeType getType(); @@ -61,6 +63,7 @@ class ConstantNode: public Node { private: std::string identifier_; + const ConstantMap* constants_; }; } |