diff options
Diffstat (limited to 'src/parsers')
-rw-r--r-- | src/parsers/generic.cpp | 8 | ||||
-rw-r--r-- | src/parsers/pointer_type.cpp | 44 |
2 files changed, 50 insertions, 2 deletions
diff --git a/src/parsers/generic.cpp b/src/parsers/generic.cpp index 1cf74b4..732f2f3 100644 --- a/src/parsers/generic.cpp +++ b/src/parsers/generic.cpp @@ -21,6 +21,7 @@ #include "nodes/functiondeclnode.h" #include "nodes/functiontypenode.h" +#include "nodes/pointertypenode.h" #include "nodes/voidtypenode.h" #include "nodes/typedeclnode.h" #include "nodes/identifiernode.h" @@ -29,10 +30,11 @@ #include "parsers/parserincludes.h" parserDefine(FunctionDecl); -parserDefine(FunctionType); parserDefine(ResultDecl); -parserDefine(VoidType); parserDefine(TypeDecl); +parserDefine(FunctionType); +parserDefine(PointerType); +parserDefine(VoidType); parserDefine(TreeList); parserDefine(Identifier); parserDefine(IntegerCst); @@ -81,6 +83,7 @@ Node *createParseNode(Node *parent, createNodeType(TYPE_DECL, TypeDeclNode); createNodeType(FUNCTION_TYPE, FunctionTypeNode); createNodeType(VOID_TYPE, VoidTypeNode); + createNodeType(POINTER_TYPE, PointerTypeNode); createNodeType(TREE_LIST, TreeListNode); createNodeType(IDENTIFIER_NODE, IdentifierNode); createNodeType(INTEGER_CST, IntegerCstNode); @@ -116,6 +119,7 @@ Node *createParseNode(Node *parent, parseNodeType(TYPE_DECL, TypeDecl); parseNodeType(FUNCTION_TYPE, FunctionType); parseNodeType(VOID_TYPE, VoidType); + parseNodeType(POINTER_TYPE, PointerType); parseNodeType(TREE_LIST, TreeList); parseNodeType(IDENTIFIER_NODE, Identifier); parseNodeType(INTEGER_CST, IntegerCst); diff --git a/src/parsers/pointer_type.cpp b/src/parsers/pointer_type.cpp new file mode 100644 index 0000000..681dfed --- /dev/null +++ b/src/parsers/pointer_type.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2015 Andrei Karas + * + * This file is part of AstDumper. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "parsers/parserincludes.h" + +parserDefine(PointerType); + +#include "parsers/base/type.h" + +#include "nodes/pointertypenode.h" + +namespace Generic +{ + +void parsePointerTypeNode(PointerTypeNode *node) +{ + fillType(node); + Log::log(node); + + fillTypeName(node); + fillTypeAttributes(node); + node->nestedType = static_cast<TypeNode*>(createParseNode( + node, + TREE_TYPE(node->gccNode), + "nested type")); +} + +} |