Added AST for a bit of ObjC.

This commit is contained in:
Erik Verbruggen
2009-07-13 09:45:28 +02:00
parent 93f5fdc0f9
commit 78cceecc28
8 changed files with 512 additions and 55 deletions

View File

@@ -197,6 +197,8 @@ public:
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 AST *clone(MemoryPool *pool) const = 0;
@@ -2443,6 +2445,7 @@ class CPLUSPLUS_EXPORT IdentifierListAST: public AST
{
public:
unsigned identifier_token;
unsigned comma_token;
IdentifierListAST *next;
public:
@@ -2479,6 +2482,137 @@ protected:
virtual void accept0(ASTVisitor *visitor);
};
class CPLUSPLUS_EXPORT ObjCClassInterfaceDeclarationAST: public DeclarationAST
{
public:
SpecifierAST *attributes;
unsigned interface_token;
unsigned class_identifier_token;
unsigned colon_token;
unsigned superclass_identifier_token;
ObjCProtocolRefsAST *protocol_refs;
unsigned end_token;
public:
virtual ObjCClassInterfaceDeclarationAST *asObjCClassInterfaceDeclaration()
{ return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual ObjCClassInterfaceDeclarationAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
};
class CPLUSPLUS_EXPORT ObjCCategoryInterfaceDeclarationAST: public DeclarationAST
{
public:
unsigned interface_token;
unsigned class_identifier_token;
unsigned lparen_token;
unsigned category_identifier_token;
unsigned rparen_token;
ObjCProtocolRefsAST *protocol_refs;
unsigned end_token;
public:
virtual ObjCCategoryInterfaceDeclarationAST *asObjCCategoryInterfaceDeclaration()
{ return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual ObjCCategoryInterfaceDeclarationAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
};
class CPLUSPLUS_EXPORT ObjCProtocolDeclarationAST: public DeclarationAST
{
public:
SpecifierAST *attributes;
unsigned protocol_token;
IdentifierListAST *identifier_list;
unsigned semicolon_token;
public:
virtual ObjCProtocolDeclarationAST *asObjCProtocolDeclaration()
{ return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual ObjCProtocolDeclarationAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
};
class CPLUSPLUS_EXPORT ObjCProtocolDefinitionAST: public DeclarationAST
{
public:
SpecifierAST *attributes;
unsigned protocol_token;
unsigned identifier_token;
ObjCProtocolRefsAST *protocol_refs;
unsigned end_token;
public:
virtual ObjCProtocolDefinitionAST *asObjCProtocolDefinition()
{ return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual ObjCProtocolDefinitionAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
};
class CPLUSPLUS_EXPORT ObjCProtocolRefsAST: public AST
{
public:
unsigned less_token;
IdentifierListAST *identifier_list;
unsigned greater_token;
public:
virtual ObjCProtocolRefsAST *asObjCProtocolRefs()
{ return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual ObjCProtocolRefsAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
};
class CPLUSPLUS_EXPORT ObjCMessageExpressionAST: public ExpressionAST
{
public:
unsigned lbracket_token;
// ..
unsigned rbracket_token;
public:
virtual ObjCMessageExpressionAST *asObjCMessageExpression()
{ return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual ObjCMessageExpressionAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
};
CPLUSPLUS_END_NAMESPACE
CPLUSPLUS_END_HEADER