diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-28 16:34:15 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2009-07-28 16:34:15 +0200 |
commit | 26267c03445266233159b2f61bbc3a4d5864c01a (patch) | |
tree | 8b7536d8f41fea63adc180d56830a73aae1192ad /src/shared/cplusplus/AST.h | |
parent | a9b521f80af025ac11f9735fc070606952894b60 (diff) | |
download | qt-creator-26267c03445266233159b2f61bbc3a4d5864c01a.tar.gz |
Improved ObjC parsing, and added semantic checks.
Diffstat (limited to 'src/shared/cplusplus/AST.h')
-rw-r--r-- | src/shared/cplusplus/AST.h | 193 |
1 files changed, 173 insertions, 20 deletions
diff --git a/src/shared/cplusplus/AST.h b/src/shared/cplusplus/AST.h index cbbbc5da69..df54fc106c 100644 --- a/src/shared/cplusplus/AST.h +++ b/src/shared/cplusplus/AST.h @@ -196,9 +196,40 @@ public: virtual UsingDirectiveAST *asUsingDirective() { return 0; } virtual WhileStatementAST *asWhileStatement() { return 0; } virtual IdentifierListAST *asIdentifierList() { return 0; } + virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return 0; } virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return 0; } virtual ObjCProtocolDefinitionAST *asObjCProtocolDefinition() { return 0; } + virtual ObjCProtocolRefsAST *asObjCProtocolRefs() { return 0; } + virtual ObjCMessageArgumentAST *asObjCMessageArgument() { return 0; } + virtual ObjCMessageArgumentListAST *asObjCMessageArgumentList() { return 0; } + virtual ObjCMessageExpressionAST *asObjCMessageExpression() { return 0; } + virtual ObjCProtocolExpressionAST *asObjCProtocolExpression() { return 0; } + virtual ObjCTypeNameAST *asObjCTypeName() { return 0; } + virtual ObjCEncodeExpressionAST *asObjCEncodeExpression() { return 0; } + virtual ObjCSelectorAST *asObjCSelector() { return 0; } + virtual ObjCSelectorWithoutArgumentsAST *asObjCSelectorWithoutArguments() { return 0; } + virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() { return 0; } + virtual ObjCSelectorArgumentListAST *asObjCSelectorArgumentList() { return 0; } + virtual ObjCSelectorWithArgumentsAST *asObjCSelectorWithArguments() { return 0; } + virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() { return 0; } + virtual ObjCInstanceVariablesDeclarationAST *asObjCInstanceVariablesDeclaration() { return 0; } + virtual ObjCVisibilityDeclarationAST *asObjCVisibilityDeclaration() { return 0; } + virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() { return 0; } + virtual ObjCPropertyAttributeListAST *asObjCPropertyAttributeList() { return 0; } + virtual ObjCPropertyDeclarationAST *asObjCPropertyDeclaration() { return 0; } + virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return 0; } + virtual ObjCMessageArgumentDeclarationListAST *asObjCMessageArgumentDeclarationList() { return 0; } + virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return 0; } + virtual ObjCMethodDeclarationAST *asObjCMethodDeclaration() { return 0; } + virtual ObjCMethodDefinitionAST *asObjCMethodDefinition() { return 0; } + virtual ObjCClassImplementationAST *asObjCClassImplementation() { return 0; } + virtual ObjCCategoryImplementationAST *asObjCCategoryImplementation() { return 0; } + virtual ObjCSynthesizedPropertyAST *asObjCSynthesizedProperty() { return 0; } + virtual ObjCSynthesizedPropertyListAST *asObjCSynthesizedPropertyList() { return 0; } + virtual ObjCSynthesizedPropertiesDeclarationAST *asObjCSynthesizedPropertiesDeclaration() { return 0; } + virtual ObjCDynamicPropertiesDeclarationAST *asObjCDynamicPropertiesDeclaration() { return 0; } + virtual ObjCFastEnumerationAST *asObjCFastEnumeration() { return 0; } virtual AST *clone(MemoryPool *pool) const = 0; @@ -2444,7 +2475,7 @@ protected: class CPLUSPLUS_EXPORT IdentifierListAST: public AST { public: - unsigned identifier_token; + SimpleNameAST *name; unsigned comma_token; IdentifierListAST *next; @@ -2469,6 +2500,9 @@ public: IdentifierListAST *identifier_list; unsigned semicolon_token; +public: // annotations + List<ObjCForwardClassDeclaration *> *symbols; + public: virtual ObjCClassDeclarationAST *asObjCClassDeclaration() { return this; } @@ -2482,12 +2516,12 @@ protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjCClassInterfaceDeclarationAST: public DeclarationAST +class CPLUSPLUS_EXPORT ObjCClassInterfaceDefinitionAST: public DeclarationAST { public: SpecifierAST *attributes; unsigned interface_token; - unsigned class_identifier_token; + SimpleNameAST *class_name; unsigned colon_token; unsigned superclass_identifier_token; ObjCProtocolRefsAST *protocol_refs; @@ -2495,14 +2529,17 @@ public: DeclarationListAST *member_declarations; unsigned end_token; +public: // annotations + ObjCClass *symbol; + public: - virtual ObjCClassInterfaceDeclarationAST *asObjCClassInterfaceDeclaration() + virtual ObjCClassInterfaceDefinitionAST *asObjCClassInterfaceDefinition() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; - virtual ObjCClassInterfaceDeclarationAST *clone(MemoryPool *pool) const; + virtual ObjCClassInterfaceDefinitionAST *clone(MemoryPool *pool) const; protected: virtual void accept0(ASTVisitor *visitor); @@ -2542,6 +2579,9 @@ public: IdentifierListAST *identifier_list; unsigned semicolon_token; +public: // annotations + List<ObjCForwardProtocolDeclaration *> *symbols; + public: virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration() { return this; } @@ -2560,11 +2600,14 @@ class CPLUSPLUS_EXPORT ObjCProtocolDefinitionAST: public DeclarationAST public: SpecifierAST *attributes; unsigned protocol_token; - unsigned identifier_token; + SimpleNameAST *name; ObjCProtocolRefsAST *protocol_refs; DeclarationListAST *member_declarations; unsigned end_token; +public: // annotations + ObjCProtocol *symbol; + public: virtual ObjCProtocolDefinitionAST *asObjCProtocolDefinition() { return this; } @@ -2719,12 +2762,118 @@ protected: virtual void accept0(ASTVisitor *visitor); }; +class CPLUSPLUS_EXPORT ObjCSelectorAST: public AST +{ +public: // annotation + Name *selector_name; + +public: + virtual ObjCSelectorAST *asObjCSelector() + { return this; } + + virtual ObjCSelectorAST *clone(MemoryPool *pool) const = 0; +}; + +class CPLUSPLUS_EXPORT ObjCSelectorWithoutArgumentsAST: public ObjCSelectorAST +{ +public: + unsigned name_token; + +public: + virtual ObjCSelectorWithoutArgumentsAST *asObjCSelectorWithoutArguments() + { return this; } + + virtual unsigned firstToken() const; + virtual unsigned lastToken() const; + + virtual ObjCSelectorWithoutArgumentsAST *clone(MemoryPool *pool) const; + +protected: + virtual void accept0(ASTVisitor *visitor); +}; + +class CPLUSPLUS_EXPORT ObjCSelectorArgumentAST: public AST +{ +public: + unsigned name_token; + unsigned colon_token; + +public: + virtual ObjCSelectorArgumentAST *asObjCSelectorArgument() + { return this; } + + virtual unsigned firstToken() const; + virtual unsigned lastToken() const; + + virtual ObjCSelectorArgumentAST *clone(MemoryPool *pool) const; + +protected: + virtual void accept0(ASTVisitor *visitor); +}; + +class CPLUSPLUS_EXPORT ObjCSelectorArgumentListAST: public AST +{ +public: + ObjCSelectorArgumentAST *argument; + ObjCSelectorArgumentListAST *next; + +public: + virtual ObjCSelectorArgumentListAST *asObjCSelectorArgumentList() + { return this; } + + virtual unsigned firstToken() const; + virtual unsigned lastToken() const; + + virtual ObjCSelectorArgumentListAST *clone(MemoryPool *pool) const; + +protected: + virtual void accept0(ASTVisitor *visitor); +}; + +class CPLUSPLUS_EXPORT ObjCSelectorWithArgumentsAST: public ObjCSelectorAST +{ +public: + ObjCSelectorArgumentListAST *selector_arguments; + +public: + virtual ObjCSelectorWithArgumentsAST *asObjCSelectorWithArguments() + { return this; } + + virtual unsigned firstToken() const; + virtual unsigned lastToken() const; + + virtual ObjCSelectorWithArgumentsAST *clone(MemoryPool *pool) const; + +protected: + virtual void accept0(ASTVisitor *visitor); +}; + +class CPLUSPLUS_EXPORT ObjCSelectorExpressionAST: public ExpressionAST +{ +public: + unsigned selector_token; + unsigned lparen_token; + ObjCSelectorAST *selector; + unsigned rparen_token; + +public: + virtual ObjCSelectorExpressionAST *asObjCSelectorExpression() + { return this; } + + virtual unsigned firstToken() const; + virtual unsigned lastToken() const; + + virtual ObjCSelectorExpressionAST *clone(MemoryPool *pool) const; + +protected: + virtual void accept0(ASTVisitor *visitor); +}; + class CPLUSPLUS_EXPORT ObjCInstanceVariablesDeclarationAST: public AST { public: unsigned lbrace_token; DeclarationListAST *instance_variables; - DeclarationListAST *member_declarations; unsigned rbrace_token; public: @@ -2758,42 +2907,41 @@ protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjcPropertyAttributeAST: public AST +class CPLUSPLUS_EXPORT ObjCPropertyAttributeAST: public AST { public: unsigned attribute_identifier_token; unsigned equals_token; - unsigned method_selector_identifier_token; - unsigned colon_token; + ObjCSelectorAST *method_selector; public: - virtual ObjcPropertyAttributeAST *asObjcPropertyAttribute() + virtual ObjCPropertyAttributeAST *asObjCPropertyAttribute() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; - virtual ObjcPropertyAttributeAST *clone(MemoryPool *pool) const; + virtual ObjCPropertyAttributeAST *clone(MemoryPool *pool) const; protected: virtual void accept0(ASTVisitor *visitor); }; -class CPLUSPLUS_EXPORT ObjcPropertyAttributeListAST: public AST +class CPLUSPLUS_EXPORT ObjCPropertyAttributeListAST: public AST { public: - ObjcPropertyAttributeAST *attr; + ObjCPropertyAttributeAST *attr; unsigned comma_token; - ObjcPropertyAttributeListAST *next; + ObjCPropertyAttributeListAST *next; public: - virtual ObjcPropertyAttributeListAST *asObjcPropertyAttributeList() + virtual ObjCPropertyAttributeListAST *asObjCPropertyAttributeList() { return this; } virtual unsigned firstToken() const; virtual unsigned lastToken() const; - virtual ObjcPropertyAttributeListAST *clone(MemoryPool *pool) const; + virtual ObjCPropertyAttributeListAST *clone(MemoryPool *pool) const; protected: virtual void accept0(ASTVisitor *visitor); @@ -2805,7 +2953,7 @@ public: SpecifierAST *attributes; unsigned property_token; unsigned lparen_token; - ObjcPropertyAttributeListAST *property_attributes; + ObjCPropertyAttributeListAST *property_attributes; unsigned rparen_token; DeclarationAST *simple_declaration; @@ -2825,12 +2973,13 @@ protected: class CPLUSPLUS_EXPORT ObjCMessageArgumentDeclarationAST: public AST { public: - unsigned param_selector_token; - unsigned colon_token; ObjCTypeNameAST* type_name; SpecifierAST *attributes; unsigned param_name_token; +public: // annotations + Name *param_name; + public: virtual ObjCMessageArgumentDeclarationAST *asObjCMessageArgumentDeclaration() { return this; } @@ -2868,9 +3017,13 @@ class CPLUSPLUS_EXPORT ObjCMethodPrototypeAST: public AST public: unsigned method_type_token; ObjCTypeNameAST *type_name; + ObjCSelectorAST *selector; ObjCMessageArgumentDeclarationListAST *arguments; SpecifierAST *attributes; +public: // annotations + Function *symbol; + public: virtual ObjCMethodPrototypeAST *asObjCMethodPrototype() { return this; } |