aboutsummaryrefslogtreecommitdiff
path: root/src/nodes.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/nodes.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/nodes.h')
-rw-r--r--src/nodes.h7
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_;
};
}