From bf1baf16e642abfd2bda860192fdac3309d7b55a Mon Sep 17 00:00:00 2001 From: josh Date: Wed, 13 Jan 2010 22:22:19 +0000 Subject: [PATCH] parser.h now including parser.tab.hh (should only ever have to include parser/parser.h now); added PrimitiveTypeNode.cc with translation from primitive type to C type string git-svn-id: svn://anubis/jtlc/trunk@18 f5bc74b8-7b62-4e90-9214-7121d538519f --- nodes/Node.h | 1 + nodes/PrimitiveTypeNode.cc | 35 +++++++++++++++++++++++++++++++++++ parser/parser.h | 3 +++ parser/parser.lex | 1 - parser/parser.yy | 1 - 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 nodes/PrimitiveTypeNode.cc 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)