summary refs log tree commit diff stats
path: root/compiler/parser.nim
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/parser.nim')
-rw-r--r--compiler/parser.nim14
1 files changed, 9 insertions, 5 deletions
diff --git a/compiler/parser.nim b/compiler/parser.nim
index 7cfd35a41..46294925d 100644
--- a/compiler/parser.nim
+++ b/compiler/parser.nim
@@ -1748,7 +1748,7 @@ proc complexOrSimpleStmt(p: var TParser): PNode =
   
 proc parseStmt(p: var TParser): PNode =
   #| stmt = (IND{>} complexOrSimpleStmt^+(IND{=} / ';') DED)
-  #|      / simpleStmt
+  #|      / simpleStmt ^+ ';'
   if p.tok.indent > p.currInd:
     result = newNodeP(nkStmtList, p)
     withInd(p):
@@ -1779,10 +1779,14 @@ proc parseStmt(p: var TParser): PNode =
       parMessage(p, errComplexStmtRequiresInd)
       result = ast.emptyNode
     else:
-      if p.tok.indent >= 0: parMessage(p, errInvalidIndentation)
-      result = simpleStmt(p)
-      if result.kind == nkEmpty: parMessage(p, errExprExpected, p.tok)
-      #while p.tok.tokType == tkSemicolon: getTok(p)
+      result = newNodeP(nkStmtList, p)
+      while true:
+        if p.tok.indent >= 0: parMessage(p, errInvalidIndentation)     
+        let a = simpleStmt(p)
+        if a.kind == nkEmpty: parMessage(p, errExprExpected, p.tok)
+        result.add(a)
+        if p.tok.tokType != tkSemicolon: break
+        getTok(p)
   
 proc parseAll(p: var TParser): PNode = 
   result = newNodeP(nkStmtList, p)