forked from qt-creator/qt-creator
Added ObjC protocol expressions.
This commit is contained in:
@@ -2104,4 +2104,23 @@ unsigned ObjCMessageArgumentAST::lastToken() const
|
|||||||
return parameter_key_identifier + 1;
|
return parameter_key_identifier + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned ObjCProtocolExpressionAST::firstToken() const
|
||||||
|
{
|
||||||
|
return protocol_token;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned ObjCProtocolExpressionAST::lastToken() const
|
||||||
|
{
|
||||||
|
if (rparen_token)
|
||||||
|
return rparen_token + 1;
|
||||||
|
|
||||||
|
if (identifier_token)
|
||||||
|
return identifier_token + 1;
|
||||||
|
|
||||||
|
if (lparen_token)
|
||||||
|
return lparen_token + 1;
|
||||||
|
|
||||||
|
return protocol_token + 1;
|
||||||
|
}
|
||||||
|
|
||||||
CPLUSPLUS_END_NAMESPACE
|
CPLUSPLUS_END_NAMESPACE
|
||||||
|
|||||||
@@ -2653,6 +2653,27 @@ protected:
|
|||||||
virtual void accept0(ASTVisitor *visitor);
|
virtual void accept0(ASTVisitor *visitor);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class CPLUSPLUS_EXPORT ObjCProtocolExpressionAST: public ExpressionAST
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
unsigned protocol_token;
|
||||||
|
unsigned lparen_token;
|
||||||
|
unsigned identifier_token;
|
||||||
|
unsigned rparen_token;
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual ObjCProtocolExpressionAST *asObjCProtocolExpression()
|
||||||
|
{ return this; }
|
||||||
|
|
||||||
|
virtual unsigned firstToken() const;
|
||||||
|
virtual unsigned lastToken() const;
|
||||||
|
|
||||||
|
virtual ObjCProtocolExpressionAST *clone(MemoryPool *pool) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void accept0(ASTVisitor *visitor);
|
||||||
|
};
|
||||||
|
|
||||||
CPLUSPLUS_END_NAMESPACE
|
CPLUSPLUS_END_NAMESPACE
|
||||||
CPLUSPLUS_END_HEADER
|
CPLUSPLUS_END_HEADER
|
||||||
|
|
||||||
|
|||||||
@@ -1311,4 +1311,14 @@ ObjCMessageArgumentAST *ObjCMessageArgumentAST::clone(MemoryPool *pool) const
|
|||||||
return ast;
|
return ast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ObjCProtocolExpressionAST *ObjCProtocolExpressionAST::clone(MemoryPool *pool) const
|
||||||
|
{
|
||||||
|
ObjCProtocolExpressionAST *ast = new (pool) ObjCProtocolExpressionAST;
|
||||||
|
ast->protocol_token = protocol_token;
|
||||||
|
ast->lparen_token = lparen_token;
|
||||||
|
ast->identifier_token = identifier_token;
|
||||||
|
ast->rparen_token = rparen_token;
|
||||||
|
return ast;
|
||||||
|
}
|
||||||
|
|
||||||
CPLUSPLUS_END_NAMESPACE
|
CPLUSPLUS_END_NAMESPACE
|
||||||
|
|||||||
@@ -1234,4 +1234,13 @@ void ObjCMessageArgumentAST::accept0(ASTVisitor *visitor)
|
|||||||
visitor->endVisit(this);
|
visitor->endVisit(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObjCProtocolExpressionAST::accept0(ASTVisitor *visitor)
|
||||||
|
{
|
||||||
|
if (visitor->visit(this)) {
|
||||||
|
// visit ObjCProtocolExpressionAST
|
||||||
|
// visit ExpressionAST
|
||||||
|
}
|
||||||
|
visitor->endVisit(this);
|
||||||
|
}
|
||||||
|
|
||||||
CPLUSPLUS_END_NAMESPACE
|
CPLUSPLUS_END_NAMESPACE
|
||||||
|
|||||||
@@ -206,6 +206,7 @@ public:
|
|||||||
virtual bool visit(ObjCMessageExpressionAST *) { return true; }
|
virtual bool visit(ObjCMessageExpressionAST *) { return true; }
|
||||||
virtual bool visit(ObjCMessageArgumentListAST *) { return true; }
|
virtual bool visit(ObjCMessageArgumentListAST *) { return true; }
|
||||||
virtual bool visit(ObjCMessageArgumentAST *) { return true; }
|
virtual bool visit(ObjCMessageArgumentAST *) { return true; }
|
||||||
|
virtual bool visit(ObjCProtocolExpressionAST *) { return true; }
|
||||||
|
|
||||||
virtual bool visit(DeclarationListAST *) { return true; }
|
virtual bool visit(DeclarationListAST *) { return true; }
|
||||||
virtual void endVisit(DeclarationListAST *) { }
|
virtual void endVisit(DeclarationListAST *) { }
|
||||||
@@ -323,6 +324,7 @@ public:
|
|||||||
virtual void endVisit(ObjCMessageExpressionAST *) { }
|
virtual void endVisit(ObjCMessageExpressionAST *) { }
|
||||||
virtual void endVisit(ObjCMessageArgumentListAST *) { }
|
virtual void endVisit(ObjCMessageArgumentListAST *) { }
|
||||||
virtual void endVisit(ObjCMessageArgumentAST *) { }
|
virtual void endVisit(ObjCMessageArgumentAST *) { }
|
||||||
|
virtual void endVisit(ObjCProtocolExpressionAST *) { }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Control *_control;
|
Control *_control;
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ class ObjCProtocolRefsAST;
|
|||||||
class ObjCMessageExpressionAST;
|
class ObjCMessageExpressionAST;
|
||||||
class ObjCMessageArgumentListAST;
|
class ObjCMessageArgumentListAST;
|
||||||
class ObjCMessageArgumentAST;
|
class ObjCMessageArgumentAST;
|
||||||
|
class ObjCProtocolExpressionAST;
|
||||||
|
|
||||||
CPLUSPLUS_END_NAMESPACE
|
CPLUSPLUS_END_NAMESPACE
|
||||||
CPLUSPLUS_END_HEADER
|
CPLUSPLUS_END_HEADER
|
||||||
|
|||||||
@@ -2849,16 +2849,17 @@ bool Parser::parseObjCEncodeExpression(ExpressionAST *&)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Parser::parseObjCProtocolExpression(ExpressionAST *&)
|
bool Parser::parseObjCProtocolExpression(ExpressionAST *&node)
|
||||||
{
|
{
|
||||||
if (LA() != T_AT_PROTOCOL)
|
if (LA() != T_AT_PROTOCOL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/*unsigned protocol_token = */ consumeToken();
|
ObjCProtocolExpressionAST *ast = new (_pool) ObjCProtocolExpressionAST;
|
||||||
unsigned lparen_token = 0, identifier_token = 0, rparen_token = 0;
|
ast->protocol_token = consumeToken();
|
||||||
match(T_LPAREN, &lparen_token);
|
match(T_LPAREN, &(ast->lparen_token));
|
||||||
match(T_IDENTIFIER, &identifier_token);
|
match(T_IDENTIFIER, &(ast->identifier_token));
|
||||||
match(T_RPAREN, &rparen_token);
|
match(T_RPAREN, &(ast->rparen_token));
|
||||||
|
node = ast;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user