6 union "\[[(\\\c)#\]]*\]"
10 '%% '%%{ '}%% '== ':= '-> '<> '>= '<= '=>
12 '>! '<! '$! '%! '@! '<>!
13 '>/ '</ '$/ '%/ '@/ '<>/
17 'int 'bool 'true 'false 'char 'ptr
18 'if 'else 'printi 'prints 'printb 'print_token
19 'fc 'fpc 'fbreak 'fgoto 'fcall 'fret 'fhold 'fexec
20 'machine 'alphtype 'action
55 'alphtype [repeat id] '; [NL]
59 'action [id] [al_host_block]
62 define cond_action_stmt
63 'action [id] '{ [al_expr] '} [NL]
67 [repeat action_lang_stmt]
70 define action_lang_stmt
76 | '{ [al_statements] '}
80 [print_cmd] [al_expr] '; [NL]
81 | 'print_token '; [NL]
85 'printi | 'prints | 'printb
88 define al_variable_decl
89 [al_type_decl] [id] [opt union] '; [NL]
97 'int | 'bool | 'char | 'ptr
105 [al_term] [repeat al_expr_extend]
108 define al_expr_extend
109 [al_expr_op] [al_term]
113 '= | '+ | '- | '* | '/ | '== | '<= | '>= | '< | '>
117 [al_term_base] [opt union]
122 | [SPOFF] [id] '( [SPON] [al_expr] ')
123 | [opt al_sign] [number]
138 'if '( [al_expr] ') [NL] [IN]
139 [action_lang_stmt] [EX]
145 [action_lang_stmt] [EX]
151 | 'fexec [repeat al_expr] '; [NL]
152 | 'fnext [id] '; [NL]
153 | 'fgoto [id] '; [NL]
154 | 'fcall [id] '; [NL]
155 | 'fnext '* [repeat al_expr] '; [NL]
156 | 'fgoto '* [repeat al_expr] '; [NL]
157 | 'fcall '* [repeat al_expr] '; [NL]
162 [id] '= [machine_expr] '; [NL]
166 [id] ':= [machine_expr] '; [NL]
170 [repeat machine_expr_item]
174 [repeat machine_expr_item] '; [NL]
177 define machine_expr_item
178 [action_embed] [al_host_block]
179 | '|* [repeat scanner_item] '*|
180 | [not ';] [not '*|] [token]
184 '{ [NL] [IN] [al_statements] [EX] '} [NL]