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)?