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
52 'action [id] [al_host_block]
55 define cond_action_stmt
56 'action [id] '{ [al_expr] '} [NL]
60 [repeat action_lang_stmt]
63 define action_lang_stmt
69 | '{ [al_statements] '}
73 [print_cmd] [al_expr] '; [NL]
80 define al_variable_decl
81 [al_type_decl] [id] [opt union] '; [NL]
89 'int | 'bool | 'char | 'ptr
97 [al_term] [repeat al_expr_extend]
100 define al_expr_extend
101 [al_expr_op] [al_term]
105 '= | '+ | '- | '* | '/ | '== | '<= | '>=
110 | [opt al_sign] [number]
124 'if '( [al_expr] ') [NL] [IN]
125 [action_lang_stmt] [EX]
131 [action_lang_stmt] [EX]
137 | 'fexec [repeat al_expr] '; [NL]
138 | 'fnext [id] '; [NL]
139 | 'fgoto [id] '; [NL]
140 | 'fcall [id] '; [NL]
141 | 'fnext '* [repeat al_expr] '; [NL]
142 | 'fgoto '* [repeat al_expr] '; [NL]
143 | 'fcall '* [repeat al_expr] '; [NL]
148 [id] '= [machine_expr] '; [NL]
152 [id] ':= [machine_expr] '; [NL]
156 [repeat machine_expr_item]
160 [repeat machine_expr_item] '; [NL]
163 define machine_expr_item
164 [action_embed] [al_host_block]
165 | '|* [repeat scanner_item] '*|
166 | [not ';] [not '*|] [token]
170 '{ [NL] [IN] [al_statements] [EX] '} [NL]