os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

commit f42b6a6f9b861658d79b0e546282d57ac6134c67
parent 13de5329207c49cc4debeac3bcc6919bf869ec30
Author: erai <erai@omiltem.net>
Date:   Thu,  6 Feb 2025 01:50:53 +0000

Use %prefix in peg

Diffstat:
Mbootstrap.sh | 4++--
Mcc0.c | 3305+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mcc1.om | 6+-----
Mcc3.peg | 2++
Mpeg.om | 27+++++++++++++++++++++++++--
Mpeg.peg | 5++++-
6 files changed, 1836 insertions(+), 1513 deletions(-)

diff --git a/bootstrap.sh b/bootstrap.sh @@ -6,8 +6,8 @@ SOURCES="cc1.om type.om parse2.om parse3.om peglib.om as.om decl.om node.om peg. # Build the bootstrap compiler from c [ cc0 -nt cc0.c ] || gcc -O1 -g -std=c99 ${BOOTSTRAP} -o cc0 -./cc0 -P P_ cc3.peg -o parse3.om -./cc0 -P PEG_ peg.peg -o parsepeg.om +./cc0 -P cc3.peg -o parse3.om +./cc0 -P peg.peg -o parsepeg.om ./cc0 ${LIBS} ${SOURCES} -o cc1 -n cc1.lines -G cc1.call # Double check the bootstrap and self hosting compiler have the same output diff --git a/cc0.c b/cc0.c @@ -178,6 +178,7 @@ u my_peg_PEG_literal(u v_c); u my_peg_PEG_lookahead(u v_c); u my_peg_PEG_lookop(u v_c); u my_peg_PEG_pattern(u v_c); +u my_peg_PEG_prefix(u v_c); u my_peg_PEG_primary(u v_c); u my_peg_PEG_rule(u v_c); u my_peg_PEG_sp(u v_c); @@ -323,10 +324,11 @@ u my_reconstruct_unary(u v_c, u v_pn); u my_reconstruct_union(u v_c, u v_pn); u my_reconstruct_var(u v_c, u v_pn); u my_reserve(u v_c, u v_n); +u my_setprefix(u v_c, u v_s, u v_n); u my_setup_alloc(u v_c); u my_setup_assembler(u v_a); u my_setup_parser(u v_a); -u my_setup_peg(u v_a, u v_prefix); +u my_setup_peg(u v_a); u my_show_node(u v_out, u v_n); u my_stmt_to_ir(u v_ic, u v_n); u my_strcmp(u v_a, u v_b); @@ -358,74 +360,78 @@ u my_PEG_tag_to_str(u v_tag) { u v1 = 0; u v2 = 0; u v3 = 0; -#line 20 "parsepeg.om" -b0: if (!((u)(((s)(v_tag)) == ((s)(0UL))))) { goto b1; } -#line 20 "parsepeg.om" -b2: return (u)"grammar"; #line 21 "parsepeg.om" -b1: if (!((u)(((s)(v_tag)) == ((s)(1UL))))) { goto b4; } +b0: if (!((u)(((s)(v_tag)) == ((s)(0UL))))) { goto b1; } #line 21 "parsepeg.om" -b5: return (u)"rule"; +b2: return (u)"grammar"; #line 22 "parsepeg.om" -b4: if (!((u)(((s)(v_tag)) == ((s)(2UL))))) { goto b7; } +b1: if (!((u)(((s)(v_tag)) == ((s)(1UL))))) { goto b4; } #line 22 "parsepeg.om" -b8: return (u)"pattern"; +b5: return (u)"rule"; #line 23 "parsepeg.om" -b7: if (!((u)(((s)(v_tag)) == ((s)(3UL))))) { goto b10; } +b4: if (!((u)(((s)(v_tag)) == ((s)(2UL))))) { goto b7; } #line 23 "parsepeg.om" -b11: return (u)"alternative"; +b8: return (u)"prefix"; #line 24 "parsepeg.om" -b10: if (!((u)(((s)(v_tag)) == ((s)(4UL))))) { goto b13; } +b7: if (!((u)(((s)(v_tag)) == ((s)(3UL))))) { goto b10; } #line 24 "parsepeg.om" -b14: return (u)"lookop"; +b11: return (u)"pattern"; #line 25 "parsepeg.om" -b13: if (!((u)(((s)(v_tag)) == ((s)(5UL))))) { goto b16; } +b10: if (!((u)(((s)(v_tag)) == ((s)(4UL))))) { goto b13; } #line 25 "parsepeg.om" -b17: return (u)"lookahead"; +b14: return (u)"alternative"; #line 26 "parsepeg.om" -b16: if (!((u)(((s)(v_tag)) == ((s)(6UL))))) { goto b19; } +b13: if (!((u)(((s)(v_tag)) == ((s)(5UL))))) { goto b16; } #line 26 "parsepeg.om" -b20: return (u)"countop"; +b17: return (u)"lookop"; #line 27 "parsepeg.om" -b19: if (!((u)(((s)(v_tag)) == ((s)(7UL))))) { goto b22; } +b16: if (!((u)(((s)(v_tag)) == ((s)(6UL))))) { goto b19; } #line 27 "parsepeg.om" -b23: return (u)"suffix"; +b20: return (u)"lookahead"; #line 28 "parsepeg.om" -b22: if (!((u)(((s)(v_tag)) == ((s)(8UL))))) { goto b25; } +b19: if (!((u)(((s)(v_tag)) == ((s)(7UL))))) { goto b22; } #line 28 "parsepeg.om" -b26: return (u)"primary"; +b23: return (u)"countop"; #line 29 "parsepeg.om" -b25: if (!((u)(((s)(v_tag)) == ((s)(9UL))))) { goto b28; } +b22: if (!((u)(((s)(v_tag)) == ((s)(8UL))))) { goto b25; } #line 29 "parsepeg.om" -b29: return (u)"any"; +b26: return (u)"suffix"; #line 30 "parsepeg.om" -b28: if (!((u)(((s)(v_tag)) == ((s)(10UL))))) { goto b31; } +b25: if (!((u)(((s)(v_tag)) == ((s)(9UL))))) { goto b28; } #line 30 "parsepeg.om" -b32: return (u)"literal"; +b29: return (u)"primary"; #line 31 "parsepeg.om" -b31: if (!((u)(((s)(v_tag)) == ((s)(11UL))))) { goto b34; } +b28: if (!((u)(((s)(v_tag)) == ((s)(10UL))))) { goto b31; } #line 31 "parsepeg.om" -b35: return (u)"class"; +b32: return (u)"any"; #line 32 "parsepeg.om" -b34: if (!((u)(((s)(v_tag)) == ((s)(12UL))))) { goto b37; } +b31: if (!((u)(((s)(v_tag)) == ((s)(11UL))))) { goto b34; } #line 32 "parsepeg.om" -b38: return (u)"call"; +b35: return (u)"literal"; #line 33 "parsepeg.om" -b37: if (!((u)(((s)(v_tag)) == ((s)(13UL))))) { goto b40; } +b34: if (!((u)(((s)(v_tag)) == ((s)(12UL))))) { goto b37; } #line 33 "parsepeg.om" -b41: return (u)"identifier"; +b38: return (u)"class"; #line 34 "parsepeg.om" -b40: if (!((u)(((s)(v_tag)) == ((s)(14UL))))) { goto b43; } +b37: if (!((u)(((s)(v_tag)) == ((s)(13UL))))) { goto b40; } #line 34 "parsepeg.om" -b44: return (u)"sp"; +b41: return (u)"call"; #line 35 "parsepeg.om" -b43: v1 = (u)my_die; +b40: if (!((u)(((s)(v_tag)) == ((s)(14UL))))) { goto b43; } #line 35 "parsepeg.om" +b44: return (u)"identifier"; +#line 36 "parsepeg.om" +b43: if (!((u)(((s)(v_tag)) == ((s)(15UL))))) { goto b46; } +#line 36 "parsepeg.om" +b47: return (u)"sp"; +#line 37 "parsepeg.om" +b46: v1 = (u)my_die; +#line 37 "parsepeg.om" v2 = (u)"invalid tag"; -#line 35 "parsepeg.om" +#line 37 "parsepeg.om" v3 = ((u (*)())(v1))(v2); -#line 36 "parsepeg.om" -b46: return 0UL; +#line 38 "parsepeg.om" +b49: return 0UL; } u my_P_tag_to_str(u v_tag) { u v1 = 0; @@ -4942,7 +4948,7 @@ b8: if (!(v2)) { goto b3; } #line 46 "peg.om" b4: return v_ret; #line 49 "peg.om" -b3: if (!((u)(((s)(*(u *)(v_n))) == ((s)(6UL))))) { goto b9; } +b3: if (!((u)(((s)(*(u *)(v_n))) == ((s)(7UL))))) { goto b9; } #line 50 "peg.om" b10: if (!((u)(((s)((u)*(b *)(*(u *)((v_n) + (24UL))))) == ((s)(63UL))))) { goto b14; } #line 51 "peg.om" @@ -5005,7 +5011,7 @@ u my_decode_look(u v_n) { #line 20 "peg.om" b0: v_ret = 0UL; #line 21 "peg.om" - if (!((u)(((s)(*(u *)(*(u *)((v_n) + (16UL))))) == ((s)(4UL))))) { goto b1; } + if (!((u)(((s)(*(u *)(*(u *)((v_n) + (16UL))))) == ((s)(5UL))))) { goto b1; } #line 22 "peg.om" b2: if (!((u)(((s)((u)*(b *)(*(u *)((*(u *)((v_n) + (16UL))) + (24UL))))) == ((s)(33UL))))) { goto b6; } #line 23 "peg.om" @@ -32483,10 +32489,6 @@ u my_main(u v_argc, u v_argv, u v_envp) { u v133 = 0; u v134 = 0; u v135 = 0; - u v136 = 0; - u v137 = 0; - u v138 = 0; - u v139 = 0; #line 2214 "cc1.om" b0: v_link = (u)&v_input; #line 2216 "cc1.om" @@ -32525,176 +32527,176 @@ b3: v_c = v24; goto b4; #line 2228 "cc1.om" b4: if (!((u)(((s)(v_i)) >= ((s)(v_argc))))) { goto b6; } +#line 2293 "cc1.om" +b5: if (!(v_peg)) { goto b71; } +#line 2294 "cc1.om" +b72: if (!(v_input)) { goto b78; } +#line 2294 "cc1.om" +b77: v82 = 0UL; +#line 2294 "cc1.om" + goto b79; +#line 2294 "cc1.om" +b79: if (!(v82)) { goto b74; } +#line 2295 "cc1.om" +b75: v83 = (u)my_die; +#line 2295 "cc1.om" + v84 = (u)"expected input"; +#line 2295 "cc1.om" + v85 = ((u (*)())(v83))(v84); #line 2297 "cc1.om" -b5: if (!(v_peg)) { goto b75; } -#line 2298 "cc1.om" -b76: if (!(v_input)) { goto b82; } -#line 2298 "cc1.om" -b81: v86 = 0UL; -#line 2298 "cc1.om" - goto b83; +b74: v86 = (u)my_peg_open_output; +#line 2297 "cc1.om" + v87 = v_peg; +#line 2297 "cc1.om" + v88 = v_filename; +#line 2297 "cc1.om" + v89 = ((u (*)())(v86))(v87, v88); #line 2298 "cc1.om" -b83: if (!(v86)) { goto b78; } -#line 2299 "cc1.om" -b79: v87 = (u)my_die; -#line 2299 "cc1.om" - v88 = (u)"expected input"; +b81: v_tmp = v_input; #line 2299 "cc1.om" - v89 = ((u (*)())(v87))(v88); -#line 2301 "cc1.om" -b78: v90 = (u)my_peg_open_output; -#line 2301 "cc1.om" - v91 = v_peg; -#line 2301 "cc1.om" - v92 = v_filename; -#line 2301 "cc1.om" - v93 = ((u (*)())(v90))(v91, v92); -#line 2302 "cc1.om" -b85: v_tmp = v_input; + goto b82; +#line 2300 "cc1.om" +b82: if (!(v_tmp)) { goto b88; } +#line 2300 "cc1.om" +b87: v90 = 0UL; +#line 2300 "cc1.om" + goto b89; +#line 2300 "cc1.om" +b89: if (!(v90)) { goto b84; } +#line 2306 "cc1.om" +b83: return 0UL; #line 2303 "cc1.om" - goto b86; -#line 2304 "cc1.om" -b86: if (!(v_tmp)) { goto b92; } -#line 2304 "cc1.om" -b91: v94 = 0UL; +b84: v91 = (u)my_peg_compile; +#line 2303 "cc1.om" + v92 = v_peg; +#line 2303 "cc1.om" + v93 = *(u *)((v_tmp) + (8UL)); +#line 2303 "cc1.om" + v94 = v_err; +#line 2303 "cc1.om" + v95 = ((u (*)())(v91))(v92, v93, v94); #line 2304 "cc1.om" - goto b93; +b90: v_tmp = *(u *)(v_tmp); #line 2304 "cc1.om" -b93: if (!(v94)) { goto b88; } + goto b82; +#line 2300 "cc1.om" +b88: v90 = 1UL; +#line 2300 "cc1.om" + goto b89; +#line 2294 "cc1.om" +b78: v82 = 1UL; +#line 2294 "cc1.om" + goto b79; +#line 2309 "cc1.om" +b71: v_tmp = v_input; #line 2310 "cc1.om" -b87: return 0UL; -#line 2307 "cc1.om" -b88: v95 = (u)my_peg_compile; -#line 2307 "cc1.om" - v96 = v_peg; -#line 2307 "cc1.om" - v97 = *(u *)((v_tmp) + (8UL)); -#line 2307 "cc1.om" - v98 = v_err; -#line 2307 "cc1.om" - v99 = ((u (*)())(v95))(v96, v97, v98); -#line 2308 "cc1.om" -b94: v_tmp = *(u *)(v_tmp); -#line 2308 "cc1.om" - goto b86; -#line 2304 "cc1.om" -b92: v94 = 1UL; -#line 2304 "cc1.om" - goto b93; -#line 2298 "cc1.om" -b82: v86 = 1UL; -#line 2298 "cc1.om" - goto b83; -#line 2313 "cc1.om" -b75: v_tmp = v_input; -#line 2314 "cc1.om" - goto b95; -#line 2315 "cc1.om" -b95: if (!(v_tmp)) { goto b101; } -#line 2315 "cc1.om" -b100: v100 = 0UL; -#line 2315 "cc1.om" - goto b102; -#line 2315 "cc1.om" -b102: if (!(v100)) { goto b97; } -#line 2322 "cc1.om" -b96: if (!(v_show)) { goto b105; } -#line 2323 "cc1.om" -b106: v110 = (u)my_show_node; -#line 2323 "cc1.om" + goto b91; +#line 2311 "cc1.om" +b91: if (!(v_tmp)) { goto b97; } +#line 2311 "cc1.om" +b96: v96 = 0UL; +#line 2311 "cc1.om" + goto b98; +#line 2311 "cc1.om" +b98: if (!(v96)) { goto b93; } +#line 2318 "cc1.om" +b92: if (!(v_show)) { goto b101; } +#line 2319 "cc1.om" +b102: v106 = (u)my_show_node; +#line 2319 "cc1.om" + v107 = v_err; +#line 2319 "cc1.om" + v108 = v_p; +#line 2319 "cc1.om" + v109 = ((u (*)())(v106))(v107, v108); +#line 2320 "cc1.om" +b104: v110 = (u)my_fflush; +#line 2320 "cc1.om" v111 = v_err; -#line 2323 "cc1.om" - v112 = v_p; -#line 2323 "cc1.om" - v113 = ((u (*)())(v110))(v111, v112); +#line 2320 "cc1.om" + v112 = ((u (*)())(v110))(v111); +#line 2321 "cc1.om" +b105: return 0UL; #line 2324 "cc1.om" -b108: v114 = (u)my_fflush; +b101: v113 = (u)my_compile; #line 2324 "cc1.om" - v115 = v_err; + v114 = v_c; #line 2324 "cc1.om" - v116 = ((u (*)())(v114))(v115); -#line 2325 "cc1.om" -b109: return 0UL; -#line 2328 "cc1.om" -b105: v117 = (u)my_compile; -#line 2328 "cc1.om" + v115 = v_p; +#line 2324 "cc1.om" + v116 = ((u (*)())(v113))(v114, v115); +#line 2326 "cc1.om" +b106: if (!(*(u *)((v_c) + (64UL)))) { goto b107; } +#line 2327 "cc1.om" +b108: v117 = (u)my_open_coutput; +#line 2327 "cc1.om" v118 = v_c; -#line 2328 "cc1.om" - v119 = v_p; -#line 2328 "cc1.om" +#line 2327 "cc1.om" + v119 = v_filename; +#line 2327 "cc1.om" v120 = ((u (*)())(v117))(v118, v119); -#line 2330 "cc1.om" -b110: if (!(*(u *)((v_c) + (64UL)))) { goto b111; } -#line 2331 "cc1.om" -b112: v121 = (u)my_open_coutput; -#line 2331 "cc1.om" +#line 2329 "cc1.om" +b110: v121 = (u)my_ircout; +#line 2329 "cc1.om" v122 = v_c; +#line 2329 "cc1.om" + v123 = ((u (*)())(v121))(v122); #line 2331 "cc1.om" - v123 = v_filename; -#line 2331 "cc1.om" - v124 = ((u (*)())(v121))(v122, v123); -#line 2333 "cc1.om" -b114: v125 = (u)my_ircout; -#line 2333 "cc1.om" - v126 = v_c; -#line 2333 "cc1.om" - v127 = ((u (*)())(v125))(v126); -#line 2335 "cc1.om" -b115: return 0UL; -#line 2338 "cc1.om" -b111: v128 = (u)my_emit_builtin; +b111: return 0UL; +#line 2334 "cc1.om" +b107: v124 = (u)my_emit_builtin; +#line 2334 "cc1.om" + v125 = v_c; +#line 2334 "cc1.om" + v126 = ((u (*)())(v124))(v125); +#line 2336 "cc1.om" +b112: v127 = (u)my_open_output; +#line 2336 "cc1.om" + v128 = *(u *)((v_c) + (48UL)); +#line 2336 "cc1.om" + v129 = v_filename; +#line 2336 "cc1.om" + v130 = ((u (*)())(v127))(v128, v129); #line 2338 "cc1.om" - v129 = v_c; +b113: v131 = (u)my_writeout; #line 2338 "cc1.om" - v130 = ((u (*)())(v128))(v129); -#line 2340 "cc1.om" -b116: v131 = (u)my_open_output; -#line 2340 "cc1.om" v132 = *(u *)((v_c) + (48UL)); -#line 2340 "cc1.om" - v133 = v_filename; -#line 2340 "cc1.om" - v134 = ((u (*)())(v131))(v132, v133); -#line 2342 "cc1.om" -b117: v135 = (u)my_writeout; -#line 2342 "cc1.om" - v136 = *(u *)((v_c) + (48UL)); -#line 2342 "cc1.om" - v137 = *(u *)((v_c) + (88UL)); -#line 2342 "cc1.om" - v138 = *(u *)((v_c) + (96UL)); -#line 2342 "cc1.om" - v139 = ((u (*)())(v135))(v136, v137, v138); +#line 2338 "cc1.om" + v133 = *(u *)((v_c) + (88UL)); +#line 2338 "cc1.om" + v134 = *(u *)((v_c) + (96UL)); +#line 2338 "cc1.om" + v135 = ((u (*)())(v131))(v132, v133, v134); #line 2201 "cc1.om" -b118: return 0UL; -#line 2318 "cc1.om" -b97: v101 = (u)my_concat_program; -#line 2318 "cc1.om" - v102 = v_p; -#line 2318 "cc1.om" - v104 = (u)my_parse; -#line 2318 "cc1.om" - v105 = *(u *)((v_c) + (16UL)); -#line 2318 "cc1.om" - v106 = *(u *)((v_tmp) + (8UL)); -#line 2318 "cc1.om" - v107 = v_err; -#line 2318 "cc1.om" - v108 = ((u (*)())(v104))(v105, v106, v107); -#line 2318 "cc1.om" -b103: v103 = v108; -#line 2318 "cc1.om" - v109 = ((u (*)())(v101))(v102, v103); -#line 2318 "cc1.om" -b104: v_p = v109; -#line 2319 "cc1.om" - v_tmp = *(u *)(v_tmp); -#line 2319 "cc1.om" - goto b95; +b114: return 0UL; +#line 2314 "cc1.om" +b93: v97 = (u)my_concat_program; +#line 2314 "cc1.om" + v98 = v_p; +#line 2314 "cc1.om" + v100 = (u)my_parse; +#line 2314 "cc1.om" + v101 = *(u *)((v_c) + (16UL)); +#line 2314 "cc1.om" + v102 = *(u *)((v_tmp) + (8UL)); +#line 2314 "cc1.om" + v103 = v_err; +#line 2314 "cc1.om" + v104 = ((u (*)())(v100))(v101, v102, v103); +#line 2314 "cc1.om" +b99: v99 = v104; +#line 2314 "cc1.om" + v105 = ((u (*)())(v97))(v98, v99); +#line 2314 "cc1.om" +b100: v_p = v105; #line 2315 "cc1.om" -b101: v100 = 1UL; + v_tmp = *(u *)(v_tmp); #line 2315 "cc1.om" - goto b102; + goto b91; +#line 2311 "cc1.om" +b97: v96 = 1UL; +#line 2311 "cc1.om" + goto b98; #line 2232 "cc1.om" b6: v26 = (u)my_strcmp; #line 2232 "cc1.om" @@ -32864,58 +32866,46 @@ b61: v67 = 0UL; #line 2274 "cc1.om" b63: if (!(v67)) { goto b58; } #line 2275 "cc1.om" -b59: v_i = (v_i) + (1UL); +b59: v72 = (u)my_setup_peg; +#line 2275 "cc1.om" + v73 = (u)&v_a; +#line 2275 "cc1.om" + v74 = ((u (*)())(v72))(v73); +#line 2275 "cc1.om" +b65: v_peg = v74; #line 2276 "cc1.om" - if (!((u)(((s)(v_i)) >= ((s)(v_argc))))) { goto b65; } -#line 2277 "cc1.om" -b66: v72 = (u)my_die; -#line 2277 "cc1.om" - v73 = (u)"invalid -P at end of argument list"; + v_i = (v_i) + (1UL); #line 2277 "cc1.om" - v74 = ((u (*)())(v72))(v73); -#line 2279 "cc1.om" -b65: v75 = (u)my_setup_peg; -#line 2279 "cc1.om" - v76 = (u)&v_a; -#line 2279 "cc1.om" - v77 = *(u *)((v_argv) + ((v_i) * (8UL))); -#line 2279 "cc1.om" - v78 = ((u (*)())(v75))(v76, v77); -#line 2279 "cc1.om" -b69: v_peg = v78; + goto b4; #line 2280 "cc1.om" - v_i = (v_i) + (1UL); +b58: if (!((u)(((s)((u)*(b *)(*(u *)((v_argv) + ((v_i) * (8UL)))))) == ((s)(45UL))))) { goto b66; } #line 2281 "cc1.om" - goto b4; +b67: v75 = (u)my_die; +#line 2281 "cc1.om" + v76 = (u)"invalid argument"; +#line 2281 "cc1.om" + v77 = ((u (*)())(v75))(v76); #line 2284 "cc1.om" -b58: if (!((u)(((s)((u)*(b *)(*(u *)((v_argv) + ((v_i) * (8UL)))))) == ((s)(45UL))))) { goto b70; } -#line 2285 "cc1.om" -b71: v79 = (u)my_die; -#line 2285 "cc1.om" - v80 = (u)"invalid argument"; +b66: v78 = (u)my_alloc; +#line 2284 "cc1.om" + v79 = (u)&v_a; +#line 2284 "cc1.om" + v80 = 16UL; +#line 2284 "cc1.om" + v81 = ((u (*)())(v78))(v79, v80); +#line 2284 "cc1.om" +b70: v_tmp = v81; #line 2285 "cc1.om" - v81 = ((u (*)())(v79))(v80); -#line 2288 "cc1.om" -b70: v82 = (u)my_alloc; -#line 2288 "cc1.om" - v83 = (u)&v_a; -#line 2288 "cc1.om" - v84 = 16UL; -#line 2288 "cc1.om" - v85 = ((u (*)())(v82))(v83, v84); -#line 2288 "cc1.om" -b74: v_tmp = v85; -#line 2289 "cc1.om" *(u *)(v_tmp) = 0UL; -#line 2290 "cc1.om" +#line 2286 "cc1.om" *(u *)((v_tmp) + (8UL)) = *(u *)((v_argv) + ((v_i) * (8UL))); -#line 2291 "cc1.om" +#line 2287 "cc1.om" *(u *)(v_link) = v_tmp; -#line 2292 "cc1.om" +#line 2288 "cc1.om" v_link = v_tmp; -#line 2294 "cc1.om" +#line 2290 "cc1.om" v_i = (v_i) + (1UL); -#line 2294 "cc1.om" +#line 2290 "cc1.om" goto b4; #line 2274 "cc1.om" b62: v67 = 1UL; @@ -39813,81 +39803,81 @@ u my_peg_PEG_alternative(u v_c) { u v23 = 0; u v24 = 0; u v25 = 0; -#line 112 "parsepeg.om" +#line 141 "parsepeg.om" b0: v2 = (u)my_enter; -#line 112 "parsepeg.om" +#line 141 "parsepeg.om" v3 = v_c; -#line 112 "parsepeg.om" - v4 = 3UL; -#line 112 "parsepeg.om" +#line 141 "parsepeg.om" + v4 = 4UL; +#line 141 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 113 "parsepeg.om" +#line 142 "parsepeg.om" b1: v6 = (u)my_peg_PEG_lookahead; -#line 113 "parsepeg.om" +#line 142 "parsepeg.om" v7 = v_c; -#line 113 "parsepeg.om" +#line 142 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 113 "parsepeg.om" +#line 142 "parsepeg.om" b2: v_ok = v8; -#line 114 "parsepeg.om" +#line 143 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 116 "parsepeg.om" +#line 145 "parsepeg.om" b6: v9 = (u)my_choice; -#line 116 "parsepeg.om" +#line 145 "parsepeg.om" v10 = v_c; -#line 116 "parsepeg.om" +#line 145 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 117 "parsepeg.om" +#line 146 "parsepeg.om" b8: v12 = (u)my_peg_PEG_lookahead; -#line 117 "parsepeg.om" +#line 146 "parsepeg.om" v13 = v_c; -#line 117 "parsepeg.om" +#line 146 "parsepeg.om" v14 = ((u (*)())(v12))(v13); -#line 117 "parsepeg.om" +#line 146 "parsepeg.om" b9: v_ok = v14; -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" if (!(v_ok)) { goto b14; } -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" b13: v15 = 0UL; -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" goto b15; -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" b15: if (!(v15)) { goto b10; } -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" b11: v_ok = 1UL; -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" goto b3; -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" b3: if (!(v_ok)) { goto b19; } -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" b18: v19 = (u)my_leave; -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" v20 = v_c; -#line 122 "parsepeg.om" - v21 = 3UL; -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" + v21 = 4UL; +#line 151 "parsepeg.om" v22 = ((u (*)())(v19))(v20, v21); -#line 123 "parsepeg.om" +#line 152 "parsepeg.om" b17: return v_ok; -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" b19: v23 = (u)my_fail; -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" v24 = v_c; -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" v25 = ((u (*)())(v23))(v24); -#line 122 "parsepeg.om" +#line 151 "parsepeg.om" goto b17; -#line 119 "parsepeg.om" +#line 148 "parsepeg.om" b10: v16 = (u)my_commit; -#line 119 "parsepeg.om" +#line 148 "parsepeg.om" v17 = v_c; -#line 119 "parsepeg.om" +#line 148 "parsepeg.om" v18 = ((u (*)())(v16))(v17); -#line 119 "parsepeg.om" +#line 148 "parsepeg.om" goto b6; -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" b14: v15 = 1UL; -#line 118 "parsepeg.om" +#line 147 "parsepeg.om" goto b15; } u my_peg_PEG_any(u v_c) { @@ -39907,43 +39897,43 @@ u my_peg_PEG_any(u v_c) { u v14 = 0; u v15 = 0; u v16 = 0; -#line 213 "parsepeg.om" +#line 242 "parsepeg.om" b0: v2 = (u)my_enter; -#line 213 "parsepeg.om" +#line 242 "parsepeg.om" v3 = v_c; -#line 213 "parsepeg.om" - v4 = 9UL; -#line 213 "parsepeg.om" +#line 242 "parsepeg.om" + v4 = 10UL; +#line 242 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 214 "parsepeg.om" +#line 243 "parsepeg.om" b1: v6 = (u)my_literal; -#line 214 "parsepeg.om" +#line 243 "parsepeg.om" v7 = v_c; -#line 214 "parsepeg.om" +#line 243 "parsepeg.om" v8 = (u)"."; -#line 214 "parsepeg.om" +#line 243 "parsepeg.om" v9 = ((u (*)())(v6))(v7, v8); -#line 214 "parsepeg.om" +#line 243 "parsepeg.om" b2: v_ok = v9; -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" if (!(v_ok)) { goto b5; } -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" b4: v10 = (u)my_leave; -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" v11 = v_c; -#line 215 "parsepeg.om" - v12 = 9UL; -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" + v12 = 10UL; +#line 244 "parsepeg.om" v13 = ((u (*)())(v10))(v11, v12); -#line 216 "parsepeg.om" +#line 245 "parsepeg.om" b3: return v_ok; -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" b5: v14 = (u)my_fail; -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" v15 = v_c; -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" v16 = ((u (*)())(v14))(v15); -#line 215 "parsepeg.om" +#line 244 "parsepeg.om" goto b3; } u my_peg_PEG_call(u v_c) { @@ -39978,93 +39968,93 @@ u my_peg_PEG_call(u v_c) { u v29 = 0; u v30 = 0; u v31 = 0; -#line 280 "parsepeg.om" +#line 309 "parsepeg.om" b0: v2 = (u)my_enter; -#line 280 "parsepeg.om" +#line 309 "parsepeg.om" v3 = v_c; -#line 280 "parsepeg.om" - v4 = 12UL; -#line 280 "parsepeg.om" +#line 309 "parsepeg.om" + v4 = 13UL; +#line 309 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 281 "parsepeg.om" +#line 310 "parsepeg.om" b1: v6 = (u)my_peg_PEG_identifier; -#line 281 "parsepeg.om" +#line 310 "parsepeg.om" v7 = v_c; -#line 281 "parsepeg.om" +#line 310 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 281 "parsepeg.om" +#line 310 "parsepeg.om" b2: v_ok = v8; -#line 282 "parsepeg.om" +#line 311 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 283 "parsepeg.om" +#line 312 "parsepeg.om" b4: v9 = (u)my_choice; -#line 283 "parsepeg.om" +#line 312 "parsepeg.om" v10 = v_c; -#line 283 "parsepeg.om" +#line 312 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 284 "parsepeg.om" +#line 313 "parsepeg.om" b6: v12 = (u)my_peg_PEG_sp; -#line 284 "parsepeg.om" +#line 313 "parsepeg.om" v13 = v_c; -#line 284 "parsepeg.om" +#line 313 "parsepeg.om" v14 = ((u (*)())(v12))(v13); -#line 284 "parsepeg.om" +#line 313 "parsepeg.om" b7: v_ok = v14; -#line 285 "parsepeg.om" +#line 314 "parsepeg.om" if (!(v_ok)) { goto b8; } -#line 286 "parsepeg.om" +#line 315 "parsepeg.om" b9: v15 = (u)my_literal; -#line 286 "parsepeg.om" +#line 315 "parsepeg.om" v16 = v_c; -#line 286 "parsepeg.om" +#line 315 "parsepeg.om" v17 = (u)"<-"; -#line 286 "parsepeg.om" +#line 315 "parsepeg.om" v18 = ((u (*)())(v15))(v16, v17); -#line 286 "parsepeg.om" +#line 315 "parsepeg.om" b11: v_ok = v18; -#line 286 "parsepeg.om" +#line 315 "parsepeg.om" goto b8; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" b8: if (!(v_ok)) { goto b14; } -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" b13: v19 = (u)my_fail; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" v20 = v_c; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" v21 = ((u (*)())(v19))(v20); -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" b15: v22 = (u)my_fail; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" v23 = v_c; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" v24 = ((u (*)())(v22))(v23); -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" b16: v_ok = 0UL; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" goto b3; -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" b3: if (!(v_ok)) { goto b19; } -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" b18: v25 = (u)my_leave; -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" v26 = v_c; -#line 290 "parsepeg.om" - v27 = 12UL; -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" + v27 = 13UL; +#line 319 "parsepeg.om" v28 = ((u (*)())(v25))(v26, v27); -#line 291 "parsepeg.om" +#line 320 "parsepeg.om" b17: return v_ok; -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" b19: v29 = (u)my_fail; -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" v30 = v_c; -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" v31 = ((u (*)())(v29))(v30); -#line 290 "parsepeg.om" +#line 319 "parsepeg.om" goto b17; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" b14: v_ok = 1UL; -#line 288 "parsepeg.om" +#line 317 "parsepeg.om" goto b3; } u my_peg_PEG_class(u v_c) { @@ -40134,213 +40124,213 @@ u my_peg_PEG_class(u v_c) { u v64 = 0; u v65 = 0; u v66 = 0; -#line 245 "parsepeg.om" +#line 274 "parsepeg.om" b0: v2 = (u)my_enter; -#line 245 "parsepeg.om" +#line 274 "parsepeg.om" v3 = v_c; -#line 245 "parsepeg.om" - v4 = 11UL; -#line 245 "parsepeg.om" +#line 274 "parsepeg.om" + v4 = 12UL; +#line 274 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 246 "parsepeg.om" +#line 275 "parsepeg.om" b1: v6 = (u)my_literal; -#line 246 "parsepeg.om" +#line 275 "parsepeg.om" v7 = v_c; -#line 246 "parsepeg.om" +#line 275 "parsepeg.om" v8 = (u)"["; -#line 246 "parsepeg.om" +#line 275 "parsepeg.om" v9 = ((u (*)())(v6))(v7, v8); -#line 246 "parsepeg.om" +#line 275 "parsepeg.om" b2: v_ok = v9; -#line 247 "parsepeg.om" +#line 276 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 249 "parsepeg.om" +#line 278 "parsepeg.om" b6: v10 = (u)my_choice; -#line 249 "parsepeg.om" +#line 278 "parsepeg.om" v11 = v_c; -#line 249 "parsepeg.om" +#line 278 "parsepeg.om" v12 = ((u (*)())(v10))(v11); -#line 250 "parsepeg.om" +#line 279 "parsepeg.om" b8: v13 = (u)my_choice; -#line 250 "parsepeg.om" +#line 279 "parsepeg.om" v14 = v_c; -#line 250 "parsepeg.om" +#line 279 "parsepeg.om" v15 = ((u (*)())(v13))(v14); -#line 251 "parsepeg.om" +#line 280 "parsepeg.om" b9: v16 = (u)my_literal; -#line 251 "parsepeg.om" +#line 280 "parsepeg.om" v17 = v_c; -#line 251 "parsepeg.om" +#line 280 "parsepeg.om" v18 = (u)"]"; -#line 251 "parsepeg.om" +#line 280 "parsepeg.om" v19 = ((u (*)())(v16))(v17, v18); -#line 251 "parsepeg.om" +#line 280 "parsepeg.om" b10: v_ok = v19; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" if (!(v_ok)) { goto b13; } -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" b12: v20 = (u)my_fail; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" v21 = v_c; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" v22 = ((u (*)())(v20))(v21); -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" b14: v23 = (u)my_fail; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" v24 = v_c; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" v25 = ((u (*)())(v23))(v24); -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" b15: v_ok = 0UL; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" goto b11; -#line 253 "parsepeg.om" +#line 282 "parsepeg.om" b11: if (!(v_ok)) { goto b16; } -#line 254 "parsepeg.om" +#line 283 "parsepeg.om" b17: v26 = (u)my_choice; -#line 254 "parsepeg.om" +#line 283 "parsepeg.om" v27 = v_c; -#line 254 "parsepeg.om" +#line 283 "parsepeg.om" v28 = ((u (*)())(v26))(v27); -#line 255 "parsepeg.om" +#line 284 "parsepeg.om" b19: v29 = (u)my_any; -#line 255 "parsepeg.om" +#line 284 "parsepeg.om" v30 = v_c; -#line 255 "parsepeg.om" +#line 284 "parsepeg.om" v31 = ((u (*)())(v29))(v30); -#line 255 "parsepeg.om" +#line 284 "parsepeg.om" b20: v_ok = v31; -#line 256 "parsepeg.om" +#line 285 "parsepeg.om" if (!(v_ok)) { goto b21; } -#line 257 "parsepeg.om" +#line 286 "parsepeg.om" b22: v32 = (u)my_literal; -#line 257 "parsepeg.om" +#line 286 "parsepeg.om" v33 = v_c; -#line 257 "parsepeg.om" +#line 286 "parsepeg.om" v34 = (u)"-"; -#line 257 "parsepeg.om" +#line 286 "parsepeg.om" v35 = ((u (*)())(v32))(v33, v34); -#line 257 "parsepeg.om" +#line 286 "parsepeg.om" b24: v_ok = v35; -#line 257 "parsepeg.om" +#line 286 "parsepeg.om" goto b21; -#line 259 "parsepeg.om" +#line 288 "parsepeg.om" b21: if (!(v_ok)) { goto b25; } -#line 260 "parsepeg.om" +#line 289 "parsepeg.om" b26: v36 = (u)my_any; -#line 260 "parsepeg.om" +#line 289 "parsepeg.om" v37 = v_c; -#line 260 "parsepeg.om" +#line 289 "parsepeg.om" v38 = ((u (*)())(v36))(v37); -#line 260 "parsepeg.om" +#line 289 "parsepeg.om" b28: v_ok = v38; -#line 260 "parsepeg.om" +#line 289 "parsepeg.om" goto b25; -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" b25: if (!(v_ok)) { goto b33; } -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" b32: v39 = 0UL; -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" goto b34; -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" b34: if (!(v39)) { goto b29; } -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" b30: v40 = (u)my_choice; -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" v41 = v_c; -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" v42 = ((u (*)())(v40))(v41); -#line 263 "parsepeg.om" +#line 292 "parsepeg.om" b35: v43 = (u)my_any; -#line 263 "parsepeg.om" +#line 292 "parsepeg.om" v44 = v_c; -#line 263 "parsepeg.om" +#line 292 "parsepeg.om" v45 = ((u (*)())(v43))(v44); -#line 263 "parsepeg.om" +#line 292 "parsepeg.om" b36: v_ok = v45; -#line 263 "parsepeg.om" +#line 292 "parsepeg.om" goto b29; -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" b29: if (!(v_ok)) { goto b39; } -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" b38: v46 = (u)my_commit; -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" v47 = v_c; -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" v48 = ((u (*)())(v46))(v47); -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" b16: if (!(v_ok)) { goto b46; } -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" b45: v52 = 0UL; -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" goto b47; -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" b47: if (!(v52)) { goto b42; } -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" b43: v_ok = 1UL; -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" goto b3; -#line 271 "parsepeg.om" +#line 300 "parsepeg.om" b3: if (!(v_ok)) { goto b49; } -#line 272 "parsepeg.om" +#line 301 "parsepeg.om" b50: v56 = (u)my_literal; -#line 272 "parsepeg.om" +#line 301 "parsepeg.om" v57 = v_c; -#line 272 "parsepeg.om" +#line 301 "parsepeg.om" v58 = (u)"]"; -#line 272 "parsepeg.om" +#line 301 "parsepeg.om" v59 = ((u (*)())(v56))(v57, v58); -#line 272 "parsepeg.om" +#line 301 "parsepeg.om" b52: v_ok = v59; -#line 272 "parsepeg.om" +#line 301 "parsepeg.om" goto b49; -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" b49: if (!(v_ok)) { goto b55; } -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" b54: v60 = (u)my_leave; -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" v61 = v_c; -#line 274 "parsepeg.om" - v62 = 11UL; -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" + v62 = 12UL; +#line 303 "parsepeg.om" v63 = ((u (*)())(v60))(v61, v62); -#line 275 "parsepeg.om" +#line 304 "parsepeg.om" b53: return v_ok; -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" b55: v64 = (u)my_fail; -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" v65 = v_c; -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" v66 = ((u (*)())(v64))(v65); -#line 274 "parsepeg.om" +#line 303 "parsepeg.om" goto b53; -#line 268 "parsepeg.om" +#line 297 "parsepeg.om" b42: v53 = (u)my_commit; -#line 268 "parsepeg.om" +#line 297 "parsepeg.om" v54 = v_c; -#line 268 "parsepeg.om" +#line 297 "parsepeg.om" v55 = ((u (*)())(v53))(v54); -#line 268 "parsepeg.om" +#line 297 "parsepeg.om" goto b6; -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" b46: v52 = 1UL; -#line 267 "parsepeg.om" +#line 296 "parsepeg.om" goto b47; -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" b39: v49 = (u)my_fail; -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" v50 = v_c; -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" v51 = ((u (*)())(v49))(v50); -#line 265 "parsepeg.om" +#line 294 "parsepeg.om" goto b16; -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" b33: v39 = 1UL; -#line 262 "parsepeg.om" +#line 291 "parsepeg.om" goto b34; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" b13: v_ok = 1UL; -#line 252 "parsepeg.om" +#line 281 "parsepeg.om" goto b11; } u my_peg_PEG_countop(u v_c) { @@ -40360,43 +40350,43 @@ u my_peg_PEG_countop(u v_c) { u v14 = 0; u v15 = 0; u v16 = 0; -#line 152 "parsepeg.om" +#line 181 "parsepeg.om" b0: v2 = (u)my_enter; -#line 152 "parsepeg.om" +#line 181 "parsepeg.om" v3 = v_c; -#line 152 "parsepeg.om" - v4 = 6UL; -#line 152 "parsepeg.om" +#line 181 "parsepeg.om" + v4 = 7UL; +#line 181 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 153 "parsepeg.om" +#line 182 "parsepeg.om" b1: v6 = (u)my_charset; -#line 153 "parsepeg.om" +#line 182 "parsepeg.om" v7 = v_c; -#line 153 "parsepeg.om" +#line 182 "parsepeg.om" v8 = (u)"*+?"; -#line 153 "parsepeg.om" +#line 182 "parsepeg.om" v9 = ((u (*)())(v6))(v7, v8); -#line 153 "parsepeg.om" +#line 182 "parsepeg.om" b2: v_ok = v9; -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" if (!(v_ok)) { goto b5; } -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" b4: v10 = (u)my_leave; -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" v11 = v_c; -#line 154 "parsepeg.om" - v12 = 6UL; -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" + v12 = 7UL; +#line 183 "parsepeg.om" v13 = ((u (*)())(v10))(v11, v12); -#line 155 "parsepeg.om" +#line 184 "parsepeg.om" b3: return v_ok; -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" b5: v14 = (u)my_fail; -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" v15 = v_c; -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" v16 = ((u (*)())(v14))(v15); -#line 154 "parsepeg.om" +#line 183 "parsepeg.om" goto b3; } u my_peg_PEG_grammar(u v_c) { @@ -40440,130 +40430,262 @@ u my_peg_PEG_grammar(u v_c) { u v38 = 0; u v39 = 0; u v40 = 0; -#line 41 "parsepeg.om" + u v41 = 0; + u v42 = 0; + u v43 = 0; + u v44 = 0; + u v45 = 0; + u v46 = 0; + u v47 = 0; + u v48 = 0; + u v49 = 0; + u v50 = 0; + u v51 = 0; + u v52 = 0; + u v53 = 0; + u v54 = 0; + u v55 = 0; + u v56 = 0; + u v57 = 0; + u v58 = 0; + u v59 = 0; + u v60 = 0; + u v61 = 0; + u v62 = 0; + u v63 = 0; + u v64 = 0; + u v65 = 0; + u v66 = 0; + u v67 = 0; + u v68 = 0; + u v69 = 0; + u v70 = 0; + u v71 = 0; + u v72 = 0; +#line 43 "parsepeg.om" b0: v2 = (u)my_enter; -#line 41 "parsepeg.om" +#line 43 "parsepeg.om" v3 = v_c; -#line 41 "parsepeg.om" +#line 43 "parsepeg.om" v4 = 0UL; -#line 41 "parsepeg.om" +#line 43 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 42 "parsepeg.om" +#line 44 "parsepeg.om" b1: v6 = (u)my_peg_PEG_sp; -#line 42 "parsepeg.om" +#line 44 "parsepeg.om" v7 = v_c; -#line 42 "parsepeg.om" +#line 44 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 42 "parsepeg.om" +#line 44 "parsepeg.om" b2: v_ok = v8; -#line 43 "parsepeg.om" +#line 45 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 44 "parsepeg.om" -b4: v9 = (u)my_peg_PEG_rule; -#line 44 "parsepeg.om" +#line 46 "parsepeg.om" +b4: v9 = (u)my_choice; +#line 46 "parsepeg.om" v10 = v_c; -#line 44 "parsepeg.om" +#line 46 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 44 "parsepeg.om" -b6: v_ok = v11; -#line 45 "parsepeg.om" - if (!(v_ok)) { goto b3; } #line 47 "parsepeg.om" -b10: v12 = (u)my_choice; +b6: v12 = (u)my_peg_PEG_rule; #line 47 "parsepeg.om" v13 = v_c; #line 47 "parsepeg.om" v14 = ((u (*)())(v12))(v13); +#line 47 "parsepeg.om" +b7: v_ok = v14; #line 48 "parsepeg.om" -b12: v15 = (u)my_peg_PEG_rule; + if (!(v_ok)) { goto b12; } #line 48 "parsepeg.om" - v16 = v_c; +b11: v15 = 0UL; #line 48 "parsepeg.om" - v17 = ((u (*)())(v15))(v16); + goto b13; #line 48 "parsepeg.om" -b13: v_ok = v17; -#line 49 "parsepeg.om" - if (!(v_ok)) { goto b18; } +b13: if (!(v15)) { goto b8; } +#line 48 "parsepeg.om" +b9: v16 = (u)my_choice; +#line 48 "parsepeg.om" + v17 = v_c; +#line 48 "parsepeg.om" + v18 = ((u (*)())(v16))(v17); #line 49 "parsepeg.om" -b17: v18 = 0UL; +b14: v19 = (u)my_peg_PEG_prefix; #line 49 "parsepeg.om" - goto b19; + v20 = v_c; #line 49 "parsepeg.om" -b19: if (!(v18)) { goto b14; } + v21 = ((u (*)())(v19))(v20); #line 49 "parsepeg.om" -b15: v_ok = 1UL; +b15: v_ok = v21; #line 49 "parsepeg.om" - goto b3; + goto b8; +#line 51 "parsepeg.om" +b8: if (!(v_ok)) { goto b18; } +#line 51 "parsepeg.om" +b17: v22 = (u)my_commit; +#line 51 "parsepeg.om" + v23 = v_c; +#line 51 "parsepeg.om" + v24 = ((u (*)())(v22))(v23); +#line 52 "parsepeg.om" +b16: if (!(v_ok)) { goto b3; } +#line 54 "parsepeg.om" +b24: v28 = (u)my_choice; +#line 54 "parsepeg.om" + v29 = v_c; #line 54 "parsepeg.om" -b3: if (!(v_ok)) { goto b21; } + v30 = ((u (*)())(v28))(v29); #line 55 "parsepeg.om" -b22: v22 = (u)my_choice; +b26: v31 = (u)my_choice; #line 55 "parsepeg.om" - v23 = v_c; + v32 = v_c; #line 55 "parsepeg.om" - v24 = ((u (*)())(v22))(v23); + v33 = ((u (*)())(v31))(v32); #line 56 "parsepeg.om" -b24: v25 = (u)my_any; +b27: v34 = (u)my_peg_PEG_rule; #line 56 "parsepeg.om" - v26 = v_c; + v35 = v_c; #line 56 "parsepeg.om" - v27 = ((u (*)())(v25))(v26); + v36 = ((u (*)())(v34))(v35); #line 56 "parsepeg.om" -b25: v_ok = v27; -#line 57 "parsepeg.om" - if (!(v_ok)) { goto b28; } +b28: v_ok = v36; #line 57 "parsepeg.om" -b27: v28 = (u)my_fail; + if (!(v_ok)) { goto b33; } #line 57 "parsepeg.om" - v29 = v_c; -#line 57 "parsepeg.om" - v30 = ((u (*)())(v28))(v29); +b32: v37 = 0UL; #line 57 "parsepeg.om" -b29: v31 = (u)my_fail; + goto b34; #line 57 "parsepeg.om" - v32 = v_c; +b34: if (!(v37)) { goto b29; } #line 57 "parsepeg.om" - v33 = ((u (*)())(v31))(v32); +b30: v38 = (u)my_choice; #line 57 "parsepeg.om" -b30: v_ok = 0UL; -#line 57 "parsepeg.om" - goto b21; -#line 59 "parsepeg.om" -b21: if (!(v_ok)) { goto b33; } -#line 59 "parsepeg.om" -b32: v34 = (u)my_leave; -#line 59 "parsepeg.om" - v35 = v_c; -#line 59 "parsepeg.om" - v36 = 0UL; -#line 59 "parsepeg.om" - v37 = ((u (*)())(v34))(v35, v36); -#line 60 "parsepeg.om" -b31: return v_ok; -#line 59 "parsepeg.om" -b33: v38 = (u)my_fail; -#line 59 "parsepeg.om" v39 = v_c; -#line 59 "parsepeg.om" +#line 57 "parsepeg.om" v40 = ((u (*)())(v38))(v39); -#line 59 "parsepeg.om" - goto b31; +#line 58 "parsepeg.om" +b35: v41 = (u)my_peg_PEG_prefix; +#line 58 "parsepeg.om" + v42 = v_c; +#line 58 "parsepeg.om" + v43 = ((u (*)())(v41))(v42); +#line 58 "parsepeg.om" +b36: v_ok = v43; +#line 58 "parsepeg.om" + goto b29; +#line 60 "parsepeg.om" +b29: if (!(v_ok)) { goto b39; } +#line 60 "parsepeg.om" +b38: v44 = (u)my_commit; +#line 60 "parsepeg.om" + v45 = v_c; +#line 60 "parsepeg.om" + v46 = ((u (*)())(v44))(v45); +#line 61 "parsepeg.om" +b37: if (!(v_ok)) { goto b46; } +#line 61 "parsepeg.om" +b45: v50 = 0UL; +#line 61 "parsepeg.om" + goto b47; +#line 61 "parsepeg.om" +b47: if (!(v50)) { goto b42; } +#line 61 "parsepeg.om" +b43: v_ok = 1UL; +#line 61 "parsepeg.om" + goto b3; +#line 66 "parsepeg.om" +b3: if (!(v_ok)) { goto b49; } +#line 67 "parsepeg.om" +b50: v54 = (u)my_choice; +#line 67 "parsepeg.om" + v55 = v_c; +#line 67 "parsepeg.om" + v56 = ((u (*)())(v54))(v55); +#line 68 "parsepeg.om" +b52: v57 = (u)my_any; +#line 68 "parsepeg.om" + v58 = v_c; +#line 68 "parsepeg.om" + v59 = ((u (*)())(v57))(v58); +#line 68 "parsepeg.om" +b53: v_ok = v59; +#line 69 "parsepeg.om" + if (!(v_ok)) { goto b56; } +#line 69 "parsepeg.om" +b55: v60 = (u)my_fail; +#line 69 "parsepeg.om" + v61 = v_c; +#line 69 "parsepeg.om" + v62 = ((u (*)())(v60))(v61); +#line 69 "parsepeg.om" +b57: v63 = (u)my_fail; +#line 69 "parsepeg.om" + v64 = v_c; +#line 69 "parsepeg.om" + v65 = ((u (*)())(v63))(v64); +#line 69 "parsepeg.om" +b58: v_ok = 0UL; +#line 69 "parsepeg.om" + goto b49; +#line 71 "parsepeg.om" +b49: if (!(v_ok)) { goto b61; } +#line 71 "parsepeg.om" +b60: v66 = (u)my_leave; +#line 71 "parsepeg.om" + v67 = v_c; +#line 71 "parsepeg.om" + v68 = 0UL; +#line 71 "parsepeg.om" + v69 = ((u (*)())(v66))(v67, v68); +#line 72 "parsepeg.om" +b59: return v_ok; +#line 71 "parsepeg.om" +b61: v70 = (u)my_fail; +#line 71 "parsepeg.om" + v71 = v_c; +#line 71 "parsepeg.om" + v72 = ((u (*)())(v70))(v71); +#line 71 "parsepeg.om" + goto b59; +#line 69 "parsepeg.om" +b56: v_ok = 1UL; +#line 69 "parsepeg.om" + goto b49; +#line 62 "parsepeg.om" +b42: v51 = (u)my_commit; +#line 62 "parsepeg.om" + v52 = v_c; +#line 62 "parsepeg.om" + v53 = ((u (*)())(v51))(v52); +#line 62 "parsepeg.om" + goto b24; +#line 61 "parsepeg.om" +b46: v50 = 1UL; +#line 61 "parsepeg.om" + goto b47; +#line 60 "parsepeg.om" +b39: v47 = (u)my_fail; +#line 60 "parsepeg.om" + v48 = v_c; +#line 60 "parsepeg.om" + v49 = ((u (*)())(v47))(v48); +#line 60 "parsepeg.om" + goto b37; #line 57 "parsepeg.om" -b28: v_ok = 1UL; +b33: v37 = 1UL; #line 57 "parsepeg.om" - goto b21; -#line 50 "parsepeg.om" -b14: v19 = (u)my_commit; -#line 50 "parsepeg.om" - v20 = v_c; -#line 50 "parsepeg.om" - v21 = ((u (*)())(v19))(v20); -#line 50 "parsepeg.om" - goto b10; -#line 49 "parsepeg.om" -b18: v18 = 1UL; -#line 49 "parsepeg.om" - goto b19; + goto b34; +#line 51 "parsepeg.om" +b18: v25 = (u)my_fail; +#line 51 "parsepeg.om" + v26 = v_c; +#line 51 "parsepeg.om" + v27 = ((u (*)())(v25))(v26); +#line 51 "parsepeg.om" + goto b16; +#line 48 "parsepeg.om" +b12: v15 = 1UL; +#line 48 "parsepeg.om" + goto b13; } u my_peg_PEG_identifier(u v_c) { u v_ok = 0; @@ -40593,85 +40715,85 @@ u my_peg_PEG_identifier(u v_c) { u v25 = 0; u v26 = 0; u v27 = 0; -#line 296 "parsepeg.om" +#line 325 "parsepeg.om" b0: v2 = (u)my_enter; -#line 296 "parsepeg.om" +#line 325 "parsepeg.om" v3 = v_c; -#line 296 "parsepeg.om" - v4 = 13UL; -#line 296 "parsepeg.om" +#line 325 "parsepeg.om" + v4 = 14UL; +#line 325 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 297 "parsepeg.om" +#line 326 "parsepeg.om" b1: v6 = (u)my_charset; -#line 297 "parsepeg.om" +#line 326 "parsepeg.om" v7 = v_c; -#line 297 "parsepeg.om" +#line 326 "parsepeg.om" v8 = (u)"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"; -#line 297 "parsepeg.om" +#line 326 "parsepeg.om" v9 = ((u (*)())(v6))(v7, v8); -#line 297 "parsepeg.om" +#line 326 "parsepeg.om" b2: v_ok = v9; -#line 298 "parsepeg.om" +#line 327 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 300 "parsepeg.om" +#line 329 "parsepeg.om" b6: v10 = (u)my_choice; -#line 300 "parsepeg.om" +#line 329 "parsepeg.om" v11 = v_c; -#line 300 "parsepeg.om" +#line 329 "parsepeg.om" v12 = ((u (*)())(v10))(v11); -#line 301 "parsepeg.om" +#line 330 "parsepeg.om" b8: v13 = (u)my_charset; -#line 301 "parsepeg.om" +#line 330 "parsepeg.om" v14 = v_c; -#line 301 "parsepeg.om" +#line 330 "parsepeg.om" v15 = (u)"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"; -#line 301 "parsepeg.om" +#line 330 "parsepeg.om" v16 = ((u (*)())(v13))(v14, v15); -#line 301 "parsepeg.om" +#line 330 "parsepeg.om" b9: v_ok = v16; -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" if (!(v_ok)) { goto b14; } -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" b13: v17 = 0UL; -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" goto b15; -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" b15: if (!(v17)) { goto b10; } -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" b11: v_ok = 1UL; -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" goto b3; -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" b3: if (!(v_ok)) { goto b19; } -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" b18: v21 = (u)my_leave; -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" v22 = v_c; -#line 306 "parsepeg.om" - v23 = 13UL; -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" + v23 = 14UL; +#line 335 "parsepeg.om" v24 = ((u (*)())(v21))(v22, v23); -#line 307 "parsepeg.om" +#line 336 "parsepeg.om" b17: return v_ok; -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" b19: v25 = (u)my_fail; -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" v26 = v_c; -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" v27 = ((u (*)())(v25))(v26); -#line 306 "parsepeg.om" +#line 335 "parsepeg.om" goto b17; -#line 303 "parsepeg.om" +#line 332 "parsepeg.om" b10: v18 = (u)my_commit; -#line 303 "parsepeg.om" +#line 332 "parsepeg.om" v19 = v_c; -#line 303 "parsepeg.om" +#line 332 "parsepeg.om" v20 = ((u (*)())(v18))(v19); -#line 303 "parsepeg.om" +#line 332 "parsepeg.om" goto b6; -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" b14: v17 = 1UL; -#line 302 "parsepeg.om" +#line 331 "parsepeg.om" goto b15; } u my_peg_PEG_literal(u v_c) { @@ -40718,139 +40840,139 @@ u my_peg_PEG_literal(u v_c) { u v41 = 0; u v42 = 0; u v43 = 0; -#line 221 "parsepeg.om" +#line 250 "parsepeg.om" b0: v2 = (u)my_enter; -#line 221 "parsepeg.om" +#line 250 "parsepeg.om" v3 = v_c; -#line 221 "parsepeg.om" - v4 = 10UL; -#line 221 "parsepeg.om" +#line 250 "parsepeg.om" + v4 = 11UL; +#line 250 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 222 "parsepeg.om" +#line 251 "parsepeg.om" b1: v6 = (u)my_literal; -#line 222 "parsepeg.om" +#line 251 "parsepeg.om" v7 = v_c; -#line 222 "parsepeg.om" +#line 251 "parsepeg.om" v8 = (u)"'"; -#line 222 "parsepeg.om" +#line 251 "parsepeg.om" v9 = ((u (*)())(v6))(v7, v8); -#line 222 "parsepeg.om" +#line 251 "parsepeg.om" b2: v_ok = v9; -#line 223 "parsepeg.om" +#line 252 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 225 "parsepeg.om" +#line 254 "parsepeg.om" b6: v10 = (u)my_choice; -#line 225 "parsepeg.om" +#line 254 "parsepeg.om" v11 = v_c; -#line 225 "parsepeg.om" +#line 254 "parsepeg.om" v12 = ((u (*)())(v10))(v11); -#line 226 "parsepeg.om" +#line 255 "parsepeg.om" b8: v13 = (u)my_choice; -#line 226 "parsepeg.om" +#line 255 "parsepeg.om" v14 = v_c; -#line 226 "parsepeg.om" +#line 255 "parsepeg.om" v15 = ((u (*)())(v13))(v14); -#line 227 "parsepeg.om" +#line 256 "parsepeg.om" b9: v16 = (u)my_literal; -#line 227 "parsepeg.om" +#line 256 "parsepeg.om" v17 = v_c; -#line 227 "parsepeg.om" +#line 256 "parsepeg.om" v18 = (u)"'"; -#line 227 "parsepeg.om" +#line 256 "parsepeg.om" v19 = ((u (*)())(v16))(v17, v18); -#line 227 "parsepeg.om" +#line 256 "parsepeg.om" b10: v_ok = v19; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" if (!(v_ok)) { goto b13; } -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" b12: v20 = (u)my_fail; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" v21 = v_c; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" v22 = ((u (*)())(v20))(v21); -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" b14: v23 = (u)my_fail; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" v24 = v_c; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" v25 = ((u (*)())(v23))(v24); -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" b15: v_ok = 0UL; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" goto b11; -#line 229 "parsepeg.om" +#line 258 "parsepeg.om" b11: if (!(v_ok)) { goto b16; } -#line 230 "parsepeg.om" +#line 259 "parsepeg.om" b17: v26 = (u)my_any; -#line 230 "parsepeg.om" +#line 259 "parsepeg.om" v27 = v_c; -#line 230 "parsepeg.om" +#line 259 "parsepeg.om" v28 = ((u (*)())(v26))(v27); -#line 230 "parsepeg.om" +#line 259 "parsepeg.om" b19: v_ok = v28; -#line 230 "parsepeg.om" +#line 259 "parsepeg.om" goto b16; -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" b16: if (!(v_ok)) { goto b24; } -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" b23: v29 = 0UL; -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" goto b25; -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" b25: if (!(v29)) { goto b20; } -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" b21: v_ok = 1UL; -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" goto b3; -#line 236 "parsepeg.om" +#line 265 "parsepeg.om" b3: if (!(v_ok)) { goto b27; } -#line 237 "parsepeg.om" +#line 266 "parsepeg.om" b28: v33 = (u)my_literal; -#line 237 "parsepeg.om" +#line 266 "parsepeg.om" v34 = v_c; -#line 237 "parsepeg.om" +#line 266 "parsepeg.om" v35 = (u)"'"; -#line 237 "parsepeg.om" +#line 266 "parsepeg.om" v36 = ((u (*)())(v33))(v34, v35); -#line 237 "parsepeg.om" +#line 266 "parsepeg.om" b30: v_ok = v36; -#line 237 "parsepeg.om" +#line 266 "parsepeg.om" goto b27; -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" b27: if (!(v_ok)) { goto b33; } -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" b32: v37 = (u)my_leave; -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" v38 = v_c; -#line 239 "parsepeg.om" - v39 = 10UL; -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" + v39 = 11UL; +#line 268 "parsepeg.om" v40 = ((u (*)())(v37))(v38, v39); -#line 240 "parsepeg.om" +#line 269 "parsepeg.om" b31: return v_ok; -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" b33: v41 = (u)my_fail; -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" v42 = v_c; -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" v43 = ((u (*)())(v41))(v42); -#line 239 "parsepeg.om" +#line 268 "parsepeg.om" goto b31; -#line 233 "parsepeg.om" +#line 262 "parsepeg.om" b20: v30 = (u)my_commit; -#line 233 "parsepeg.om" +#line 262 "parsepeg.om" v31 = v_c; -#line 233 "parsepeg.om" +#line 262 "parsepeg.om" v32 = ((u (*)())(v30))(v31); -#line 233 "parsepeg.om" +#line 262 "parsepeg.om" goto b6; -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" b24: v29 = 1UL; -#line 232 "parsepeg.om" +#line 261 "parsepeg.om" goto b25; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" b13: v_ok = 1UL; -#line 228 "parsepeg.om" +#line 257 "parsepeg.om" goto b11; } u my_peg_PEG_lookahead(u v_c) { @@ -40881,83 +41003,83 @@ u my_peg_PEG_lookahead(u v_c) { u v25 = 0; u v26 = 0; u v27 = 0; -#line 136 "parsepeg.om" +#line 165 "parsepeg.om" b0: v2 = (u)my_enter; -#line 136 "parsepeg.om" +#line 165 "parsepeg.om" v3 = v_c; -#line 136 "parsepeg.om" - v4 = 5UL; -#line 136 "parsepeg.om" +#line 165 "parsepeg.om" + v4 = 6UL; +#line 165 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 137 "parsepeg.om" +#line 166 "parsepeg.om" b1: v6 = (u)my_choice; -#line 137 "parsepeg.om" +#line 166 "parsepeg.om" v7 = v_c; -#line 137 "parsepeg.om" +#line 166 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 138 "parsepeg.om" +#line 167 "parsepeg.om" b2: v9 = (u)my_peg_PEG_lookop; -#line 138 "parsepeg.om" +#line 167 "parsepeg.om" v10 = v_c; -#line 138 "parsepeg.om" +#line 167 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 138 "parsepeg.om" +#line 167 "parsepeg.om" b3: v_ok = v11; -#line 139 "parsepeg.om" +#line 168 "parsepeg.om" if (!(v_ok)) { goto b4; } -#line 140 "parsepeg.om" +#line 169 "parsepeg.om" b5: v12 = (u)my_peg_PEG_sp; -#line 140 "parsepeg.om" +#line 169 "parsepeg.om" v13 = v_c; -#line 140 "parsepeg.om" +#line 169 "parsepeg.om" v14 = ((u (*)())(v12))(v13); -#line 140 "parsepeg.om" +#line 169 "parsepeg.om" b7: v_ok = v14; -#line 140 "parsepeg.om" +#line 169 "parsepeg.om" goto b4; -#line 142 "parsepeg.om" +#line 171 "parsepeg.om" b4: if (!(v_ok)) { goto b10; } -#line 142 "parsepeg.om" +#line 171 "parsepeg.om" b9: v15 = (u)my_commit; -#line 142 "parsepeg.om" +#line 171 "parsepeg.om" v16 = v_c; -#line 142 "parsepeg.om" +#line 171 "parsepeg.om" v17 = ((u (*)())(v15))(v16); -#line 143 "parsepeg.om" +#line 172 "parsepeg.om" b8: if (!(v_ok)) { goto b12; } -#line 144 "parsepeg.om" +#line 173 "parsepeg.om" b13: v18 = (u)my_peg_PEG_suffix; -#line 144 "parsepeg.om" +#line 173 "parsepeg.om" v19 = v_c; -#line 144 "parsepeg.om" +#line 173 "parsepeg.om" v20 = ((u (*)())(v18))(v19); -#line 144 "parsepeg.om" +#line 173 "parsepeg.om" b15: v_ok = v20; -#line 144 "parsepeg.om" +#line 173 "parsepeg.om" goto b12; -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" b12: if (!(v_ok)) { goto b18; } -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" b17: v21 = (u)my_leave; -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" v22 = v_c; -#line 146 "parsepeg.om" - v23 = 5UL; -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" + v23 = 6UL; +#line 175 "parsepeg.om" v24 = ((u (*)())(v21))(v22, v23); -#line 147 "parsepeg.om" +#line 176 "parsepeg.om" b16: return v_ok; -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" b18: v25 = (u)my_fail; -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" v26 = v_c; -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" v27 = ((u (*)())(v25))(v26); -#line 146 "parsepeg.om" +#line 175 "parsepeg.om" goto b16; -#line 142 "parsepeg.om" +#line 171 "parsepeg.om" b10: v_ok = 1UL; -#line 142 "parsepeg.om" +#line 171 "parsepeg.om" goto b8; } u my_peg_PEG_lookop(u v_c) { @@ -40977,43 +41099,43 @@ u my_peg_PEG_lookop(u v_c) { u v14 = 0; u v15 = 0; u v16 = 0; -#line 128 "parsepeg.om" +#line 157 "parsepeg.om" b0: v2 = (u)my_enter; -#line 128 "parsepeg.om" +#line 157 "parsepeg.om" v3 = v_c; -#line 128 "parsepeg.om" - v4 = 4UL; -#line 128 "parsepeg.om" +#line 157 "parsepeg.om" + v4 = 5UL; +#line 157 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 129 "parsepeg.om" +#line 158 "parsepeg.om" b1: v6 = (u)my_charset; -#line 129 "parsepeg.om" +#line 158 "parsepeg.om" v7 = v_c; -#line 129 "parsepeg.om" +#line 158 "parsepeg.om" v8 = (u)"!&"; -#line 129 "parsepeg.om" +#line 158 "parsepeg.om" v9 = ((u (*)())(v6))(v7, v8); -#line 129 "parsepeg.om" +#line 158 "parsepeg.om" b2: v_ok = v9; -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" if (!(v_ok)) { goto b5; } -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" b4: v10 = (u)my_leave; -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" v11 = v_c; -#line 130 "parsepeg.om" - v12 = 4UL; -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" + v12 = 5UL; +#line 159 "parsepeg.om" v13 = ((u (*)())(v10))(v11, v12); -#line 131 "parsepeg.om" +#line 160 "parsepeg.om" b3: return v_ok; -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" b5: v14 = (u)my_fail; -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" v15 = v_c; -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" v16 = ((u (*)())(v14))(v15); -#line 130 "parsepeg.om" +#line 159 "parsepeg.om" goto b3; } u my_peg_PEG_pattern(u v_c) { @@ -41062,149 +41184,250 @@ u my_peg_PEG_pattern(u v_c) { u v43 = 0; u v44 = 0; u v45 = 0; -#line 85 "parsepeg.om" +#line 114 "parsepeg.om" b0: v2 = (u)my_enter; -#line 85 "parsepeg.om" +#line 114 "parsepeg.om" v3 = v_c; -#line 85 "parsepeg.om" - v4 = 2UL; -#line 85 "parsepeg.om" +#line 114 "parsepeg.om" + v4 = 3UL; +#line 114 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 86 "parsepeg.om" +#line 115 "parsepeg.om" b1: v6 = (u)my_peg_PEG_alternative; -#line 86 "parsepeg.om" +#line 115 "parsepeg.om" v7 = v_c; -#line 86 "parsepeg.om" +#line 115 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 86 "parsepeg.om" +#line 115 "parsepeg.om" b2: v_ok = v8; -#line 87 "parsepeg.om" +#line 116 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 89 "parsepeg.om" +#line 118 "parsepeg.om" b6: v9 = (u)my_choice; -#line 89 "parsepeg.om" +#line 118 "parsepeg.om" v10 = v_c; -#line 89 "parsepeg.om" +#line 118 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 90 "parsepeg.om" +#line 119 "parsepeg.om" b8: v12 = (u)my_literal; -#line 90 "parsepeg.om" +#line 119 "parsepeg.om" v13 = v_c; -#line 90 "parsepeg.om" +#line 119 "parsepeg.om" v14 = (u)"/"; -#line 90 "parsepeg.om" +#line 119 "parsepeg.om" v15 = ((u (*)())(v12))(v13, v14); -#line 90 "parsepeg.om" +#line 119 "parsepeg.om" b9: v_ok = v15; -#line 91 "parsepeg.om" +#line 120 "parsepeg.om" if (!(v_ok)) { goto b10; } -#line 92 "parsepeg.om" +#line 121 "parsepeg.om" b11: v16 = (u)my_choice; -#line 92 "parsepeg.om" +#line 121 "parsepeg.om" v17 = v_c; -#line 92 "parsepeg.om" +#line 121 "parsepeg.om" v18 = ((u (*)())(v16))(v17); -#line 93 "parsepeg.om" +#line 122 "parsepeg.om" b13: v19 = (u)my_literal; -#line 93 "parsepeg.om" +#line 122 "parsepeg.om" v20 = v_c; -#line 93 "parsepeg.om" +#line 122 "parsepeg.om" v21 = (u)"/"; -#line 93 "parsepeg.om" +#line 122 "parsepeg.om" v22 = ((u (*)())(v19))(v20, v21); -#line 93 "parsepeg.om" +#line 122 "parsepeg.om" b14: v_ok = v22; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" if (!(v_ok)) { goto b17; } -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" b16: v23 = (u)my_fail; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" v24 = v_c; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" v25 = ((u (*)())(v23))(v24); -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" b18: v26 = (u)my_fail; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" v27 = v_c; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" v28 = ((u (*)())(v26))(v27); -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" b19: v_ok = 0UL; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" goto b10; -#line 96 "parsepeg.om" +#line 125 "parsepeg.om" b10: if (!(v_ok)) { goto b20; } -#line 97 "parsepeg.om" +#line 126 "parsepeg.om" b21: v29 = (u)my_peg_PEG_sp; -#line 97 "parsepeg.om" +#line 126 "parsepeg.om" v30 = v_c; -#line 97 "parsepeg.om" +#line 126 "parsepeg.om" v31 = ((u (*)())(v29))(v30); -#line 97 "parsepeg.om" +#line 126 "parsepeg.om" b23: v_ok = v31; -#line 97 "parsepeg.om" +#line 126 "parsepeg.om" goto b20; -#line 99 "parsepeg.om" +#line 128 "parsepeg.om" b20: if (!(v_ok)) { goto b24; } -#line 100 "parsepeg.om" +#line 129 "parsepeg.om" b25: v32 = (u)my_peg_PEG_alternative; -#line 100 "parsepeg.om" +#line 129 "parsepeg.om" v33 = v_c; -#line 100 "parsepeg.om" +#line 129 "parsepeg.om" v34 = ((u (*)())(v32))(v33); -#line 100 "parsepeg.om" +#line 129 "parsepeg.om" b27: v_ok = v34; -#line 100 "parsepeg.om" +#line 129 "parsepeg.om" goto b24; -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" b24: if (!(v_ok)) { goto b32; } -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" b31: v35 = 0UL; -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" goto b33; -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" b33: if (!(v35)) { goto b28; } -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" b29: v_ok = 1UL; -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" goto b3; -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" b3: if (!(v_ok)) { goto b37; } -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" b36: v39 = (u)my_leave; -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" v40 = v_c; -#line 106 "parsepeg.om" - v41 = 2UL; -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" + v41 = 3UL; +#line 135 "parsepeg.om" v42 = ((u (*)())(v39))(v40, v41); -#line 107 "parsepeg.om" +#line 136 "parsepeg.om" b35: return v_ok; -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" b37: v43 = (u)my_fail; -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" v44 = v_c; -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" v45 = ((u (*)())(v43))(v44); -#line 106 "parsepeg.om" +#line 135 "parsepeg.om" goto b35; -#line 103 "parsepeg.om" +#line 132 "parsepeg.om" b28: v36 = (u)my_commit; -#line 103 "parsepeg.om" +#line 132 "parsepeg.om" v37 = v_c; -#line 103 "parsepeg.om" +#line 132 "parsepeg.om" v38 = ((u (*)())(v36))(v37); -#line 103 "parsepeg.om" +#line 132 "parsepeg.om" goto b6; -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" b32: v35 = 1UL; -#line 102 "parsepeg.om" +#line 131 "parsepeg.om" goto b33; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" b17: v_ok = 1UL; -#line 94 "parsepeg.om" +#line 123 "parsepeg.om" goto b10; } +u my_peg_PEG_prefix(u v_c) { + u v_ok = 0; + u v2 = 0; + u v3 = 0; + u v4 = 0; + u v5 = 0; + u v6 = 0; + u v7 = 0; + u v8 = 0; + u v9 = 0; + u v10 = 0; + u v11 = 0; + u v12 = 0; + u v13 = 0; + u v14 = 0; + u v15 = 0; + u v16 = 0; + u v17 = 0; + u v18 = 0; + u v19 = 0; + u v20 = 0; + u v21 = 0; + u v22 = 0; + u v23 = 0; + u v24 = 0; + u v25 = 0; +#line 97 "parsepeg.om" +b0: v2 = (u)my_enter; +#line 97 "parsepeg.om" + v3 = v_c; +#line 97 "parsepeg.om" + v4 = 2UL; +#line 97 "parsepeg.om" + v5 = ((u (*)())(v2))(v3, v4); +#line 98 "parsepeg.om" +b1: v6 = (u)my_literal; +#line 98 "parsepeg.om" + v7 = v_c; +#line 98 "parsepeg.om" + v8 = (u)"%prefix"; +#line 98 "parsepeg.om" + v9 = ((u (*)())(v6))(v7, v8); +#line 98 "parsepeg.om" +b2: v_ok = v9; +#line 99 "parsepeg.om" + if (!(v_ok)) { goto b3; } +#line 100 "parsepeg.om" +b4: v10 = (u)my_peg_PEG_sp; +#line 100 "parsepeg.om" + v11 = v_c; +#line 100 "parsepeg.om" + v12 = ((u (*)())(v10))(v11); +#line 100 "parsepeg.om" +b6: v_ok = v12; +#line 100 "parsepeg.om" + goto b3; +#line 102 "parsepeg.om" +b3: if (!(v_ok)) { goto b7; } +#line 103 "parsepeg.om" +b8: v13 = (u)my_peg_PEG_identifier; +#line 103 "parsepeg.om" + v14 = v_c; +#line 103 "parsepeg.om" + v15 = ((u (*)())(v13))(v14); +#line 103 "parsepeg.om" +b10: v_ok = v15; +#line 103 "parsepeg.om" + goto b7; +#line 105 "parsepeg.om" +b7: if (!(v_ok)) { goto b11; } +#line 106 "parsepeg.om" +b12: v16 = (u)my_peg_PEG_sp; +#line 106 "parsepeg.om" + v17 = v_c; +#line 106 "parsepeg.om" + v18 = ((u (*)())(v16))(v17); +#line 106 "parsepeg.om" +b14: v_ok = v18; +#line 106 "parsepeg.om" + goto b11; +#line 108 "parsepeg.om" +b11: if (!(v_ok)) { goto b17; } +#line 108 "parsepeg.om" +b16: v19 = (u)my_leave; +#line 108 "parsepeg.om" + v20 = v_c; +#line 108 "parsepeg.om" + v21 = 2UL; +#line 108 "parsepeg.om" + v22 = ((u (*)())(v19))(v20, v21); +#line 109 "parsepeg.om" +b15: return v_ok; +#line 108 "parsepeg.om" +b17: v23 = (u)my_fail; +#line 108 "parsepeg.om" + v24 = v_c; +#line 108 "parsepeg.om" + v25 = ((u (*)())(v23))(v24); +#line 108 "parsepeg.om" + goto b15; +} u my_peg_PEG_primary(u v_c) { u v_ok = 0; u v2 = 0; @@ -41272,227 +41495,227 @@ u my_peg_PEG_primary(u v_c) { u v64 = 0; u v65 = 0; u v66 = 0; -#line 179 "parsepeg.om" +#line 208 "parsepeg.om" b0: v2 = (u)my_enter; -#line 179 "parsepeg.om" +#line 208 "parsepeg.om" v3 = v_c; -#line 179 "parsepeg.om" - v4 = 8UL; -#line 179 "parsepeg.om" +#line 208 "parsepeg.om" + v4 = 9UL; +#line 208 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 180 "parsepeg.om" +#line 209 "parsepeg.om" b1: v6 = (u)my_choice; -#line 180 "parsepeg.om" +#line 209 "parsepeg.om" v7 = v_c; -#line 180 "parsepeg.om" +#line 209 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 181 "parsepeg.om" +#line 210 "parsepeg.om" b2: v9 = (u)my_literal; -#line 181 "parsepeg.om" +#line 210 "parsepeg.om" v10 = v_c; -#line 181 "parsepeg.om" +#line 210 "parsepeg.om" v11 = (u)"("; -#line 181 "parsepeg.om" +#line 210 "parsepeg.om" v12 = ((u (*)())(v9))(v10, v11); -#line 181 "parsepeg.om" +#line 210 "parsepeg.om" b3: v_ok = v12; -#line 182 "parsepeg.om" +#line 211 "parsepeg.om" if (!(v_ok)) { goto b4; } -#line 183 "parsepeg.om" +#line 212 "parsepeg.om" b5: v13 = (u)my_peg_PEG_sp; -#line 183 "parsepeg.om" +#line 212 "parsepeg.om" v14 = v_c; -#line 183 "parsepeg.om" +#line 212 "parsepeg.om" v15 = ((u (*)())(v13))(v14); -#line 183 "parsepeg.om" +#line 212 "parsepeg.om" b7: v_ok = v15; -#line 183 "parsepeg.om" +#line 212 "parsepeg.om" goto b4; -#line 185 "parsepeg.om" +#line 214 "parsepeg.om" b4: if (!(v_ok)) { goto b8; } -#line 186 "parsepeg.om" +#line 215 "parsepeg.om" b9: v16 = (u)my_peg_PEG_pattern; -#line 186 "parsepeg.om" +#line 215 "parsepeg.om" v17 = v_c; -#line 186 "parsepeg.om" +#line 215 "parsepeg.om" v18 = ((u (*)())(v16))(v17); -#line 186 "parsepeg.om" +#line 215 "parsepeg.om" b11: v_ok = v18; -#line 186 "parsepeg.om" +#line 215 "parsepeg.om" goto b8; -#line 188 "parsepeg.om" +#line 217 "parsepeg.om" b8: if (!(v_ok)) { goto b12; } -#line 189 "parsepeg.om" +#line 218 "parsepeg.om" b13: v19 = (u)my_literal; -#line 189 "parsepeg.om" +#line 218 "parsepeg.om" v20 = v_c; -#line 189 "parsepeg.om" +#line 218 "parsepeg.om" v21 = (u)")"; -#line 189 "parsepeg.om" +#line 218 "parsepeg.om" v22 = ((u (*)())(v19))(v20, v21); -#line 189 "parsepeg.om" +#line 218 "parsepeg.om" b15: v_ok = v22; -#line 189 "parsepeg.om" +#line 218 "parsepeg.om" goto b12; -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" b12: if (!(v_ok)) { goto b20; } -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" b19: v23 = 0UL; -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" goto b21; -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" b21: if (!(v23)) { goto b16; } -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" b17: v24 = (u)my_choice; -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" v25 = v_c; -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" v26 = ((u (*)())(v24))(v25); -#line 192 "parsepeg.om" +#line 221 "parsepeg.om" b22: v27 = (u)my_peg_PEG_any; -#line 192 "parsepeg.om" +#line 221 "parsepeg.om" v28 = v_c; -#line 192 "parsepeg.om" +#line 221 "parsepeg.om" v29 = ((u (*)())(v27))(v28); -#line 192 "parsepeg.om" +#line 221 "parsepeg.om" b23: v_ok = v29; -#line 192 "parsepeg.om" +#line 221 "parsepeg.om" goto b16; -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" b16: if (!(v_ok)) { goto b28; } -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" b27: v30 = 0UL; -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" goto b29; -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" b29: if (!(v30)) { goto b24; } -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" b25: v31 = (u)my_choice; -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" v32 = v_c; -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" v33 = ((u (*)())(v31))(v32); -#line 195 "parsepeg.om" +#line 224 "parsepeg.om" b30: v34 = (u)my_peg_PEG_literal; -#line 195 "parsepeg.om" +#line 224 "parsepeg.om" v35 = v_c; -#line 195 "parsepeg.om" +#line 224 "parsepeg.om" v36 = ((u (*)())(v34))(v35); -#line 195 "parsepeg.om" +#line 224 "parsepeg.om" b31: v_ok = v36; -#line 195 "parsepeg.om" +#line 224 "parsepeg.om" goto b24; -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" b24: if (!(v_ok)) { goto b36; } -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" b35: v37 = 0UL; -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" goto b37; -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" b37: if (!(v37)) { goto b32; } -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" b33: v38 = (u)my_choice; -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" v39 = v_c; -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" v40 = ((u (*)())(v38))(v39); -#line 198 "parsepeg.om" +#line 227 "parsepeg.om" b38: v41 = (u)my_peg_PEG_class; -#line 198 "parsepeg.om" +#line 227 "parsepeg.om" v42 = v_c; -#line 198 "parsepeg.om" +#line 227 "parsepeg.om" v43 = ((u (*)())(v41))(v42); -#line 198 "parsepeg.om" +#line 227 "parsepeg.om" b39: v_ok = v43; -#line 198 "parsepeg.om" +#line 227 "parsepeg.om" goto b32; -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" b32: if (!(v_ok)) { goto b44; } -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" b43: v44 = 0UL; -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" goto b45; -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" b45: if (!(v44)) { goto b40; } -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" b41: v45 = (u)my_choice; -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" v46 = v_c; -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" v47 = ((u (*)())(v45))(v46); -#line 201 "parsepeg.om" +#line 230 "parsepeg.om" b46: v48 = (u)my_peg_PEG_call; -#line 201 "parsepeg.om" +#line 230 "parsepeg.om" v49 = v_c; -#line 201 "parsepeg.om" +#line 230 "parsepeg.om" v50 = ((u (*)())(v48))(v49); -#line 201 "parsepeg.om" +#line 230 "parsepeg.om" b47: v_ok = v50; -#line 201 "parsepeg.om" +#line 230 "parsepeg.om" goto b40; -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" b40: if (!(v_ok)) { goto b50; } -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" b49: v51 = (u)my_commit; -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" v52 = v_c; -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" v53 = ((u (*)())(v51))(v52); -#line 204 "parsepeg.om" +#line 233 "parsepeg.om" b48: if (!(v_ok)) { goto b53; } -#line 205 "parsepeg.om" +#line 234 "parsepeg.om" b54: v57 = (u)my_peg_PEG_sp; -#line 205 "parsepeg.om" +#line 234 "parsepeg.om" v58 = v_c; -#line 205 "parsepeg.om" +#line 234 "parsepeg.om" v59 = ((u (*)())(v57))(v58); -#line 205 "parsepeg.om" +#line 234 "parsepeg.om" b56: v_ok = v59; -#line 205 "parsepeg.om" +#line 234 "parsepeg.om" goto b53; -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" b53: if (!(v_ok)) { goto b59; } -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" b58: v60 = (u)my_leave; -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" v61 = v_c; -#line 207 "parsepeg.om" - v62 = 8UL; -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" + v62 = 9UL; +#line 236 "parsepeg.om" v63 = ((u (*)())(v60))(v61, v62); -#line 208 "parsepeg.om" +#line 237 "parsepeg.om" b57: return v_ok; -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" b59: v64 = (u)my_fail; -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" v65 = v_c; -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" v66 = ((u (*)())(v64))(v65); -#line 207 "parsepeg.om" +#line 236 "parsepeg.om" goto b57; -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" b50: v54 = (u)my_fail; -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" v55 = v_c; -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" v56 = ((u (*)())(v54))(v55); -#line 203 "parsepeg.om" +#line 232 "parsepeg.om" goto b48; -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" b44: v44 = 1UL; -#line 200 "parsepeg.om" +#line 229 "parsepeg.om" goto b45; -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" b36: v37 = 1UL; -#line 197 "parsepeg.om" +#line 226 "parsepeg.om" goto b37; -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" b28: v30 = 1UL; -#line 194 "parsepeg.om" +#line 223 "parsepeg.om" goto b29; -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" b20: v23 = 1UL; -#line 191 "parsepeg.om" +#line 220 "parsepeg.om" goto b21; } u my_peg_PEG_rule(u v_c) { @@ -41524,91 +41747,91 @@ u my_peg_PEG_rule(u v_c) { u v26 = 0; u v27 = 0; u v28 = 0; -#line 65 "parsepeg.om" +#line 77 "parsepeg.om" b0: v2 = (u)my_enter; -#line 65 "parsepeg.om" +#line 77 "parsepeg.om" v3 = v_c; -#line 65 "parsepeg.om" +#line 77 "parsepeg.om" v4 = 1UL; -#line 65 "parsepeg.om" +#line 77 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 66 "parsepeg.om" +#line 78 "parsepeg.om" b1: v6 = (u)my_peg_PEG_identifier; -#line 66 "parsepeg.om" +#line 78 "parsepeg.om" v7 = v_c; -#line 66 "parsepeg.om" +#line 78 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 66 "parsepeg.om" +#line 78 "parsepeg.om" b2: v_ok = v8; -#line 67 "parsepeg.om" +#line 79 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 68 "parsepeg.om" +#line 80 "parsepeg.om" b4: v9 = (u)my_peg_PEG_sp; -#line 68 "parsepeg.om" +#line 80 "parsepeg.om" v10 = v_c; -#line 68 "parsepeg.om" +#line 80 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 68 "parsepeg.om" +#line 80 "parsepeg.om" b6: v_ok = v11; -#line 68 "parsepeg.om" +#line 80 "parsepeg.om" goto b3; -#line 70 "parsepeg.om" +#line 82 "parsepeg.om" b3: if (!(v_ok)) { goto b7; } -#line 71 "parsepeg.om" +#line 83 "parsepeg.om" b8: v12 = (u)my_literal; -#line 71 "parsepeg.om" +#line 83 "parsepeg.om" v13 = v_c; -#line 71 "parsepeg.om" +#line 83 "parsepeg.om" v14 = (u)"<-"; -#line 71 "parsepeg.om" +#line 83 "parsepeg.om" v15 = ((u (*)())(v12))(v13, v14); -#line 71 "parsepeg.om" +#line 83 "parsepeg.om" b10: v_ok = v15; -#line 71 "parsepeg.om" +#line 83 "parsepeg.om" goto b7; -#line 73 "parsepeg.om" +#line 85 "parsepeg.om" b7: if (!(v_ok)) { goto b11; } -#line 74 "parsepeg.om" +#line 86 "parsepeg.om" b12: v16 = (u)my_peg_PEG_sp; -#line 74 "parsepeg.om" +#line 86 "parsepeg.om" v17 = v_c; -#line 74 "parsepeg.om" +#line 86 "parsepeg.om" v18 = ((u (*)())(v16))(v17); -#line 74 "parsepeg.om" +#line 86 "parsepeg.om" b14: v_ok = v18; -#line 74 "parsepeg.om" +#line 86 "parsepeg.om" goto b11; -#line 76 "parsepeg.om" +#line 88 "parsepeg.om" b11: if (!(v_ok)) { goto b15; } -#line 77 "parsepeg.om" +#line 89 "parsepeg.om" b16: v19 = (u)my_peg_PEG_pattern; -#line 77 "parsepeg.om" +#line 89 "parsepeg.om" v20 = v_c; -#line 77 "parsepeg.om" +#line 89 "parsepeg.om" v21 = ((u (*)())(v19))(v20); -#line 77 "parsepeg.om" +#line 89 "parsepeg.om" b18: v_ok = v21; -#line 77 "parsepeg.om" +#line 89 "parsepeg.om" goto b15; -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" b15: if (!(v_ok)) { goto b21; } -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" b20: v22 = (u)my_leave; -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" v23 = v_c; -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" v24 = 1UL; -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" v25 = ((u (*)())(v22))(v23, v24); -#line 80 "parsepeg.om" +#line 92 "parsepeg.om" b19: return v_ok; -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" b21: v26 = (u)my_fail; -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" v27 = v_c; -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" v28 = ((u (*)())(v26))(v27); -#line 79 "parsepeg.om" +#line 91 "parsepeg.om" goto b19; } u my_peg_PEG_sp(u v_c) { @@ -41675,205 +41898,205 @@ u my_peg_PEG_sp(u v_c) { u v61 = 0; u v62 = 0; u v63 = 0; -#line 312 "parsepeg.om" +#line 341 "parsepeg.om" b0: v2 = (u)my_enter; -#line 312 "parsepeg.om" +#line 341 "parsepeg.om" v3 = v_c; -#line 312 "parsepeg.om" - v4 = 14UL; -#line 312 "parsepeg.om" +#line 341 "parsepeg.om" + v4 = 15UL; +#line 341 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 314 "parsepeg.om" +#line 343 "parsepeg.om" b2: v6 = (u)my_choice; -#line 314 "parsepeg.om" +#line 343 "parsepeg.om" v7 = v_c; -#line 314 "parsepeg.om" +#line 343 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 315 "parsepeg.om" +#line 344 "parsepeg.om" b4: v9 = (u)my_choice; -#line 315 "parsepeg.om" +#line 344 "parsepeg.om" v10 = v_c; -#line 315 "parsepeg.om" +#line 344 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 316 "parsepeg.om" +#line 345 "parsepeg.om" b5: v12 = (u)my_charset; -#line 316 "parsepeg.om" +#line 345 "parsepeg.om" v13 = v_c; -#line 316 "parsepeg.om" +#line 345 "parsepeg.om" v14 = (u)"\011\012\015 "; -#line 316 "parsepeg.om" +#line 345 "parsepeg.om" v15 = ((u (*)())(v12))(v13, v14); -#line 316 "parsepeg.om" +#line 345 "parsepeg.om" b6: v_ok = v15; -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" if (!(v_ok)) { goto b11; } -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" b10: v16 = 0UL; -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" goto b12; -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" b12: if (!(v16)) { goto b7; } -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" b8: v17 = (u)my_choice; -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" v18 = v_c; -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" v19 = ((u (*)())(v17))(v18); -#line 318 "parsepeg.om" +#line 347 "parsepeg.om" b13: v20 = (u)my_literal; -#line 318 "parsepeg.om" +#line 347 "parsepeg.om" v21 = v_c; -#line 318 "parsepeg.om" +#line 347 "parsepeg.om" v22 = (u)"//"; -#line 318 "parsepeg.om" +#line 347 "parsepeg.om" v23 = ((u (*)())(v20))(v21, v22); -#line 318 "parsepeg.om" +#line 347 "parsepeg.om" b14: v_ok = v23; -#line 319 "parsepeg.om" +#line 348 "parsepeg.om" if (!(v_ok)) { goto b7; } -#line 321 "parsepeg.om" +#line 350 "parsepeg.om" b18: v24 = (u)my_choice; -#line 321 "parsepeg.om" +#line 350 "parsepeg.om" v25 = v_c; -#line 321 "parsepeg.om" +#line 350 "parsepeg.om" v26 = ((u (*)())(v24))(v25); -#line 322 "parsepeg.om" +#line 351 "parsepeg.om" b20: v27 = (u)my_choice; -#line 322 "parsepeg.om" +#line 351 "parsepeg.om" v28 = v_c; -#line 322 "parsepeg.om" +#line 351 "parsepeg.om" v29 = ((u (*)())(v27))(v28); -#line 323 "parsepeg.om" +#line 352 "parsepeg.om" b21: v30 = (u)my_charset; -#line 323 "parsepeg.om" +#line 352 "parsepeg.om" v31 = v_c; -#line 323 "parsepeg.om" +#line 352 "parsepeg.om" v32 = (u)"\012\015"; -#line 323 "parsepeg.om" +#line 352 "parsepeg.om" v33 = ((u (*)())(v30))(v31, v32); -#line 323 "parsepeg.om" +#line 352 "parsepeg.om" b22: v_ok = v33; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" if (!(v_ok)) { goto b25; } -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" b24: v34 = (u)my_fail; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" v35 = v_c; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" v36 = ((u (*)())(v34))(v35); -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" b26: v37 = (u)my_fail; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" v38 = v_c; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" v39 = ((u (*)())(v37))(v38); -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" b27: v_ok = 0UL; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" goto b23; -#line 325 "parsepeg.om" +#line 354 "parsepeg.om" b23: if (!(v_ok)) { goto b28; } -#line 326 "parsepeg.om" +#line 355 "parsepeg.om" b29: v40 = (u)my_any; -#line 326 "parsepeg.om" +#line 355 "parsepeg.om" v41 = v_c; -#line 326 "parsepeg.om" +#line 355 "parsepeg.om" v42 = ((u (*)())(v40))(v41); -#line 326 "parsepeg.om" +#line 355 "parsepeg.om" b31: v_ok = v42; -#line 326 "parsepeg.om" +#line 355 "parsepeg.om" goto b28; -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" b28: if (!(v_ok)) { goto b36; } -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" b35: v43 = 0UL; -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" goto b37; -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" b37: if (!(v43)) { goto b32; } -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" b33: v_ok = 1UL; -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" goto b7; -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" b7: if (!(v_ok)) { goto b41; } -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" b40: v47 = (u)my_commit; -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" v48 = v_c; -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" v49 = ((u (*)())(v47))(v48); -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" b39: if (!(v_ok)) { goto b48; } -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" b47: v53 = 0UL; -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" goto b49; -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" b49: if (!(v53)) { goto b44; } -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" b45: v_ok = 1UL; -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" goto b3; -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" b3: if (!(v_ok)) { goto b53; } -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" b52: v57 = (u)my_leave; -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" v58 = v_c; -#line 337 "parsepeg.om" - v59 = 14UL; -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" + v59 = 15UL; +#line 366 "parsepeg.om" v60 = ((u (*)())(v57))(v58, v59); -#line 338 "parsepeg.om" +#line 367 "parsepeg.om" b51: return v_ok; -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" b53: v61 = (u)my_fail; -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" v62 = v_c; -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" v63 = ((u (*)())(v61))(v62); -#line 337 "parsepeg.om" +#line 366 "parsepeg.om" goto b51; -#line 335 "parsepeg.om" +#line 364 "parsepeg.om" b44: v54 = (u)my_commit; -#line 335 "parsepeg.om" +#line 364 "parsepeg.om" v55 = v_c; -#line 335 "parsepeg.om" +#line 364 "parsepeg.om" v56 = ((u (*)())(v54))(v55); -#line 335 "parsepeg.om" +#line 364 "parsepeg.om" goto b2; -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" b48: v53 = 1UL; -#line 334 "parsepeg.om" +#line 363 "parsepeg.om" goto b49; -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" b41: v50 = (u)my_fail; -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" v51 = v_c; -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" v52 = ((u (*)())(v50))(v51); -#line 333 "parsepeg.om" +#line 362 "parsepeg.om" goto b39; -#line 329 "parsepeg.om" +#line 358 "parsepeg.om" b32: v44 = (u)my_commit; -#line 329 "parsepeg.om" +#line 358 "parsepeg.om" v45 = v_c; -#line 329 "parsepeg.om" +#line 358 "parsepeg.om" v46 = ((u (*)())(v44))(v45); -#line 329 "parsepeg.om" +#line 358 "parsepeg.om" goto b18; -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" b36: v43 = 1UL; -#line 328 "parsepeg.om" +#line 357 "parsepeg.om" goto b37; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" b25: v_ok = 1UL; -#line 324 "parsepeg.om" +#line 353 "parsepeg.om" goto b23; -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" b11: v16 = 1UL; -#line 317 "parsepeg.om" +#line 346 "parsepeg.om" goto b12; } u my_peg_PEG_suffix(u v_c) { @@ -41905,93 +42128,93 @@ u my_peg_PEG_suffix(u v_c) { u v26 = 0; u v27 = 0; u v28 = 0; -#line 160 "parsepeg.om" +#line 189 "parsepeg.om" b0: v2 = (u)my_enter; -#line 160 "parsepeg.om" +#line 189 "parsepeg.om" v3 = v_c; -#line 160 "parsepeg.om" - v4 = 7UL; -#line 160 "parsepeg.om" +#line 189 "parsepeg.om" + v4 = 8UL; +#line 189 "parsepeg.om" v5 = ((u (*)())(v2))(v3, v4); -#line 161 "parsepeg.om" +#line 190 "parsepeg.om" b1: v6 = (u)my_peg_PEG_primary; -#line 161 "parsepeg.om" +#line 190 "parsepeg.om" v7 = v_c; -#line 161 "parsepeg.om" +#line 190 "parsepeg.om" v8 = ((u (*)())(v6))(v7); -#line 161 "parsepeg.om" +#line 190 "parsepeg.om" b2: v_ok = v8; -#line 162 "parsepeg.om" +#line 191 "parsepeg.om" if (!(v_ok)) { goto b3; } -#line 164 "parsepeg.om" +#line 193 "parsepeg.om" b6: v9 = (u)my_choice; -#line 164 "parsepeg.om" +#line 193 "parsepeg.om" v10 = v_c; -#line 164 "parsepeg.om" +#line 193 "parsepeg.om" v11 = ((u (*)())(v9))(v10); -#line 165 "parsepeg.om" +#line 194 "parsepeg.om" b8: v12 = (u)my_peg_PEG_countop; -#line 165 "parsepeg.om" +#line 194 "parsepeg.om" v13 = v_c; -#line 165 "parsepeg.om" +#line 194 "parsepeg.om" v14 = ((u (*)())(v12))(v13); -#line 165 "parsepeg.om" +#line 194 "parsepeg.om" b9: v_ok = v14; -#line 166 "parsepeg.om" +#line 195 "parsepeg.om" if (!(v_ok)) { goto b10; } -#line 167 "parsepeg.om" +#line 196 "parsepeg.om" b11: v15 = (u)my_peg_PEG_sp; -#line 167 "parsepeg.om" +#line 196 "parsepeg.om" v16 = v_c; -#line 167 "parsepeg.om" +#line 196 "parsepeg.om" v17 = ((u (*)())(v15))(v16); -#line 167 "parsepeg.om" +#line 196 "parsepeg.om" b13: v_ok = v17; -#line 167 "parsepeg.om" +#line 196 "parsepeg.om" goto b10; -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" b10: if (!(v_ok)) { goto b18; } -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" b17: v18 = 0UL; -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" goto b19; -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" b19: if (!(v18)) { goto b14; } -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" b15: v_ok = 1UL; -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" goto b3; -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" b3: if (!(v_ok)) { goto b23; } -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" b22: v22 = (u)my_leave; -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" v23 = v_c; -#line 173 "parsepeg.om" - v24 = 7UL; -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" + v24 = 8UL; +#line 202 "parsepeg.om" v25 = ((u (*)())(v22))(v23, v24); -#line 174 "parsepeg.om" +#line 203 "parsepeg.om" b21: return v_ok; -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" b23: v26 = (u)my_fail; -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" v27 = v_c; -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" v28 = ((u (*)())(v26))(v27); -#line 173 "parsepeg.om" +#line 202 "parsepeg.om" goto b21; -#line 170 "parsepeg.om" +#line 199 "parsepeg.om" b14: v19 = (u)my_commit; -#line 170 "parsepeg.om" +#line 199 "parsepeg.om" v20 = v_c; -#line 170 "parsepeg.om" +#line 199 "parsepeg.om" v21 = ((u (*)())(v19))(v20); -#line 170 "parsepeg.om" +#line 199 "parsepeg.om" goto b6; -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" b18: v18 = 1UL; -#line 169 "parsepeg.om" +#line 198 "parsepeg.om" goto b19; } u my_peg_P_add_expr(u v_c) { @@ -55668,113 +55891,113 @@ u my_peg_compile(u v_c, u v_filename, u v_err) { u v48 = 0; u v49 = 0; u v50 = 0; -#line 482 "peg.om" +#line 505 "peg.om" b0: v8 = (u)my_strcmp; -#line 482 "peg.om" +#line 505 "peg.om" v9 = v_filename; -#line 482 "peg.om" +#line 505 "peg.om" v10 = (u)"-"; -#line 482 "peg.om" +#line 505 "peg.om" v11 = ((u (*)())(v8))(v9, v10); -#line 482 "peg.om" +#line 505 "peg.om" b4: if (!((u)(((s)(v11)) == ((s)(0UL))))) { goto b3; } -#line 483 "peg.om" +#line 506 "peg.om" b2: v_fd = 0UL; -#line 483 "peg.om" +#line 506 "peg.om" goto b1; -#line 491 "peg.om" +#line 514 "peg.om" b1: v20 = (u)my_fopen; -#line 491 "peg.om" +#line 514 "peg.om" v21 = v_fd; -#line 491 "peg.om" +#line 514 "peg.om" v22 = *(u *)(v_c); -#line 491 "peg.om" +#line 514 "peg.om" v23 = ((u (*)())(v20))(v21, v22); -#line 491 "peg.om" +#line 514 "peg.om" b10: v_f = v23; -#line 492 "peg.om" +#line 515 "peg.om" v24 = (u)my_freadall; -#line 492 "peg.om" +#line 515 "peg.om" v25 = v_f; -#line 492 "peg.om" +#line 515 "peg.om" v26 = (u)&v_len; -#line 492 "peg.om" +#line 515 "peg.om" v27 = ((u (*)())(v24))(v25, v26); -#line 492 "peg.om" +#line 515 "peg.om" b11: v_src = v27; -#line 493 "peg.om" +#line 516 "peg.om" v28 = (u)my_fclose; -#line 493 "peg.om" +#line 516 "peg.om" v29 = v_f; -#line 493 "peg.om" +#line 516 "peg.om" v30 = ((u (*)())(v28))(v29); -#line 495 "peg.om" +#line 518 "peg.om" b12: v31 = (u)my_peg_new; -#line 495 "peg.om" +#line 518 "peg.om" v32 = v_filename; -#line 495 "peg.om" +#line 518 "peg.om" v33 = v_src; -#line 495 "peg.om" +#line 518 "peg.om" v34 = v_len; -#line 495 "peg.om" +#line 518 "peg.om" v35 = *(u *)(v_c); -#line 495 "peg.om" +#line 518 "peg.om" v36 = (u)my_peg_PEG_grammar; -#line 495 "peg.om" +#line 518 "peg.om" v37 = (u)my_PEG_tag_to_str; -#line 495 "peg.om" +#line 518 "peg.om" v38 = ((u (*)())(v31))(v32, v33, v34, v35, v36, v37); -#line 495 "peg.om" +#line 518 "peg.om" b13: *(u *)((v_c) + (8UL)) = v38; -#line 497 "peg.om" +#line 520 "peg.om" v39 = (u)my_peg_parse; -#line 497 "peg.om" +#line 520 "peg.om" v40 = *(u *)((v_c) + (8UL)); -#line 497 "peg.om" - v41 = 14UL; -#line 497 "peg.om" +#line 520 "peg.om" + v41 = 15UL; +#line 520 "peg.om" v42 = v_err; -#line 497 "peg.om" +#line 520 "peg.om" v43 = ((u (*)())(v39))(v40, v41, v42); -#line 497 "peg.om" +#line 520 "peg.om" b14: v_node = v43; -#line 498 "peg.om" +#line 521 "peg.om" v44 = (u)my_translate; -#line 498 "peg.om" +#line 521 "peg.om" v45 = v_c; -#line 498 "peg.om" +#line 521 "peg.om" v46 = v_node; -#line 498 "peg.om" +#line 521 "peg.om" v47 = ((u (*)())(v44))(v45, v46); -#line 500 "peg.om" +#line 523 "peg.om" b15: v48 = (u)my_fflush; -#line 500 "peg.om" +#line 523 "peg.om" v49 = *(u *)((v_c) + (16UL)); -#line 500 "peg.om" +#line 523 "peg.om" v50 = ((u (*)())(v48))(v49); -#line 475 "peg.om" +#line 498 "peg.om" b16: return 0UL; -#line 485 "peg.om" +#line 508 "peg.om" b3: v12 = (u)my_open; -#line 485 "peg.om" +#line 508 "peg.om" v13 = v_filename; -#line 485 "peg.om" +#line 508 "peg.om" v14 = 0UL; -#line 485 "peg.om" +#line 508 "peg.om" v15 = 0UL; -#line 485 "peg.om" +#line 508 "peg.om" v16 = ((u (*)())(v12))(v13, v14, v15); -#line 485 "peg.om" +#line 508 "peg.om" b5: v_fd = v16; -#line 486 "peg.om" +#line 509 "peg.om" if (!((u)(((s)(v_fd)) < ((s)(0UL))))) { goto b1; } -#line 487 "peg.om" +#line 510 "peg.om" b7: v17 = (u)my_die; -#line 487 "peg.om" +#line 510 "peg.om" v18 = (u)"failed to open output"; -#line 487 "peg.om" +#line 510 "peg.om" v19 = ((u (*)())(v17))(v18); -#line 487 "peg.om" +#line 510 "peg.om" goto b1; } u my_peg_new(u v_filename, u v_src, u v_len, u v_a, u v_grammar, u v_tag_to_str) { @@ -55890,45 +56113,45 @@ u my_peg_open_output(u v_c, u v_filename) { u v16 = 0; u v17 = 0; u v18 = 0; -#line 464 "peg.om" +#line 487 "peg.om" b0: v4 = (u)my_unlink; -#line 464 "peg.om" +#line 487 "peg.om" v5 = v_filename; -#line 464 "peg.om" +#line 487 "peg.om" v6 = ((u (*)())(v4))(v5); -#line 466 "peg.om" +#line 489 "peg.om" b1: v7 = (u)my_open; -#line 466 "peg.om" +#line 489 "peg.om" v8 = v_filename; -#line 466 "peg.om" +#line 489 "peg.om" v9 = 65UL; -#line 466 "peg.om" +#line 489 "peg.om" v10 = 438UL; -#line 466 "peg.om" +#line 489 "peg.om" v11 = ((u (*)())(v7))(v8, v9, v10); -#line 466 "peg.om" +#line 489 "peg.om" b2: v_fd = v11; -#line 467 "peg.om" +#line 490 "peg.om" if (!((u)(((s)(v_fd)) < ((s)(0UL))))) { goto b3; } -#line 468 "peg.om" +#line 491 "peg.om" b4: v12 = (u)my_die; -#line 468 "peg.om" +#line 491 "peg.om" v13 = (u)"failed to open output"; -#line 468 "peg.om" +#line 491 "peg.om" v14 = ((u (*)())(v12))(v13); -#line 471 "peg.om" +#line 494 "peg.om" b3: v15 = (u)my_fopen; -#line 471 "peg.om" +#line 494 "peg.om" v16 = v_fd; -#line 471 "peg.om" +#line 494 "peg.om" v17 = *(u *)(v_c); -#line 471 "peg.om" +#line 494 "peg.om" v18 = ((u (*)())(v15))(v16, v17); -#line 471 "peg.om" +#line 494 "peg.om" b7: v_f = v18; -#line 472 "peg.om" +#line 495 "peg.om" *(u *)((v_c) + (16UL)) = v_f; -#line 460 "peg.om" +#line 483 "peg.om" return 0UL; } u my_peg_parse(u v_c, u v_sp, u v_err) { @@ -61318,6 +61541,44 @@ b5: v4 = 0UL; #line 319 "as.om" goto b7; } +u my_setprefix(u v_c, u v_s, u v_n) { + u v_p = 0; + u v4 = 0; + u v5 = 0; + u v6 = 0; + u v7 = 0; + u v8 = 0; + u v9 = 0; + u v10 = 0; + u v11 = 0; + u v12 = 0; +#line 377 "peg.om" +b0: v4 = (u)my_alloc; +#line 377 "peg.om" + v5 = *(u *)(v_c); +#line 377 "peg.om" + v6 = (v_n) + (1UL); +#line 377 "peg.om" + v7 = ((u (*)())(v4))(v5, v6); +#line 377 "peg.om" +b1: v_p = v7; +#line 378 "peg.om" + v8 = (u)my_memcpy; +#line 378 "peg.om" + v9 = v_p; +#line 378 "peg.om" + v10 = v_s; +#line 378 "peg.om" + v11 = v_n; +#line 378 "peg.om" + v12 = ((u (*)())(v8))(v9, v10, v11); +#line 379 "peg.om" +b2: *(b *)((v_p) + (v_n)) = 0UL; +#line 381 "peg.om" + *(u *)((v_c) + (32UL)) = v_p; +#line 374 "peg.om" + return 0UL; +} u my_setup_alloc(u v_c) { #line 12 "alloc.om" b0: *(u *)(v_c) = 0UL; @@ -61436,8 +61697,9 @@ b2: *(u *)((v_c) + (8UL)) = v13; #line 15 "parse2.om" return v_c; } -u my_setup_peg(u v_a, u v_prefix) { +u my_setup_peg(u v_a) { u v_c = 0; + u v2 = 0; u v3 = 0; u v4 = 0; u v5 = 0; @@ -61445,32 +61707,31 @@ u my_setup_peg(u v_a, u v_prefix) { u v7 = 0; u v8 = 0; u v9 = 0; - u v10 = 0; -#line 453 "peg.om" -b0: v3 = (u)my_alloc; -#line 453 "peg.om" - v4 = v_a; -#line 453 "peg.om" - v5 = 40UL; -#line 453 "peg.om" - v6 = ((u (*)())(v3))(v4, v5); -#line 453 "peg.om" -b1: v_c = v6; -#line 454 "peg.om" +#line 476 "peg.om" +b0: v2 = (u)my_alloc; +#line 476 "peg.om" + v3 = v_a; +#line 476 "peg.om" + v4 = 40UL; +#line 476 "peg.om" + v5 = ((u (*)())(v2))(v3, v4); +#line 476 "peg.om" +b1: v_c = v5; +#line 477 "peg.om" *(u *)(v_c) = v_a; -#line 455 "peg.om" - *(u *)((v_c) + (32UL)) = v_prefix; -#line 456 "peg.om" - v7 = (u)my_alloc; -#line 456 "peg.om" - v8 = *(u *)(v_c); -#line 456 "peg.om" - v9 = 256UL; -#line 456 "peg.om" - v10 = ((u (*)())(v7))(v8, v9); -#line 456 "peg.om" -b2: *(u *)((v_c) + (24UL)) = v10; -#line 457 "peg.om" +#line 478 "peg.om" + *(u *)((v_c) + (32UL)) = (u)""; +#line 479 "peg.om" + v6 = (u)my_alloc; +#line 479 "peg.om" + v7 = *(u *)(v_c); +#line 479 "peg.om" + v8 = 256UL; +#line 479 "peg.om" + v9 = ((u (*)())(v6))(v7, v8); +#line 479 "peg.om" +b2: *(u *)((v_c) + (24UL)) = v9; +#line 480 "peg.om" return v_c; } u my_show_node(u v_out, u v_n) { @@ -62519,358 +62780,396 @@ u my_translate(u v_c, u v_n) { u v145 = 0; u v146 = 0; u v147 = 0; -#line 378 "peg.om" -b0: v3 = (u)my_fputs; -#line 378 "peg.om" - v4 = *(u *)((v_c) + (16UL)); -#line 378 "peg.om" - v5 = (u)"enum {\012"; -#line 378 "peg.om" - v6 = ((u (*)())(v3))(v4, v5); -#line 379 "peg.om" -b1: v_v = *(u *)((v_n) + (16UL)); -#line 380 "peg.om" - goto b2; -#line 381 "peg.om" -b2: if (!(v_v)) { goto b8; } -#line 381 "peg.om" -b7: v7 = 0UL; -#line 381 "peg.om" - goto b9; -#line 381 "peg.om" -b9: if (!(v7)) { goto b4; } -#line 394 "peg.om" -b3: v25 = (u)my_fputs; -#line 394 "peg.om" - v26 = *(u *)((v_c) + (16UL)); -#line 394 "peg.om" - v27 = (u)"}\012\012"; -#line 394 "peg.om" - v28 = ((u (*)())(v25))(v26, v27); -#line 397 "peg.om" -b17: v29 = (u)my_fputs; -#line 397 "peg.om" - v30 = *(u *)((v_c) + (16UL)); -#line 397 "peg.om" - v31 = (u)"func "; -#line 397 "peg.om" - v32 = ((u (*)())(v29))(v30, v31); -#line 398 "peg.om" -b18: v33 = (u)my_fputs; -#line 398 "peg.om" - v34 = *(u *)((v_c) + (16UL)); -#line 398 "peg.om" - v35 = *(u *)((v_c) + (32UL)); -#line 398 "peg.om" - v36 = ((u (*)())(v33))(v34, v35); -#line 399 "peg.om" -b19: v37 = (u)my_fputs; -#line 399 "peg.om" - v38 = *(u *)((v_c) + (16UL)); -#line 399 "peg.om" - v39 = (u)"tag_to_str(tag: int): *byte {\012"; -#line 399 "peg.om" - v40 = ((u (*)())(v37))(v38, v39); -#line 400 "peg.om" -b20: v_v = *(u *)((v_n) + (16UL)); + u v148 = 0; + u v149 = 0; + u v150 = 0; + u v151 = 0; + u v152 = 0; + u v153 = 0; +#line 387 "peg.om" +b0: v_v = *(u *)((v_n) + (16UL)); +#line 388 "peg.om" + goto b1; +#line 389 "peg.om" +b1: if (!(v_v)) { goto b7; } +#line 389 "peg.om" +b6: v3 = 0UL; +#line 389 "peg.om" + goto b8; +#line 389 "peg.om" +b8: if (!(v3)) { goto b3; } #line 401 "peg.om" - goto b21; -#line 402 "peg.om" -b21: if (!(v_v)) { goto b27; } -#line 402 "peg.om" -b26: v41 = 0UL; -#line 402 "peg.om" - goto b28; +b2: v9 = (u)my_fputs; +#line 401 "peg.om" + v10 = *(u *)((v_c) + (16UL)); +#line 401 "peg.om" + v11 = (u)"enum {\012"; +#line 401 "peg.om" + v12 = ((u (*)())(v9))(v10, v11); #line 402 "peg.om" -b28: if (!(v41)) { goto b23; } +b13: v_v = *(u *)((v_n) + (16UL)); +#line 403 "peg.om" + goto b14; +#line 404 "peg.om" +b14: if (!(v_v)) { goto b20; } +#line 404 "peg.om" +b19: v13 = 0UL; +#line 404 "peg.om" + goto b21; +#line 404 "peg.om" +b21: if (!(v13)) { goto b16; } #line 417 "peg.om" -b22: v68 = (u)my_fputs; +b15: v31 = (u)my_fputs; #line 417 "peg.om" - v69 = *(u *)((v_c) + (16UL)); + v32 = *(u *)((v_c) + (16UL)); #line 417 "peg.om" - v70 = (u)" die(\042invalid tag\042);\012"; + v33 = (u)"}\012\012"; #line 417 "peg.om" - v71 = ((u (*)())(v68))(v69, v70); -#line 418 "peg.om" -b38: v72 = (u)my_fputs; -#line 418 "peg.om" - v73 = *(u *)((v_c) + (16UL)); -#line 418 "peg.om" - v74 = (u)" return nil;\012"; -#line 418 "peg.om" - v75 = ((u (*)())(v72))(v73, v74); -#line 419 "peg.om" -b39: v76 = (u)my_fputs; -#line 419 "peg.om" - v77 = *(u *)((v_c) + (16UL)); -#line 419 "peg.om" - v78 = (u)"}\012"; -#line 419 "peg.om" - v79 = ((u (*)())(v76))(v77, v78); + v34 = ((u (*)())(v31))(v32, v33); +#line 420 "peg.om" +b29: v35 = (u)my_fputs; +#line 420 "peg.om" + v36 = *(u *)((v_c) + (16UL)); +#line 420 "peg.om" + v37 = (u)"func "; +#line 420 "peg.om" + v38 = ((u (*)())(v35))(v36, v37); +#line 421 "peg.om" +b30: v39 = (u)my_fputs; +#line 421 "peg.om" + v40 = *(u *)((v_c) + (16UL)); +#line 421 "peg.om" + v41 = *(u *)((v_c) + (32UL)); +#line 421 "peg.om" + v42 = ((u (*)())(v39))(v40, v41); +#line 422 "peg.om" +b31: v43 = (u)my_fputs; +#line 422 "peg.om" + v44 = *(u *)((v_c) + (16UL)); #line 422 "peg.om" -b40: v_v = *(u *)((v_n) + (16UL)); + v45 = (u)"tag_to_str(tag: int): *byte {\012"; +#line 422 "peg.om" + v46 = ((u (*)())(v43))(v44, v45); #line 423 "peg.om" - goto b41; -#line 424 "peg.om" -b41: if (!(v_v)) { goto b47; } -#line 424 "peg.om" -b46: v80 = 0UL; +b32: v_v = *(u *)((v_n) + (16UL)); #line 424 "peg.om" - goto b48; -#line 424 "peg.om" -b48: if (!(v80)) { goto b43; } -#line 374 "peg.om" -b42: return 0UL; -#line 428 "peg.om" -b43: if (!((u)(((s)(*(u *)(v_v))) == ((s)(1UL))))) { goto b49; } -#line 429 "peg.om" -b50: v81 = (u)my_fputs; -#line 429 "peg.om" - v82 = *(u *)((v_c) + (16UL)); -#line 429 "peg.om" - v83 = (u)"\012func peg_"; + goto b33; +#line 425 "peg.om" +b33: if (!(v_v)) { goto b39; } +#line 425 "peg.om" +b38: v47 = 0UL; +#line 425 "peg.om" + goto b40; +#line 425 "peg.om" +b40: if (!(v47)) { goto b35; } +#line 440 "peg.om" +b34: v74 = (u)my_fputs; +#line 440 "peg.om" + v75 = *(u *)((v_c) + (16UL)); +#line 440 "peg.om" + v76 = (u)" die(\042invalid tag\042);\012"; +#line 440 "peg.om" + v77 = ((u (*)())(v74))(v75, v76); +#line 441 "peg.om" +b50: v78 = (u)my_fputs; +#line 441 "peg.om" + v79 = *(u *)((v_c) + (16UL)); +#line 441 "peg.om" + v80 = (u)" return nil;\012"; +#line 441 "peg.om" + v81 = ((u (*)())(v78))(v79, v80); +#line 442 "peg.om" +b51: v82 = (u)my_fputs; +#line 442 "peg.om" + v83 = *(u *)((v_c) + (16UL)); +#line 442 "peg.om" + v84 = (u)"}\012"; +#line 442 "peg.om" + v85 = ((u (*)())(v82))(v83, v84); +#line 445 "peg.om" +b52: v_v = *(u *)((v_n) + (16UL)); +#line 446 "peg.om" + goto b53; +#line 447 "peg.om" +b53: if (!(v_v)) { goto b59; } +#line 447 "peg.om" +b58: v86 = 0UL; +#line 447 "peg.om" + goto b60; +#line 447 "peg.om" +b60: if (!(v86)) { goto b55; } +#line 384 "peg.om" +b54: return 0UL; +#line 451 "peg.om" +b55: if (!((u)(((s)(*(u *)(v_v))) == ((s)(1UL))))) { goto b61; } +#line 452 "peg.om" +b62: v87 = (u)my_fputs; +#line 452 "peg.om" + v88 = *(u *)((v_c) + (16UL)); +#line 452 "peg.om" + v89 = (u)"\012func peg_"; +#line 452 "peg.om" + v90 = ((u (*)())(v87))(v88, v89); +#line 453 "peg.om" +b64: v91 = (u)my_fputs; +#line 453 "peg.om" + v92 = *(u *)((v_c) + (16UL)); +#line 453 "peg.om" + v93 = *(u *)((v_c) + (32UL)); +#line 453 "peg.om" + v94 = ((u (*)())(v91))(v92, v93); +#line 454 "peg.om" +b65: v95 = (u)my_fputb; +#line 454 "peg.om" + v96 = *(u *)((v_c) + (16UL)); +#line 454 "peg.om" + v97 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); +#line 454 "peg.om" + v98 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); +#line 454 "peg.om" + v99 = ((u (*)())(v95))(v96, v97, v98); +#line 455 "peg.om" +b66: v100 = (u)my_fputs; +#line 455 "peg.om" + v101 = *(u *)((v_c) + (16UL)); +#line 455 "peg.om" + v102 = (u)"(c: *peg): int {\012"; +#line 455 "peg.om" + v103 = ((u (*)())(v100))(v101, v102); +#line 456 "peg.om" +b67: v104 = (u)my_fputs; +#line 456 "peg.om" + v105 = *(u *)((v_c) + (16UL)); +#line 456 "peg.om" + v106 = (u)" var ok: int;\012"; +#line 456 "peg.om" + v107 = ((u (*)())(v104))(v105, v106); +#line 457 "peg.om" +b68: v108 = (u)my_fputs; +#line 457 "peg.om" + v109 = *(u *)((v_c) + (16UL)); +#line 457 "peg.om" + v110 = (u)" enter(c, "; +#line 457 "peg.om" + v111 = ((u (*)())(v108))(v109, v110); +#line 458 "peg.om" +b69: v112 = (u)my_fputs; +#line 458 "peg.om" + v113 = *(u *)((v_c) + (16UL)); +#line 458 "peg.om" + v114 = *(u *)((v_c) + (32UL)); +#line 458 "peg.om" + v115 = ((u (*)())(v112))(v113, v114); +#line 459 "peg.om" +b70: v116 = (u)my_fputb; +#line 459 "peg.om" + v117 = *(u *)((v_c) + (16UL)); +#line 459 "peg.om" + v118 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); +#line 459 "peg.om" + v119 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); +#line 459 "peg.om" + v120 = ((u (*)())(v116))(v117, v118, v119); +#line 460 "peg.om" +b71: v121 = (u)my_fputs; +#line 460 "peg.om" + v122 = *(u *)((v_c) + (16UL)); +#line 460 "peg.om" + v123 = (u)");\012"; +#line 460 "peg.om" + v124 = ((u (*)())(v121))(v122, v123); +#line 461 "peg.om" +b72: v125 = (u)my_translate_pattern; +#line 461 "peg.om" + v126 = v_c; +#line 461 "peg.om" + v127 = *(u *)((*(u *)((v_v) + (16UL))) + (8UL)); +#line 461 "peg.om" + v128 = ((u (*)())(v125))(v126, v127); +#line 462 "peg.om" +b73: v129 = (u)my_fputs; +#line 462 "peg.om" + v130 = *(u *)((v_c) + (16UL)); +#line 462 "peg.om" + v131 = (u)" if ok { leave(c, "; +#line 462 "peg.om" + v132 = ((u (*)())(v129))(v130, v131); +#line 463 "peg.om" +b74: v133 = (u)my_fputs; +#line 463 "peg.om" + v134 = *(u *)((v_c) + (16UL)); +#line 463 "peg.om" + v135 = *(u *)((v_c) + (32UL)); +#line 463 "peg.om" + v136 = ((u (*)())(v133))(v134, v135); +#line 464 "peg.om" +b75: v137 = (u)my_fputb; +#line 464 "peg.om" + v138 = *(u *)((v_c) + (16UL)); +#line 464 "peg.om" + v139 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); +#line 464 "peg.om" + v140 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); +#line 464 "peg.om" + v141 = ((u (*)())(v137))(v138, v139, v140); +#line 465 "peg.om" +b76: v142 = (u)my_fputs; +#line 465 "peg.om" + v143 = *(u *)((v_c) + (16UL)); +#line 465 "peg.om" + v144 = (u)"); } else { fail(c); }\012"; +#line 465 "peg.om" + v145 = ((u (*)())(v142))(v143, v144); +#line 466 "peg.om" +b77: v146 = (u)my_fputs; +#line 466 "peg.om" + v147 = *(u *)((v_c) + (16UL)); +#line 466 "peg.om" + v148 = (u)" return ok;\012"; +#line 466 "peg.om" + v149 = ((u (*)())(v146))(v147, v148); +#line 467 "peg.om" +b78: v150 = (u)my_fputs; +#line 467 "peg.om" + v151 = *(u *)((v_c) + (16UL)); +#line 467 "peg.om" + v152 = (u)"}\012"; +#line 467 "peg.om" + v153 = ((u (*)())(v150))(v151, v152); +#line 470 "peg.om" +b61: v_v = *(u *)((v_v) + (8UL)); +#line 470 "peg.om" + goto b53; +#line 447 "peg.om" +b59: v86 = 1UL; +#line 447 "peg.om" + goto b60; #line 429 "peg.om" - v84 = ((u (*)())(v81))(v82, v83); +b35: if (!((u)(((s)(*(u *)(v_v))) == ((s)(1UL))))) { goto b41; } #line 430 "peg.om" -b52: v85 = (u)my_fputs; +b42: v48 = (u)my_fputs; #line 430 "peg.om" - v86 = *(u *)((v_c) + (16UL)); + v49 = *(u *)((v_c) + (16UL)); #line 430 "peg.om" - v87 = *(u *)((v_c) + (32UL)); + v50 = (u)" if tag == "; #line 430 "peg.om" - v88 = ((u (*)())(v85))(v86, v87); + v51 = ((u (*)())(v48))(v49, v50); #line 431 "peg.om" -b53: v89 = (u)my_fputb; +b44: v52 = (u)my_fputs; #line 431 "peg.om" - v90 = *(u *)((v_c) + (16UL)); + v53 = *(u *)((v_c) + (16UL)); #line 431 "peg.om" - v91 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); + v54 = *(u *)((v_c) + (32UL)); #line 431 "peg.om" - v92 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); -#line 431 "peg.om" - v93 = ((u (*)())(v89))(v90, v91, v92); + v55 = ((u (*)())(v52))(v53, v54); #line 432 "peg.om" -b54: v94 = (u)my_fputs; +b45: v56 = (u)my_fputb; #line 432 "peg.om" - v95 = *(u *)((v_c) + (16UL)); + v57 = *(u *)((v_c) + (16UL)); #line 432 "peg.om" - v96 = (u)"(c: *peg): int {\012"; + v58 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); #line 432 "peg.om" - v97 = ((u (*)())(v94))(v95, v96); + v59 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); +#line 432 "peg.om" + v60 = ((u (*)())(v56))(v57, v58, v59); #line 433 "peg.om" -b55: v98 = (u)my_fputs; +b46: v61 = (u)my_fputs; #line 433 "peg.om" - v99 = *(u *)((v_c) + (16UL)); + v62 = *(u *)((v_c) + (16UL)); #line 433 "peg.om" - v100 = (u)" var ok: int;\012"; + v63 = (u)" { return \042"; #line 433 "peg.om" - v101 = ((u (*)())(v98))(v99, v100); + v64 = ((u (*)())(v61))(v62, v63); #line 434 "peg.om" -b56: v102 = (u)my_fputs; +b47: v65 = (u)my_fputb; #line 434 "peg.om" - v103 = *(u *)((v_c) + (16UL)); + v66 = *(u *)((v_c) + (16UL)); #line 434 "peg.om" - v104 = (u)" enter(c, "; + v67 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); #line 434 "peg.om" - v105 = ((u (*)())(v102))(v103, v104); + v68 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); +#line 434 "peg.om" + v69 = ((u (*)())(v65))(v66, v67, v68); #line 435 "peg.om" -b57: v106 = (u)my_fputs; +b48: v70 = (u)my_fputs; #line 435 "peg.om" - v107 = *(u *)((v_c) + (16UL)); + v71 = *(u *)((v_c) + (16UL)); #line 435 "peg.om" - v108 = *(u *)((v_c) + (32UL)); + v72 = (u)"\042; }\012"; #line 435 "peg.om" - v109 = ((u (*)())(v106))(v107, v108); -#line 436 "peg.om" -b58: v110 = (u)my_fputb; -#line 436 "peg.om" - v111 = *(u *)((v_c) + (16UL)); -#line 436 "peg.om" - v112 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); -#line 436 "peg.om" - v113 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); -#line 436 "peg.om" - v114 = ((u (*)())(v110))(v111, v112, v113); -#line 437 "peg.om" -b59: v115 = (u)my_fputs; -#line 437 "peg.om" - v116 = *(u *)((v_c) + (16UL)); -#line 437 "peg.om" - v117 = (u)");\012"; -#line 437 "peg.om" - v118 = ((u (*)())(v115))(v116, v117); -#line 438 "peg.om" -b60: v119 = (u)my_translate_pattern; -#line 438 "peg.om" - v120 = v_c; + v73 = ((u (*)())(v70))(v71, v72); #line 438 "peg.om" - v121 = *(u *)((*(u *)((v_v) + (16UL))) + (8UL)); +b41: v_v = *(u *)((v_v) + (8UL)); #line 438 "peg.om" - v122 = ((u (*)())(v119))(v120, v121); -#line 439 "peg.om" -b61: v123 = (u)my_fputs; -#line 439 "peg.om" - v124 = *(u *)((v_c) + (16UL)); -#line 439 "peg.om" - v125 = (u)" if ok { leave(c, "; -#line 439 "peg.om" - v126 = ((u (*)())(v123))(v124, v125); -#line 440 "peg.om" -b62: v127 = (u)my_fputs; -#line 440 "peg.om" - v128 = *(u *)((v_c) + (16UL)); -#line 440 "peg.om" - v129 = *(u *)((v_c) + (32UL)); -#line 440 "peg.om" - v130 = ((u (*)())(v127))(v128, v129); -#line 441 "peg.om" -b63: v131 = (u)my_fputb; -#line 441 "peg.om" - v132 = *(u *)((v_c) + (16UL)); -#line 441 "peg.om" - v133 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); -#line 441 "peg.om" - v134 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); -#line 441 "peg.om" - v135 = ((u (*)())(v131))(v132, v133, v134); -#line 442 "peg.om" -b64: v136 = (u)my_fputs; -#line 442 "peg.om" - v137 = *(u *)((v_c) + (16UL)); -#line 442 "peg.om" - v138 = (u)"); } else { fail(c); }\012"; -#line 442 "peg.om" - v139 = ((u (*)())(v136))(v137, v138); -#line 443 "peg.om" -b65: v140 = (u)my_fputs; -#line 443 "peg.om" - v141 = *(u *)((v_c) + (16UL)); -#line 443 "peg.om" - v142 = (u)" return ok;\012"; -#line 443 "peg.om" - v143 = ((u (*)())(v140))(v141, v142); -#line 444 "peg.om" -b66: v144 = (u)my_fputs; -#line 444 "peg.om" - v145 = *(u *)((v_c) + (16UL)); -#line 444 "peg.om" - v146 = (u)"}\012"; -#line 444 "peg.om" - v147 = ((u (*)())(v144))(v145, v146); -#line 447 "peg.om" -b49: v_v = *(u *)((v_v) + (8UL)); -#line 447 "peg.om" - goto b41; -#line 424 "peg.om" -b47: v80 = 1UL; -#line 424 "peg.om" - goto b48; -#line 406 "peg.om" -b23: if (!((u)(((s)(*(u *)(v_v))) == ((s)(1UL))))) { goto b29; } -#line 407 "peg.om" -b30: v42 = (u)my_fputs; -#line 407 "peg.om" - v43 = *(u *)((v_c) + (16UL)); -#line 407 "peg.om" - v44 = (u)" if tag == "; -#line 407 "peg.om" - v45 = ((u (*)())(v42))(v43, v44); -#line 408 "peg.om" -b32: v46 = (u)my_fputs; -#line 408 "peg.om" - v47 = *(u *)((v_c) + (16UL)); -#line 408 "peg.om" - v48 = *(u *)((v_c) + (32UL)); + goto b33; +#line 425 "peg.om" +b39: v47 = 1UL; +#line 425 "peg.om" + goto b40; #line 408 "peg.om" - v49 = ((u (*)())(v46))(v47, v48); +b16: if (!((u)(((s)(*(u *)(v_v))) == ((s)(1UL))))) { goto b22; } #line 409 "peg.om" -b33: v50 = (u)my_fputb; +b23: v14 = (u)my_fputs; #line 409 "peg.om" - v51 = *(u *)((v_c) + (16UL)); + v15 = *(u *)((v_c) + (16UL)); #line 409 "peg.om" - v52 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); + v16 = (u)" "; #line 409 "peg.om" - v53 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); -#line 409 "peg.om" - v54 = ((u (*)())(v50))(v51, v52, v53); + v17 = ((u (*)())(v14))(v15, v16); #line 410 "peg.om" -b34: v55 = (u)my_fputs; +b25: v18 = (u)my_fputs; #line 410 "peg.om" - v56 = *(u *)((v_c) + (16UL)); + v19 = *(u *)((v_c) + (16UL)); #line 410 "peg.om" - v57 = (u)" { return \042"; + v20 = *(u *)((v_c) + (32UL)); #line 410 "peg.om" - v58 = ((u (*)())(v55))(v56, v57); + v21 = ((u (*)())(v18))(v19, v20); #line 411 "peg.om" -b35: v59 = (u)my_fputb; +b26: v22 = (u)my_fputb; #line 411 "peg.om" - v60 = *(u *)((v_c) + (16UL)); + v23 = *(u *)((v_c) + (16UL)); #line 411 "peg.om" - v61 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); + v24 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); #line 411 "peg.om" - v62 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); + v25 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); #line 411 "peg.om" - v63 = ((u (*)())(v59))(v60, v61, v62); + v26 = ((u (*)())(v22))(v23, v24, v25); #line 412 "peg.om" -b36: v64 = (u)my_fputs; +b27: v27 = (u)my_fputs; #line 412 "peg.om" - v65 = *(u *)((v_c) + (16UL)); + v28 = *(u *)((v_c) + (16UL)); #line 412 "peg.om" - v66 = (u)"\042; }\012"; + v29 = (u)",\012"; #line 412 "peg.om" - v67 = ((u (*)())(v64))(v65, v66); + v30 = ((u (*)())(v27))(v28, v29); #line 415 "peg.om" -b29: v_v = *(u *)((v_v) + (8UL)); +b22: v_v = *(u *)((v_v) + (8UL)); #line 415 "peg.om" + goto b14; +#line 404 "peg.om" +b20: v13 = 1UL; +#line 404 "peg.om" goto b21; -#line 402 "peg.om" -b27: v41 = 1UL; -#line 402 "peg.om" - goto b28; -#line 385 "peg.om" -b4: if (!((u)(((s)(*(u *)(v_v))) == ((s)(1UL))))) { goto b10; } -#line 386 "peg.om" -b11: v8 = (u)my_fputs; -#line 386 "peg.om" - v9 = *(u *)((v_c) + (16UL)); -#line 386 "peg.om" - v10 = (u)" "; -#line 386 "peg.om" - v11 = ((u (*)())(v8))(v9, v10); -#line 387 "peg.om" -b13: v12 = (u)my_fputs; -#line 387 "peg.om" - v13 = *(u *)((v_c) + (16UL)); -#line 387 "peg.om" - v14 = *(u *)((v_c) + (32UL)); -#line 387 "peg.om" - v15 = ((u (*)())(v12))(v13, v14); -#line 388 "peg.om" -b14: v16 = (u)my_fputb; -#line 388 "peg.om" - v17 = *(u *)((v_c) + (16UL)); -#line 388 "peg.om" - v18 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); -#line 388 "peg.om" - v19 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); -#line 388 "peg.om" - v20 = ((u (*)())(v16))(v17, v18, v19); -#line 389 "peg.om" -b15: v21 = (u)my_fputs; -#line 389 "peg.om" - v22 = *(u *)((v_c) + (16UL)); +#line 393 "peg.om" +b3: if (!((u)(((s)(*(u *)(v_v))) == ((s)(2UL))))) { goto b9; } +#line 394 "peg.om" +b10: v4 = (u)my_setprefix; +#line 394 "peg.om" + v5 = v_c; +#line 394 "peg.om" + v6 = *(u *)((*(u *)((v_v) + (16UL))) + (24UL)); +#line 394 "peg.om" + v7 = *(u *)((*(u *)((v_v) + (16UL))) + (32UL)); +#line 394 "peg.om" + v8 = ((u (*)())(v4))(v5, v6, v7); +#line 397 "peg.om" +b9: v_v = *(u *)((v_v) + (8UL)); +#line 397 "peg.om" + goto b1; #line 389 "peg.om" - v23 = (u)",\012"; +b7: v3 = 1UL; #line 389 "peg.om" - v24 = ((u (*)())(v21))(v22, v23); -#line 392 "peg.om" -b10: v_v = *(u *)((v_v) + (8UL)); -#line 392 "peg.om" - goto b2; -#line 381 "peg.om" -b8: v7 = 1UL; -#line 381 "peg.om" - goto b9; + goto b8; } u my_translate_charset(u v_c, u v_n) { u v_i = 0; @@ -63600,7 +63899,7 @@ u my_translate_pattern(u v_c, u v_n) { #line 265 "peg.om" b0: goto b1; #line 266 "peg.om" -b1: if (!((u)(((s)(*(u *)(v_n))) == ((s)(2UL))))) { goto b5; } +b1: if (!((u)(((s)(*(u *)(v_n))) == ((s)(3UL))))) { goto b5; } #line 267 "peg.om" b4: v_d = *(u *)((v_n) + (16UL)); #line 268 "peg.om" @@ -63696,7 +63995,7 @@ b10: v5 = 1UL; #line 268 "peg.om" goto b11; #line 287 "peg.om" -b5: if (!((u)(((s)(*(u *)(v_n))) == ((s)(3UL))))) { goto b28; } +b5: if (!((u)(((s)(*(u *)(v_n))) == ((s)(4UL))))) { goto b28; } #line 288 "peg.om" b27: v_d = *(u *)((v_n) + (16UL)); #line 289 "peg.om" @@ -63754,7 +64053,7 @@ b36: v39 = 1UL; #line 292 "peg.om" goto b37; #line 302 "peg.om" -b28: if (!((u)(((s)(*(u *)(v_n))) == ((s)(5UL))))) { goto b42; } +b28: if (!((u)(((s)(*(u *)(v_n))) == ((s)(6UL))))) { goto b42; } #line 303 "peg.om" b41: v52 = (u)my_decode_look; #line 303 "peg.om" @@ -63766,7 +64065,7 @@ b43: v_look = v54; #line 304 "peg.om" v_d = *(u *)((v_n) + (16UL)); #line 305 "peg.om" - if (!((u)(((s)(*(u *)(v_d))) == ((s)(4UL))))) { goto b44; } + if (!((u)(((s)(*(u *)(v_d))) == ((s)(5UL))))) { goto b44; } #line 306 "peg.om" b45: v_d = *(u *)((v_d) + (8UL)); #line 306 "peg.om" @@ -63848,7 +64147,7 @@ b59: v83 = (u)my_die; #line 320 "peg.om" goto b2; #line 322 "peg.om" -b42: if (!((u)(((s)(*(u *)(v_n))) == ((s)(7UL))))) { goto b63; } +b42: if (!((u)(((s)(*(u *)(v_n))) == ((s)(8UL))))) { goto b63; } #line 323 "peg.om" b62: v86 = (u)my_decode_count; #line 323 "peg.om" @@ -64034,7 +64333,7 @@ b83: v165 = (u)my_die; #line 348 "peg.om" goto b2; #line 350 "peg.om" -b63: if (!((u)(((s)(*(u *)(v_n))) == ((s)(8UL))))) { goto b95; } +b63: if (!((u)(((s)(*(u *)(v_n))) == ((s)(9UL))))) { goto b95; } #line 351 "peg.om" b94: v168 = (u)my_translate_pattern; #line 351 "peg.om" @@ -64046,7 +64345,7 @@ b94: v168 = (u)my_translate_pattern; #line 351 "peg.om" goto b2; #line 352 "peg.om" -b95: if (!((u)(((s)(*(u *)(v_n))) == ((s)(9UL))))) { goto b98; } +b95: if (!((u)(((s)(*(u *)(v_n))) == ((s)(10UL))))) { goto b98; } #line 353 "peg.om" b97: v172 = (u)my_fputs; #line 353 "peg.om" @@ -64058,7 +64357,7 @@ b97: v172 = (u)my_fputs; #line 353 "peg.om" goto b2; #line 354 "peg.om" -b98: if (!((u)(((s)(*(u *)(v_n))) == ((s)(10UL))))) { goto b101; } +b98: if (!((u)(((s)(*(u *)(v_n))) == ((s)(11UL))))) { goto b101; } #line 355 "peg.om" b100: v176 = (u)my_translate_literal; #line 355 "peg.om" @@ -64070,7 +64369,7 @@ b100: v176 = (u)my_translate_literal; #line 355 "peg.om" goto b2; #line 356 "peg.om" -b101: if (!((u)(((s)(*(u *)(v_n))) == ((s)(11UL))))) { goto b104; } +b101: if (!((u)(((s)(*(u *)(v_n))) == ((s)(12UL))))) { goto b104; } #line 357 "peg.om" b103: v180 = (u)my_translate_charset; #line 357 "peg.om" @@ -64082,7 +64381,7 @@ b103: v180 = (u)my_translate_charset; #line 357 "peg.om" goto b2; #line 358 "peg.om" -b104: if (!((u)(((s)(*(u *)(v_n))) == ((s)(12UL))))) { goto b107; } +b104: if (!((u)(((s)(*(u *)(v_n))) == ((s)(13UL))))) { goto b107; } #line 359 "peg.om" b106: v184 = (u)my_fputs; #line 359 "peg.om" @@ -64120,7 +64419,7 @@ b110: v197 = (u)my_fputs; #line 362 "peg.om" goto b2; #line 363 "peg.om" -b107: if (!((u)(((s)(*(u *)(v_n))) == ((s)(14UL))))) { goto b113; } +b107: if (!((u)(((s)(*(u *)(v_n))) == ((s)(15UL))))) { goto b113; } #line 364 "peg.om" b112: v_n = *(u *)((v_n) + (8UL)); #line 365 "peg.om" diff --git a/cc1.om b/cc1.om @@ -2272,11 +2272,7 @@ func main(argc: int, argv: **byte, envp: **byte) { } if (!strcmp(argv[i], "-P")) { - i = i + 1; - if (i >= argc) { - die("invalid -P at end of argument list"); - } - peg = setup_peg(&a, argv[i]); + peg = setup_peg(&a); i = i + 1; continue; } diff --git a/cc3.peg b/cc3.peg @@ -1,3 +1,5 @@ +%prefix P_ + grammar <- sp (enum_decl / struct_decl / union_decl / func_decl)* !. enum_item <- ident sp ('=' sp expr)? diff --git a/peg.om b/peg.om @@ -371,9 +371,32 @@ func translate_pattern(c: *peg_compiler, n: *peg_node) { } } +func setprefix(c: *peg_compiler, s: *byte, n: int) { + var p: *byte; + + p = alloc(c.a, n + 1); + memcpy(p, s, n); + p[n] = 0 as byte; + + c.prefix = p; +} + func translate(c: *peg_compiler, n: *peg_node) { var v: *peg_node; + v = n.child; + loop { + if !v { + break; + } + + if v.tag == PEG_prefix { + setprefix(c, v.child.str, v.child.len); + } + + v = v.next; + } + // Generate tags for each rule fputs(c.out, "enum {\n"); v = n.child; @@ -448,11 +471,11 @@ func translate(c: *peg_compiler, n: *peg_node) { } } -func setup_peg(a: *alloc, prefix: *byte): *peg_compiler { +func setup_peg(a: *alloc): *peg_compiler { var c: *peg_compiler; c = alloc(a, sizeof(*c)) as *peg_compiler; c.a = a; - c.prefix = prefix; + c.prefix = ""; c.scratch = alloc(c.a, 256); return c; } diff --git a/peg.peg b/peg.peg @@ -1,5 +1,8 @@ -grammar <- sp rule+ !. +%prefix PEG_ + +grammar <- sp (rule / prefix)+ !. rule <- identifier sp '<-' sp pattern +prefix <- '%prefix' sp identifier sp pattern <- alternative ( '/' !'/' sp alternative )* alternative <- lookahead+ lookop <- [!&]