diff options
Diffstat (limited to 'sources/shiboken2/ApiExtractor/parser/ast.h')
-rw-r--r-- | sources/shiboken2/ApiExtractor/parser/ast.h | 884 |
1 files changed, 0 insertions, 884 deletions
diff --git a/sources/shiboken2/ApiExtractor/parser/ast.h b/sources/shiboken2/ApiExtractor/parser/ast.h deleted file mode 100644 index 7640b7c38..000000000 --- a/sources/shiboken2/ApiExtractor/parser/ast.h +++ /dev/null @@ -1,884 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Copyright (C) 2002-2005 Roberto Raggi <roberto@kdevelop.org> -** Contact: https://www.qt.io/licensing/ -** -** This file is part of PySide2. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#ifndef AST_H -#define AST_H - -#include "smallobject.h" -#include "list.h" - -#include <QString> - -#define DECLARE_AST_NODE(k) \ - enum { __node_kind = Kind_##k }; - -class TokenStream; - -struct AccessSpecifierAST; -struct AsmDefinitionAST; -struct BaseClauseAST; -struct BaseSpecifierAST; -struct BinaryExpressionAST; -struct CastExpressionAST; -struct ClassMemberAccessAST; -struct ClassSpecifierAST; -struct CompoundStatementAST; -struct ConditionAST; -struct ConditionalExpressionAST; -struct CppCastExpressionAST; -struct CtorInitializerAST; -struct DeclarationAST; -struct DeclarationStatementAST; -struct DeclaratorAST; -struct DeleteExpressionAST; -struct DoStatementAST; -struct ElaboratedTypeSpecifierAST; -struct EnumSpecifierAST; -struct EnumeratorAST; -struct ExceptionSpecificationAST; -struct ExpressionAST; -struct ExpressionOrDeclarationStatementAST; -struct ExpressionStatementAST; -struct ForStatementAST; -struct FunctionCallAST; -struct FunctionDefinitionAST; -struct IfStatementAST; -struct IncrDecrExpressionAST; -struct InitDeclaratorAST; -struct InitializerAST; -struct InitializerClauseAST; -struct LabeledStatementAST; -struct LinkageBodyAST; -struct LinkageSpecificationAST; -struct MemInitializerAST; -struct NameAST; -struct NamespaceAST; -struct NamespaceAliasDefinitionAST; -struct NewDeclaratorAST; -struct NewExpressionAST; -struct NewInitializerAST; -struct NewTypeIdAST; -struct OperatorAST; -struct OperatorFunctionIdAST; -struct ParameterDeclarationAST; -struct ParameterDeclarationClauseAST; -struct PostfixExpressionAST; -struct PrimaryExpressionAST; -struct PtrOperatorAST; -struct PtrToMemberAST; -struct ReturnStatementAST; -struct SimpleDeclarationAST; -struct SimpleTypeSpecifierAST; -struct SizeofExpressionAST; -struct StatementAST; -struct StringLiteralAST; -struct SubscriptExpressionAST; -struct SwitchStatementAST; -struct TemplateArgumentAST; -struct TemplateDeclarationAST; -struct TemplateParameterAST; -struct ThrowExpressionAST; -struct TranslationUnitAST; -struct TryBlockStatementAST; -struct TypeIdAST; -struct TypeIdentificationAST; -struct TypeParameterAST; -struct TypeSpecifierAST; -struct TypedefAST; -struct UnaryExpressionAST; -struct UnqualifiedNameAST; -struct UsingAST; -struct UsingDirectiveAST; -struct WhileStatementAST; -struct WinDeclSpecAST; -struct QPropertyAST; -struct QEnumsAST; - -struct AST -{ - enum NODE_KIND { - Kind_UNKNOWN = 0, - - Kind_AccessSpecifier, - Kind_AsmDefinition, - Kind_BaseClause, - Kind_BaseSpecifier, - Kind_BinaryExpression, - Kind_CastExpression, - Kind_ClassMemberAccess, - Kind_ClassSpecifier, - Kind_CompoundStatement, - Kind_Condition, - Kind_ConditionalExpression, - Kind_CppCastExpression, - Kind_CtorInitializer, - Kind_DeclarationStatement, - Kind_Declarator, - Kind_DeleteExpression, - Kind_DoStatement, - Kind_ElaboratedTypeSpecifier, - Kind_EnumSpecifier, - Kind_Enumerator, - Kind_ExceptionSpecification, - Kind_ExpressionOrDeclarationStatement, - Kind_ExpressionStatement, - Kind_ForStatement, - Kind_FunctionCall, - Kind_FunctionDefinition, - Kind_IfStatement, - Kind_IncrDecrExpression, - Kind_InitDeclarator, - Kind_Initializer, - Kind_InitializerClause, - Kind_LabeledStatement, - Kind_LinkageBody, - Kind_LinkageSpecification, - Kind_MemInitializer, - Kind_Name, - Kind_Namespace, - Kind_NamespaceAliasDefinition, - Kind_NewDeclarator, - Kind_NewExpression, - Kind_NewInitializer, - Kind_NewTypeId, - Kind_Operator, - Kind_OperatorFunctionId, - Kind_ParameterDeclaration, - Kind_ParameterDeclarationClause, - Kind_PostfixExpression, - Kind_PrimaryExpression, - Kind_PtrOperator, - Kind_PtrToMember, - Kind_ReturnStatement, - Kind_SimpleDeclaration, - Kind_SimpleTypeSpecifier, - Kind_SizeofExpression, - Kind_StringLiteral, - Kind_SubscriptExpression, - Kind_SwitchStatement, - Kind_TemplateArgument, - Kind_TemplateDeclaration, - Kind_TemplateParameter, - Kind_ThrowExpression, - Kind_TranslationUnit, - Kind_TryBlockStatement, - Kind_TypeId, - Kind_TypeIdentification, - Kind_TypeParameter, - Kind_Typedef, - Kind_UnaryExpression, - Kind_UnqualifiedName, - Kind_Using, - Kind_UsingDirective, - Kind_WhileStatement, - Kind_WinDeclSpec, - Kind_QPropertyAST, - Kind_ForwardDeclarationSpecifier, - Kind_QEnumsAST, - - NODE_KIND_COUNT - }; - - QString toString(TokenStream *stream) const; - - int kind; - - std::size_t start_token; - std::size_t end_token; -}; - -struct TypeSpecifierAST: public AST -{ - const ListNode<std::size_t> *cv; -}; - -struct StatementAST: public AST -{ -}; - -struct ExpressionAST: public AST -{ -}; - -struct DeclarationAST: public AST -{ -}; - -struct AccessSpecifierAST: public DeclarationAST -{ - DECLARE_AST_NODE(AccessSpecifier) - - const ListNode<std::size_t> *specs; -}; - -struct AsmDefinitionAST: public DeclarationAST -{ - DECLARE_AST_NODE(AsmDefinition) - - const ListNode<std::size_t> *cv; -}; - -struct BaseClauseAST: public AST -{ // ### kill me - DECLARE_AST_NODE(BaseClause) - - const ListNode<BaseSpecifierAST*> *base_specifiers; -}; - -struct BaseSpecifierAST: public AST -{ - DECLARE_AST_NODE(BaseSpecifier) - - std::size_t virt; - std::size_t access_specifier; - NameAST *name; -}; - -struct BinaryExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(BinaryExpression) - - std::size_t op; - ExpressionAST *left_expression; - ExpressionAST *right_expression; -}; - -struct CastExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(CastExpression) - - TypeIdAST *type_id; - ExpressionAST *expression; -}; - -struct ClassMemberAccessAST: public ExpressionAST -{ - DECLARE_AST_NODE(ClassMemberAccess) - - std::size_t op; - NameAST *name; -}; - -struct ClassSpecifierAST: public TypeSpecifierAST -{ - DECLARE_AST_NODE(ClassSpecifier) - - WinDeclSpecAST *win_decl_specifiers; - std::size_t class_key; - NameAST *name; - BaseClauseAST *base_clause; - const ListNode<DeclarationAST*> *member_specs; -}; - -struct ForwardDeclarationSpecifierAST: public TypeSpecifierAST -{ - DECLARE_AST_NODE(ForwardDeclarationSpecifier) - - std::size_t class_key; - NameAST *name; - BaseClauseAST *base_clause; -}; - -struct CompoundStatementAST: public StatementAST -{ - DECLARE_AST_NODE(CompoundStatement) - - const ListNode<StatementAST*> *statements; -}; - -struct ConditionAST: public AST -{ - DECLARE_AST_NODE(Condition) - - TypeSpecifierAST *type_specifier; - DeclaratorAST *declarator; - ExpressionAST *expression; -}; - -struct ConditionalExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(ConditionalExpression) - - ExpressionAST *condition; - ExpressionAST *left_expression; - ExpressionAST *right_expression; -}; - -struct CppCastExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(CppCastExpression) - - std::size_t op; - TypeIdAST *type_id; - ExpressionAST *expression; - const ListNode<ExpressionAST*> *sub_expressions; -}; - -struct CtorInitializerAST: public AST -{ - DECLARE_AST_NODE(CtorInitializer) - - std::size_t colon; - const ListNode<MemInitializerAST*> *member_initializers; -}; - -struct DeclarationStatementAST: public StatementAST -{ - DECLARE_AST_NODE(DeclarationStatement) - - DeclarationAST *declaration; -}; - -struct DeclaratorAST: public AST -{ - DECLARE_AST_NODE(Declarator) - - const ListNode<PtrOperatorAST*> *ptr_ops; - DeclaratorAST *sub_declarator; - NameAST *id; - ExpressionAST *bit_expression; - const ListNode<ExpressionAST*> *array_dimensions; - ParameterDeclarationClauseAST *parameter_declaration_clause; - const ListNode<std::size_t> *fun_cv; - ExceptionSpecificationAST *exception_spec; -}; - -struct DeleteExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(DeleteExpression) - - std::size_t scope_token; - std::size_t delete_token; - std::size_t lbracket_token; - std::size_t rbracket_token; - ExpressionAST *expression; -}; - -struct DoStatementAST: public StatementAST -{ - DECLARE_AST_NODE(DoStatement) - - StatementAST *statement; - ExpressionAST *expression; -}; - -struct ElaboratedTypeSpecifierAST: public TypeSpecifierAST -{ - DECLARE_AST_NODE(ElaboratedTypeSpecifier) - - std::size_t type; - NameAST *name; -}; - -struct EnumSpecifierAST: public TypeSpecifierAST -{ - DECLARE_AST_NODE(EnumSpecifier) - - NameAST *name; - const ListNode<EnumeratorAST*> *enumerators; -}; - -struct EnumeratorAST: public AST -{ - DECLARE_AST_NODE(Enumerator) - - std::size_t id; - ExpressionAST *expression; -}; - -struct ExceptionSpecificationAST: public AST -{ - DECLARE_AST_NODE(ExceptionSpecification) - - std::size_t ellipsis; - const ListNode<TypeIdAST*> *type_ids; -}; - -struct ExpressionOrDeclarationStatementAST: public StatementAST -{ - DECLARE_AST_NODE(ExpressionOrDeclarationStatement) - - StatementAST *expression; - StatementAST *declaration; -}; - -struct ExpressionStatementAST: public StatementAST -{ - DECLARE_AST_NODE(ExpressionStatement) - - ExpressionAST *expression; -}; - -struct FunctionCallAST: public ExpressionAST -{ - DECLARE_AST_NODE(FunctionCall) - - ExpressionAST *arguments; -}; - -struct FunctionDefinitionAST: public DeclarationAST -{ - DECLARE_AST_NODE(FunctionDefinition) - - const ListNode<std::size_t> *storage_specifiers; - const ListNode<std::size_t> *function_specifiers; - TypeSpecifierAST *type_specifier; - InitDeclaratorAST *init_declarator; - StatementAST *function_body; - WinDeclSpecAST *win_decl_specifiers; -}; - -struct ForStatementAST: public StatementAST -{ - DECLARE_AST_NODE(ForStatement) - - StatementAST *init_statement; - ConditionAST *condition; - ExpressionAST *expression; - StatementAST *statement; -}; - -struct IfStatementAST: public StatementAST -{ - DECLARE_AST_NODE(IfStatement) - - ConditionAST *condition; - StatementAST *statement; - StatementAST *else_statement; -}; - -struct IncrDecrExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(IncrDecrExpression) - - std::size_t op; -}; - -struct InitDeclaratorAST: public AST -{ - DECLARE_AST_NODE(InitDeclarator) - - DeclaratorAST *declarator; - InitializerAST *initializer; -}; - -struct InitializerAST: public AST -{ - DECLARE_AST_NODE(Initializer) - - InitializerClauseAST *initializer_clause; - ExpressionAST *expression; -}; - -struct InitializerClauseAST: public AST -{ - DECLARE_AST_NODE(InitializerClause) - - ExpressionAST *expression; -}; - -struct LabeledStatementAST: public StatementAST -{ - DECLARE_AST_NODE(LabeledStatement) -}; - -struct LinkageBodyAST: public AST -{ - DECLARE_AST_NODE(LinkageBody) - - const ListNode<DeclarationAST*> *declarations; -}; - -struct LinkageSpecificationAST: public DeclarationAST -{ - DECLARE_AST_NODE(LinkageSpecification) - - std::size_t extern_type; - LinkageBodyAST *linkage_body; - DeclarationAST *declaration; -}; - -struct MemInitializerAST: public AST -{ - DECLARE_AST_NODE(MemInitializer) - - NameAST *initializer_id; - ExpressionAST *expression; -}; - -struct NameAST: public AST -{ - DECLARE_AST_NODE(Name) - - bool global; - const ListNode<UnqualifiedNameAST*> *qualified_names; - UnqualifiedNameAST *unqualified_name; -}; - -struct NamespaceAST: public DeclarationAST -{ - DECLARE_AST_NODE(Namespace) - - std::size_t namespace_name; - LinkageBodyAST *linkage_body; -}; - -struct NamespaceAliasDefinitionAST: public DeclarationAST -{ - DECLARE_AST_NODE(NamespaceAliasDefinition) - - std::size_t namespace_name; - NameAST *alias_name; -}; - -struct NewDeclaratorAST: public AST -{ - DECLARE_AST_NODE(NewDeclarator) - - PtrOperatorAST *ptr_op; - NewDeclaratorAST *sub_declarator; - const ListNode<ExpressionAST*> *expressions; -}; - -struct NewExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(NewExpression) - - std::size_t scope_token; - std::size_t new_token; - ExpressionAST *expression; - TypeIdAST *type_id; - NewTypeIdAST *new_type_id; - NewInitializerAST *new_initializer; -}; - -struct NewInitializerAST: public AST -{ - DECLARE_AST_NODE(NewInitializer) - - ExpressionAST *expression; -}; - -struct NewTypeIdAST: public AST -{ - DECLARE_AST_NODE(NewTypeId) - - TypeSpecifierAST *type_specifier; - NewInitializerAST *new_initializer; - NewDeclaratorAST *new_declarator; -}; - -struct OperatorAST: public AST -{ - DECLARE_AST_NODE(Operator) - - std::size_t op; - std::size_t open; - std::size_t close; -}; - -struct OperatorFunctionIdAST: public AST -{ - DECLARE_AST_NODE(OperatorFunctionId) - - OperatorAST *op; - TypeSpecifierAST *type_specifier; - const ListNode<PtrOperatorAST*> *ptr_ops; -}; - -struct ParameterDeclarationAST: public AST -{ - DECLARE_AST_NODE(ParameterDeclaration) - - TypeSpecifierAST *type_specifier; - DeclaratorAST *declarator; - ExpressionAST *expression; -}; - -struct ParameterDeclarationClauseAST: public AST -{ - DECLARE_AST_NODE(ParameterDeclarationClause) - - const ListNode<ParameterDeclarationAST*> *parameter_declarations; - std::size_t ellipsis; -}; - -struct PostfixExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(PostfixExpression) - - TypeSpecifierAST *type_specifier; - ExpressionAST *expression; - const ListNode<ExpressionAST*> *sub_expressions; -}; - -struct PrimaryExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(PrimaryExpression) - - StringLiteralAST *literal; - std::size_t token; - StatementAST *expression_statement; - ExpressionAST *sub_expression; - NameAST *name; -}; - -struct PtrOperatorAST: public AST -{ - DECLARE_AST_NODE(PtrOperator) - - const ListNode<std::size_t> *cv; - std::size_t op; - PtrToMemberAST *mem_ptr; -}; - -struct PtrToMemberAST: public AST -{ - DECLARE_AST_NODE(PtrToMember) -}; - -struct ReturnStatementAST: public StatementAST -{ - DECLARE_AST_NODE(ReturnStatement) - - ExpressionAST *expression; -}; - -struct SimpleDeclarationAST: public DeclarationAST -{ - DECLARE_AST_NODE(SimpleDeclaration) - - const ListNode<std::size_t> *storage_specifiers; - const ListNode<std::size_t> *function_specifiers; - TypeSpecifierAST *type_specifier; - const ListNode<InitDeclaratorAST*> *init_declarators; - WinDeclSpecAST *win_decl_specifiers; -}; - -struct SimpleTypeSpecifierAST: public TypeSpecifierAST -{ - DECLARE_AST_NODE(SimpleTypeSpecifier) - - const ListNode<std::size_t> *integrals; - std::size_t type_of; - TypeIdAST *type_id; - ExpressionAST *expression; - NameAST *name; -}; - -struct SizeofExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(SizeofExpression) - - std::size_t sizeof_token; - TypeIdAST *type_id; - ExpressionAST *expression; -}; - -struct StringLiteralAST: public AST -{ - DECLARE_AST_NODE(StringLiteral) - - const ListNode<std::size_t> *literals; -}; - -struct SubscriptExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(SubscriptExpression) - - ExpressionAST *subscript; -}; - -struct SwitchStatementAST: public StatementAST -{ - DECLARE_AST_NODE(SwitchStatement) - - ConditionAST *condition; - StatementAST *statement; -}; - -struct TemplateArgumentAST: public AST -{ - DECLARE_AST_NODE(TemplateArgument) - - TypeIdAST *type_id; - ExpressionAST *expression; -}; - -struct TemplateDeclarationAST: public DeclarationAST -{ - DECLARE_AST_NODE(TemplateDeclaration) - - std::size_t exported; - const ListNode<TemplateParameterAST*> *template_parameters; - DeclarationAST* declaration; -}; - -struct TemplateParameterAST: public AST -{ - DECLARE_AST_NODE(TemplateParameter) - - TypeParameterAST *type_parameter; - ParameterDeclarationAST *parameter_declaration; -}; - -struct ThrowExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(ThrowExpression) - - std::size_t throw_token; - ExpressionAST *expression; -}; - -struct TranslationUnitAST: public AST -{ - DECLARE_AST_NODE(TranslationUnit) - - const ListNode<DeclarationAST*> *declarations; -}; - -struct TryBlockStatementAST: public StatementAST -{ - DECLARE_AST_NODE(TryBlockStatement) -}; - -struct TypeIdAST: public AST -{ - DECLARE_AST_NODE(TypeId) - - TypeSpecifierAST *type_specifier; - DeclaratorAST *declarator; -}; - -struct TypeIdentificationAST: public ExpressionAST -{ - DECLARE_AST_NODE(TypeIdentification) - - std::size_t typename_token; - NameAST *name; - ExpressionAST *expression; -}; - -struct TypeParameterAST: public AST -{ - DECLARE_AST_NODE(TypeParameter) - - std::size_t type; - NameAST *name; - TypeIdAST *type_id; - const ListNode<TemplateParameterAST*> *template_parameters; - NameAST *template_name; -}; - -struct TypedefAST: public DeclarationAST -{ - DECLARE_AST_NODE(Typedef) - - TypeSpecifierAST *type_specifier; - const ListNode<InitDeclaratorAST*> *init_declarators; -}; - -struct UnaryExpressionAST: public ExpressionAST -{ - DECLARE_AST_NODE(UnaryExpression) - - std::size_t op; - ExpressionAST *expression; -}; - -struct UnqualifiedNameAST: public AST -{ - DECLARE_AST_NODE(UnqualifiedName) - - std::size_t tilde; - std::size_t id; - OperatorFunctionIdAST *operator_id; - const ListNode<TemplateArgumentAST*> *template_arguments; -}; - -struct UsingAST: public DeclarationAST -{ - DECLARE_AST_NODE(Using) - - std::size_t type_name; - NameAST *name; -}; - -struct UsingDirectiveAST: public DeclarationAST -{ - DECLARE_AST_NODE(UsingDirective) - - NameAST *name; -}; - -struct WhileStatementAST: public StatementAST -{ - DECLARE_AST_NODE(WhileStatement) - - ConditionAST *condition; - StatementAST *statement; -}; - -struct WinDeclSpecAST: public AST -{ - DECLARE_AST_NODE(WinDeclSpec) - - std::size_t specifier; - std::size_t modifier; -}; - -struct QPropertyAST : public DeclarationAST -{ - DECLARE_AST_NODE(QPropertyAST) -}; - -struct QEnumsAST : public DeclarationAST -{ - DECLARE_AST_NODE(QEnumsAST) -}; - -template <class _Tp> -_Tp *CreateNode(pool *memory_pool) -{ - _Tp *node = reinterpret_cast<_Tp*>(memory_pool->allocate(sizeof(_Tp), strideof(_Tp))); - node->kind = _Tp::__node_kind; - return node; -} - -template <class _Tp> -_Tp ast_cast(AST *item) -{ - if (item && static_cast<_Tp>(0)->__node_kind == item->kind) - return static_cast<_Tp>(item); - - return 0; -} - -#endif // AST_H |