|
|
/****************************************************************************
|
|
|
**
|
|
|
** Copyright (C) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
|
|
|
** All rights reserved.
|
|
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
|
|
**
|
|
|
** This file is part of the Qt Script Generator project on Qt Labs.
|
|
|
**
|
|
|
** $QT_BEGIN_LICENSE:LGPL$
|
|
|
** No Commercial Usage
|
|
|
** This file contains pre-release code and may not be distributed.
|
|
|
** You may use this file in accordance with the terms and conditions
|
|
|
** contained in the Technology Preview License Agreement accompanying
|
|
|
** this package.
|
|
|
**
|
|
|
** GNU Lesser General Public License Usage
|
|
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
|
** General Public License version 2.1 as published by the Free Software
|
|
|
** Foundation and appearing in the file LICENSE.LGPL included in the
|
|
|
** packaging of this file. Please review the following information to
|
|
|
** ensure the GNU Lesser General Public License version 2.1 requirements
|
|
|
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
|
**
|
|
|
** In addition, as a special exception, Nokia gives you certain additional
|
|
|
** rights. These rights are described in the Nokia Qt LGPL Exception
|
|
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
|
**
|
|
|
** If you have questions regarding the use of this file, please contact
|
|
|
** Nokia at qt-info@nokia.com.
|
|
|
**
|
|
|
**
|
|
|
**
|
|
|
**
|
|
|
**
|
|
|
**
|
|
|
**
|
|
|
**
|
|
|
** $QT_END_LICENSE$
|
|
|
**
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
|
#include "dumptree.h"
|
|
|
|
|
|
#include <QtCore/QString>
|
|
|
#include <QtCore/qdebug.h>
|
|
|
|
|
|
static char const * const names[] = {
|
|
|
0,
|
|
|
"AccessSpecifier",
|
|
|
"AsmDefinition",
|
|
|
"BaseClause",
|
|
|
"BaseSpecifier",
|
|
|
"BinaryExpression",
|
|
|
"CastExpression",
|
|
|
"ClassMemberAccess",
|
|
|
"ClassSpecifier",
|
|
|
"CompoundStatement",
|
|
|
"Condition",
|
|
|
"ConditionalExpression",
|
|
|
"CppCastExpression",
|
|
|
"CtorInitializer",
|
|
|
"DeclarationStatement",
|
|
|
"Declarator",
|
|
|
"DeleteExpression",
|
|
|
"DoStatement",
|
|
|
"ElaboratedTypeSpecifier",
|
|
|
"EnumSpecifier",
|
|
|
"Enumerator",
|
|
|
"ExceptionSpecification",
|
|
|
"ExpressionOrDeclarationStatement",
|
|
|
"ExpressionStatement",
|
|
|
"ForStatement",
|
|
|
"FunctionCall",
|
|
|
"FunctionDefinition",
|
|
|
"IfStatement",
|
|
|
"IncrDecrExpression",
|
|
|
"InitDeclarator",
|
|
|
"Initializer",
|
|
|
"InitializerClause",
|
|
|
"LabeledStatement",
|
|
|
"LinkageBody",
|
|
|
"LinkageSpecification",
|
|
|
"MemInitializer",
|
|
|
"Name",
|
|
|
"Namespace",
|
|
|
"NamespaceAliasDefinition",
|
|
|
"NewDeclarator",
|
|
|
"NewExpression",
|
|
|
"NewInitializer",
|
|
|
"NewTypeId",
|
|
|
"Operator",
|
|
|
"OperatorFunctionId",
|
|
|
"ParameterDeclaration",
|
|
|
"ParameterDeclarationClause",
|
|
|
"PostfixExpression",
|
|
|
"PrimaryExpression",
|
|
|
"PtrOperator",
|
|
|
"PtrToMember",
|
|
|
"ReturnStatement",
|
|
|
"SimpleDeclaration",
|
|
|
"SimpleTypeSpecifier",
|
|
|
"SizeofExpression",
|
|
|
"StringLiteral",
|
|
|
"SubscriptExpression",
|
|
|
"SwitchStatement",
|
|
|
"TemplateArgument",
|
|
|
"TemplateDeclaration",
|
|
|
"TemplateParameter",
|
|
|
"ThrowExpression",
|
|
|
"TranslationUnit",
|
|
|
"TryBlockStatement",
|
|
|
"TypeId",
|
|
|
"TypeIdentification",
|
|
|
"TypeParameter",
|
|
|
"Typedef",
|
|
|
"UnaryExpression",
|
|
|
"UnqualifiedName",
|
|
|
"Using",
|
|
|
"UsingDirective",
|
|
|
"WhileStatement",
|
|
|
"WinDeclSpec"
|
|
|
};
|
|
|
|
|
|
DumpTree::DumpTree()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void DumpTree::visit(AST *node)
|
|
|
{
|
|
|
static int indent = 0;
|
|
|
|
|
|
if (node)
|
|
|
qDebug() << QString(indent * 2, ' ').toLatin1().constData() << names[node->kind]
|
|
|
<< '[' << node->start_token << ", " << node->end_token << ']';
|
|
|
|
|
|
++indent;
|
|
|
DefaultVisitor::visit(node);
|
|
|
--indent;
|
|
|
}
|
|
|
|
|
|
// kate: space-indent on; indent-width 2; replace-tabs on;
|
|
|
|