diff options
author | Adam Strzelecki <ono@java.pl> | 2015-06-02 21:51:41 +0200 |
---|---|---|
committer | Adam Strzelecki <ono@java.pl> | 2015-06-02 21:53:46 +0200 |
commit | 2f5ed17cfe21011dfba30dc10ea7f478c0d67d21 (patch) | |
tree | d92240bef13a0cc77ee3bd93408e1d5eeddd2b70 | |
parent | 13b57dbc2f686ba9beb410ad9fef848926de38c5 (diff) | |
download | Nim-2f5ed17cfe21011dfba30dc10ea7f478c0d67d21.tar.gz |
Parser: Properly represent parsePar in grammar
-rw-r--r-- | compiler/parser.nim | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/compiler/parser.nim b/compiler/parser.nim index 0d2ba7cfc..18ef06e64 100644 --- a/compiler/parser.nim +++ b/compiler/parser.nim @@ -499,10 +499,12 @@ proc parsePar(p: var TParser): PNode = #| parKeyw = 'discard' | 'include' | 'if' | 'while' | 'case' | 'try' #| | 'finally' | 'except' | 'for' | 'block' | 'const' | 'let' #| | 'when' | 'var' | 'mixin' - #| par = '(' optInd (&parKeyw complexOrSimpleStmt ^+ ';' - #| | simpleExpr ('=' expr (';' complexOrSimpleStmt ^+ ';' )? )? - #| | (':' expr)? (',' (exprColonEqExpr comma?)*)? )? - #| optPar ')' + #| par = '(' optInd + #| ( &parKeyw complexOrSimpleStmt ^+ ';' + #| | ';' complexOrSimpleStmt ^+ ';' + #| | simpleExpr ( ('=' expr (';' complexOrSimpleStmt ^+ ';' )? ) + #| | (':' expr (',' exprColonEqExpr ^+ ',' )? ) ) ) + #| optPar ')' # # unfortunately it's ambiguous: (expr: expr) vs (exprStmt); however a # leading ';' could be used to enforce a 'stmt' context ... |