6 union "\[[(\\\c)#\]]*\]"
10 '%% '%%{ '}%% '== ':= '-> '<> '>= '<= '=>
12 '>! '<! '$! '%! '@! '<>!
13 '>/ '</ '$/ '%/ '@/ '<>/
17 'int 'bool 'true 'false 'char 'ptr
18 'if 'else 'printi 'prints
19 'fc 'fpc 'fbreak 'fgoto 'fcall 'fret 'fhold 'fexec
20 'machine 'alphtype 'action
54 'alphtype [repeat id] '; [NL]
58 'action [id] [al_host_block]
61 define cond_action_stmt
62 'action [id] '{ [al_expr] '} [NL]
66 [repeat action_lang_stmt]
69 define action_lang_stmt
75 | '{ [al_statements] '}
79 [print_cmd] [al_expr] '; [NL]
83 'printi | 'prints | 'printb
86 define al_variable_decl
87 [al_type_decl] [id] [opt union] '; [NL]
95 'int | 'bool | 'char | 'ptr
103 [al_term] [repeat al_expr_extend]
106 define al_expr_extend
107 [al_expr_op] [al_term]
111 '= | '+ | '- | '* | '/ | '== | '<= | '>=
115 [al_term_base] [opt union]
120 | [opt al_sign] [number]
134 'if '( [al_expr] ') [NL] [IN]
135 [action_lang_stmt] [EX]
141 [action_lang_stmt] [EX]
147 | 'fexec [repeat al_expr] '; [NL]
148 | 'fnext [id] '; [NL]
149 | 'fgoto [id] '; [NL]
150 | 'fcall [id] '; [NL]
151 | 'fnext '* [repeat al_expr] '; [NL]
152 | 'fgoto '* [repeat al_expr] '; [NL]
153 | 'fcall '* [repeat al_expr] '; [NL]
158 [id] '= [machine_expr] '; [NL]
162 [id] ':= [machine_expr] '; [NL]
166 [repeat machine_expr_item]
170 [repeat machine_expr_item] '; [NL]
173 define machine_expr_item
174 [action_embed] [al_host_block]
175 | '|* [repeat scanner_item] '*|
176 | [not ';] [not '*|] [token]
180 '{ [NL] [IN] [al_statements] [EX] '} [NL]