You can write separator nonempty Stmt "," in the grammar but the generated Abs file still uses the type [Stmt] rather than NonEmpty Stmt. This means that you have to duplicate the empty-case check again wherever you use the generated data type.
e.g.
ELitSeq. Expr ::= "[" [Expr] "]";
separator nonempty Expr "";
results in
data Expr = ELitSeq [Expr]
rather than
data Expr = ELitSeq (NonEmpty Expr)
How hard would this be to fix and where would one start?
You can write
separator nonempty Stmt ","in the grammar but the generatedAbsfile still uses the type[Stmt]rather thanNonEmpty Stmt. This means that you have to duplicate the empty-case check again wherever you use the generated data type.e.g.
results in
rather than
How hard would this be to fix and where would one start?