The way I read the grammar, the ';' is part of the statement in 'i=i++;'. 'i=i++' matches the nonterminal 'unused2' and the ';' matches the nonterminal 'optional_block', and together they form 'statement_with_semicolon' according to the production
statement_with_semicolon: unused2 optional_block
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)
Previous text:
2003-04-05 01:24: Subject: Autodoc
i=i++ is an expression. Every expression can also be a statement. i=i++; is an expression-statement followed by a semicolon.
/ Fredrik (Naranek) Hubinette (Real Build Master)