aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLefteris Karapetsas <lefteris@refu.co>2014-12-16 00:54:29 +0800
committerLefteris Karapetsas <lefteris@refu.co>2014-12-17 07:03:30 +0800
commit3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b (patch)
tree86785ee0ceab9aea178c0cd06dcc13fe993d8fd9
parentf7029726be3bbf119548a83696402512374d809d (diff)
downloaddexon-solidity-3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b.tar
dexon-solidity-3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b.tar.gz
dexon-solidity-3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b.tar.bz2
dexon-solidity-3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b.tar.lz
dexon-solidity-3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b.tar.xz
dexon-solidity-3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b.tar.zst
dexon-solidity-3f2600bb31a5a71ce4ebb4c2fa95762d68eb516b.zip
new ForStatement parsing test and small grammar fix
-rw-r--r--Parser.cpp1
-rw-r--r--grammar.txt2
2 files changed, 1 insertions, 2 deletions
diff --git a/Parser.cpp b/Parser.cpp
index 9941fbf4..d936cfc7 100644
--- a/Parser.cpp
+++ b/Parser.cpp
@@ -381,7 +381,6 @@ ASTPointer<ForStatement> Parser::parseForStatement()
ASTPointer<Expression> conditionExpression = parseExpression();
expectToken(Token::SEMICOLON);
ASTPointer<ExpressionStatement> loopExpression = parseExpressionStatement();
- expectToken(Token::SEMICOLON);
expectToken(Token::RPAREN);
ASTPointer<Statement> body = parseStatement();
nodeFactory.setEndPositionFromNode(body);
diff --git a/grammar.txt b/grammar.txt
index 99a59001..76e7bb6b 100644
--- a/grammar.txt
+++ b/grammar.txt
@@ -20,7 +20,7 @@ Statement = IfStatement | WhileStatement | Block |
IfStatement = 'if' '(' Expression ')' Statement ( 'else' Statement )?
WhileStatement = 'while' '(' Expression ')' Statement
-ForStatement = 'for' '(' Expressionstatement Expression Expressionstatement ')' Statement
+ForStatement = 'for' '(' VardefOrExpressionstatement ';' Expression ';' Expressionstatement ')' Statement
Continue = 'continue' ';'
Break = 'break' ';'
Return = 'return' Expression? ';'