l ::= id
s ::= l "=" r => "assign"
| r
- R ::= l
+ r ::= l
| l "=" r => "assign"
| r "+" r => "plus"
| (r) "*" r => "times"
any !::= [~]*
s ::= !any "\n\n" !ww Statement !ww "\n\n" !any => smt
ww ::= sp*
+ws !::= sp**
sp ::= " "
-block ::= "\n" !indent BlockBody
+block ::= "\n" !indent blockBody
&~ "\n" outdent [~\ ] [~]*
-BlockBody ::= Statement
- > Statement BlockBody => "sbb"
+blockBody ::= Statement
+ > Statement blockBody /ws => "sbb"
Statement ::= Call
| ^"while" Expr block