Statement-level rules (top-down)
token program {
^ <statement_list> <?ws> [ $ | <?syntax_error> ]
}
token statement_list {
<statement> [ <?statement_end> <statement> ]* <?statement_end>?
}
token statement {
| <statement_control>
| <block>
| <use_statement>
| <expression: ;> <statement_modifier>?
}
token statement_end {
| [ <?ws> ; ]+
| <after \}> :: \h* [ \#\N* ]? \n
}