2008-12-02 12:01:29 +01:00
|
|
|
// 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.
|
|
|
|
|
|
2016-03-18 07:55:01 +01:00
|
|
|
#pragma once
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
#include "CPlusPlusForwardDeclarations.h"
|
|
|
|
|
#include "ASTfwd.h"
|
2008-12-22 13:09:26 +01:00
|
|
|
#include "MemoryPool.h"
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-10-20 11:21:25 +02:00
|
|
|
namespace CPlusPlus {
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2014-08-28 14:56:04 +02:00
|
|
|
template <typename Tptr>
|
2009-11-10 11:13:57 +01:00
|
|
|
class CPLUSPLUS_EXPORT List: public Managed
|
2009-02-09 12:19:17 +01:00
|
|
|
{
|
|
|
|
|
List(const List &other);
|
|
|
|
|
void operator =(const List &other);
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
List()
|
2014-08-28 14:56:04 +02:00
|
|
|
: value(Tptr()), next(0)
|
2009-02-09 12:19:17 +01:00
|
|
|
{ }
|
|
|
|
|
|
2014-08-28 14:56:04 +02:00
|
|
|
List(const Tptr &value)
|
2009-11-10 14:24:32 +01:00
|
|
|
: value(value), next(0)
|
|
|
|
|
{ }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
int firstToken() const
|
2009-11-10 11:13:57 +01:00
|
|
|
{
|
|
|
|
|
if (value)
|
|
|
|
|
return value->firstToken();
|
|
|
|
|
|
2013-05-13 10:20:00 +02:00
|
|
|
// ### CPP_CHECK(0);
|
2009-11-10 11:13:57 +01:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
int lastToken() const
|
2010-02-04 16:31:29 +01:00
|
|
|
{
|
2014-08-28 14:56:04 +02:00
|
|
|
Tptr lv = lastValue();
|
2010-02-04 16:31:29 +01:00
|
|
|
|
|
|
|
|
if (lv)
|
|
|
|
|
return lv->lastToken();
|
|
|
|
|
|
2013-05-13 10:20:00 +02:00
|
|
|
// ### CPP_CHECK(0);
|
2010-02-04 16:31:29 +01:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2014-08-28 14:56:04 +02:00
|
|
|
Tptr lastValue() const
|
2009-11-10 11:13:57 +01:00
|
|
|
{
|
2014-08-28 14:56:04 +02:00
|
|
|
Tptr lastValue = 0;
|
2009-11-10 11:13:57 +01:00
|
|
|
|
|
|
|
|
for (const List *it = this; it; it = it->next) {
|
|
|
|
|
if (it->value)
|
2009-11-10 16:19:52 +01:00
|
|
|
lastValue = it->value;
|
2009-11-10 11:13:57 +01:00
|
|
|
}
|
|
|
|
|
|
2010-02-04 16:31:29 +01:00
|
|
|
return lastValue;
|
2009-11-10 11:13:57 +01:00
|
|
|
}
|
2010-03-17 14:35:48 +01:00
|
|
|
|
2014-08-28 14:56:04 +02:00
|
|
|
Tptr value;
|
2009-02-09 12:19:17 +01:00
|
|
|
List *next;
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-22 13:09:26 +01:00
|
|
|
class CPLUSPLUS_EXPORT AST: public Managed
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
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); }
|
|
|
|
|
|
2014-08-28 14:56:04 +02:00
|
|
|
template <typename Tptr>
|
|
|
|
|
static void accept(List<Tptr> *it, ASTVisitor *visitor)
|
2009-11-10 11:13:57 +01:00
|
|
|
{
|
|
|
|
|
for (; it; it = it->next)
|
|
|
|
|
accept(it->value, visitor);
|
|
|
|
|
}
|
|
|
|
|
|
2009-11-12 17:35:48 +01:00
|
|
|
static bool match(AST *ast, AST *pattern, ASTMatcher *matcher);
|
|
|
|
|
bool match(AST *pattern, ASTMatcher *matcher);
|
|
|
|
|
|
2014-08-28 14:56:04 +02:00
|
|
|
template <typename Tptr>
|
|
|
|
|
static bool match(List<Tptr> *it, List<Tptr> *patternIt, ASTMatcher *matcher)
|
2009-11-12 17:35:48 +01:00
|
|
|
{
|
|
|
|
|
while (it && patternIt) {
|
|
|
|
|
if (! match(it->value, patternIt->value, matcher))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
it = it->next;
|
|
|
|
|
patternIt = patternIt->next;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (! it && ! patternIt)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const = 0;
|
|
|
|
|
virtual int lastToken() const = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual AST *clone(MemoryPool *pool) const = 0;
|
|
|
|
|
|
2019-07-26 11:20:19 +02:00
|
|
|
virtual AccessDeclarationAST *asAccessDeclaration() { return nullptr; }
|
|
|
|
|
virtual AliasDeclarationAST *asAliasDeclaration() { return nullptr; }
|
|
|
|
|
virtual AlignmentSpecifierAST *asAlignmentSpecifier() { return nullptr; }
|
|
|
|
|
virtual AlignofExpressionAST *asAlignofExpression() { return nullptr; }
|
|
|
|
|
virtual AnonymousNameAST *asAnonymousName() { return nullptr; }
|
|
|
|
|
virtual ArrayAccessAST *asArrayAccess() { return nullptr; }
|
|
|
|
|
virtual ArrayDeclaratorAST *asArrayDeclarator() { return nullptr; }
|
|
|
|
|
virtual ArrayInitializerAST *asArrayInitializer() { return nullptr; }
|
|
|
|
|
virtual AsmDefinitionAST *asAsmDefinition() { return nullptr; }
|
|
|
|
|
virtual AttributeSpecifierAST *asAttributeSpecifier() { return nullptr; }
|
|
|
|
|
virtual BaseSpecifierAST *asBaseSpecifier() { return nullptr; }
|
|
|
|
|
virtual BinaryExpressionAST *asBinaryExpression() { return nullptr; }
|
|
|
|
|
virtual BoolLiteralAST *asBoolLiteral() { return nullptr; }
|
|
|
|
|
virtual BracedInitializerAST *asBracedInitializer() { return nullptr; }
|
|
|
|
|
virtual BracketDesignatorAST *asBracketDesignator() { return nullptr; }
|
|
|
|
|
virtual BreakStatementAST *asBreakStatement() { return nullptr; }
|
|
|
|
|
virtual CallAST *asCall() { return nullptr; }
|
|
|
|
|
virtual CaptureAST *asCapture() { return nullptr; }
|
|
|
|
|
virtual CaseStatementAST *asCaseStatement() { return nullptr; }
|
|
|
|
|
virtual CastExpressionAST *asCastExpression() { return nullptr; }
|
|
|
|
|
virtual CatchClauseAST *asCatchClause() { return nullptr; }
|
|
|
|
|
virtual ClassSpecifierAST *asClassSpecifier() { return nullptr; }
|
|
|
|
|
virtual CompoundExpressionAST *asCompoundExpression() { return nullptr; }
|
|
|
|
|
virtual CompoundLiteralAST *asCompoundLiteral() { return nullptr; }
|
|
|
|
|
virtual CompoundStatementAST *asCompoundStatement() { return nullptr; }
|
|
|
|
|
virtual ConditionAST *asCondition() { return nullptr; }
|
|
|
|
|
virtual ConditionalExpressionAST *asConditionalExpression() { return nullptr; }
|
|
|
|
|
virtual ContinueStatementAST *asContinueStatement() { return nullptr; }
|
|
|
|
|
virtual ConversionFunctionIdAST *asConversionFunctionId() { return nullptr; }
|
|
|
|
|
virtual CoreDeclaratorAST *asCoreDeclarator() { return nullptr; }
|
|
|
|
|
virtual CppCastExpressionAST *asCppCastExpression() { return nullptr; }
|
|
|
|
|
virtual CtorInitializerAST *asCtorInitializer() { return nullptr; }
|
|
|
|
|
virtual DeclarationAST *asDeclaration() { return nullptr; }
|
|
|
|
|
virtual DeclarationStatementAST *asDeclarationStatement() { return nullptr; }
|
|
|
|
|
virtual DeclaratorAST *asDeclarator() { return nullptr; }
|
|
|
|
|
virtual DeclaratorIdAST *asDeclaratorId() { return nullptr; }
|
|
|
|
|
virtual DecltypeSpecifierAST *asDecltypeSpecifier() { return nullptr; }
|
|
|
|
|
virtual DeleteExpressionAST *asDeleteExpression() { return nullptr; }
|
|
|
|
|
virtual DesignatedInitializerAST *asDesignatedInitializer() { return nullptr; }
|
|
|
|
|
virtual DesignatorAST *asDesignator() { return nullptr; }
|
|
|
|
|
virtual DestructorNameAST *asDestructorName() { return nullptr; }
|
|
|
|
|
virtual DoStatementAST *asDoStatement() { return nullptr; }
|
|
|
|
|
virtual DotDesignatorAST *asDotDesignator() { return nullptr; }
|
|
|
|
|
virtual DynamicExceptionSpecificationAST *asDynamicExceptionSpecification() { return nullptr; }
|
|
|
|
|
virtual ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier() { return nullptr; }
|
|
|
|
|
virtual EmptyDeclarationAST *asEmptyDeclaration() { return nullptr; }
|
|
|
|
|
virtual EnumSpecifierAST *asEnumSpecifier() { return nullptr; }
|
|
|
|
|
virtual EnumeratorAST *asEnumerator() { return nullptr; }
|
|
|
|
|
virtual ExceptionDeclarationAST *asExceptionDeclaration() { return nullptr; }
|
|
|
|
|
virtual ExceptionSpecificationAST *asExceptionSpecification() { return nullptr; }
|
|
|
|
|
virtual ExpressionAST *asExpression() { return nullptr; }
|
|
|
|
|
virtual ExpressionListParenAST *asExpressionListParen() { return nullptr; }
|
|
|
|
|
virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement() { return nullptr; }
|
|
|
|
|
virtual ExpressionStatementAST *asExpressionStatement() { return nullptr; }
|
|
|
|
|
virtual ForStatementAST *asForStatement() { return nullptr; }
|
|
|
|
|
virtual ForeachStatementAST *asForeachStatement() { return nullptr; }
|
|
|
|
|
virtual FunctionDeclaratorAST *asFunctionDeclarator() { return nullptr; }
|
|
|
|
|
virtual FunctionDefinitionAST *asFunctionDefinition() { return nullptr; }
|
|
|
|
|
virtual GnuAttributeAST *asGnuAttribute() { return nullptr; }
|
|
|
|
|
virtual GnuAttributeSpecifierAST *asGnuAttributeSpecifier() { return nullptr; }
|
|
|
|
|
virtual GotoStatementAST *asGotoStatement() { return nullptr; }
|
|
|
|
|
virtual IdExpressionAST *asIdExpression() { return nullptr; }
|
|
|
|
|
virtual IfStatementAST *asIfStatement() { return nullptr; }
|
|
|
|
|
virtual LabeledStatementAST *asLabeledStatement() { return nullptr; }
|
|
|
|
|
virtual LambdaCaptureAST *asLambdaCapture() { return nullptr; }
|
|
|
|
|
virtual LambdaDeclaratorAST *asLambdaDeclarator() { return nullptr; }
|
|
|
|
|
virtual LambdaExpressionAST *asLambdaExpression() { return nullptr; }
|
|
|
|
|
virtual LambdaIntroducerAST *asLambdaIntroducer() { return nullptr; }
|
|
|
|
|
virtual LinkageBodyAST *asLinkageBody() { return nullptr; }
|
|
|
|
|
virtual LinkageSpecificationAST *asLinkageSpecification() { return nullptr; }
|
|
|
|
|
virtual MemInitializerAST *asMemInitializer() { return nullptr; }
|
|
|
|
|
virtual MemberAccessAST *asMemberAccess() { return nullptr; }
|
2020-05-14 23:07:05 +03:00
|
|
|
virtual MsvcDeclspecSpecifierAST *asMsvcDeclspecSpecifier() { return nullptr; }
|
2019-07-26 11:20:19 +02:00
|
|
|
virtual NameAST *asName() { return nullptr; }
|
|
|
|
|
virtual NamedTypeSpecifierAST *asNamedTypeSpecifier() { return nullptr; }
|
|
|
|
|
virtual NamespaceAST *asNamespace() { return nullptr; }
|
|
|
|
|
virtual NamespaceAliasDefinitionAST *asNamespaceAliasDefinition() { return nullptr; }
|
|
|
|
|
virtual NestedDeclaratorAST *asNestedDeclarator() { return nullptr; }
|
|
|
|
|
virtual NestedExpressionAST *asNestedExpression() { return nullptr; }
|
|
|
|
|
virtual NestedNameSpecifierAST *asNestedNameSpecifier() { return nullptr; }
|
|
|
|
|
virtual NewArrayDeclaratorAST *asNewArrayDeclarator() { return nullptr; }
|
|
|
|
|
virtual NewExpressionAST *asNewExpression() { return nullptr; }
|
|
|
|
|
virtual NewTypeIdAST *asNewTypeId() { return nullptr; }
|
|
|
|
|
virtual NoExceptOperatorExpressionAST *asNoExceptOperatorExpression() { return nullptr; }
|
|
|
|
|
virtual NoExceptSpecificationAST *asNoExceptSpecification() { return nullptr; }
|
|
|
|
|
virtual NumericLiteralAST *asNumericLiteral() { return nullptr; }
|
|
|
|
|
virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCClassForwardDeclarationAST *asObjCClassForwardDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() { return nullptr; }
|
|
|
|
|
virtual ObjCFastEnumerationAST *asObjCFastEnumeration() { return nullptr; }
|
|
|
|
|
virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return nullptr; }
|
|
|
|
|
virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCMessageExpressionAST *asObjCMessageExpression() { return nullptr; }
|
|
|
|
|
virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return nullptr; }
|
|
|
|
|
virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() { return nullptr; }
|
|
|
|
|
virtual ObjCPropertyDeclarationAST *asObjCPropertyDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCProtocolExpressionAST *asObjCProtocolExpression() { return nullptr; }
|
|
|
|
|
virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCProtocolRefsAST *asObjCProtocolRefs() { return nullptr; }
|
|
|
|
|
virtual ObjCSelectorAST *asObjCSelector() { return nullptr; }
|
|
|
|
|
virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() { return nullptr; }
|
|
|
|
|
virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() { return nullptr; }
|
|
|
|
|
virtual ObjCSynchronizedStatementAST *asObjCSynchronizedStatement() { return nullptr; }
|
|
|
|
|
virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return nullptr; }
|
|
|
|
|
virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return nullptr; }
|
|
|
|
|
virtual ObjCTypeNameAST *asObjCTypeName() { return nullptr; }
|
|
|
|
|
virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() { return nullptr; }
|
|
|
|
|
virtual OperatorAST *asOperator() { return nullptr; }
|
|
|
|
|
virtual OperatorFunctionIdAST *asOperatorFunctionId() { return nullptr; }
|
|
|
|
|
virtual ParameterDeclarationAST *asParameterDeclaration() { return nullptr; }
|
|
|
|
|
virtual ParameterDeclarationClauseAST *asParameterDeclarationClause() { return nullptr; }
|
|
|
|
|
virtual PointerAST *asPointer() { return nullptr; }
|
|
|
|
|
virtual PointerLiteralAST *asPointerLiteral() { return nullptr; }
|
|
|
|
|
virtual PointerToMemberAST *asPointerToMember() { return nullptr; }
|
|
|
|
|
virtual PostIncrDecrAST *asPostIncrDecr() { return nullptr; }
|
|
|
|
|
virtual PostfixAST *asPostfix() { return nullptr; }
|
|
|
|
|
virtual PostfixDeclaratorAST *asPostfixDeclarator() { return nullptr; }
|
|
|
|
|
virtual PtrOperatorAST *asPtrOperator() { return nullptr; }
|
|
|
|
|
virtual QtEnumDeclarationAST *asQtEnumDeclaration() { return nullptr; }
|
|
|
|
|
virtual QtFlagsDeclarationAST *asQtFlagsDeclaration() { return nullptr; }
|
|
|
|
|
virtual QtInterfaceNameAST *asQtInterfaceName() { return nullptr; }
|
|
|
|
|
virtual QtInterfacesDeclarationAST *asQtInterfacesDeclaration() { return nullptr; }
|
|
|
|
|
virtual QtMemberDeclarationAST *asQtMemberDeclaration() { return nullptr; }
|
|
|
|
|
virtual QtMethodAST *asQtMethod() { return nullptr; }
|
|
|
|
|
virtual QtObjectTagAST *asQtObjectTag() { return nullptr; }
|
|
|
|
|
virtual QtPrivateSlotAST *asQtPrivateSlot() { return nullptr; }
|
|
|
|
|
virtual QtPropertyDeclarationAST *asQtPropertyDeclaration() { return nullptr; }
|
|
|
|
|
virtual QtPropertyDeclarationItemAST *asQtPropertyDeclarationItem() { return nullptr; }
|
|
|
|
|
virtual QualifiedNameAST *asQualifiedName() { return nullptr; }
|
|
|
|
|
virtual RangeBasedForStatementAST *asRangeBasedForStatement() { return nullptr; }
|
|
|
|
|
virtual ReferenceAST *asReference() { return nullptr; }
|
|
|
|
|
virtual ReturnStatementAST *asReturnStatement() { return nullptr; }
|
|
|
|
|
virtual SimpleDeclarationAST *asSimpleDeclaration() { return nullptr; }
|
|
|
|
|
virtual SimpleNameAST *asSimpleName() { return nullptr; }
|
|
|
|
|
virtual SimpleSpecifierAST *asSimpleSpecifier() { return nullptr; }
|
|
|
|
|
virtual SizeofExpressionAST *asSizeofExpression() { return nullptr; }
|
|
|
|
|
virtual SpecifierAST *asSpecifier() { return nullptr; }
|
|
|
|
|
virtual StatementAST *asStatement() { return nullptr; }
|
|
|
|
|
virtual StaticAssertDeclarationAST *asStaticAssertDeclaration() { return nullptr; }
|
2020-05-14 23:07:05 +03:00
|
|
|
virtual StdAttributeSpecifierAST *asStdAttributeSpecifier() { return nullptr; }
|
2019-07-26 11:20:19 +02:00
|
|
|
virtual StringLiteralAST *asStringLiteral() { return nullptr; }
|
|
|
|
|
virtual SwitchStatementAST *asSwitchStatement() { return nullptr; }
|
|
|
|
|
virtual TemplateDeclarationAST *asTemplateDeclaration() { return nullptr; }
|
|
|
|
|
virtual TemplateIdAST *asTemplateId() { return nullptr; }
|
|
|
|
|
virtual TemplateTypeParameterAST *asTemplateTypeParameter() { return nullptr; }
|
|
|
|
|
virtual ThisExpressionAST *asThisExpression() { return nullptr; }
|
|
|
|
|
virtual ThrowExpressionAST *asThrowExpression() { return nullptr; }
|
|
|
|
|
virtual TrailingReturnTypeAST *asTrailingReturnType() { return nullptr; }
|
|
|
|
|
virtual TranslationUnitAST *asTranslationUnit() { return nullptr; }
|
|
|
|
|
virtual TryBlockStatementAST *asTryBlockStatement() { return nullptr; }
|
|
|
|
|
virtual TypeConstructorCallAST *asTypeConstructorCall() { return nullptr; }
|
|
|
|
|
virtual TypeIdAST *asTypeId() { return nullptr; }
|
|
|
|
|
virtual TypeidExpressionAST *asTypeidExpression() { return nullptr; }
|
|
|
|
|
virtual TypenameCallExpressionAST *asTypenameCallExpression() { return nullptr; }
|
|
|
|
|
virtual TypenameTypeParameterAST *asTypenameTypeParameter() { return nullptr; }
|
|
|
|
|
virtual TypeofSpecifierAST *asTypeofSpecifier() { return nullptr; }
|
|
|
|
|
virtual UnaryExpressionAST *asUnaryExpression() { return nullptr; }
|
|
|
|
|
virtual UsingAST *asUsing() { return nullptr; }
|
|
|
|
|
virtual UsingDirectiveAST *asUsingDirective() { return nullptr; }
|
|
|
|
|
virtual WhileStatementAST *asWhileStatement() { return nullptr; }
|
2009-11-12 17:35:48 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor) = 0;
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *) = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2009-11-16 13:38:37 +01:00
|
|
|
class CPLUSPLUS_EXPORT StatementAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual StatementAST *asStatement() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual StatementAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ExpressionAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual ExpressionAST *asExpression() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual ExpressionAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT DeclarationAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual DeclarationAST *asDeclaration() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual DeclarationAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
2010-08-02 12:04:59 +02:00
|
|
|
class CPLUSPLUS_EXPORT NameAST: public AST
|
2009-11-16 13:38:37 +01:00
|
|
|
{
|
|
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
const Name *name = nullptr;
|
2009-11-16 13:38:37 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual NameAST *asName() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual NameAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT SpecifierAST: public AST
|
|
|
|
|
{
|
2009-01-07 17:50:48 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual SpecifierAST *asSpecifier() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual SpecifierAST *clone(MemoryPool *pool) const = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2009-11-16 13:38:37 +01:00
|
|
|
class CPLUSPLUS_EXPORT PtrOperatorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual PtrOperatorAST *asPtrOperator() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual PtrOperatorAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
2010-06-23 14:38:41 +02:00
|
|
|
class CPLUSPLUS_EXPORT PostfixAST: public ExpressionAST
|
2009-11-16 13:38:37 +01:00
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual PostfixAST *asPostfix() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual PostfixAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CoreDeclaratorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual CoreDeclaratorAST *asCoreDeclarator() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual CoreDeclaratorAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT PostfixDeclaratorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual PostfixDeclaratorAST *asPostfixDeclarator() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
|
|
|
|
virtual PostfixDeclaratorAST *clone(MemoryPool *pool) const = 0;
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
2010-02-23 17:43:40 +01:00
|
|
|
class CPLUSPLUS_EXPORT ObjCSelectorArgumentAST: public AST
|
2009-11-16 13:38:37 +01:00
|
|
|
{
|
2010-02-23 17:43:40 +01:00
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int name_token = 0;
|
|
|
|
|
int colon_token = 0;
|
2010-02-23 17:43:40 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-02-23 17:43:40 +01:00
|
|
|
|
|
|
|
|
virtual ObjCSelectorArgumentAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCSelectorAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ObjCSelectorArgumentListAST *selector_argument_list = nullptr;
|
2009-11-16 13:38:37 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual ObjCSelectorAST *asObjCSelector() { return this; }
|
2010-02-02 11:40:50 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-02-23 17:43:40 +01:00
|
|
|
|
|
|
|
|
virtual ObjCSelectorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-11-16 13:38:37 +01:00
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT SimpleSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int specifier_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual SimpleSpecifierAST *asSimpleSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual SimpleSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT AttributeSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
2014-07-15 12:37:19 +02:00
|
|
|
public:
|
|
|
|
|
virtual AttributeSpecifierAST *asAttributeSpecifier() { return this; }
|
|
|
|
|
|
|
|
|
|
virtual AttributeSpecifierAST *clone(MemoryPool *pool) const = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT AlignmentSpecifierAST: public AttributeSpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int align_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *typeIdExprOrAlignmentExpr = nullptr;
|
|
|
|
|
int ellipses_token = 0;
|
|
|
|
|
int rparen_token = 0;
|
2014-07-15 12:37:19 +02:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual AlignmentSpecifierAST *asAlignmentSpecifier() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2014-07-15 12:37:19 +02:00
|
|
|
|
|
|
|
|
virtual AlignmentSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT GnuAttributeSpecifierAST: public AttributeSpecifierAST
|
|
|
|
|
{
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int attribute_token = 0;
|
|
|
|
|
int first_lparen_token = 0;
|
|
|
|
|
int second_lparen_token = 0;
|
|
|
|
|
GnuAttributeListAST *attribute_list = nullptr;
|
|
|
|
|
int first_rparen_token = 0;
|
|
|
|
|
int second_rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2014-07-15 12:37:19 +02:00
|
|
|
virtual GnuAttributeSpecifierAST *asGnuAttributeSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2014-07-15 12:37:19 +02:00
|
|
|
virtual GnuAttributeSpecifierAST *clone(MemoryPool *pool) const;
|
2010-02-02 11:40:50 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2020-05-14 23:07:05 +03:00
|
|
|
class CPLUSPLUS_EXPORT MsvcDeclspecSpecifierAST: public AttributeSpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
int attribute_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
GnuAttributeListAST *attribute_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual MsvcDeclspecSpecifierAST *asMsvcDeclspecSpecifier() { return this; }
|
|
|
|
|
|
|
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
|
|
|
|
|
|
|
|
|
virtual MsvcDeclspecSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT StdAttributeSpecifierAST: public AttributeSpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
int first_lbracket_token = 0;
|
|
|
|
|
int second_lbracket_token = 0;
|
|
|
|
|
GnuAttributeListAST *attribute_list = nullptr;
|
|
|
|
|
int first_rbracket_token = 0;
|
|
|
|
|
int second_rbracket_token = 0;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual StdAttributeSpecifierAST *asStdAttributeSpecifier() { return this; }
|
|
|
|
|
|
|
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
|
|
|
|
|
|
|
|
|
virtual StdAttributeSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2014-07-15 12:37:19 +02:00
|
|
|
class CPLUSPLUS_EXPORT GnuAttributeAST: public AST
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int identifier_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
int tag_token = 0;
|
|
|
|
|
ExpressionListAST *expression_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2014-07-15 12:37:19 +02:00
|
|
|
virtual GnuAttributeAST *asGnuAttribute() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2014-07-15 12:37:19 +02:00
|
|
|
virtual GnuAttributeAST *clone(MemoryPool *pool) const;
|
2010-02-02 11:40:50 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TypeofSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int typeof_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TypeofSpecifierAST *asTypeofSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TypeofSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2012-02-10 14:41:58 +01:00
|
|
|
class CPLUSPLUS_EXPORT DecltypeSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int decltype_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2012-02-10 14:41:58 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual DecltypeSpecifierAST *asDecltypeSpecifier() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2012-02-10 14:41:58 +01:00
|
|
|
|
|
|
|
|
virtual DecltypeSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT DeclaratorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
PtrOperatorListAST *ptr_operator_list = nullptr;
|
|
|
|
|
CoreDeclaratorAST *core_declarator = nullptr;
|
|
|
|
|
PostfixDeclaratorListAST *postfix_declarator_list = nullptr;
|
|
|
|
|
SpecifierListAST *post_attribute_list = nullptr;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
ExpressionAST *initializer = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual DeclaratorAST *asDeclarator() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual DeclaratorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT SimpleDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int qt_invokable_token = 0;
|
|
|
|
|
SpecifierListAST *decl_specifier_list = nullptr;
|
|
|
|
|
DeclaratorListAST *declarator_list = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:19:17 +01:00
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
List<Symbol *> *symbols = nullptr;
|
2009-02-09 12:19:17 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual SimpleDeclarationAST *asSimpleDeclaration() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual SimpleDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT EmptyDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual EmptyDeclarationAST *asEmptyDeclaration() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual EmptyDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT AccessDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int access_specifier_token = 0;
|
|
|
|
|
int slots_token = 0;
|
|
|
|
|
int colon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual AccessDeclarationAST *asAccessDeclaration() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual AccessDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2010-03-17 14:35:48 +01:00
|
|
|
class CPLUSPLUS_EXPORT QtObjectTagAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int q_object_token = 0;
|
2010-03-17 14:35:48 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual QtObjectTagAST *asQtObjectTag() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-17 14:35:48 +01:00
|
|
|
|
|
|
|
|
virtual QtObjectTagAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT QtPrivateSlotAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int q_private_slot_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
int dptr_token = 0;
|
|
|
|
|
int dptr_lparen_token = 0;
|
|
|
|
|
int dptr_rparen_token = 0;
|
|
|
|
|
int comma_token = 0;
|
|
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2010-03-18 16:06:15 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2010-03-17 14:35:48 +01:00
|
|
|
virtual QtPrivateSlotAST *asQtPrivateSlot() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-17 14:35:48 +01:00
|
|
|
|
|
|
|
|
virtual QtPrivateSlotAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2010-02-06 15:47:46 +01:00
|
|
|
class QtPropertyDeclarationItemAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int item_name_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2010-02-06 15:47:46 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual QtPropertyDeclarationItemAST *asQtPropertyDeclarationItem() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-02-06 15:47:46 +01:00
|
|
|
|
2010-02-16 16:54:39 +01:00
|
|
|
virtual QtPropertyDeclarationItemAST *clone(MemoryPool *pool) const;
|
2010-02-06 15:47:46 +01:00
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2010-02-06 11:05:43 +01:00
|
|
|
class CPLUSPLUS_EXPORT QtPropertyDeclarationAST: public DeclarationAST
|
2010-01-19 15:26:08 +10:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int property_specifier_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr; // for Q_PRIVATE_PROPERTY(expression, ...)
|
|
|
|
|
int comma_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
|
|
|
|
NameAST *property_name = nullptr;
|
|
|
|
|
QtPropertyDeclarationItemListAST *property_declaration_item_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2010-01-19 15:26:08 +10:00
|
|
|
|
|
|
|
|
public:
|
2010-02-06 11:05:43 +01:00
|
|
|
virtual QtPropertyDeclarationAST *asQtPropertyDeclaration() { return this; }
|
2010-01-19 15:26:08 +10:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-01-19 15:26:08 +10:00
|
|
|
|
2010-02-06 11:05:43 +01:00
|
|
|
virtual QtPropertyDeclarationAST *clone(MemoryPool *pool) const;
|
2010-02-03 13:21:08 +10:00
|
|
|
|
2010-01-19 15:26:08 +10:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2010-02-06 11:05:43 +01:00
|
|
|
class CPLUSPLUS_EXPORT QtEnumDeclarationAST: public DeclarationAST
|
2010-01-19 15:26:08 +10:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int enum_specifier_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
NameListAST *enumerator_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2010-01-19 15:26:08 +10:00
|
|
|
|
|
|
|
|
public:
|
2010-02-06 11:05:43 +01:00
|
|
|
virtual QtEnumDeclarationAST *asQtEnumDeclaration() { return this; }
|
2010-01-19 15:26:08 +10:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-01-19 15:26:08 +10:00
|
|
|
|
2010-02-06 11:05:43 +01:00
|
|
|
virtual QtEnumDeclarationAST *clone(MemoryPool *pool) const;
|
2010-02-03 13:21:08 +10:00
|
|
|
|
2010-01-19 15:26:08 +10:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2010-02-06 11:05:43 +01:00
|
|
|
class CPLUSPLUS_EXPORT QtFlagsDeclarationAST: public DeclarationAST
|
2010-01-19 15:26:08 +10:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int flags_specifier_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
NameListAST *flag_enums_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2010-01-19 15:26:08 +10:00
|
|
|
|
|
|
|
|
public:
|
2010-02-06 11:05:43 +01:00
|
|
|
virtual QtFlagsDeclarationAST *asQtFlagsDeclaration() { return this; }
|
2010-01-19 15:26:08 +10:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-01-19 15:26:08 +10:00
|
|
|
|
2010-02-06 11:05:43 +01:00
|
|
|
virtual QtFlagsDeclarationAST *clone(MemoryPool *pool) const;
|
2010-02-03 13:21:08 +10:00
|
|
|
|
2010-01-19 15:26:08 +10:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2010-03-16 17:29:40 +01:00
|
|
|
class CPLUSPLUS_EXPORT QtInterfaceNameAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
NameAST *interface_name = nullptr;
|
|
|
|
|
NameListAST *constraint_list = nullptr;
|
2010-03-16 17:29:40 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual QtInterfaceNameAST *asQtInterfaceName() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-16 17:29:40 +01:00
|
|
|
|
|
|
|
|
virtual QtInterfaceNameAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT QtInterfacesDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int interfaces_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
QtInterfaceNameListAST *interface_name_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2010-03-16 17:29:40 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual QtInterfacesDeclarationAST *asQtInterfacesDeclaration() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-16 17:29:40 +01:00
|
|
|
|
|
|
|
|
virtual QtInterfacesDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT AsmDefinitionAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int asm_token = 0;
|
|
|
|
|
int volatile_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
2009-02-05 11:37:51 +01:00
|
|
|
// ### string literals
|
|
|
|
|
// ### asm operand list
|
2019-07-26 12:20:44 +02:00
|
|
|
int rparen_token = 0;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual AsmDefinitionAST *asAsmDefinition() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual AsmDefinitionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT BaseSpecifierAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int virtual_token = 0;
|
|
|
|
|
int access_specifier_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int ellipsis_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 11:55:49 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
BaseClass *symbol = nullptr;
|
2009-02-09 11:55:49 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual BaseSpecifierAST *asBaseSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual BaseSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2010-08-02 12:04:59 +02:00
|
|
|
class CPLUSPLUS_EXPORT IdExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
NameAST *name = nullptr;
|
2010-08-02 12:04:59 +02:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual IdExpressionAST *asIdExpression() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-08-02 12:04:59 +02:00
|
|
|
|
|
|
|
|
virtual IdExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2010-02-04 14:55:18 +01:00
|
|
|
class CPLUSPLUS_EXPORT CompoundExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
CompoundStatementAST *statement = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2010-02-04 14:55:18 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual CompoundExpressionAST *asCompoundExpression() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-02-04 14:55:18 +01:00
|
|
|
|
|
|
|
|
virtual CompoundExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2009-01-13 14:58:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT CompoundLiteralAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
ExpressionAST *initializer = nullptr;
|
2009-01-13 14:58:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CompoundLiteralAST *asCompoundLiteral() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-01-13 14:58:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CompoundLiteralAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-01-13 14:58:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-01-13 14:58:29 +01:00
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT QtMethodAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int method_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual QtMethodAST *asQtMethod() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual QtMethodAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2009-11-30 16:30:21 +01:00
|
|
|
class CPLUSPLUS_EXPORT QtMemberDeclarationAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int q_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2009-11-30 16:30:21 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual QtMemberDeclarationAST *asQtMemberDeclaration() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-11-30 16:30:21 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual QtMemberDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-11-30 16:30:21 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT BinaryExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *left_expression = nullptr;
|
|
|
|
|
int binary_op_token = 0;
|
|
|
|
|
ExpressionAST *right_expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual BinaryExpressionAST *asBinaryExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual BinaryExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CastExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CastExpressionAST *asCastExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CastExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ClassSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int classkey_token = 0;
|
|
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int final_token = 0;
|
|
|
|
|
int colon_token = 0;
|
|
|
|
|
BaseSpecifierListAST *base_clause_list = nullptr;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
|
|
|
|
int lbrace_token = 0;
|
|
|
|
|
DeclarationListAST *member_specifier_list = nullptr;
|
|
|
|
|
int rbrace_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 11:35:57 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Class *symbol = nullptr;
|
2010-03-18 16:06:15 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ClassSpecifierAST *asClassSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ClassSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CaseStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int case_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int colon_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CaseStatementAST *asCaseStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CaseStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CompoundStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbrace_token = 0;
|
|
|
|
|
StatementListAST *statement_list = nullptr;
|
|
|
|
|
int rbrace_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 14:58:13 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2009-02-09 14:58:13 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CompoundStatementAST *asCompoundStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CompoundStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ConditionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ConditionAST *asCondition() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ConditionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ConditionalExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *condition = nullptr;
|
|
|
|
|
int question_token = 0;
|
|
|
|
|
ExpressionAST *left_expression = nullptr;
|
|
|
|
|
int colon_token = 0;
|
|
|
|
|
ExpressionAST *right_expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ConditionalExpressionAST *asConditionalExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ConditionalExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CppCastExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int cast_token = 0;
|
|
|
|
|
int less_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
|
|
|
|
int greater_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CppCastExpressionAST *asCppCastExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CppCastExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CtorInitializerAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int colon_token = 0;
|
|
|
|
|
MemInitializerListAST *member_initializer_list = nullptr;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CtorInitializerAST *asCtorInitializer() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CtorInitializerAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT DeclarationStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
DeclarationAST *declaration = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual DeclarationStatementAST *asDeclarationStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual DeclarationStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT DeclaratorIdAST: public CoreDeclaratorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int dot_dot_dot_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual DeclaratorIdAST *asDeclaratorId() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual DeclaratorIdAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NestedDeclaratorAST: public CoreDeclaratorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NestedDeclaratorAST *asNestedDeclarator() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NestedDeclaratorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT FunctionDeclaratorAST: public PostfixDeclaratorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ParameterDeclarationClauseAST *parameter_declaration_clause = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
SpecifierListAST *cv_qualifier_list = nullptr;
|
|
|
|
|
int ref_qualifier_token = 0;
|
|
|
|
|
ExceptionSpecificationAST *exception_specification = nullptr;
|
|
|
|
|
TrailingReturnTypeAST *trailing_return_type = nullptr;
|
2012-09-24 14:51:27 +02:00
|
|
|
// Some FunctionDeclarators can also be interpreted as an initializer, like for 'A b(c);'
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *as_cpp_initializer = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:47:58 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Function *symbol = nullptr;
|
2009-02-09 12:47:58 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual FunctionDeclaratorAST *asFunctionDeclarator() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual FunctionDeclaratorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ArrayDeclaratorAST: public PostfixDeclaratorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbracket_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rbracket_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ArrayDeclaratorAST *asArrayDeclarator() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ArrayDeclaratorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT DeleteExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int scope_token = 0;
|
|
|
|
|
int delete_token = 0;
|
|
|
|
|
int lbracket_token = 0;
|
|
|
|
|
int rbracket_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual DeleteExpressionAST *asDeleteExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual DeleteExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT DoStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int do_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
|
|
|
|
int while_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual DoStatementAST *asDoStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual DoStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NamedTypeSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
NameAST *name = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NamedTypeSpecifierAST *asNamedTypeSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NamedTypeSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ElaboratedTypeSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int classkey_token = 0;
|
|
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
NameAST *name = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ElaboratedTypeSpecifierAST *asElaboratedTypeSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ElaboratedTypeSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT EnumSpecifierAST: public SpecifierAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int enum_token = 0;
|
|
|
|
|
int key_token = 0; // struct, class or 0
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int colon_token = 0; // can be 0 if there is no enum-base
|
|
|
|
|
SpecifierListAST *type_specifier_list = nullptr; // ditto
|
|
|
|
|
int lbrace_token = 0;
|
|
|
|
|
EnumeratorListAST *enumerator_list = nullptr;
|
|
|
|
|
int stray_comma_token = 0;
|
|
|
|
|
int rbrace_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-08-09 17:17:50 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Enum *symbol = nullptr;
|
2010-03-18 16:06:15 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual EnumSpecifierAST *asEnumSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual EnumSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT EnumeratorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int identifier_token = 0;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual EnumeratorAST *asEnumerator() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual EnumeratorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ExceptionDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ExceptionDeclarationAST *asExceptionDeclaration() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ExceptionDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ExceptionSpecificationAST: public AST
|
|
|
|
|
{
|
2012-02-02 11:40:01 +01:00
|
|
|
public:
|
|
|
|
|
virtual ExceptionSpecificationAST *asExceptionSpecification() { return this; }
|
|
|
|
|
|
|
|
|
|
virtual ExceptionSpecificationAST *clone(MemoryPool *pool) const = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT DynamicExceptionSpecificationAST: public ExceptionSpecificationAST
|
|
|
|
|
{
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int throw_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
|
|
|
|
ExpressionListAST *type_id_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2012-02-02 11:40:01 +01:00
|
|
|
virtual DynamicExceptionSpecificationAST *asDynamicExceptionSpecification() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2012-02-02 11:40:01 +01:00
|
|
|
|
|
|
|
|
virtual DynamicExceptionSpecificationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NoExceptSpecificationAST: public ExceptionSpecificationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int noexcept_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2012-02-02 11:40:01 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual NoExceptSpecificationAST *asNoExceptSpecification() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2012-02-02 11:40:01 +01:00
|
|
|
virtual NoExceptSpecificationAST *clone(MemoryPool *pool) const;
|
2010-02-02 11:40:50 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ExpressionOrDeclarationStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionStatementAST *expression = nullptr;
|
|
|
|
|
DeclarationStatementAST *declaration = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ExpressionOrDeclarationStatementAST *asExpressionOrDeclarationStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ExpressionOrDeclarationStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ExpressionStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ExpressionStatementAST *asExpressionStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-25 12:39:39 +01:00
|
|
|
virtual ExpressionStatementAST *clone(MemoryPool *pool) const;
|
2010-02-02 11:40:50 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT FunctionDefinitionAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int qt_invokable_token = 0;
|
|
|
|
|
SpecifierListAST *decl_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
|
|
|
|
CtorInitializerAST *ctor_initializer = nullptr;
|
|
|
|
|
StatementAST *function_body = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:19:17 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Function *symbol = nullptr;
|
2009-02-09 12:19:17 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual FunctionDefinitionAST *asFunctionDefinition() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual FunctionDefinitionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2009-07-03 09:11:52 +02:00
|
|
|
class CPLUSPLUS_EXPORT ForeachStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int foreach_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
2009-07-03 09:11:52 +02:00
|
|
|
// declaration
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
2009-07-03 09:11:52 +02:00
|
|
|
// or an expression
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *initializer = nullptr;
|
|
|
|
|
int comma_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2009-07-03 09:11:52 +02:00
|
|
|
|
|
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2010-03-18 16:06:15 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ForeachStatementAST *asForeachStatement() { return this; }
|
2009-07-03 09:11:52 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-03 09:11:52 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ForeachStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-03 09:11:52 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2012-02-19 16:33:25 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT RangeBasedForStatementAST : public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int for_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
2012-02-19 16:33:25 +04:00
|
|
|
// declaration
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
2012-02-19 16:33:25 +04:00
|
|
|
// or an expression
|
2019-07-26 12:20:44 +02:00
|
|
|
int colon_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2012-02-19 16:33:25 +04:00
|
|
|
|
|
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2012-02-19 16:33:25 +04:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual RangeBasedForStatementAST *asRangeBasedForStatement() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2012-02-19 16:33:25 +04:00
|
|
|
|
|
|
|
|
virtual RangeBasedForStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-03 09:11:52 +02:00
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT ForStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int for_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
StatementAST *initializer = nullptr;
|
|
|
|
|
ExpressionAST *condition = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 14:58:13 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2009-02-09 14:58:13 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ForStatementAST *asForStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ForStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT IfStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int if_token = 0;
|
2020-05-14 23:07:05 +03:00
|
|
|
int constexpr_token = 0;
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *condition = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
|
|
|
|
int else_token = 0;
|
|
|
|
|
StatementAST *else_statement = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 14:58:13 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2009-02-09 14:58:13 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual IfStatementAST *asIfStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual IfStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ArrayInitializerAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbrace_token = 0;
|
|
|
|
|
ExpressionListAST *expression_list = nullptr;
|
|
|
|
|
int rbrace_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ArrayInitializerAST *asArrayInitializer() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ArrayInitializerAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT LabeledStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int label_token = 0;
|
|
|
|
|
int colon_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual LabeledStatementAST *asLabeledStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual LabeledStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT LinkageBodyAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbrace_token = 0;
|
|
|
|
|
DeclarationListAST *declaration_list = nullptr;
|
|
|
|
|
int rbrace_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual LinkageBodyAST *asLinkageBody() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual LinkageBodyAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT LinkageSpecificationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int extern_token = 0;
|
|
|
|
|
int extern_type_token = 0;
|
|
|
|
|
DeclarationAST *declaration = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual LinkageSpecificationAST *asLinkageSpecification() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual LinkageSpecificationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT MemInitializerAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
NameAST *name = nullptr;
|
2012-09-17 09:58:09 +02:00
|
|
|
// either a BracedInitializerAST or a ExpressionListParenAST
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual MemInitializerAST *asMemInitializer() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual MemInitializerAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NestedNameSpecifierAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
NameAST *class_or_namespace_name = nullptr;
|
|
|
|
|
int scope_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NestedNameSpecifierAST *asNestedNameSpecifier() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NestedNameSpecifierAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT QualifiedNameAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int global_scope_token = 0;
|
|
|
|
|
NestedNameSpecifierListAST *nested_name_specifier_list = nullptr;
|
|
|
|
|
NameAST *unqualified_name = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual QualifiedNameAST *asQualifiedName() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual QualifiedNameAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT OperatorFunctionIdAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int operator_token = 0;
|
|
|
|
|
OperatorAST *op = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual OperatorFunctionIdAST *asOperatorFunctionId() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual OperatorFunctionIdAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ConversionFunctionIdAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int operator_token = 0;
|
|
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
PtrOperatorListAST *ptr_operator_list = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ConversionFunctionIdAST *asConversionFunctionId() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ConversionFunctionIdAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2013-04-10 23:30:18 +02:00
|
|
|
class CPLUSPLUS_EXPORT AnonymousNameAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int class_token = 0;
|
2013-04-10 23:30:18 +02:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2013-04-10 23:30:18 +02:00
|
|
|
virtual AnonymousNameAST *asAnonymousName() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const { return 0; }
|
|
|
|
|
virtual int lastToken() const { return 0; }
|
2013-04-10 23:30:18 +02:00
|
|
|
|
|
|
|
|
virtual AnonymousNameAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT SimpleNameAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int identifier_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual SimpleNameAST *asSimpleName() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual SimpleNameAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT DestructorNameAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int tilde_token = 0;
|
|
|
|
|
NameAST *unqualified_name = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual DestructorNameAST *asDestructorName() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual DestructorNameAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TemplateIdAST: public NameAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int template_token = 0;
|
|
|
|
|
int identifier_token = 0;
|
|
|
|
|
int less_token = 0;
|
|
|
|
|
ExpressionListAST *template_argument_list = nullptr;
|
|
|
|
|
int greater_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TemplateIdAST *asTemplateId() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TemplateIdAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NamespaceAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int inline_token = 0;
|
|
|
|
|
int namespace_token = 0;
|
|
|
|
|
int identifier_token = 0;
|
|
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
DeclarationAST *linkage_body = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:00:06 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Namespace *symbol = nullptr;
|
2009-02-09 12:00:06 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NamespaceAST *asNamespace() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NamespaceAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NamespaceAliasDefinitionAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int namespace_token = 0;
|
|
|
|
|
int namespace_name_token = 0;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NamespaceAliasDefinitionAST *asNamespaceAliasDefinition() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NamespaceAliasDefinitionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2012-09-18 10:45:10 +02:00
|
|
|
class CPLUSPLUS_EXPORT AliasDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int using_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
TypeIdAST *typeId = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2012-09-18 10:45:10 +02:00
|
|
|
|
2013-05-30 12:40:08 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Declaration *symbol = nullptr;
|
2013-05-30 12:40:08 +02:00
|
|
|
|
2012-09-18 10:45:10 +02:00
|
|
|
public:
|
|
|
|
|
virtual AliasDeclarationAST *asAliasDeclaration() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2012-09-18 10:45:10 +02:00
|
|
|
|
|
|
|
|
virtual AliasDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2012-09-12 12:41:46 +02:00
|
|
|
class CPLUSPLUS_EXPORT ExpressionListParenAST: public ExpressionAST
|
2008-12-02 12:01:29 +01:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionListAST *expression_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2012-09-12 12:41:46 +02:00
|
|
|
virtual ExpressionListParenAST *asExpressionListParen() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2012-09-12 12:41:46 +02:00
|
|
|
virtual ExpressionListParenAST *clone(MemoryPool *pool) const;
|
2010-02-02 11:40:50 +01:00
|
|
|
|
2009-02-10 14:43:19 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-02-10 14:43:19 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NewArrayDeclaratorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbracket_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rbracket_token = 0;
|
2009-02-10 14:43:19 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NewArrayDeclaratorAST *asNewArrayDeclarator() { return this; }
|
2009-02-10 14:43:19 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-02-10 14:43:19 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NewArrayDeclaratorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NewExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int scope_token = 0;
|
|
|
|
|
int new_token = 0;
|
|
|
|
|
ExpressionListParenAST *new_placement = nullptr;
|
2009-02-10 14:43:19 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2009-02-10 14:43:19 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
NewTypeIdAST *new_type_id = nullptr;
|
2009-02-10 14:43:19 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *new_initializer = nullptr; // either ExpressionListParenAST or BracedInitializerAST
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NewExpressionAST *asNewExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NewExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NewTypeIdAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
PtrOperatorListAST *ptr_operator_list = nullptr;
|
|
|
|
|
NewArrayDeclaratorListAST *new_array_declarator_list = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NewTypeIdAST *asNewTypeId() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NewTypeIdAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT OperatorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int op_token = 0;
|
|
|
|
|
int open_token = 0;
|
|
|
|
|
int close_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual OperatorAST *asOperator() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual OperatorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ParameterDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:19:17 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Argument *symbol = nullptr;
|
2009-02-09 12:19:17 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ParameterDeclarationAST *asParameterDeclaration() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ParameterDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ParameterDeclarationClauseAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ParameterDeclarationListAST *parameter_declaration_list = nullptr;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ParameterDeclarationClauseAST *asParameterDeclarationClause() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ParameterDeclarationClauseAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CallAST: public PostfixAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *base_expression = nullptr;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionListAST *expression_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CallAST *asCall() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CallAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ArrayAccessAST: public PostfixAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *base_expression = nullptr;
|
|
|
|
|
int lbracket_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rbracket_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ArrayAccessAST *asArrayAccess() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ArrayAccessAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT PostIncrDecrAST: public PostfixAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *base_expression = nullptr;
|
|
|
|
|
int incr_decr_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual PostIncrDecrAST *asPostIncrDecr() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual PostIncrDecrAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT MemberAccessAST: public PostfixAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *base_expression = nullptr;
|
|
|
|
|
int access_token = 0;
|
|
|
|
|
int template_token = 0;
|
|
|
|
|
NameAST *member_name = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual MemberAccessAST *asMemberAccess() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual MemberAccessAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TypeidExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int typeid_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TypeidExpressionAST *asTypeidExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TypeidExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TypenameCallExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int typename_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
ExpressionAST *expression = nullptr; // either ExpressionListParenAST or BracedInitializerAST
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TypenameCallExpressionAST *asTypenameCallExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TypenameCallExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TypeConstructorCallAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
ExpressionAST *expression = nullptr; // either ExpressionListParenAST or BracedInitializerAST
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TypeConstructorCallAST *asTypeConstructorCall() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TypeConstructorCallAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT PointerToMemberAST: public PtrOperatorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int global_scope_token = 0;
|
|
|
|
|
NestedNameSpecifierListAST *nested_name_specifier_list = nullptr;
|
|
|
|
|
int star_token = 0;
|
|
|
|
|
SpecifierListAST *cv_qualifier_list = nullptr;
|
|
|
|
|
int ref_qualifier_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual PointerToMemberAST *asPointerToMember() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual PointerToMemberAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT PointerAST: public PtrOperatorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int star_token = 0;
|
|
|
|
|
SpecifierListAST *cv_qualifier_list = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual PointerAST *asPointer() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual PointerAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ReferenceAST: public PtrOperatorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int reference_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ReferenceAST *asReference() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ReferenceAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT BreakStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int break_token = 0;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual BreakStatementAST *asBreakStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual BreakStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ContinueStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int continue_token = 0;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ContinueStatementAST *asContinueStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ContinueStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT GotoStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int goto_token = 0;
|
|
|
|
|
int identifier_token = 0;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual GotoStatementAST *asGotoStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual GotoStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ReturnStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int return_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ReturnStatementAST *asReturnStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ReturnStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT SizeofExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int sizeof_token = 0;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual SizeofExpressionAST *asSizeofExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual SizeofExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2012-09-17 13:47:18 +02:00
|
|
|
class CPLUSPLUS_EXPORT AlignofExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int alignof_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
2019-11-06 12:18:20 +01:00
|
|
|
TypeIdAST *typeId = nullptr;
|
2019-07-26 12:20:44 +02:00
|
|
|
int rparen_token = 0;
|
2012-09-17 13:47:18 +02:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual AlignofExpressionAST *asAlignofExpression() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2012-09-17 13:47:18 +02:00
|
|
|
|
|
|
|
|
virtual AlignofExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2011-11-18 13:33:26 +01:00
|
|
|
class CPLUSPLUS_EXPORT PointerLiteralAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int literal_token = 0;
|
2011-11-18 13:33:26 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual PointerLiteralAST *asPointerLiteral() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2011-11-18 13:33:26 +01:00
|
|
|
|
|
|
|
|
virtual PointerLiteralAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT NumericLiteralAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int literal_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NumericLiteralAST *asNumericLiteral() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NumericLiteralAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT BoolLiteralAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int literal_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual BoolLiteralAST *asBoolLiteral() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual BoolLiteralAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ThisExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int this_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ThisExpressionAST *asThisExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ThisExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT NestedExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual NestedExpressionAST *asNestedExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual NestedExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2012-02-02 13:39:24 +01:00
|
|
|
class CPLUSPLUS_EXPORT StaticAssertDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int static_assert_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int comma_token = 0;
|
|
|
|
|
ExpressionAST *string_literal = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
int semicolon_token = 0;
|
2012-02-02 13:39:24 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual StaticAssertDeclarationAST *asStaticAssertDeclaration() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2012-02-02 13:39:24 +01:00
|
|
|
|
|
|
|
|
virtual StaticAssertDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT StringLiteralAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int literal_token = 0;
|
|
|
|
|
StringLiteralAST *next = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual StringLiteralAST *asStringLiteral() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual StringLiteralAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT SwitchStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int switch_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *condition = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 14:58:13 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2009-02-09 14:58:13 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual SwitchStatementAST *asSwitchStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual SwitchStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TemplateDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int export_token = 0;
|
|
|
|
|
int template_token = 0;
|
|
|
|
|
int less_token = 0;
|
|
|
|
|
DeclarationListAST *template_parameter_list = nullptr;
|
|
|
|
|
int greater_token = 0;
|
|
|
|
|
DeclarationAST *declaration = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-08-11 13:46:32 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Template *symbol = nullptr;
|
2010-08-11 13:46:32 +02:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TemplateDeclarationAST *asTemplateDeclaration() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TemplateDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ThrowExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int throw_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ThrowExpressionAST *asThrowExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ThrowExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2015-07-22 11:08:01 +02:00
|
|
|
class CPLUSPLUS_EXPORT NoExceptOperatorExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int noexcept_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2015-07-22 11:08:01 +02:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual NoExceptOperatorExpressionAST *asNoExceptOperatorExpression() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2015-07-22 11:08:01 +02:00
|
|
|
|
|
|
|
|
virtual NoExceptOperatorExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
class CPLUSPLUS_EXPORT TranslationUnitAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
DeclarationListAST *declaration_list = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TranslationUnitAST *asTranslationUnit() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TranslationUnitAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TryBlockStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int try_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
|
|
|
|
CatchClauseListAST *catch_clause_list = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TryBlockStatementAST *asTryBlockStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TryBlockStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT CatchClauseAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int catch_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExceptionDeclarationAST *exception_declaration = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 14:58:13 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2009-02-09 14:58:13 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual CatchClauseAST *asCatchClause() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual CatchClauseAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TypeIdAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TypeIdAST *asTypeId() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TypeIdAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TypenameTypeParameterAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int classkey_token = 0;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:19:17 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
TypenameArgument *symbol = nullptr;
|
2009-02-09 12:19:17 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TypenameTypeParameterAST *asTypenameTypeParameter() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TypenameTypeParameterAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT TemplateTypeParameterAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int template_token = 0;
|
|
|
|
|
int less_token = 0;
|
|
|
|
|
DeclarationListAST *template_parameter_list = nullptr;
|
|
|
|
|
int greater_token = 0;
|
|
|
|
|
int class_token = 0;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:19:17 +01:00
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
TypenameArgument *symbol = nullptr;
|
2009-02-09 12:19:17 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual TemplateTypeParameterAST *asTemplateTypeParameter() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual TemplateTypeParameterAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT UnaryExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int unary_op_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual UnaryExpressionAST *asUnaryExpression() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual UnaryExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT UsingAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int using_token = 0;
|
|
|
|
|
int typename_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:19:17 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
UsingDeclaration *symbol = nullptr;
|
2009-02-09 12:19:17 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual UsingAST *asUsing() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual UsingAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT UsingDirectiveAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int using_token = 0;
|
|
|
|
|
int namespace_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 12:19:17 +01:00
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
UsingNamespaceDirective *symbol = nullptr;
|
2009-02-09 12:19:17 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual UsingDirectiveAST *asUsingDirective() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual UsingDirectiveAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT WhileStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int while_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *condition = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2009-02-09 14:58:13 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2009-02-09 14:58:13 +01:00
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual WhileStatementAST *asWhileStatement() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2008-12-02 12:01:29 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual WhileStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2008-12-02 12:01:29 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2008-12-02 12:01:29 +01:00
|
|
|
};
|
|
|
|
|
|
2009-08-05 17:14:08 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCClassForwardDeclarationAST: public DeclarationAST
|
2009-01-08 12:02:07 +01:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
int class_token = 0;
|
|
|
|
|
NameListAST *identifier_list = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2009-01-08 12:02:07 +01:00
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
List<ObjCForwardClassDeclaration *> *symbols = nullptr;
|
2009-07-28 16:34:15 +02:00
|
|
|
|
2009-01-08 12:02:07 +01:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCClassForwardDeclarationAST *asObjCClassForwardDeclaration() { return this; }
|
2009-02-09 15:55:01 +01:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-01-08 12:02:07 +01:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCClassForwardDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-01-08 12:02:07 +01:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-01-08 12:02:07 +01:00
|
|
|
};
|
|
|
|
|
|
2009-08-05 17:14:08 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCClassDeclarationAST: public DeclarationAST
|
2009-07-13 09:45:28 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
int interface_token = 0;
|
|
|
|
|
int implementation_token = 0;
|
|
|
|
|
NameAST *class_name = nullptr;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
NameAST *category_name = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
int colon_token = 0;
|
|
|
|
|
NameAST *superclass = nullptr;
|
|
|
|
|
ObjCProtocolRefsAST *protocol_refs = nullptr;
|
|
|
|
|
ObjCInstanceVariablesDeclarationAST *inst_vars_decl = nullptr;
|
|
|
|
|
DeclarationListAST *member_declaration_list = nullptr;
|
|
|
|
|
int end_token = 0;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
ObjCClass *symbol = nullptr;
|
2010-03-18 16:06:15 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return this; }
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCClassDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-13 09:45:28 +02:00
|
|
|
};
|
|
|
|
|
|
2009-08-05 17:14:08 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCProtocolForwardDeclarationAST: public DeclarationAST
|
2009-07-13 09:45:28 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
int protocol_token = 0;
|
|
|
|
|
NameListAST *identifier_list = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
List<ObjCForwardProtocolDeclaration *> *symbols = nullptr;
|
2009-07-28 16:34:15 +02:00
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCProtocolForwardDeclarationAST *asObjCProtocolForwardDeclaration() { return this; }
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCProtocolForwardDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-13 09:45:28 +02:00
|
|
|
};
|
|
|
|
|
|
2009-08-05 17:14:08 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCProtocolDeclarationAST: public DeclarationAST
|
2009-07-13 09:45:28 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
int protocol_token = 0;
|
|
|
|
|
NameAST *name = nullptr;
|
|
|
|
|
ObjCProtocolRefsAST *protocol_refs = nullptr;
|
|
|
|
|
DeclarationListAST *member_declaration_list = nullptr;
|
|
|
|
|
int end_token = 0;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
ObjCProtocol *symbol = nullptr;
|
2009-07-28 16:34:15 +02:00
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return this; }
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCProtocolDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-13 09:45:28 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCProtocolRefsAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int less_token = 0;
|
|
|
|
|
NameListAST *identifier_list = nullptr;
|
|
|
|
|
int greater_token = 0;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCProtocolRefsAST *asObjCProtocolRefs() { return this; }
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCProtocolRefsAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-13 09:45:28 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-15 12:11:07 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCMessageArgumentAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *parameter_value_expression = nullptr;
|
2009-07-15 12:11:07 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return this; }
|
2009-07-15 12:11:07 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-15 12:11:07 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCMessageArgumentAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-15 12:11:07 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-15 12:11:07 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCMessageExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbracket_token = 0;
|
|
|
|
|
ExpressionAST *receiver_expression = nullptr;
|
|
|
|
|
ObjCSelectorAST *selector = nullptr;
|
|
|
|
|
ObjCMessageArgumentListAST *argument_list = nullptr;
|
|
|
|
|
int rbracket_token = 0;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCMessageExpressionAST *asObjCMessageExpression() { return this; }
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-13 09:45:28 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCMessageExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-13 09:45:28 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-13 09:45:28 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-16 12:18:05 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCProtocolExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int protocol_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
int identifier_token = 0;
|
|
|
|
|
int rparen_token = 0;
|
2009-07-16 12:18:05 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCProtocolExpressionAST *asObjCProtocolExpression() { return this; }
|
2009-07-16 12:18:05 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 12:18:05 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCProtocolExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 12:18:05 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 12:18:05 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-16 12:44:47 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCTypeNameAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
int type_qualifier_token = 0;
|
|
|
|
|
ExpressionAST *type_id = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2009-07-16 12:44:47 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCTypeNameAST *asObjCTypeName() { return this; }
|
2009-07-16 12:44:47 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 12:44:47 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCTypeNameAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 12:44:47 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 12:44:47 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCEncodeExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int encode_token = 0;
|
|
|
|
|
ObjCTypeNameAST *type_name = nullptr;
|
2009-07-16 12:44:47 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() { return this; }
|
2009-07-16 12:44:47 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 12:44:47 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCEncodeExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 12:44:47 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 12:44:47 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCSelectorExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int selector_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ObjCSelectorAST *selector = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
2009-07-28 16:34:15 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() { return this; }
|
2009-07-28 16:34:15 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-28 16:34:15 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCSelectorExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-28 16:34:15 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-16 15:50:42 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCInstanceVariablesDeclarationAST: public AST
|
2009-07-16 14:31:13 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbrace_token = 0;
|
|
|
|
|
DeclarationListAST *instance_variable_list = nullptr;
|
|
|
|
|
int rbrace_token = 0;
|
2009-07-16 14:31:13 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() { return this; }
|
2009-07-16 14:31:13 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 14:31:13 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCInstanceVariablesDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 14:31:13 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 14:31:13 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-16 15:50:42 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCVisibilityDeclarationAST: public DeclarationAST
|
2009-07-16 14:31:13 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int visibility_token = 0;
|
2009-07-16 14:31:13 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() { return this; }
|
2009-07-16 14:31:13 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 14:31:13 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCVisibilityDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 14:31:13 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 14:31:13 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCPropertyAttributeAST: public AST
|
2009-07-16 14:31:13 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int attribute_identifier_token = 0;
|
|
|
|
|
int equals_token = 0;
|
|
|
|
|
ObjCSelectorAST *method_selector = nullptr;
|
2009-07-16 14:31:13 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() { return this; }
|
2009-07-16 14:31:13 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 14:31:13 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCPropertyAttributeAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 15:50:42 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 15:50:42 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCPropertyDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
int property_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ObjCPropertyAttributeListAST *property_attribute_list = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
DeclarationAST *simple_declaration = nullptr;
|
2009-07-16 15:50:42 +02:00
|
|
|
|
2009-11-11 09:32:05 +01:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
List<ObjCPropertyDeclaration *> *symbols = nullptr;
|
2009-11-11 09:32:05 +01:00
|
|
|
|
2009-07-16 15:50:42 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCPropertyDeclarationAST *asObjCPropertyDeclaration() { return this; }
|
2009-07-16 15:50:42 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 15:50:42 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCPropertyDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 14:31:13 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 14:31:13 +02:00
|
|
|
};
|
|
|
|
|
|
2010-02-08 09:34:51 +01:00
|
|
|
class CPLUSPLUS_EXPORT ObjCMessageArgumentDeclarationAST: public AST
|
2009-07-16 17:38:24 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ObjCTypeNameAST *type_name = nullptr;
|
|
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
|
|
|
|
NameAST *param_name = nullptr;
|
2009-07-16 17:38:24 +02:00
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Argument *argument = nullptr;
|
2009-07-28 16:34:15 +02:00
|
|
|
|
2009-07-16 17:38:24 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return this; }
|
2009-07-16 17:38:24 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 17:38:24 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCMessageArgumentDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 17:38:24 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-16 17:38:24 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-20 11:46:59 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCMethodPrototypeAST: public AST
|
2009-07-16 17:38:24 +02:00
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int method_type_token = 0;
|
|
|
|
|
ObjCTypeNameAST *type_name = nullptr;
|
|
|
|
|
ObjCSelectorAST *selector = nullptr;
|
|
|
|
|
ObjCMessageArgumentDeclarationListAST *argument_list = nullptr;
|
|
|
|
|
int dot_dot_dot_token = 0;
|
|
|
|
|
SpecifierListAST *attribute_list = nullptr;
|
2009-07-16 17:38:24 +02:00
|
|
|
|
2009-07-28 16:34:15 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
ObjCMethod *symbol = nullptr;
|
2009-07-28 16:34:15 +02:00
|
|
|
|
2009-07-16 17:38:24 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return this; }
|
2009-07-16 17:38:24 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-16 17:38:24 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCMethodPrototypeAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-16 17:38:24 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-20 11:46:59 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCMethodDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
ObjCMethodPrototypeAST *method_prototype = nullptr;
|
|
|
|
|
StatementAST *function_body = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2009-07-20 11:46:59 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() { return this; }
|
2009-07-20 11:46:59 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-20 11:46:59 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCMethodDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-20 11:46:59 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-20 11:46:59 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-20 10:04:44 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCSynthesizedPropertyAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int property_identifier_token = 0;
|
|
|
|
|
int equals_token = 0;
|
|
|
|
|
int alias_identifier_token = 0;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return this; }
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCSynthesizedPropertyAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-20 10:04:44 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-20 10:04:44 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCSynthesizedPropertiesDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int synthesized_token = 0;
|
|
|
|
|
ObjCSynthesizedPropertyListAST *property_identifier_list = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return this; }
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCSynthesizedPropertiesDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-20 10:04:44 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-20 10:04:44 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCDynamicPropertiesDeclarationAST: public DeclarationAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int dynamic_token = 0;
|
|
|
|
|
NameListAST *property_identifier_list = nullptr;
|
|
|
|
|
int semicolon_token = 0;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() { return this; }
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCDynamicPropertiesDeclarationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-20 10:04:44 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-20 10:04:44 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CPLUSPLUS_EXPORT ObjCFastEnumerationAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int for_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
2009-07-29 10:06:14 +02:00
|
|
|
|
|
|
|
|
// declaration
|
2019-07-26 12:20:44 +02:00
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
2009-07-29 10:06:14 +02:00
|
|
|
// or an expression
|
2019-07-26 12:20:44 +02:00
|
|
|
ExpressionAST *initializer = nullptr;
|
2009-07-29 10:06:14 +02:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
int in_token = 0;
|
|
|
|
|
ExpressionAST *fast_enumeratable_expression = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2009-08-05 18:30:18 +02:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Block *symbol = nullptr;
|
2010-03-18 16:06:15 +01:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCFastEnumerationAST *asObjCFastEnumeration() { return this; }
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-20 10:04:44 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCFastEnumerationAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-20 10:04:44 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-20 10:04:44 +02:00
|
|
|
};
|
|
|
|
|
|
2009-07-31 16:53:05 +02:00
|
|
|
class CPLUSPLUS_EXPORT ObjCSynchronizedStatementAST: public StatementAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int synchronized_token = 0;
|
|
|
|
|
int lparen_token = 0;
|
|
|
|
|
ExpressionAST *synchronized_object = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2009-07-31 16:53:05 +02:00
|
|
|
|
|
|
|
|
public:
|
2009-11-09 12:50:00 +01:00
|
|
|
virtual ObjCSynchronizedStatementAST *asObjCSynchronizedStatement() { return this; }
|
2009-07-31 16:53:05 +02:00
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2009-07-31 16:53:05 +02:00
|
|
|
|
2010-02-02 11:40:50 +01:00
|
|
|
virtual ObjCSynchronizedStatementAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
2009-07-31 16:53:05 +02:00
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
2009-11-12 17:35:48 +01:00
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
2009-07-31 16:53:05 +02:00
|
|
|
};
|
|
|
|
|
|
2009-10-20 11:21:25 +02:00
|
|
|
|
2010-03-24 12:54:25 +01:00
|
|
|
class LambdaExpressionAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
LambdaIntroducerAST *lambda_introducer = nullptr;
|
|
|
|
|
LambdaDeclaratorAST *lambda_declarator = nullptr;
|
|
|
|
|
StatementAST *statement = nullptr;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual LambdaExpressionAST *asLambdaExpression() { return this; }
|
|
|
|
|
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-24 12:54:25 +01:00
|
|
|
virtual LambdaExpressionAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class LambdaIntroducerAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbracket_token = 0;
|
|
|
|
|
LambdaCaptureAST *lambda_capture = nullptr;
|
|
|
|
|
int rbracket_token = 0;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual LambdaIntroducerAST *asLambdaIntroducer() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
virtual LambdaIntroducerAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class LambdaCaptureAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int default_capture_token = 0;
|
|
|
|
|
CaptureListAST *capture_list = nullptr;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual LambdaCaptureAST *asLambdaCapture() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
virtual LambdaCaptureAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CaptureAST: public AST
|
|
|
|
|
{
|
2012-10-25 16:22:42 +02:00
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int amper_token = 0;
|
|
|
|
|
NameAST *identifier = nullptr;
|
2012-10-25 16:22:42 +02:00
|
|
|
|
2010-03-24 12:54:25 +01:00
|
|
|
public:
|
|
|
|
|
virtual CaptureAST *asCapture() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
virtual CaptureAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class LambdaDeclaratorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lparen_token = 0;
|
|
|
|
|
ParameterDeclarationClauseAST *parameter_declaration_clause = nullptr;
|
|
|
|
|
int rparen_token = 0;
|
|
|
|
|
SpecifierListAST *attributes = nullptr;
|
|
|
|
|
int mutable_token = 0;
|
|
|
|
|
ExceptionSpecificationAST *exception_specification = nullptr;
|
|
|
|
|
TrailingReturnTypeAST *trailing_return_type = nullptr;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
2014-06-26 15:07:31 -04:00
|
|
|
public: // annotations
|
2019-07-26 12:20:44 +02:00
|
|
|
Function *symbol = nullptr;
|
2014-06-26 15:07:31 -04:00
|
|
|
|
2010-03-24 12:54:25 +01:00
|
|
|
public:
|
|
|
|
|
virtual LambdaDeclaratorAST *asLambdaDeclarator() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
virtual LambdaDeclaratorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class TrailingReturnTypeAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int arrow_token = 0;
|
|
|
|
|
SpecifierListAST *attributes = nullptr;
|
|
|
|
|
SpecifierListAST *type_specifier_list = nullptr;
|
|
|
|
|
DeclaratorAST *declarator = nullptr;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual TrailingReturnTypeAST *asTrailingReturnType() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-24 12:54:25 +01:00
|
|
|
|
|
|
|
|
virtual TrailingReturnTypeAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2010-03-25 12:15:38 +01:00
|
|
|
class BracedInitializerAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbrace_token = 0;
|
|
|
|
|
ExpressionListAST *expression_list = nullptr;
|
|
|
|
|
int comma_token = 0;
|
|
|
|
|
int rbrace_token = 0;
|
2010-03-25 12:15:38 +01:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual BracedInitializerAST *asBracedInitializer() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2010-03-25 12:15:38 +01:00
|
|
|
|
|
|
|
|
virtual BracedInitializerAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2014-05-05 22:56:15 +08:00
|
|
|
class DesignatorAST: public AST
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual DesignatorAST *asDesignator() { return this; }
|
2014-06-20 09:57:46 +03:00
|
|
|
virtual DesignatorAST *clone(MemoryPool *pool) const = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class DotDesignatorAST: public DesignatorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int dot_token = 0;
|
|
|
|
|
int identifier_token = 0;
|
2014-06-20 09:57:46 +03:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2014-06-20 09:57:46 +03:00
|
|
|
virtual DotDesignatorAST *asDotDesignator() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2014-06-20 09:57:46 +03:00
|
|
|
|
|
|
|
|
virtual DotDesignatorAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class BracketDesignatorAST: public DesignatorAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
int lbracket_token = 0;
|
|
|
|
|
ExpressionAST *expression = nullptr;
|
|
|
|
|
int rbracket_token = 0;
|
2014-06-20 09:57:46 +03:00
|
|
|
|
2019-07-26 12:20:44 +02:00
|
|
|
public:
|
2014-06-20 09:57:46 +03:00
|
|
|
virtual BracketDesignatorAST *asBracketDesignator() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2014-05-05 22:56:15 +08:00
|
|
|
|
2014-06-20 09:57:46 +03:00
|
|
|
virtual BracketDesignatorAST *clone(MemoryPool *pool) const;
|
2014-05-05 22:56:15 +08:00
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class DesignatedInitializerAST: public ExpressionAST
|
|
|
|
|
{
|
|
|
|
|
public:
|
2019-07-26 12:20:44 +02:00
|
|
|
DesignatorListAST *designator_list = nullptr;
|
|
|
|
|
int equal_token = 0;
|
|
|
|
|
ExpressionAST *initializer = nullptr;
|
2014-05-05 22:56:15 +08:00
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual DesignatedInitializerAST *asDesignatedInitializer() { return this; }
|
2019-07-24 18:40:10 +02:00
|
|
|
virtual int firstToken() const;
|
|
|
|
|
virtual int lastToken() const;
|
2014-05-05 22:56:15 +08:00
|
|
|
|
|
|
|
|
virtual DesignatedInitializerAST *clone(MemoryPool *pool) const;
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
virtual void accept0(ASTVisitor *visitor);
|
|
|
|
|
virtual bool match0(AST *, ASTMatcher *);
|
|
|
|
|
};
|
|
|
|
|
|
2011-02-04 09:52:39 +01:00
|
|
|
} // namespace CPlusPlus
|