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]
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 '= | '+ | '- | '* | '/ | '== | '<= | '>=
116 | [opt al_sign] [number]
117 | [stringlit] [opt union]
130 'if '( [al_expr] ') [NL] [IN]
131 [action_lang_stmt] [EX]
137 [action_lang_stmt] [EX]
143 | 'fexec [repeat al_expr] '; [NL]
144 | 'fnext [id] '; [NL]
145 | 'fgoto [id] '; [NL]
146 | 'fcall [id] '; [NL]
147 | 'fnext '* [repeat al_expr] '; [NL]
148 | 'fgoto '* [repeat al_expr] '; [NL]
149 | 'fcall '* [repeat al_expr] '; [NL]
154 [id] '= [machine_expr] '; [NL]
158 [id] ':= [machine_expr] '; [NL]
162 [repeat machine_expr_item]
166 [repeat machine_expr_item] '; [NL]
169 define machine_expr_item
170 [action_embed] [al_host_block]
171 | '|* [repeat scanner_item] '*|
172 | [not ';] [not '*|] [token]
176 '{ [NL] [IN] [al_statements] [EX] '} [NL]