commit f42b6a6f9b861658d79b0e546282d57ac6134c67
parent 13de5329207c49cc4debeac3bcc6919bf869ec30
Author: erai <erai@omiltem.net>
Date: Thu, 6 Feb 2025 01:50:53 +0000
Use %prefix in peg
Diffstat:
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 <- [!&]