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
}