forked from qt-creator/qt-creator
		
	
		
			
				
	
	
		
			1723 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			1723 lines
		
	
	
		
			39 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/***************************************************************************
 | 
						|
**
 | 
						|
** This file is part of Qt Creator
 | 
						|
**
 | 
						|
** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
 | 
						|
**
 | 
						|
** Contact:  Qt Software Information (qt-info@nokia.com)
 | 
						|
**
 | 
						|
**
 | 
						|
** Non-Open Source Usage
 | 
						|
**
 | 
						|
** Licensees may use this file in accordance with the Qt Beta Version
 | 
						|
** License Agreement, Agreement version 2.2 provided with the Software or,
 | 
						|
** alternatively, in accordance with the terms contained in a written
 | 
						|
** agreement between you and Nokia.
 | 
						|
**
 | 
						|
** GNU General Public License Usage
 | 
						|
**
 | 
						|
** Alternatively, this file may be used under the terms of the GNU General
 | 
						|
** Public License versions 2.0 or 3.0 as published by the Free Software
 | 
						|
** Foundation and appearing in the file LICENSE.GPL included in the packaging
 | 
						|
** of this file.  Please review the following information to ensure GNU
 | 
						|
** General Public Licensing requirements will be met:
 | 
						|
**
 | 
						|
** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
 | 
						|
** http://www.gnu.org/copyleft/gpl.html.
 | 
						|
**
 | 
						|
** In addition, as a special exception, Nokia gives you certain additional
 | 
						|
** rights. These rights are described in the Nokia Qt GPL Exception
 | 
						|
** version 1.2, included in the file GPL_EXCEPTION.txt in this package.
 | 
						|
**
 | 
						|
***************************************************************************/
 | 
						|
// Copyright (c) 2008 Roberto Raggi <roberto.raggi@gmail.com>
 | 
						|
//
 | 
						|
// Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
						|
// of this software and associated documentation files (the "Software"), to deal
 | 
						|
// in the Software without restriction, including without limitation the rights
 | 
						|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
						|
// copies of the Software, and to permit persons to whom the Software is
 | 
						|
// furnished to do so, subject to the following conditions:
 | 
						|
//
 | 
						|
// The above copyright notice and this permission notice shall be included in
 | 
						|
// all copies or substantial portions of the Software.
 | 
						|
//
 | 
						|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
						|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
						|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
						|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
						|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
						|
// THE SOFTWARE.
 | 
						|
 | 
						|
#ifndef CPLUSPLUS_AST_H
 | 
						|
#define CPLUSPLUS_AST_H
 | 
						|
 | 
						|
#include "CPlusPlusForwardDeclarations.h"
 | 
						|
#include "ASTfwd.h"
 | 
						|
#include <new>
 | 
						|
 | 
						|
CPLUSPLUS_BEGIN_HEADER
 | 
						|
