BTW, I think it's better if you could clarify the precedence of operators in the manual, I see this: tupleDecl = 'tuple' '[' optInd (identColonEquals (comma/semicolon)?)* optPar ']' | COMMENT? (IND{>} identColonEquals (IND{=} identColonEquals)*)? Run
which obviously, means: tupleDecl = 'tuple' ( '[' optInd (identColonEquals (comma/semicolon)?)* optPar ']' | COMMENT? (IND{>} identColonEquals (IND{=} identColonEquals)*)? ) Run But you didn't clarify how indent should work..