comparison generator/parser/dumptree.cpp @ 1:e78566595089

initial import
author mandel
date Mon, 11 May 2009 16:01:50 +0000
parents
children 09a0f1d048f2
comparison
equal deleted inserted replaced
0:36fb74dc547d 1:e78566595089
1 /****************************************************************************
2 **
3 ** Copyright (C) 1992-2008 Nokia. All rights reserved.
4 ** Copyright (C) 2002-2005 Roberto Raggi <roberto@kdevelop.org>
5 **
6 ** This file is part of Qt Jambi.
7 **
8 ** * Commercial Usage
9 * Licensees holding valid Qt Commercial licenses may use this file in
10 * accordance with the Qt Commercial License Agreement provided with the
11 * Software or, alternatively, in accordance with the terms contained in
12 * a written agreement between you and Nokia.
13 *
14 *
15 * GNU General Public License Usage
16 * Alternatively, this file may be used under the terms of the GNU
17 * General Public License versions 2.0 or 3.0 as published by the Free
18 * Software Foundation and appearing in the file LICENSE.GPL included in
19 * the packaging of this file. Please review the following information
20 * to ensure GNU General Public Licensing requirements will be met:
21 * http://www.fsf.org/licensing/licenses/info/GPLv2.html and
22 * http://www.gnu.org/copyleft/gpl.html. In addition, as a special
23 * exception, Nokia gives you certain additional rights. These rights
24 * are described in the Nokia Qt GPL Exception version 1.2, included in
25 * the file GPL_EXCEPTION.txt in this package.
26 *
27 * Qt for Windows(R) Licensees
28 * As a special exception, Nokia, as the sole copyright holder for Qt
29 * Designer, grants users of the Qt/Eclipse Integration plug-in the
30 * right for the Qt/Eclipse Integration to link to functionality
31 * provided by Qt Designer and its related libraries.
32 *
33 *
34 * If you are unsure which license is appropriate for your use, please
35 * contact the sales department at qt-sales@nokia.com.
36
37 **
38 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
39 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
40 **
41 ****************************************************************************/
42
43
44 #include "dumptree.h"
45
46 #include <QtCore/QString>
47 #include <QtCore/qdebug.h>
48
49 static char const * const names[] = {
50 0,
51 "AccessSpecifier",
52 "AsmDefinition",
53 "BaseClause",
54 "BaseSpecifier",
55 "BinaryExpression",
56 "CastExpression",
57 "ClassMemberAccess",
58 "ClassSpecifier",
59 "CompoundStatement",
60 "Condition",
61 "ConditionalExpression",
62 "CppCastExpression",
63 "CtorInitializer",
64 "DeclarationStatement",
65 "Declarator",
66 "DeleteExpression",
67 "DoStatement",
68 "ElaboratedTypeSpecifier",
69 "EnumSpecifier",
70 "Enumerator",
71 "ExceptionSpecification",
72 "ExpressionOrDeclarationStatement",
73 "ExpressionStatement",
74 "ForStatement",
75 "FunctionCall",
76 "FunctionDefinition",
77 "IfStatement",
78 "IncrDecrExpression",
79 "InitDeclarator",
80 "Initializer",
81 "InitializerClause",
82 "LabeledStatement",
83 "LinkageBody",
84 "LinkageSpecification",
85 "MemInitializer",
86 "Name",
87 "Namespace",
88 "NamespaceAliasDefinition",
89 "NewDeclarator",
90 "NewExpression",
91 "NewInitializer",
92 "NewTypeId",
93 "Operator",
94 "OperatorFunctionId",
95 "ParameterDeclaration",
96 "ParameterDeclarationClause",
97 "PostfixExpression",
98 "PrimaryExpression",
99 "PtrOperator",
100 "PtrToMember",
101 "ReturnStatement",
102 "SimpleDeclaration",
103 "SimpleTypeSpecifier",
104 "SizeofExpression",
105 "StringLiteral",
106 "SubscriptExpression",
107 "SwitchStatement",
108 "TemplateArgument",
109 "TemplateDeclaration",
110 "TemplateParameter",
111 "ThrowExpression",
112 "TranslationUnit",
113 "TryBlockStatement",
114 "TypeId",
115 "TypeIdentification",
116 "TypeParameter",
117 "Typedef",
118 "UnaryExpression",
119 "UnqualifiedName",
120 "Using",
121 "UsingDirective",
122 "WhileStatement",
123 "WinDeclSpec"
124 };
125
126 DumpTree::DumpTree()
127 {
128 }
129
130 void DumpTree::visit(AST *node)
131 {
132 static int indent = 0;
133
134 if (node)
135 qDebug() << QString(indent * 2, ' ').toLatin1().constData() << names[node->kind]
136 << '[' << node->start_token << ", " << node->end_token << ']';
137
138 ++indent;
139 DefaultVisitor::visit(node);
140 --indent;
141 }
142
143 // kate: space-indent on; indent-width 2; replace-tabs on;