CPLUSPLUS_BEGIN_NAMESPACE
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT AST
 | 
						|
{
 | 
						|
    AST(const AST &other);
 | 
						|
    void operator =(const AST &other);
 | 
						|
 | 
						|
public:
 | 
						|
    AST();
 | 
						|
    virtual ~AST();
 | 
						|
 | 
						|
    void accept(ASTVisitor *visitor);
 | 
						|
 | 
						|
    static void accept(AST *ast, ASTVisitor *visitor)
 | 
						|
    { if (ast) ast->accept(visitor); }
 | 
						|
 | 
						|
    void *operator new(size_t size, MemoryPool *pool);
 | 
						|
    void operator delete(void *);
 | 
						|
    void operator delete(void *, MemoryPool *);
 | 
						|
 | 
						|
    virtual unsigned firstToken() const = 0;
 | 
						|
    virtual unsigned lastToken() const = 0;
 | 
						|
 | 
						|
    AccessDeclarationAST *asAccessDeclaration();
 | 
						|
    ArrayAccessAST *asArrayAccess();
 | 
						|
    ArrayDeclaratorAST *asArrayDeclarator();
 | 
						|
    ArrayInitializerAST *asArrayInitializer();
 | 
						|
    AsmDefinitionAST *asAsmDefinition();
 | 
						|
    AttributeAST *asAttribute();
 | 
						|
    AttributeSpecifierAST *asAttributeSpecifier();
 | 
						|
    BaseSpecifierAST *asBaseSpecifier();
 | 
						|
    QtMethodAST *asQtMethod();
 | 
						|
    BinaryExpressionAST *asBinaryExpression();
 | 
						|
    BoolLiteralAST *asBoolLiteral();
 | 
						|
    BreakStatementAST *asBreakStatement();
 | 
						|
    CallAST *asCall();
 | 
						|
    CaseStatementAST *asCaseStatement();
 | 
						|
    CastExpressionAST *asCastExpression();
 | 
						|
    CatchClauseAST *asCatchClause();
 | 
						|
    ClassSpecifierAST *asClassSpecifier();
 | 
						|
    CompoundStatementAST *asCompoundStatement();
 | 
						|
    ConditionAST *asCondition();
 | 
						|
    ConditionalExpressionAST *asConditionalExpression();
 | 
						|
    ContinueStatementAST *asContinueStatement();
 | 
						|
    ConversionFunctionIdAST *asConversionFunctionId();
 | 
						|
    CoreDeclaratorAST *asCoreDeclarator();
 | 
						|
    CppCastExpressionAST *asCppCastExpression();
 | 
						|
    CtorInitializerAST *asCtorInitializer();
 | 
						|
    DeclarationAST *asDeclaration();
 | 
						|
    DeclarationStatementAST *asDeclarationStatement();
 | 
						|
    DeclaratorAST *asDeclarator();
 | 
						|
    DeclaratorIdAST *asDeclaratorId();
 | 
						|
    DeclaratorListAST *asDeclaratorList();
 | 
						|
    DeleteExpressionAST *asDeleteExpression();
 | 
						|
    DestructorNameAST *asDestructorName();
 | 
						|
    DoStatementAST *asDoStatement();
 | 
						|
    ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier();
 | 
						|
    EmptyDeclarationAST *asEmptyDeclaration();
 | 
						|
    EnumSpecifierAST *asEnumSpecifier();
 | 
						|
    EnumeratorAST *asEnumerator();
 | 
						|
    ExceptionDeclarationAST *asExceptionDeclaration();
 | 
						|
    ExceptionSpecificationAST *asExceptionSpecification();
 | 
						|
    ExpressionAST *asExpression();
 | 
						|
    ExpressionListAST *asExpressionList();
 | 
						|
    ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement();
 | 
						|
    ExpressionStatementAST *asExpressionStatement();
 | 
						|
    ForStatementAST *asForStatement();
 | 
						|
    FunctionDeclaratorAST *asFunctionDeclarator();
 | 
						|
    FunctionDefinitionAST *asFunctionDefinition();
 | 
						|
    GotoStatementAST *asGotoStatement();
 | 
						|
    IfStatementAST *asIfStatement();
 | 
						|
    LabeledStatementAST *asLabeledStatement();
 | 
						|
    LinkageBodyAST *asLinkageBody();
 | 
						|
    LinkageSpecificationAST *asLinkageSpecification();
 | 
						|
    MemInitializerAST *asMemInitializer();
 | 
						|
    MemberAccessAST *asMemberAccess();
 | 
						|
    NameAST *asName();
 | 
						|
    NamedTypeSpecifierAST *asNamedTypeSpecifier();
 | 
						|
    NamespaceAST *asNamespace();
 | 
						|
    NamespaceAliasDefinitionAST *asNamespaceAliasDefinition();
 | 
						|
    NestedDeclaratorAST *asNestedDeclarator();
 | 
						|
    NestedExpressionAST *asNestedExpression();
 | 
						|
    NestedNameSpecifierAST *asNestedNameSpecifier();
 | 
						|
    NewDeclaratorAST *asNewDeclarator();
 | 
						|
    NewExpressionAST *asNewExpression();
 | 
						|
    NewInitializerAST *asNewInitializer();
 | 
						|
    NewTypeIdAST *asNewTypeId();
 | 
						|
    NumericLiteralAST *asNumericLiteral();
 | 
						|
    OperatorAST *asOperator();
 | 
						|
    OperatorFunctionIdAST *asOperatorFunctionId();
 | 
						|
    ParameterDeclarationAST *asParameterDeclaration();
 | 
						|
    ParameterDeclarationClauseAST *asParameterDeclarationClause();
 | 
						|
    PointerAST *asPointer();
 | 
						|
    PointerToMemberAST *asPointerToMember();
 | 
						|
    PostIncrDecrAST *asPostIncrDecr();
 | 
						|
    PostfixAST *asPostfix();
 | 
						|
    PostfixDeclaratorAST *asPostfixDeclarator();
 | 
						|
    PostfixExpressionAST *asPostfixExpression();
 | 
						|
    PtrOperatorAST *asPtrOperator();
 | 
						|
    QualifiedNameAST *asQualifiedName();
 | 
						|
    ReferenceAST *asReference();
 | 
						|
    ReturnStatementAST *asReturnStatement();
 | 
						|
    SimpleDeclarationAST *asSimpleDeclaration();
 | 
						|
    SimpleNameAST *asSimpleName();
 | 
						|
    SimpleSpecifierAST *asSimpleSpecifier();
 | 
						|
    SizeofExpressionAST *asSizeofExpression();
 | 
						|
    SpecifierAST *asSpecifier();
 | 
						|
    StatementAST *asStatement();
 | 
						|
    StringLiteralAST *asStringLiteral();
 | 
						|
    SwitchStatementAST *asSwitchStatement();
 | 
						|
    TemplateArgumentListAST *asTemplateArgumentList();
 | 
						|
    TemplateDeclarationAST *asTemplateDeclaration();
 | 
						|
    TemplateIdAST *asTemplateId();
 | 
						|
    TemplateTypeParameterAST *asTemplateTypeParameter();
 | 
						|
    ThisExpressionAST *asThisExpression();
 | 
						|
    ThrowExpressionAST *asThrowExpression();
 | 
						|
    TranslationUnitAST *asTranslationUnit();
 | 
						|
    TryBlockStatementAST *asTryBlockStatement();
 | 
						|
    TypeConstructorCallAST *asTypeConstructorCall();
 | 
						|
    TypeIdAST *asTypeId();
 | 
						|
    TypeidExpressionAST *asTypeidExpression();
 | 
						|
    TypenameCallExpressionAST *asTypenameCallExpression();
 | 
						|
    TypenameTypeParameterAST *asTypenameTypeParameter();
 | 
						|
    TypeofSpecifierAST *asTypeofSpecifier();
 | 
						|
    UnaryExpressionAST *asUnaryExpression();
 | 
						|
    UsingAST *asUsing();
 | 
						|
    UsingDirectiveAST *asUsingDirective();
 | 
						|
    WhileStatementAST *asWhileStatement();
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor) = 0;
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT SpecifierAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *next;
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT SimpleSpecifierAST: public SpecifierAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned specifier_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT AttributeSpecifierAST: public SpecifierAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned attribute_token;
 | 
						|
    unsigned first_lparen_token;
 | 
						|
    unsigned second_lparen_token;
 | 
						|
    AttributeAST *attributes;
 | 
						|
    unsigned first_rparen_token;
 | 
						|
    unsigned second_rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT AttributeAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned identifier_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    unsigned tag_token;
 | 
						|
    ExpressionListAST *expression_list;
 | 
						|
    unsigned rparen_token;
 | 
						|
    AttributeAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TypeofSpecifierAST: public SpecifierAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned typeof_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT StatementAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    StatementAST *next;
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ExpressionAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DeclarationAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    DeclarationAST *next;
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CoreDeclaratorAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT PostfixDeclaratorAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    PostfixDeclaratorAST *next;
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DeclaratorAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    PtrOperatorAST *ptr_operators;
 | 
						|
    CoreDeclaratorAST *core_declarator;
 | 
						|
    PostfixDeclaratorAST *postfix_declarators;
 | 
						|
    SpecifierAST *attributes;
 | 
						|
    ExpressionAST *initializer;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ExpressionListAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    ExpressionAST *expression;
 | 
						|
    ExpressionListAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT SimpleDeclarationAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *decl_specifier_seq;
 | 
						|
    DeclaratorListAST *declarators;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT EmptyDeclarationAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT AccessDeclarationAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned access_specifier_token;
 | 
						|
    unsigned slots_token;
 | 
						|
    unsigned colon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT AsmDefinitionAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned asm_token;
 | 
						|
    SpecifierAST *cv_qualifier_seq;
 | 
						|
    unsigned lparen_token;
 | 
						|
    unsigned rparen_token;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT BaseSpecifierAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned token_virtual;
 | 
						|
    unsigned token_access_specifier;
 | 
						|
    NameAST *name;
 | 
						|
    BaseSpecifierAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT QtMethodAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned method_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT BinaryExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned binary_op_token;
 | 
						|
    ExpressionAST *left_expression;
 | 
						|
    ExpressionAST *right_expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CastExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *type_id;
 | 
						|
    unsigned rparen_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ClassSpecifierAST: public SpecifierAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned classkey_token;
 | 
						|
    SpecifierAST *attributes;
 | 
						|
    NameAST *name;
 | 
						|
    BaseSpecifierAST *base_clause;
 | 
						|
    unsigned lbrace_token;
 | 
						|
    DeclarationAST *member_specifiers;
 | 
						|
    unsigned rbrace_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CaseStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned case_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned colon_token;
 | 
						|
    StatementAST *statement;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CompoundStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lbrace_token;
 | 
						|
    StatementAST *statements;
 | 
						|
    unsigned rbrace_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ConditionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *type_specifier;
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ConditionalExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    ExpressionAST *condition;
 | 
						|
    unsigned question_token;
 | 
						|
    ExpressionAST *left_expression;
 | 
						|
    unsigned colon_token;
 | 
						|
    ExpressionAST *right_expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CppCastExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned cast_token;
 | 
						|
    unsigned less_token;
 | 
						|
    ExpressionAST *type_id;
 | 
						|
    unsigned greater_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CtorInitializerAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned colon_token;
 | 
						|
    MemInitializerAST *member_initializers;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DeclarationStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    DeclarationAST *declaration;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DeclaratorIdAST: public CoreDeclaratorAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    NameAST *name;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NestedDeclaratorAST: public CoreDeclaratorAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lparen_token;
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT FunctionDeclaratorAST: public PostfixDeclaratorAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lparen_token;
 | 
						|
    ParameterDeclarationClauseAST *parameters;
 | 
						|
    unsigned rparen_token;
 | 
						|
    SpecifierAST *cv_qualifier_seq;
 | 
						|
    ExceptionSpecificationAST *exception_specification;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ArrayDeclaratorAST: public PostfixDeclaratorAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lbracket_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rbracket_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DeclaratorListAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
    DeclaratorListAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DeleteExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned scope_token;
 | 
						|
    unsigned delete_token;
 | 
						|
    unsigned lbracket_token;
 | 
						|
    unsigned rbracket_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DoStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned do_token;
 | 
						|
    StatementAST *statement;
 | 
						|
    unsigned while_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rparen_token;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NamedTypeSpecifierAST: public SpecifierAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    NameAST *name;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ElaboratedTypeSpecifierAST: public SpecifierAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned classkey_token;
 | 
						|
    NameAST *name;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT EnumSpecifierAST: public SpecifierAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned enum_token;
 | 
						|
    NameAST *name;
 | 
						|
    unsigned lbrace_token;
 | 
						|
    EnumeratorAST *enumerators;
 | 
						|
    unsigned rbrace_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT EnumeratorAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned identifier_token;
 | 
						|
    unsigned equal_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    EnumeratorAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ExceptionDeclarationAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *type_specifier;
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
    unsigned dot_dot_dot_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ExceptionSpecificationAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned throw_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    unsigned dot_dot_dot_token;
 | 
						|
    ExpressionListAST *type_ids;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ExpressionOrDeclarationStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    StatementAST *expression;
 | 
						|
    StatementAST *declaration;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ExpressionStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT FunctionDefinitionAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *decl_specifier_seq;
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
    CtorInitializerAST *ctor_initializer;
 | 
						|
    StatementAST *function_body;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ForStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned for_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    StatementAST *initializer;
 | 
						|
    ExpressionAST *condition;
 | 
						|
    unsigned semicolon_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rparen_token;
 | 
						|
    StatementAST *statement;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT IfStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned if_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *condition;
 | 
						|
    unsigned rparen_token;
 | 
						|
    StatementAST *statement;
 | 
						|
    unsigned else_token;
 | 
						|
    StatementAST *else_statement;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ArrayInitializerAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lbrace_token;
 | 
						|
    ExpressionListAST *expression_list;
 | 
						|
    unsigned rbrace_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT LabeledStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned label_token;
 | 
						|
    unsigned colon_token;
 | 
						|
    StatementAST *statement;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT LinkageBodyAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lbrace_token;
 | 
						|
    DeclarationAST *declarations;
 | 
						|
    unsigned rbrace_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT LinkageSpecificationAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned extern_token;
 | 
						|
    unsigned extern_type;
 | 
						|
    DeclarationAST *declaration;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT MemInitializerAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    NameAST *name;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rparen_token;
 | 
						|
    MemInitializerAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NameAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NestedNameSpecifierAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    NameAST *class_or_namespace_name;
 | 
						|
    unsigned scope_token;
 | 
						|
    NestedNameSpecifierAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT QualifiedNameAST: public NameAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned global_scope_token;
 | 
						|
    NestedNameSpecifierAST *nested_name_specifier;
 | 
						|
    NameAST *unqualified_name;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT OperatorFunctionIdAST: public NameAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned operator_token;
 | 
						|
    OperatorAST *op;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ConversionFunctionIdAST: public NameAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned operator_token;
 | 
						|
    SpecifierAST *type_specifier;
 | 
						|
    PtrOperatorAST *ptr_operators;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT SimpleNameAST: public NameAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned identifier_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT DestructorNameAST: public NameAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned tilde_token;
 | 
						|
    unsigned identifier_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TemplateIdAST: public NameAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned identifier_token;
 | 
						|
    unsigned less_token;
 | 
						|
    TemplateArgumentListAST *template_arguments;
 | 
						|
    unsigned greater_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NamespaceAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned namespace_token;
 | 
						|
    unsigned identifier_token;
 | 
						|
    SpecifierAST *attributes;
 | 
						|
    DeclarationAST *linkage_body;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NamespaceAliasDefinitionAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned namespace_token;
 | 
						|
    unsigned namespace_name;
 | 
						|
    unsigned equal_token;
 | 
						|
    NameAST *name;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NewDeclaratorAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    PtrOperatorAST *ptr_operators;
 | 
						|
    NewDeclaratorAST *declarator;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NewExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned scope_token;
 | 
						|
    unsigned new_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    ExpressionAST *type_id;
 | 
						|
    NewTypeIdAST *new_type_id;
 | 
						|
    NewInitializerAST *new_initializer;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NewInitializerAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NewTypeIdAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *type_specifier;
 | 
						|
    NewInitializerAST *new_initializer;
 | 
						|
    NewDeclaratorAST *new_declarator;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT OperatorAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned op_token;
 | 
						|
    unsigned open_token;
 | 
						|
    unsigned close_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ParameterDeclarationAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *type_specifier;
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
    unsigned equal_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ParameterDeclarationClauseAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    DeclarationAST *parameter_declarations;
 | 
						|
    unsigned dot_dot_dot_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT PostfixAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    PostfixAST *next;
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CallAST: public PostfixAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionListAST *expression_list;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ArrayAccessAST: public PostfixAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lbracket_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rbracket_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT PostIncrDecrAST: public PostfixAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned incr_decr_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT MemberAccessAST: public PostfixAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned access_token;
 | 
						|
    unsigned template_token;
 | 
						|
    NameAST *member_name;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TypeidExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned typeid_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TypenameCallExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned typename_token;
 | 
						|
    NameAST *name;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionListAST *expression_list;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TypeConstructorCallAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *type_specifier;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionListAST *expression_list;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT PostfixExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    ExpressionAST *base_expression;
 | 
						|
    PostfixAST *postfix_expressions;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT PtrOperatorAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    PtrOperatorAST *next;
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT PointerToMemberAST: public PtrOperatorAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned global_scope_token;
 | 
						|
    NestedNameSpecifierAST *nested_name_specifier;
 | 
						|
    unsigned star_token;
 | 
						|
    SpecifierAST *cv_qualifier_seq;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT PointerAST: public PtrOperatorAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned star_token;
 | 
						|
    SpecifierAST *cv_qualifier_seq;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ReferenceAST: public PtrOperatorAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned amp_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT BreakStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned break_token;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ContinueStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned continue_token;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT GotoStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned goto_token;
 | 
						|
    unsigned identifier_token;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ReturnStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned return_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT SizeofExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned sizeof_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NumericLiteralAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT BoolLiteralAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ThisExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned this_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT NestedExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
    unsigned rparen_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT StringLiteralAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned token;
 | 
						|
    StringLiteralAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT SwitchStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned switch_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *condition;
 | 
						|
    unsigned rparen_token;
 | 
						|
    StatementAST *statement;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TemplateArgumentListAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    ExpressionAST *template_argument;
 | 
						|
    TemplateArgumentListAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TemplateDeclarationAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned export_token;
 | 
						|
    unsigned template_token;
 | 
						|
    unsigned less_token;
 | 
						|
    DeclarationAST *template_parameters;
 | 
						|
    unsigned greater_token;
 | 
						|
    DeclarationAST *declaration;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT ThrowExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned throw_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TranslationUnitAST: public AST
 | 
						|
{
 | 
						|
public:
 | 
						|
    DeclarationAST *declarations;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TryBlockStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned try_token;
 | 
						|
    StatementAST *statement;
 | 
						|
    CatchClauseAST *catch_clause_seq;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT CatchClauseAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned catch_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExceptionDeclarationAST *exception_declaration;
 | 
						|
    unsigned rparen_token;
 | 
						|
    StatementAST *statement;
 | 
						|
    CatchClauseAST *next;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TypeIdAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    SpecifierAST *type_specifier;
 | 
						|
    DeclaratorAST *declarator;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TypenameTypeParameterAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned classkey_token;
 | 
						|
    NameAST *name;
 | 
						|
    unsigned equal_token;
 | 
						|
    ExpressionAST *type_id;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT TemplateTypeParameterAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned template_token;
 | 
						|
    unsigned less_token;
 | 
						|
    DeclarationAST *template_parameters;
 | 
						|
    unsigned greater_token;
 | 
						|
    unsigned class_token;
 | 
						|
    NameAST *name;
 | 
						|
    unsigned equal_token;
 | 
						|
    ExpressionAST *type_id;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT UnaryExpressionAST: public ExpressionAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned unary_op_token;
 | 
						|
    ExpressionAST *expression;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT UsingAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned using_token;
 | 
						|
    unsigned typename_token;
 | 
						|
    NameAST *name;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT UsingDirectiveAST: public DeclarationAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned using_token;
 | 
						|
    unsigned namespace_token;
 | 
						|
    NameAST *name;
 | 
						|
    unsigned semicolon_token;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
class CPLUSPLUS_EXPORT WhileStatementAST: public StatementAST
 | 
						|
{
 | 
						|
public:
 | 
						|
    unsigned while_token;
 | 
						|
    unsigned lparen_token;
 | 
						|
    ExpressionAST *condition;
 | 
						|
    unsigned rparen_token;
 | 
						|
    StatementAST *statement;
 | 
						|
 | 
						|
public:
 | 
						|
    virtual unsigned firstToken() const;
 | 
						|
    virtual unsigned lastToken() const;
 | 
						|
 | 
						|
protected:
 | 
						|
    virtual void accept0(ASTVisitor *visitor);
 | 
						|
};
 | 
						|
 | 
						|
CPLUSPLUS_END_NAMESPACE
 | 
						|
CPLUSPLUS_END_HEADER
 | 
						|
 | 
						|
#endif // CPLUSPLUS_AST_H
 |