Added @synchronized parsing for Objective-C.

This commit is contained in:
Erik Verbruggen
2009-07-31 16:53:05 +02:00
parent 4967280449
commit e205126774
8 changed files with 90 additions and 1 deletions

View File

@@ -198,6 +198,10 @@ bool Parser::skipUntilStatement()
case T_USING:
return true;
case T_AT_SYNCHRONIZED:
if (objCEnabled())
return true;
default:
consumeToken();
}
@@ -1932,6 +1936,10 @@ bool Parser::parseStatement(StatementAST *&node)
return true;
}
case T_AT_SYNCHRONIZED:
if (objCEnabled())
return parseObjCSynchronizedStatement(node);
default:
if (LA() == T_IDENTIFIER && LA(2) == T_COLON)
return parseLabeledStatement(node);
@@ -2894,6 +2902,23 @@ bool Parser::parseObjCStringLiteral(ExpressionAST *&node)
return true;
}
bool Parser::parseObjCSynchronizedStatement(StatementAST *&node)
{
if (LA() != T_AT_SYNCHRONIZED)
return false;
ObjCSynchronizedStatementAST *ast = new (_pool) ObjCSynchronizedStatementAST;
ast->synchronized_token = consumeToken();
match(T_LPAREN, &ast->lparen_token);
parseExpression(ast->synchronized_object);
match(T_RPAREN, &ast->rparen_token);
parseStatement(ast->statement);
node = ast;
return true;
}
bool Parser::parseObjCEncodeExpression(ExpressionAST *&node)
{
if (LA() != T_AT_ENCODE)