diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-03 20:41:45 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-03 20:41:45 +0300 |
commit | 7f873372e2e20ebdc36a4f02ee9773ba6b1d8e32 (patch) | |
tree | bfc6cafab5e86c9850b48cac72c0d410a8bbb847 /src/parsers/generic.cpp | |
parent | 6cecc9730f99096c29c045c050a948254bc59dbb (diff) | |
download | paranucker-7f873372e2e20ebdc36a4f02ee9773ba6b1d8e32.tar.gz paranucker-7f873372e2e20ebdc36a4f02ee9773ba6b1d8e32.tar.bz2 paranucker-7f873372e2e20ebdc36a4f02ee9773ba6b1d8e32.tar.xz paranucker-7f873372e2e20ebdc36a4f02ee9773ba6b1d8e32.zip |
Add reading for all default nodes for FUNC_DECL node.
Diffstat (limited to 'src/parsers/generic.cpp')
-rw-r--r-- | src/parsers/generic.cpp | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/parsers/generic.cpp b/src/parsers/generic.cpp index 4bb9a2a..2b88147 100644 --- a/src/parsers/generic.cpp +++ b/src/parsers/generic.cpp @@ -35,6 +35,11 @@ namespace Generic Node *createParseNode(Node *parent, tree gccNode) { + return createParseNode(parent, gccNode, ERROR_MARK); +} + +Node *createParseNode(Node *parent, tree gccNode, tree_code wantType) +{ if (gccNode == NULL_TREE) { return nullptr; @@ -54,7 +59,7 @@ Node *createParseNode(Node *parent, tree gccNode) break; default: Log::log(parent, "Not supported node type: %s", - get_tree_code_name(TREE_CODE(node->gccNode))); + get_tree_code_name(TREE_CODE(gccNode))); break; } if (node) @@ -67,7 +72,7 @@ Node *createParseNode(Node *parent, tree gccNode) switch (TREE_CODE(node->gccNode)) { case FUNCTION_DECL: - parseFunctionDeclNode(node); + parseFunctionDeclNode(static_cast<FunctionDeclNode*>(node)); break; case FUNCTION_TYPE: parseFunctionTypeNode(node); @@ -76,17 +81,22 @@ Node *createParseNode(Node *parent, tree gccNode) parseResultDeclNode(node); break; default: - Log::log(node, "Not supported node type: %s", - get_tree_code_name(TREE_CODE(node->gccNode))); break; } + if (wantType != ERROR_MARK && + node->nodeType != get_tree_code_name(wantType)) + { + Log::log(node, "Wrong node type. Want %s but get %s", + get_tree_code_name(wantType), + node->nodeType.c_str()); + } } return node; } void parseNodes(tree gccNode) { - createParseNode(nullptr, gccNode); + createParseNode(nullptr, gccNode, FUNCTION_DECL); } void fillType(Node *node) @@ -98,6 +108,7 @@ void fillType(Node *node) node->treeNumber = static_cast<int>(TREE_CODE(node->gccNode)); node->nodeType = get_tree_code_name(TREE_CODE(node->gccNode)); +// Log::log(node); } void fillLocation(Node *node) |