summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-06 22:10:20 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-06 22:10:20 +0300
commitcece4c61572038cb4116acb05170346a5c89aef8 (patch)
tree720a7b2555f0744a54dfc8b50bc300a4710d14b2 /src
parent2ac6cdbf81b4f65483b43b590639445542a7b119 (diff)
downloadparanucker-cece4c61572038cb4116acb05170346a5c89aef8.tar.gz
paranucker-cece4c61572038cb4116acb05170346a5c89aef8.tar.bz2
paranucker-cece4c61572038cb4116acb05170346a5c89aef8.tar.xz
paranucker-cece4c61572038cb4116acb05170346a5c89aef8.zip
Move node handling function calls into separate file.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am1
-rw-r--r--src/includes/nodeshandling.inc13
-rw-r--r--src/parsers/generic.cpp47
3 files changed, 24 insertions, 37 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 8da64af..e6328e1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -40,6 +40,7 @@ SRC = nodes/base/cst.h \
parsers/type/pointer_type.cpp \
parsers/type/void_type.cpp \
includes/nodeincludes.h \
+ includes/nodeshandling.inc \
includes/parserdefines.inc \
includes/parserincludes.h \
includes.h \
diff --git a/src/includes/nodeshandling.inc b/src/includes/nodeshandling.inc
new file mode 100644
index 0000000..6f9c2c4
--- /dev/null
+++ b/src/includes/nodeshandling.inc
@@ -0,0 +1,13 @@
+handleNodeType(FUNCTION_DECL, FunctionDecl)
+handleNodeType(PARM_DECL, ParmDecl)
+handleNodeType(RESULT_DECL, ResultDecl)
+handleNodeType(TYPE_DECL, TypeDecl)
+handleNodeType(FUNCTION_TYPE, FunctionType)
+handleNodeType(INTEGER_TYPE, IntegerType)
+handleNodeType(VOID_TYPE, VoidType)
+handleNodeType(POINTER_TYPE, PointerType)
+handleNodeType(RETURN_EXPR, ReturnExpr)
+handleNodeType(TREE_LIST, TreeList)
+handleNodeType(IDENTIFIER_NODE, Identifier)
+handleNodeType(INTEGER_CST, IntegerCst)
+handleNodeType(STATEMENT_LIST, StatementList)
diff --git a/src/parsers/generic.cpp b/src/parsers/generic.cpp
index 2225349..d9ed165 100644
--- a/src/parsers/generic.cpp
+++ b/src/parsers/generic.cpp
@@ -25,17 +25,6 @@
#include "localconsts.h"
-#define createNodeType(code, type) \
- case code: \
- node = new type##Node; \
- break
-
-#define parseNodeType(code, type) \
- case code: \
- parse##type##Node(static_cast<type##Node*>(node)); \
- break
-
-
namespace Generic
{
@@ -62,19 +51,11 @@ Node *createParseNode(Node *parent,
Node *node = nullptr;
switch (TREE_CODE(gccNode))
{
- createNodeType(FUNCTION_DECL, FunctionDecl);
- createNodeType(PARM_DECL, ParmDecl);
- createNodeType(RESULT_DECL, ResultDecl);
- createNodeType(TYPE_DECL, TypeDecl);
- createNodeType(FUNCTION_TYPE, FunctionType);
- createNodeType(INTEGER_TYPE, IntegerType);
- createNodeType(VOID_TYPE, VoidType);
- createNodeType(POINTER_TYPE, PointerType);
- createNodeType(RETURN_EXPR, ReturnExpr);
- createNodeType(TREE_LIST, TreeList);
- createNodeType(IDENTIFIER_NODE, Identifier);
- createNodeType(INTEGER_CST, IntegerCst);
- createNodeType(STATEMENT_LIST, StatementList);
+#define handleNodeType(code, type) \
+ case code: \
+ node = new type##Node; \
+ break;
+#include "includes/nodeshandling.inc"
default:
Log::log(parent,
1,
@@ -102,19 +83,11 @@ Node *createParseNode(Node *parent,
switch (TREE_CODE(node->gccNode))
{
- parseNodeType(FUNCTION_DECL, FunctionDecl);
- parseNodeType(PARM_DECL, ParmDecl);
- parseNodeType(RESULT_DECL, ResultDecl);
- parseNodeType(TYPE_DECL, TypeDecl);
- parseNodeType(FUNCTION_TYPE, FunctionType);
- parseNodeType(INTEGER_TYPE, IntegerType);
- parseNodeType(VOID_TYPE, VoidType);
- parseNodeType(POINTER_TYPE, PointerType);
- parseNodeType(RETURN_EXPR, ReturnExpr);
- parseNodeType(TREE_LIST, TreeList);
- parseNodeType(IDENTIFIER_NODE, Identifier);
- parseNodeType(INTEGER_CST, IntegerCst);
- parseNodeType(STATEMENT_LIST, StatementList);
+#define handleNodeType(code, type) \
+ case code: \
+ parse##type##Node(static_cast<type##Node*>(node)); \
+ break;
+#include "includes/nodeshandling.inc"
default:
break;
}