diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-03 18:33:18 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-03 18:33:18 +0300 |
commit | 6cecc9730f99096c29c045c050a948254bc59dbb (patch) | |
tree | 99a20a203b15cae5b6641dea868034b3543b5cbc /src/parsers | |
parent | 353973e99f0be7d685e98bbdd7a020c9cbd282e4 (diff) | |
download | paranucker-6cecc9730f99096c29c045c050a948254bc59dbb.tar.gz paranucker-6cecc9730f99096c29c045c050a948254bc59dbb.tar.bz2 paranucker-6cecc9730f99096c29c045c050a948254bc59dbb.tar.xz paranucker-6cecc9730f99096c29c045c050a948254bc59dbb.zip |
Improve a bit shared logic for create and parse nodes.
Diffstat (limited to 'src/parsers')
-rw-r--r-- | src/parsers/functiondeclnode.cpp | 6 | ||||
-rw-r--r-- | src/parsers/generic.cpp | 48 | ||||
-rw-r--r-- | src/parsers/generic.h | 2 |
3 files changed, 22 insertions, 34 deletions
diff --git a/src/parsers/functiondeclnode.cpp b/src/parsers/functiondeclnode.cpp index 2d76333..25cf605 100644 --- a/src/parsers/functiondeclnode.cpp +++ b/src/parsers/functiondeclnode.cpp @@ -35,10 +35,8 @@ void parseFunctionDeclNode(Node *node) fillType(node); fillLocation(node); Log::log(node); - Node *typeNode = createEmptyNode(node, TREE_TYPE(node->gccNode)); - parseNode(typeNode); - Node *resultNode = createEmptyNode(node, DECL_RESULT(node->gccNode)); - parseNode(resultNode); + Node *typeNode = createParseNode(node, TREE_TYPE(node->gccNode)); + Node *resultNode = createParseNode(node, DECL_RESULT(node->gccNode)); } } diff --git a/src/parsers/generic.cpp b/src/parsers/generic.cpp index 2db51aa..4bb9a2a 100644 --- a/src/parsers/generic.cpp +++ b/src/parsers/generic.cpp @@ -33,7 +33,7 @@ namespace Generic { -Node *createEmptyNode(Node *parent, tree gccNode) +Node *createParseNode(Node *parent, tree gccNode) { if (gccNode == NULL_TREE) { @@ -63,40 +63,30 @@ Node *createEmptyNode(Node *parent, tree gccNode) node->gccNode = gccNode; if (parent) node->indent = parent->indent + 1; - } - return node; -} - -void parseNode(Node *node) -{ - if (!node || node->gccNode == NULL_TREE) - { - return; - } - switch (TREE_CODE(node->gccNode)) - { - case FUNCTION_DECL: - parseFunctionDeclNode(node); - break; - case FUNCTION_TYPE: - parseFunctionTypeNode(node); - break; - case RESULT_DECL: - parseResultDeclNode(node); - break; - default: - Log::log(node, "Not supported node type: %s", - get_tree_code_name(TREE_CODE(node->gccNode))); - break; + switch (TREE_CODE(node->gccNode)) + { + case FUNCTION_DECL: + parseFunctionDeclNode(node); + break; + case FUNCTION_TYPE: + parseFunctionTypeNode(node); + break; + case RESULT_DECL: + parseResultDeclNode(node); + break; + default: + Log::log(node, "Not supported node type: %s", + get_tree_code_name(TREE_CODE(node->gccNode))); + break; + } } + return node; } void parseNodes(tree gccNode) { - //Node *rootNode = new Node; - Node *node = createEmptyNode(nullptr, gccNode); - parseNode(node); + createParseNode(nullptr, gccNode); } void fillType(Node *node) diff --git a/src/parsers/generic.h b/src/parsers/generic.h index ebbc48e..120aaa1 100644 --- a/src/parsers/generic.h +++ b/src/parsers/generic.h @@ -36,7 +36,7 @@ namespace Generic void fillLocation(Node *node); - Node *createEmptyNode(Node *parent, tree gccNode); + Node *createParseNode(Node *parent, tree gccNode); } #endif // PARSERS_GENERIC_H |