Nim's [grammar](https://nim-lang.org/docs/manual.html#syntax-grammar) defines 
the top-level term to be:
    
    
    module = stmt ^* (';' / IND{=})
    
    
    Run

where `stmt` is:
    
    
    stmt = (IND{>} complexOrSimpleStmt^+(IND{=} / ';') DED)
         / simpleStmt ^+ ';'
    
    
    Run

I'm not sure the first term should be `stmt`, since it disallows 
`complexOrSimpleStmt` unless it's indented. Shouldn't the top rule be:
    
    
    module = complexOrSimpleStmt ^* (';' / IND{=})
    
    
    Run

which would be consistent with the actual parser 
[implementation](https://github.com/nim-lang/Nim/blob/62869a5c68e4dd91e00ee77b039f0175482ef4fa/compiler/parser.nim#L2514-L2528)?

Reply via email to