From cece4c61572038cb4116acb05170346a5c89aef8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 6 Jun 2015 22:10:20 +0300 Subject: Move node handling function calls into separate file. --- src/parsers/generic.cpp | 47 ++++++++++------------------------------------- 1 file changed, 10 insertions(+), 37 deletions(-) (limited to 'src/parsers/generic.cpp') 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(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(node)); \ + break; +#include "includes/nodeshandling.inc" default: break; } -- cgit v1.2.3-60-g2f50