diff --git a/nodes/Node.h b/nodes/Node.h index 87c5a14..42a0655 100644 --- a/nodes/Node.h +++ b/nodes/Node.h @@ -78,6 +78,7 @@ class PrimitiveTypeNode : public Node { public: PrimitiveTypeNode(uint64_t type) { m_integer = type; } + virtual std::string getString(); }; class ProgramNode : public Node diff --git a/nodes/PrimitiveTypeNode.cc b/nodes/PrimitiveTypeNode.cc new file mode 100644 index 0000000..f0d2822 --- /dev/null +++ b/nodes/PrimitiveTypeNode.cc @@ -0,0 +1,35 @@ + +#include +#include "Node.h" +#include "parser/parser.h" +using namespace std; + +string PrimitiveTypeNode::getString() +{ + switch (m_integer) + { + case BYTE: + return "int8_t"; + case UBYTE: + return "uint8_t"; + case CHAR: + return "char"; + case WCHAR: + return "wchar_t"; + case SHORT: + return "int16_t"; + case USHORT: + return "uint16_t"; + case INT: + return "int32_t"; + case UINT: + return "uint32_t"; + case LONG: + return "int64_t"; + case ULONG: + return "uint64_t"; + default: + cerr << "Error: Unknown primitive type " << m_integer << endl; + return ""; + } +} diff --git a/parser/parser.h b/parser/parser.h index 75b5ceb..e24d34d 100644 --- a/parser/parser.h +++ b/parser/parser.h @@ -7,6 +7,9 @@ #define YYSTYPE refptr +/* include this AFTER defining YYSTYPE */ +#include "parser/parser.tab.hh" + YYSTYPE parse(const char * fileName); #endif diff --git a/parser/parser.lex b/parser/parser.lex index d671b91..e04c632 100644 --- a/parser/parser.lex +++ b/parser/parser.lex @@ -7,7 +7,6 @@ #include #include #include "parser.h" -#include "parser.tab.hh" using namespace std; static string build_string; diff --git a/parser/parser.yy b/parser/parser.yy index bc9fdc7..7bf308f 100644 --- a/parser/parser.yy +++ b/parser/parser.yy @@ -4,7 +4,6 @@ #include #include #include "parser.h" -#include "parser.tab.hh" /* bison-generated header with YY[SL]TYPE */ using namespace std; #define yyerror(msg) errFunc(msg, &yylloc)