fix a parsing regression (do is still mandatory in some situations)
This commit is contained in:
parent
03770daba4
commit
8de19a7f4c
2 changed files with 20 additions and 1 deletions
|
|
@ -68,6 +68,7 @@ proc parseCase(p: var TParser): PNode
|
||||||
proc parseStmtPragma(p: var TParser): PNode
|
proc parseStmtPragma(p: var TParser): PNode
|
||||||
proc parsePragma(p: var TParser): PNode
|
proc parsePragma(p: var TParser): PNode
|
||||||
proc postExprBlocks(p: var TParser, x: PNode): PNode
|
proc postExprBlocks(p: var TParser, x: PNode): PNode
|
||||||
|
proc parseExprStmt(p: var TParser): PNode
|
||||||
# implementation
|
# implementation
|
||||||
|
|
||||||
proc getTok(p: var TParser) =
|
proc getTok(p: var TParser) =
|
||||||
|
|
@ -523,7 +524,9 @@ proc parsePar(p: var TParser): PNode =
|
||||||
result.add(parseStmtPragma(p))
|
result.add(parseStmtPragma(p))
|
||||||
elif p.tok.tokType != tkParRi:
|
elif p.tok.tokType != tkParRi:
|
||||||
var a = simpleExpr(p)
|
var a = simpleExpr(p)
|
||||||
if p.tok.tokType == tkEquals:
|
if p.tok.tokType == tkDo:
|
||||||
|
result = postExprBlocks(p, a)
|
||||||
|
elif p.tok.tokType == tkEquals:
|
||||||
# special case: allow assignments
|
# special case: allow assignments
|
||||||
let asgn = newNodeP(nkAsgn, p)
|
let asgn = newNodeP(nkAsgn, p)
|
||||||
getTok(p)
|
getTok(p)
|
||||||
|
|
|
||||||
|
|
@ -371,6 +371,17 @@ StmtList
|
||||||
StmtList
|
StmtList
|
||||||
DiscardStmt
|
DiscardStmt
|
||||||
Empty
|
Empty
|
||||||
|
Call
|
||||||
|
DotExpr
|
||||||
|
Ident !"result"
|
||||||
|
Ident !"add"
|
||||||
|
BracketExpr
|
||||||
|
Call
|
||||||
|
Ident !"quote"
|
||||||
|
StmtList
|
||||||
|
DiscardStmt
|
||||||
|
Empty
|
||||||
|
IntLit 0
|
||||||
'''
|
'''
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -495,3 +506,8 @@ dumpTree:
|
||||||
else:
|
else:
|
||||||
discard
|
discard
|
||||||
|
|
||||||
|
# some edge cases
|
||||||
|
result.add((quote do:
|
||||||
|
discard
|
||||||
|
)[0])
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue