This site hosts my projects.
commit c00bc60cc2663dd1d512ac40364519aa314c6b5e
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Wed Dec 10 07:45:24 2025 +0100
Test parsing of goal pattern
diff --git a/src/examples/aoc202510/aoc202510.meta b/src/examples/aoc202510/aoc202510.meta
index 2b5c638..ff24a80 100644
--- a/src/examples/aoc202510/aoc202510.meta
+++ b/src/examples/aoc202510/aoc202510.meta
@@ -14,7 +14,21 @@ main = machine*:xs !. -> {
$xs
};
+ void print_bits(unsigned int number) {
+ if (number) {
+ print_bits(number >> 1);
+ if (number & 1) {
+ printf("#");
+ } else {
+ printf(".");
+ }
+ }
+ }
+
int main() {
+ print_bits(machines[0].goal_pattern); printf("\n");
+ print_bits(machines[2].goal_pattern); printf("\n");
+ print_bits(machines[2].presses[1]); printf("\n");
printf("Part 1 = ??\n");
return 0;
}
commit 046638c2102f28d6011f6567cfe9a199f7724d7c
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Wed Dec 10 07:38:52 2025 +0100
Fix press digit calculation
diff --git a/src/examples/aoc202510/aoc202510.meta b/src/examples/aoc202510/aoc202510.meta
index 04a3962..2b5c638 100644
--- a/src/examples/aoc202510/aoc202510.meta
+++ b/src/examples/aoc202510/aoc202510.meta
@@ -49,8 +49,8 @@ joltage = pressDigit*;
press = space '(' pressDigit*:xs ')' -> { "0" xs ",\n" };
-pressDigit = ','* number -> {
- "|(1<<(" <size "-" W[2] "))"
+pressDigit = ','* number:x -> {
+ "|(1<<(" <size "-1-" x "))"
};
number = digit digit*;
commit 62edc0d08b837daa9f1fc3b6d30a19a1bcc3d048
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Wed Dec 10 07:14:05 2025 +0100
Parse Day 10 part 1
diff --git a/make.sh b/make.sh
index c85d644..31be733 100755
--- a/make.sh
+++ b/make.sh
@@ -20,6 +20,7 @@ main() {
example_aoc20257
example_aoc20258
example_aoc20259
+ example_aoc202510
}
dotall() {
@@ -169,6 +170,15 @@ example_aoc20259() {
out/$input
}
+example_aoc202510() {
+ meta_compile src/examples/aoc202510/aoc202510.meta out/aoc202510.c
+ c_compile out/aoc202510.c out/aoc202510
+ input=example
+ out/aoc202510 <src/examples/aoc202510/$input.aoc202510 >out/$input.c
+ c_compile out/$input.c out/$input
+ out/$input
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
diff --git a/src/examples/aoc202510/aoc202510.meta b/src/examples/aoc202510/aoc202510.meta
new file mode 100644
index 0000000..04a3962
--- /dev/null
+++ b/src/examples/aoc202510/aoc202510.meta
@@ -0,0 +1,60 @@
+main = machine*:xs !. -> {
+ $maxPresses
+ "#define MAX_PRESSES " <maxPresses "\n"
+ C{
+ #include <stdio.h>
+
+ typedef struct {
+ unsigned int goal_pattern;
+ unsigned int presses_count;
+ unsigned int presses[MAX_PRESSES];
+ } Machine;
+
+ static Machine machines[] = {
+ $xs
+ };
+
+ int main() {
+ printf("Part 1 = ??\n");
+ return 0;
+ }
+ }
+ >maxPresses { W[1] }
+};
+
+machine = '[' lights:x ']' press*:ys space '{' joltage '}\n' -> {
+ $size
+ #max(W[1] ys.count)
+ "{\n" >
+ x ",\n"
+ ys.count ",\n"
+ "{\n" >
+ ys
+ < "}\n"
+ < "},\n"
+};
+
+lights = light*:xs -> {
+ #set(W[2] 0)
+ "0" xs
+ >size { xs.count }
+};
+
+light =
+ | '.' -> { #inc(W[2] 1) "" }
+ | '#' -> { #inc(W[2] 1) "|(1<<(" <size "-" W[2] "))" }
+ ;
+
+joltage = pressDigit*;
+
+press = space '(' pressDigit*:xs ')' -> { "0" xs ",\n" };
+
+pressDigit = ','* number -> {
+ "|(1<<(" <size "-" W[2] "))"
+};
+
+number = digit digit*;
+
+digit = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'0';
+
+space = ' '*;
diff --git a/src/examples/aoc202510/example.aoc202510 b/src/examples/aoc202510/example.aoc202510
new file mode 100644
index 0000000..dd91d7b
--- /dev/null
+++ b/src/examples/aoc202510/example.aoc202510
@@ -0,0 +1,3 @@
+[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
+[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
+[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}
diff --git a/src/meta.c b/src/meta.c
index dda1cdb..2c30f86 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -139,6 +139,10 @@ unsigned int meta_inc(unsigned int value, unsigned int amount) {
return value + amount;
}
+unsigned int meta_set(unsigned int value, unsigned int amount) {
+ return amount;
+}
+
unsigned int meta_max(unsigned int a, unsigned int b) {
return a > b ? a : b;
}
commit 62edc0d08b837daa9f1fc3b6d30a19a1bcc3d048
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Wed Dec 10 07:14:05 2025 +0100
Parse Day 10 part 1
diff --git a/make.sh b/make.sh
index c85d644..31be733 100755
--- a/make.sh
+++ b/make.sh
@@ -20,6 +20,7 @@ main() {
example_aoc20257
example_aoc20258
example_aoc20259
+ example_aoc202510
}
dotall() {
@@ -169,6 +170,15 @@ example_aoc20259() {
out/$input
}
+example_aoc202510() {
+ meta_compile src/examples/aoc202510/aoc202510.meta out/aoc202510.c
+ c_compile out/aoc202510.c out/aoc202510
+ input=example
+ out/aoc202510 <src/examples/aoc202510/$input.aoc202510 >out/$input.c
+ c_compile out/$input.c out/$input
+ out/$input
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
diff --git a/src/examples/aoc202510/aoc202510.meta b/src/examples/aoc202510/aoc202510.meta
new file mode 100644
index 0000000..04a3962
--- /dev/null
+++ b/src/examples/aoc202510/aoc202510.meta
@@ -0,0 +1,60 @@
+main = machine*:xs !. -> {
+ $maxPresses
+ "#define MAX_PRESSES " <maxPresses "\n"
+ C{
+ #include <stdio.h>
+
+ typedef struct {
+ unsigned int goal_pattern;
+ unsigned int presses_count;
+ unsigned int presses[MAX_PRESSES];
+ } Machine;
+
+ static Machine machines[] = {
+ $xs
+ };
+
+ int main() {
+ printf("Part 1 = ??\n");
+ return 0;
+ }
+ }
+ >maxPresses { W[1] }
+};
+
+machine = '[' lights:x ']' press*:ys space '{' joltage '}\n' -> {
+ $size
+ #max(W[1] ys.count)
+ "{\n" >
+ x ",\n"
+ ys.count ",\n"
+ "{\n" >
+ ys
+ < "}\n"
+ < "},\n"
+};
+
+lights = light*:xs -> {
+ #set(W[2] 0)
+ "0" xs
+ >size { xs.count }
+};
+
+light =
+ | '.' -> { #inc(W[2] 1) "" }
+ | '#' -> { #inc(W[2] 1) "|(1<<(" <size "-" W[2] "))" }
+ ;
+
+joltage = pressDigit*;
+
+press = space '(' pressDigit*:xs ')' -> { "0" xs ",\n" };
+
+pressDigit = ','* number -> {
+ "|(1<<(" <size "-" W[2] "))"
+};
+
+number = digit digit*;
+
+digit = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'0';
+
+space = ' '*;
diff --git a/src/examples/aoc202510/example.aoc202510 b/src/examples/aoc202510/example.aoc202510
new file mode 100644
index 0000000..dd91d7b
--- /dev/null
+++ b/src/examples/aoc202510/example.aoc202510
@@ -0,0 +1,3 @@
+[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
+[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
+[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}
diff --git a/src/meta.c b/src/meta.c
index dda1cdb..2c30f86 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -139,6 +139,10 @@ unsigned int meta_inc(unsigned int value, unsigned int amount) {
return value + amount;
}
+unsigned int meta_set(unsigned int value, unsigned int amount) {
+ return amount;
+}
+
unsigned int meta_max(unsigned int a, unsigned int b) {
return a > b ? a : b;
}
commit 0643603002a286d46d6f2d827efde1c609ad016b
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 21:48:50 2025 +0100
Early exit plus print (solved part 2 in ~6 minutes)
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index 1b0c6c5..0024f26 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -114,21 +114,21 @@ main = position*:xs !. -> {
int rectangle_is_inside(Position a, Position b) {
unsigned long x, y;
- for (x=min_x(a, b); x<=max_x(a, b); x++) {
- if (!is_inside(x, min_y(a, b))) {
- return 0;
- }
- if (!is_inside(x, max_y(a, b))) {
- return 0;
- }
+ unsigned long x1 = min_x(a, b);
+ unsigned long x2 = max_x(a, b);
+ unsigned long y1 = min_y(a, b);
+ unsigned long y2 = max_y(a, b);
+ if (!is_inside(x1, y1)) { return 0; }
+ if (!is_inside(x2, y1)) { return 0; }
+ if (!is_inside(x1, y2)) { return 0; }
+ if (!is_inside(x2, y2)) { return 0; }
+ for (x=x1+1; x<x2; x++) {
+ if (!is_inside(x, y1)) { return 0; }
+ if (!is_inside(x, y1)) { return 0; }
}
- for (y=min_y(a, b); y<=max_y(a, b); y++) {
- if (!is_inside(min_x(a, b), y)) {
- return 0;
- }
- if (!is_inside(max_x(a, b), y)) {
- return 0;
- }
+ for (y=y1+1; y<y2; y++) {
+ if (!is_inside(x1, y)) { return 0; }
+ if (!is_inside(x2, y)) { return 0; }
}
return 1;
}
@@ -166,6 +166,12 @@ main = position*:xs !. -> {
printf("Part 1 = %ld\n", pop_max_area().area);
while (1) {
area = pop_max_area();
+ printf(
+ "area = %ld, dx = %ld, dy = %ld\n",
+ area.area,
+ max_x(area.a, area.b)-min_x(area.a, area.b),
+ max_y(area.a, area.b)-min_y(area.a, area.b)
+ );
if (rectangle_is_inside(area.a, area.b)) {
break;
}
commit 477e216261602c095bddd89f033fc3c205624059
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 21:17:21 2025 +0100
Check areas in order big to small
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index 802a005..1b0c6c5 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -11,7 +11,14 @@ main = position*:xs !. -> {
unsigned long y;
} Position;
+ typedef struct {
+ unsigned long area;
+ Position a;
+ Position b;
+ } Area;
+
static Position tile_positions[COUNT] = {$xs};
+ static Area areas[COUNT][COUNT];
unsigned long distance(unsigned long a, unsigned long b) {
if (a < b) {
@@ -77,25 +84,32 @@ main = position*:xs !. -> {
typedef int (*ValidFn)(Position, Position);
- unsigned long max_area(ValidFn area_valid) {
+ void calc_areas() {
int i, j;
- unsigned long tmp_area, max_area = 0;
for (i=0; i<COUNT; i++) {
for (j=0; j<COUNT; j++) {
- tmp_area = area(tile_positions[i], tile_positions[j]);
- if (
- tmp_area > max_area &&
- area_valid(tile_positions[i], tile_positions[j])
- ) {
- max_area = tmp_area;
- }
+ areas[i][j].area = area(tile_positions[i], tile_positions[j]);
+ areas[i][j].a = tile_positions[i];
+ areas[i][j].b = tile_positions[j];
}
}
- return max_area;
}
- int always_valid(Position a, Position b) {
- return 1;
+ Area pop_max_area() {
+ int i, j, max_i, max_j;
+ Area max_area;
+ max_area.area = 0;
+ for (i=0; i<COUNT; i++) {
+ for (j=0; j<COUNT; j++) {
+ if (areas[i][j].area > max_area.area) {
+ max_area = areas[i][j];
+ max_i = i;
+ max_j = j;
+ }
+ }
+ }
+ areas[max_i][max_j].area = 0;
+ return max_area;
}
int rectangle_is_inside(Position a, Position b) {
@@ -146,9 +160,17 @@ main = position*:xs !. -> {
}
int main() {
+ Area area;
+ calc_areas();
print_grid();
- printf("Part 1 = %ld\n", max_area(always_valid));
- printf("Part 2 = %ld\n", max_area(rectangle_is_inside));
+ printf("Part 1 = %ld\n", pop_max_area().area);
+ while (1) {
+ area = pop_max_area();
+ if (rectangle_is_inside(area.a, area.b)) {
+ break;
+ }
+ }
+ printf("Part 2 = %ld\n", area.area);
return 0;
}
}
commit 67249600d9fbe149e4c2bab0803f703da54dd86a
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 20:34:28 2025 +0100
Check only border points, not the whole rectangle
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index 61fd0ad..802a005 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -101,10 +101,19 @@ main = position*:xs !. -> {
int rectangle_is_inside(Position a, Position b) {
unsigned long x, y;
for (x=min_x(a, b); x<=max_x(a, b); x++) {
- for (y=min_y(a, b); y<=max_y(a, b); y++) {
- if (!is_inside(x, y)) {
- return 0;
- }
+ if (!is_inside(x, min_y(a, b))) {
+ return 0;
+ }
+ if (!is_inside(x, max_y(a, b))) {
+ return 0;
+ }
+ }
+ for (y=min_y(a, b); y<=max_y(a, b); y++) {
+ if (!is_inside(min_x(a, b), y)) {
+ return 0;
+ }
+ if (!is_inside(max_x(a, b), y)) {
+ return 0;
}
}
return 1;
commit 9a250ecf5af249f09db180182ec69ef0bdbb33df
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 20:29:03 2025 +0100
Clean up
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index f450aed..61fd0ad 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -3,8 +3,8 @@ main = position*:xs !. -> {
C{
#include <stdio.h>
- #define GRID_ROWS 9
- #define GRID_COLS 14
+ #define GRID_ROWS 20
+ #define GRID_COLS 70
typedef struct {
unsigned long x;
@@ -25,10 +25,6 @@ main = position*:xs !. -> {
return distance(a.x, b.x) * distance(a.y, b.y);
}
- int is_vertical(Position a, Position b) {
- return a.x == b.x;
- }
-
unsigned long min_x(Position a, Position b) {
return a.x < b.x ? a.x : b.x;
}
@@ -52,11 +48,11 @@ main = position*:xs !. -> {
int is_on_line(Position a, Position b, unsigned long x, unsigned long y) {
if (a.x == b.x && a.x == x) {
return min_y(a, b) <= y && y <= max_y(a, b);
- }
- if (a.y == b.y && a.y == y) {
+ } else if (a.y == b.y && a.y == y) {
return min_x(a, b) <= x && x <= max_x(a, b);
+ } else {
+ return 0;
}
- return 0;
}
int is_inside(unsigned long x, unsigned long y) {
@@ -67,10 +63,12 @@ main = position*:xs !. -> {
if (is_on_line(previous, tile_positions[i], x, y)) {
return 1;
}
- if (is_vertical(previous, tile_positions[i])) {
- if (previous.x > x && y_inside(previous, tile_positions[i], y)) {
- intersection_count++;
- }
+ if (
+ previous.x == tile_positions[i].x &&
+ previous.x > x &&
+ y_inside(previous, tile_positions[i], y)
+ ) {
+ intersection_count++;
}
previous = tile_positions[i];
}
@@ -79,7 +77,7 @@ main = position*:xs !. -> {
typedef int (*ValidFn)(Position, Position);
- unsigned long max_area(ValidFn valid) {
+ unsigned long max_area(ValidFn area_valid) {
int i, j;
unsigned long tmp_area, max_area = 0;
for (i=0; i<COUNT; i++) {
@@ -87,7 +85,7 @@ main = position*:xs !. -> {
tmp_area = area(tile_positions[i], tile_positions[j]);
if (
tmp_area > max_area &&
- valid(tile_positions[i], tile_positions[j])
+ area_valid(tile_positions[i], tile_positions[j])
) {
max_area = tmp_area;
}
@@ -101,23 +99,9 @@ main = position*:xs !. -> {
}
int rectangle_is_inside(Position a, Position b) {
- unsigned long x_min, x_max, y_min, y_max, x, y;
- if (a.x < b.x) {
- x_min = a.x;
- x_max = b.x;
- } else {
- x_min = b.x;
- x_max = a.x;
- }
- if (a.y < b.y) {
- y_min = a.y;
- y_max = b.y;
- } else {
- y_min = b.y;
- y_max = a.y;
- }
- for (x=x_min; x<=x_max; x++) {
- for (y=y_min; y<=y_max; y++) {
+ unsigned long x, y;
+ for (x=min_x(a, b); x<=max_x(a, b); x++) {
+ for (y=min_y(a, b); y<=max_y(a, b); y++) {
if (!is_inside(x, y)) {
return 0;
}
@@ -126,34 +110,36 @@ main = position*:xs !. -> {
return 1;
}
- int main() {
- printf("Part 1 = %ld\n", max_area(always_valid));
- printf("Part 2 = %ld\n", max_area(rectangle_is_inside));
- {
- int x, y;
- char grid[GRID_ROWS][GRID_COLS];
- for (y=0; y<GRID_ROWS; y++) {
- for (x=0; x<GRID_COLS; x++) {
- if (is_inside(x, y)) {
- grid[y][x] = 'x';
- } else {
- grid[y][x] = '.';
- }
+ void print_grid() {
+ int x, y;
+ char grid[GRID_ROWS][GRID_COLS];
+ for (y=0; y<GRID_ROWS; y++) {
+ for (x=0; x<GRID_COLS; x++) {
+ if (is_inside(x, y)) {
+ grid[y][x] = 'x';
+ } else {
+ grid[y][x] = '.';
}
}
- for (y=0; y<COUNT; y++) {
- Position tile = tile_positions[y];
- if (tile.x < GRID_COLS && tile.y < GRID_ROWS) {
- grid[tile.y][tile.x] = '#';
- }
+ }
+ for (y=0; y<COUNT; y++) {
+ Position tile = tile_positions[y];
+ if (tile.x < GRID_COLS && tile.y < GRID_ROWS) {
+ grid[tile.y][tile.x] = '#';
}
- for (y=0; y<GRID_ROWS; y++) {
- for (x=0; x<GRID_COLS; x++) {
- printf("%c", grid[y][x]);
- }
- printf("\n");
+ }
+ for (y=0; y<GRID_ROWS; y++) {
+ for (x=0; x<GRID_COLS; x++) {
+ printf("%c", grid[y][x]);
}
+ printf("\n");
}
+ }
+
+ int main() {
+ print_grid();
+ printf("Part 1 = %ld\n", max_area(always_valid));
+ printf("Part 2 = %ld\n", max_area(rectangle_is_inside));
return 0;
}
}
commit 8c05204f3cd5b18d7df89ac91bf3c4adbb3a494e
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 20:19:46 2025 +0100
Got example right for part 2
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index 1c102ca..f450aed 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -25,10 +25,58 @@ main = position*:xs !. -> {
return distance(a.x, b.x) * distance(a.y, b.y);
}
- int is_inside(unsigned long x, unsigned long y) {
+ int is_vertical(Position a, Position b) {
+ return a.x == b.x;
+ }
+
+ unsigned long min_x(Position a, Position b) {
+ return a.x < b.x ? a.x : b.x;
+ }
+
+ unsigned long min_y(Position a, Position b) {
+ return a.y < b.y ? a.y : b.y;
+ }
+
+ unsigned long max_x(Position a, Position b) {
+ return a.x > b.x ? a.x : b.x;
+ }
+
+ unsigned long max_y(Position a, Position b) {
+ return a.y > b.y ? a.y : b.y;
+ }
+
+ int y_inside(Position a, Position b, unsigned int y) {
+ return min_y(a, b) <= y && y < max_y(a, b);
+ }
+
+ int is_on_line(Position a, Position b, unsigned long x, unsigned long y) {
+ if (a.x == b.x && a.x == x) {
+ return min_y(a, b) <= y && y <= max_y(a, b);
+ }
+ if (a.y == b.y && a.y == y) {
+ return min_x(a, b) <= x && x <= max_x(a, b);
+ }
return 0;
}
+ int is_inside(unsigned long x, unsigned long y) {
+ int i;
+ Position previous = tile_positions[COUNT-1];
+ int intersection_count = 0;
+ for (i=0; i<COUNT; i++) {
+ if (is_on_line(previous, tile_positions[i], x, y)) {
+ return 1;
+ }
+ if (is_vertical(previous, tile_positions[i])) {
+ if (previous.x > x && y_inside(previous, tile_positions[i], y)) {
+ intersection_count++;
+ }
+ }
+ previous = tile_positions[i];
+ }
+ return intersection_count % 2 == 1;
+ }
+
typedef int (*ValidFn)(Position, Position);
unsigned long max_area(ValidFn valid) {
@@ -53,6 +101,28 @@ main = position*:xs !. -> {
}
int rectangle_is_inside(Position a, Position b) {
+ unsigned long x_min, x_max, y_min, y_max, x, y;
+ if (a.x < b.x) {
+ x_min = a.x;
+ x_max = b.x;
+ } else {
+ x_min = b.x;
+ x_max = a.x;
+ }
+ if (a.y < b.y) {
+ y_min = a.y;
+ y_max = b.y;
+ } else {
+ y_min = b.y;
+ y_max = a.y;
+ }
+ for (x=x_min; x<=x_max; x++) {
+ for (y=y_min; y<=y_max; y++) {
+ if (!is_inside(x, y)) {
+ return 0;
+ }
+ }
+ }
return 1;
}
commit ac1371fd6359974074d15fba7d7323cbf5917f62
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 19:48:20 2025 +0100
Prepare for part 2
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index 1ccd719..1c102ca 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -29,18 +29,36 @@ main = position*:xs !. -> {
return 0;
}
- int main() {
+ typedef int (*ValidFn)(Position, Position);
+
+ unsigned long max_area(ValidFn valid) {
int i, j;
unsigned long tmp_area, max_area = 0;
for (i=0; i<COUNT; i++) {
for (j=0; j<COUNT; j++) {
tmp_area = area(tile_positions[i], tile_positions[j]);
- if (tmp_area > max_area) {
+ if (
+ tmp_area > max_area &&
+ valid(tile_positions[i], tile_positions[j])
+ ) {
max_area = tmp_area;
}
}
}
- printf("Part 1 = %ld\n", max_area);
+ return max_area;
+ }
+
+ int always_valid(Position a, Position b) {
+ return 1;
+ }
+
+ int rectangle_is_inside(Position a, Position b) {
+ return 1;
+ }
+
+ int main() {
+ printf("Part 1 = %ld\n", max_area(always_valid));
+ printf("Part 2 = %ld\n", max_area(rectangle_is_inside));
{
int x, y;
char grid[GRID_ROWS][GRID_COLS];
commit ea1c511a07948e7e87a1481184a20fcbb323108e
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 19:41:13 2025 +0100
Prepare is_inside
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index 2eae7bd..1ccd719 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -25,6 +25,10 @@ main = position*:xs !. -> {
return distance(a.x, b.x) * distance(a.y, b.y);
}
+ int is_inside(unsigned long x, unsigned long y) {
+ return 0;
+ }
+
int main() {
int i, j;
unsigned long tmp_area, max_area = 0;
@@ -38,22 +42,26 @@ main = position*:xs !. -> {
}
printf("Part 1 = %ld\n", max_area);
{
- int i, j;
+ int x, y;
char grid[GRID_ROWS][GRID_COLS];
- for (i=0; i<GRID_ROWS; i++) {
- for (j=0; j<GRID_COLS; j++) {
- grid[i][j] = '.';
+ for (y=0; y<GRID_ROWS; y++) {
+ for (x=0; x<GRID_COLS; x++) {
+ if (is_inside(x, y)) {
+ grid[y][x] = 'x';
+ } else {
+ grid[y][x] = '.';
+ }
}
}
- for (i=0; i<COUNT; i++) {
- Position tile = tile_positions[i];
+ for (y=0; y<COUNT; y++) {
+ Position tile = tile_positions[y];
if (tile.x < GRID_COLS && tile.y < GRID_ROWS) {
grid[tile.y][tile.x] = '#';
}
}
- for (i=0; i<GRID_ROWS; i++) {
- for (j=0; j<GRID_COLS; j++) {
- printf("%c", grid[i][j]);
+ for (y=0; y<GRID_ROWS; y++) {
+ for (x=0; x<GRID_COLS; x++) {
+ printf("%c", grid[y][x]);
}
printf("\n");
}
commit caa4a45b382dfcc6a4a3b066782460be9daffac3
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 18:56:13 2025 +0100
Print small grid
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
index 7b0439a..2eae7bd 100644
--- a/src/examples/aoc20259/aoc20259.meta
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -3,6 +3,9 @@ main = position*:xs !. -> {
C{
#include <stdio.h>
+ #define GRID_ROWS 9
+ #define GRID_COLS 14
+
typedef struct {
unsigned long x;
unsigned long y;
@@ -34,6 +37,27 @@ main = position*:xs !. -> {
}
}
printf("Part 1 = %ld\n", max_area);
+ {
+ int i, j;
+ char grid[GRID_ROWS][GRID_COLS];
+ for (i=0; i<GRID_ROWS; i++) {
+ for (j=0; j<GRID_COLS; j++) {
+ grid[i][j] = '.';
+ }
+ }
+ for (i=0; i<COUNT; i++) {
+ Position tile = tile_positions[i];
+ if (tile.x < GRID_COLS && tile.y < GRID_ROWS) {
+ grid[tile.y][tile.x] = '#';
+ }
+ }
+ for (i=0; i<GRID_ROWS; i++) {
+ for (j=0; j<GRID_COLS; j++) {
+ printf("%c", grid[i][j]);
+ }
+ printf("\n");
+ }
+ }
return 0;
}
}
commit 69c053b381173cfde398bdb5f802f410d8e6a11d
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 18:23:55 2025 +0100
Ignore my input
diff --git a/.gitignore b/.gitignore
index 7151be7..42c4f77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
/out
/tags
+rl.aoc2025*
commit e99dcf1b1fa238c7baf4b4990e4b503a86a272e8
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 18:23:15 2025 +0100
Day 9 part 1
diff --git a/make.sh b/make.sh
index 9de5d10..c85d644 100755
--- a/make.sh
+++ b/make.sh
@@ -19,6 +19,7 @@ main() {
example_aoc20256
example_aoc20257
example_aoc20258
+ example_aoc20259
}
dotall() {
@@ -159,6 +160,15 @@ example_aoc20258() {
out/example
}
+example_aoc20259() {
+ meta_compile src/examples/aoc20259/aoc20259.meta out/aoc20259.c
+ c_compile out/aoc20259.c out/aoc20259
+ input=example
+ out/aoc20259 <src/examples/aoc20259/$input.aoc20259 >out/$input.c
+ c_compile out/$input.c out/$input
+ out/$input
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
diff --git a/src/examples/aoc20259/aoc20259.meta b/src/examples/aoc20259/aoc20259.meta
new file mode 100644
index 0000000..7b0439a
--- /dev/null
+++ b/src/examples/aoc20259/aoc20259.meta
@@ -0,0 +1,48 @@
+main = position*:xs !. -> {
+ "#define COUNT " xs.count "\n"
+ C{
+ #include <stdio.h>
+
+ typedef struct {
+ unsigned long x;
+ unsigned long y;
+ } Position;
+
+ static Position tile_positions[COUNT] = {$xs};
+
+ unsigned long distance(unsigned long a, unsigned long b) {
+ if (a < b) {
+ return b - a + 1;
+ } else {
+ return a - b + 1;
+ }
+ }
+
+ unsigned long area(Position a, Position b) {
+ return distance(a.x, b.x) * distance(a.y, b.y);
+ }
+
+ int main() {
+ int i, j;
+ unsigned long tmp_area, max_area = 0;
+ for (i=0; i<COUNT; i++) {
+ for (j=0; j<COUNT; j++) {
+ tmp_area = area(tile_positions[i], tile_positions[j]);
+ if (tmp_area > max_area) {
+ max_area = tmp_area;
+ }
+ }
+ }
+ printf("Part 1 = %ld\n", max_area);
+ return 0;
+ }
+ }
+};
+
+position = number:x ',' number:y '\n' -> {C{
+ {$x, $y},
+}};
+
+number = digit digit*;
+
+digit = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'0';
diff --git a/src/examples/aoc20259/example.aoc20259 b/src/examples/aoc20259/example.aoc20259
new file mode 100644
index 0000000..c8563ea
--- /dev/null
+++ b/src/examples/aoc20259/example.aoc20259
@@ -0,0 +1,8 @@
+7,1
+11,1
+11,7
+9,7
+9,5
+2,5
+2,3
+7,3
commit 1c9997d88d11fcf52e19b1d8647e58bcde0762fa
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 18:09:14 2025 +0100
Clean up and run only example
diff --git a/make.sh b/make.sh
index c8cc1bd..9de5d10 100755
--- a/make.sh
+++ b/make.sh
@@ -154,12 +154,9 @@ example_aoc20257() {
example_aoc20258() {
meta_compile src/examples/aoc20258/aoc20258.meta out/aoc20258.c
c_compile out/aoc20258.c out/aoc20258
- #out/aoc20258 <src/examples/aoc20258/example.aoc20258 >out/example.c
- #c_compile out/example.c out/example
- #out/example
- out/aoc20258 <src/examples/aoc20258/rl.aoc20258 >out/rl.c
- c_compile out/rl.c out/rl
- out/rl
+ out/aoc20258 <src/examples/aoc20258/example.aoc20258 >out/example.c
+ c_compile out/example.c out/example
+ out/example
}
example() {
diff --git a/src/examples/aoc20258/aoc20258.meta b/src/examples/aoc20258/aoc20258.meta
index e44eeed..91fd6e5 100644
--- a/src/examples/aoc20258/aoc20258.meta
+++ b/src/examples/aoc20258/aoc20258.meta
@@ -99,7 +99,6 @@ main = coordinate*:xs !. -> {
count++;
}
}
- printf("count = %d\n", count);
return count;
}
@@ -120,7 +119,7 @@ main = coordinate*:xs !. -> {
int i;
unsigned long x_product;
calculate_distances();
- for (i=0; i<1000; i++) {
+ for (i=0; i<10; i++) {
connect_closest();
}
calculate_circuits();
diff --git a/src/examples/aoc20258/rl.aoc20258 b/src/examples/aoc20258/rl.aoc20258
deleted file mode 100644
index e5da187..0000000
--- a/src/examples/aoc20258/rl.aoc20258
+++ /dev/null
@@ -1,1000 +0,0 @@
-93129,47506,29270
-94426,54960,55561
-37055,50004,72750
-80425,87410,25713
-92115,74827,88953
-96447,57989,5019
-19743,80900,23804
-16068,69163,58323
-4284,94214,85604
-21620,35382,61507
-42510,66823,18202
-17984,86199,46904
-50272,74570,55528
-86438,42653,59774
-9466,49730,97844
-956,77740,29407
-77341,68599,70943
-15289,22320,73603
-79327,68393,43029
-43455,28588,55417
-55982,95224,91318
-52005,259,20253
-14809,44821,89854
-97155,80132,13067
-75836,33112,59961
-49042,75445,76508
-69512,47913,33690
-51668,78109,11538
-82343,94953,59850
-36486,50647,53933
-48091,97843,18124
-81928,27360,67635
-22207,80299,50723
-78446,89424,22679
-33754,31795,28586
-28421,16480,68848
-46026,27246,40801
-44068,37090,91019
-97020,35195,3382
-70371,3577,64761
-3313,9033,98681
-16967,83292,64269
-11214,91556,60697
-11098,6352,14364
-47277,76285,54604
-7723,55677,36998
-82135,37388,22670
-31732,26803,84201
-93918,97486,44769
-16014,37605,48474
-3724,49851,12109
-5833,22968,26443
-87782,34392,10303
-63806,79277,27438
-28718,97131,55260
-41353,50390,46637
-61830,33061,14985
-20047,87521,10133
-67441,52872,57266
-8460,66378,7622
-23677,59517,7453
-96480,12964,68660
-21044,3885,23884
-69812,75617,72999
-98501,48631,37365
-79465,17954,86080
-13804,57271,92620
-93749,14,14474
-39585,19653,77255
-94128,79262,53291
-6499,713,53786
-57797,55787,40866
-21034,88031,87522
-75233,16780,914
-67269,64970,92993
-39117,92337,30930
-30056,34224,49348
-48332,14838,69510
-13704,36720,63216
-6618,89116,41
-15369,81602,36180
-39746,23880,33211
-59840,33869,99542
-34989,66134,15155
-47145,60106,78867
-23687,65459,36960
-42245,75151,61969
-29961,61483,10285
-36307,54880,31175
-48389,67326,65183
-21770,96487,30620
-4464,84721,93164
-17106,41941,63384
-33919,93073,825
-71913,13452,69446
-62608,10733,74426
-47651,20231,2404
-5540,3588,46906
-54110,31913,15149
-9653,25911,74806
-45284,52707,21211
-76223,57814,98481
-26603,27126,70448
-6293,41740,59703
-75310,12193,30960
-57483,75947,68878
-41928,59218,78293
-61281,13052,29535
-16294,91265,91368
-1640,8508,80442
-12056,64196,5518
-11739,25885,29199
-57663,22769,73489
-32757,74577,33662
-86997,52619,61243
-71623,87777,80610
-56416,78689,51129
-34553,7955,18915
-27648,91359,43149
-49123,69780,43613
-10720,72632,79295
-37886,22832,48666
-5715,20155,30892
-98799,21322,56914
-56892,4652,29567
-98996,33811,73409
-30192,26649,3536
-6833,36316,41354
-80873,18440,81247
-23292,27297,27883
-51705,38558,30949
-22720,70313,81518
-60411,18994,24958
-63477,32290,3172
-2476,86465,97775
-80324,46050,62082
-35010,44900,81846
-80343,14020,90477
-83291,97217,43738
-69617,88950,75458
-88565,41836,10135
-79398,60258,21046
-50825,27279,12544
-69269,78894,45318
-36722,23240,93002
-36087,30044,78600
-3452,73789,71450
-63180,12276,13852
-35426,78156,33032
-60920,31419,72501
-24438,74131,8271
-91879,34810,11637
-78151,34918,22192
-77144,18034,85640
-54337,42988,7082
-25655,24957,89573
-71607,69787,89706
-36217,84367,97130
-14558,99251,8681
-50402,97866,19186
-79659,61163,28577
-58552,72223,89371
-49670,8508,48554
-82129,26610,17140
-94327,99061,63975
-91603,14212,87784
-53785,44665,41327
-41260,80542,82930
-34084,24896,546
-37056,56298,22020
-76479,45723,14708
-35316,98107,46266
-21945,74128,91625
-30888,55257,4856
-94883,72621,42334
-97136,4542,48011
-58763,42032,30808
-11393,8081,81275
-92671,50010,48925
-76728,63673,50752
-66310,76003,17747
-82530,69917,29820
-4414,76972,64079
-76556,660,21983
-26810,93956,86765
-54559,71955,92603
-88812,1969,45016
-83034,30774,13935
-23027,31934,73304
-6865,88593,53234
-59340,97344,21892
-79086,83394,93457
-79284,72084,92358
-84889,88011,73936
-71265,86768,865
-13657,73891,46856
-98320,98460,1433
-84596,56655,87765
-84488,45991,85076
-61267,75997,96810
-71986,68995,52884
-43928,26699,28940
-59493,40045,97952
-77362,9212,49641
-41688,90837,15200
-6207,77976,76624
-15276,84659,58713
-59731,28568,24097
-84489,98519,66527
-29673,89560,4490
-72822,37418,19474
-71602,85112,60261
-75899,83010,66771
-29617,99662,31925
-13649,75647,15642
-93677,85571,36221
-14859,19440,75396
-73711,215,91869
-11392,98728,56135
-18787,88026,27910
-10114,24366,52874
-30617,59629,86056
-5432,77370,22914
-18991,19764,85650
-1158,14144,14824
-50044,85217,29420
-12260,41439,7083
-28449,34855,693
-88040,75809,73388
-37062,17644,72021
-44546,60369,63744
-40738,57097,32580
-50409,34580,22543
-62159,91860,76944
-84785,90402,63540
-3442,91532,29109
-61005,58416,98656
-13705,11244,66014
-43614,84601,84587
-59649,71498,15484
-17092,73303,69014
-72891,9124,79182
-99440,33358,64791
-81804,22718,58033
-85694,33058,86735
-49807,20583,27158
-41439,3203,97469
-31388,29738,25348
-56568,47152,66814
-19137,49177,16983
-21078,2984,40111
-63884,39757,10446
-28065,88810,24352
-96292,90861,55357
-5656,41551,40061
-55042,14724,30637
-83996,95286,10395
-90237,9789,60542
-41464,67231,95977
-16565,73165,56095
-8509,11868,44701
-3192,47385,58626
-93591,43595,40215
-79212,50580,7184
-96352,91838,87916
-45075,72843,89172
-76533,19927,75642
-73110,51823,7644
-48897,34839,1508
-21549,46612,76058
-15922,79796,47809
-20433,94775,43691
-64092,56335,94008
-98483,947,26538
-51329,83233,7647
-58180,23930,95453
-79419,28964,51905
-56670,36707,41729
-66193,72868,84720
-29392,51311,19403
-69797,12351,56433
-22508,72691,59132
-99997,62594,71301
-62979,4433,40329
-32449,98717,20720
-91745,53214,98408
-94589,18709,23621
-15498,94654,85776
-63823,96476,70560
-82377,47629,59010
-59470,33137,40471
-75279,80269,70898
-91711,69630,85629
-42380,49321,77799
-16553,60444,38026
-49830,76593,28600
-21521,55787,13415
-60739,74389,19378
-33612,84293,22149
-33224,48195,19180
-78083,25886,36446
-53443,56059,56388
-55930,13501,69633
-10340,17608,41007
-23008,92315,83740
-16765,49601,33602
-49635,6485,83380
-20356,300,74049
-38145,54333,22395
-9896,85392,72578
-28284,38867,34486
-11411,60605,1226
-34807,17914,86130
-79189,1392,4589
-20477,70277,59016
-52214,9538,77892
-58415,86054,8831
-2898,28761,51856
-72838,20480,36849
-72464,88010,21645
-52803,71973,45713
-84163,9238,62151
-65591,24237,53564
-22152,1662,16680
-56764,95434,19152
-71480,65014,32138
-41229,20663,78938
-27292,73249,17915
-68045,28053,5223
-39964,81779,91119
-28276,23004,93100
-75643,30923,78000
-2999,19945,39020
-28478,75020,11231
-47830,65035,45737
-57119,54513,38294
-40842,73351,18492
-31217,95976,32418
-60152,91720,47745
-68442,4727,35295
-92997,1424,8080
-77126,65368,52496
-79849,45097,7143
-46153,82502,94360
-14396,87257,13484
-65194,54588,13159
-22824,36956,31629
-34313,27117,59598
-44985,21615,19434
-31909,30669,83348
-55760,22914,14532
-8439,4466,44409
-66893,71871,53935
-12065,44430,90045
-83002,27642,95582
-42867,52602,62515
-2658,11084,88975
-73693,32863,4126
-7817,77856,75587
-19341,4389,543
-90539,98418,81512
-99702,75249,52973
-50538,92306,57964
-67193,60227,36021
-17870,51325,45514
-95119,46746,92156
-48476,50331,69832
-3808,23568,59430
-97412,28886,70108
-91676,48292,32681
-28808,10986,71065
-4503,73157,75806
-45447,65023,28211
-27419,13617,37507
-61545,11720,17795
-86801,37073,95091
-85367,52014,70457
-4524,44730,87649
-13810,21747,94501
-919,61272,55516
-14415,98836,60399
-84497,59472,82921
-36652,23463,39129
-98859,59766,99834
-52338,36915,66733
-7206,37131,11194
-92091,12586,42752
-23832,73295,59113
-43585,46984,98254
-14115,70638,60901
-40390,41263,29207
-51755,543,16592
-24478,56135,7108
-91844,12003,99755
-48258,29752,91721
-1899,50986,77968
-44878,42087,29029
-9354,77982,25615
-89042,72864,49843
-55543,75356,72393
-62496,62889,7466
-10402,48181,57896
-367,3165,68725
-13789,80735,37927
-5166,52353,16734
-6352,81072,66528
-56256,9629,67788
-39013,28382,98627
-31327,24481,61544
-36902,24447,84351
-35859,68593,11749
-52215,37614,39703
-56644,71144,63158
-76387,45667,64162
-14376,23367,84503
-60674,96283,8948
-60974,15570,21736
-39129,30253,86689
-22005,54648,67103
-19549,73506,73352
-36843,66304,69015
-11903,31857,6295
-70340,50428,82434
-56860,83098,359
-90907,61000,42602
-27389,25786,9762
-12926,397,99795
-25478,94422,4446
-2384,72386,43764
-6950,55990,25214
-16135,74988,66671
-67387,92630,46984
-76811,88313,3887
-91042,41855,35070
-70327,76532,17990
-55740,62404,25703
-95472,58977,23313
-42775,57164,43283
-69755,72811,6305
-7441,91513,69422
-46802,4827,51363
-35905,26176,14538
-56932,99532,61823
-63805,44663,23453
-68819,92800,12332
-8907,28643,25123
-35452,85425,77212
-16926,49269,85321
-24382,53361,12336
-97461,30649,42904
-50401,54127,77702
-4743,16649,23194
-53307,30140,72274
-19101,85976,30127
-61757,62753,77193
-15549,21674,78973
-87480,24206,57930
-26019,94052,48027
-61154,74645,91805
-82107,6726,52886
-3247,29342,27505
-19886,76883,38783
-22354,39647,25534
-23171,10666,69191
-6821,8817,96514
-20494,6345,87900
-20030,80442,11150
-14751,47960,96249
-76352,60728,60058
-37198,93164,90487
-88317,98605,72032
-70763,47791,5637
-2694,73070,91701
-27468,44351,86978
-31125,14611,16934
-50850,77207,1456
-99890,13276,8576
-63725,21937,19018
-595,17161,25393
-27353,8819,84017
-76850,4487,4291
-21458,44140,22698
-61411,98545,73214
-61265,93310,63002
-40500,53705,78868
-56095,72418,4776
-88774,3953,67654
-2832,74684,40185
-15824,48942,60391
-41057,22698,85596
-61876,87727,54140
-33447,54640,6403
-33214,84405,12315
-86897,35299,80186
-16309,92484,49884
-55350,8323,62195
-23370,97755,47639
-73639,80821,83494
-84963,96157,94997
-60700,61562,76508
-35050,71655,43947
-81814,74391,26299
-63289,85840,64914
-35240,18201,47741
-23057,15827,38021
-58795,10191,41470
-79962,48432,96284
-79486,31611,60839
-50298,75134,14616
-66727,14818,84668
-85709,29372,65218
-35004,27530,32155
-77175,15678,29271
-17447,90628,65138
-11791,19304,55791
-49756,34245,69241
-28219,3530,80986
-53712,78426,79012
-14861,31388,38276
-86885,63124,19280
-95228,80779,87128
-9821,98378,84808
-59239,30828,71372
-99933,7999,40525
-59388,49260,93428
-8178,25398,95916
-82090,54347,67902
-55878,19810,64018
-54147,24434,57972
-80990,52997,82596
-6275,96816,46629
-69251,35695,55398
-94251,17979,84966
-62174,91215,13032
-72605,60872,97982
-16768,45021,81260
-23208,37810,5410
-67658,9046,23380
-44394,33353,43155
-75499,3078,3099
-76725,65437,34498
-71029,60200,86729
-27334,20081,74928
-78868,23873,91133
-79291,32347,5370
-14159,49285,63737
-55285,92467,56285
-16072,12803,76572
-26754,85677,34397
-51961,90745,19096
-24068,60297,76917
-31630,27544,55147
-12675,17802,12057
-79361,58406,605
-41204,23842,46490
-74340,69209,57828
-18773,60227,6348
-94214,3187,16441
-78192,94171,41575
-28099,17156,11806
-59974,77623,81880
-9210,50596,43332
-15482,26550,35573
-51913,89583,1347
-87833,78072,69936
-90496,58911,28137
-9266,41511,79256
-1467,71649,83656
-59157,8111,13989
-2079,90334,49206
-57502,19318,75792
-80264,34865,28923
-51936,70652,76035
-9140,98878,15668
-22543,33864,6448
-22524,31256,486
-1721,76983,34555
-5951,83809,53205
-75199,33698,20799
-82487,86828,14333
-67683,74979,71391
-5411,71128,47138
-54231,2920,53037
-52818,18232,65485
-59178,30522,17250
-57598,28217,47844
-3853,19784,69964
-57604,29704,60450
-36901,41188,62138
-58766,60174,42320
-25887,32265,88343
-29648,13377,82756
-84928,36356,94570
-4532,87915,28466
-2396,48728,22250
-45870,22058,55226
-54197,38444,92057
-20614,36330,7450
-46761,88833,73733
-34777,30644,65355
-38378,91234,73772
-87900,328,62145
-3955,69455,35909
-29688,85093,46458
-64256,70102,97516
-93294,46584,84574
-48801,42800,53374
-45863,49823,27087
-33916,97781,74715
-75156,37327,8552
-73650,30004,93413
-37240,35284,34418
-45214,5681,26732
-82122,70503,50967
-77633,68602,91143
-2471,41546,78772
-39837,76426,84639
-61392,90828,87641
-66911,3327,10503
-26536,95028,90938
-5984,58355,15097
-37053,43977,45337
-56374,36347,41689
-30288,37963,61225
-49066,17452,66182
-16231,13352,42764
-13572,68878,48671
-97175,15751,76146
-94567,93399,10702
-31449,96890,95447
-89066,89952,54909
-41892,12906,58982
-61795,25883,84746
-3849,97559,68416
-26016,51676,79164
-64725,22861,31268
-10703,58470,63391
-65241,25502,23753
-70456,1816,53731
-13098,1785,2877
-54890,70078,69689
-78080,9567,51087
-27313,2643,93524
-52263,80717,80430
-47765,78018,45848
-10554,88208,8261
-57817,1782,59611
-46002,15016,16976
-60690,37457,61704
-51867,45998,17462
-66055,86687,28371
-16452,73590,43661
-61667,76517,22934
-31463,13764,26180
-17274,23386,45253
-2304,93405,58096
-80003,36616,14374
-49940,93589,30012
-2101,74510,97787
-64528,94816,49581
-70839,77457,59297
-51895,70304,79609
-59761,7360,78306
-7693,10640,21814
-17045,84818,47387
-8058,49119,31451
-92901,33776,44805
-37849,83312,6298
-73509,27150,28768
-10986,14783,12414
-6872,87976,5041
-70733,29668,19807
-48344,20372,52097
-83361,45864,22799
-39821,11946,851
-28726,27965,5926
-60005,16269,46993
-7441,72899,9123
-86298,20401,17642
-24277,5810,61236
-21375,51741,87723
-88568,30488,65007
-68057,96462,78903
-60292,76145,1905
-98664,17882,91039
-93509,89634,20376
-50446,86527,52774
-83810,99843,95545
-21698,99521,78447
-57731,41445,21129
-12290,28348,22254
-93998,32670,8950
-84221,28406,96360
-35150,39759,84829
-39987,43124,82414
-25494,19079,95654
-93210,56438,4948
-63081,32452,86340
-57137,87440,32535
-7795,96401,14908
-76759,49206,80748
-16768,43617,78998
-11168,54713,9272
-32240,2393,72788
-96374,11703,46093
-92837,89568,42700
-31366,63888,54638
-46815,23827,82922
-67345,29594,83020
-84516,18516,79153
-42411,73513,60729
-7152,56631,87882
-60058,33646,95496
-75511,26379,46063
-6417,29071,6842
-18402,88002,85277
-30055,98510,93743
-79651,497,93041
-80648,83851,32649
-55801,12577,1259
-27618,15396,39813
-76964,78598,32400
-87333,92700,19039
-19996,65372,75409
-23730,80832,52568
-92801,40095,37759
-18521,40787,67802
-68173,37309,29499
-49306,87829,73951
-37805,63348,86759
-93330,54641,85802
-59759,76422,41006
-56890,29260,26333
-93484,56855,57038
-90344,41185,81237
-31384,11689,68049
-36051,91449,92914
-84732,58234,74297
-2347,24315,49910
-1785,76201,57771
-90233,43189,65471
-4649,26162,20197
-91705,96167,15502
-58458,16507,58917
-464,24762,92062
-62386,77894,31642
-54633,80401,29933
-97802,98911,80626
-14318,49460,41953
-85939,41745,56114
-53374,62801,94900
-56267,10249,33656
-52864,31404,86155
-89661,60213,87693
-23772,86162,33080
-57131,77971,33720
-87505,6441,74301
-82324,47653,61373
-67835,23625,83646
-4921,35564,76459
-8150,74402,6656
-53246,46299,68865
-58126,40271,80481
-34419,46682,32982
-56830,41015,42998
-99881,47677,15156
-3522,65635,68557
-84674,92423,97984
-1596,5079,26758
-4726,32159,23167
-99746,29446,42545
-39460,67661,19192
-56426,23117,6709
-97623,98719,23815
-38029,45200,36981
-97034,26186,78199
-38367,90023,12896
-53111,98231,23779
-1117,57505,36786
-94926,41665,95673
-84497,24284,46262
-33149,77521,5254
-97168,32106,5154
-84302,98425,26112
-12533,12454,10192
-41979,85540,85959
-82907,55622,79675
-86324,8247,52654
-555,95532,89208
-70701,77451,7313
-1643,4565,71007
-56161,37391,15647
-26804,13915,37367
-69676,84206,51075
-7992,30599,7629
-63829,71861,20270
-59703,35459,3016
-52917,43715,35347
-97460,17492,18697
-83193,3321,90242
-23974,88902,94071
-52156,31377,58516
-88522,81943,90119
-67821,67621,23862
-10274,2010,89619
-52064,91365,41983
-79880,88731,89693
-15359,51619,83935
-5233,88446,70422
-40969,81397,39963
-93725,14288,50227
-59081,20841,18880
-53025,70944,6769
-13755,42140,57261
-28475,34011,83709
-59038,29000,94714
-93839,11117,31159
-86317,89389,84561
-40507,53808,58156
-13548,58774,94959
-78561,51315,4998
-5583,12554,97510
-93656,44296,56861
-51967,57689,3842
-85105,1512,35558
-60086,51940,91706
-78954,16387,46712
-47594,78462,33464
-94388,55650,40898
-3413,91213,87893
-91692,19169,41913
-6806,55111,74881
-30300,21372,14530
-84545,19523,18427
-23225,39013,66598
-59238,42519,26215
-99745,15599,13194
-73770,66169,12143
-28845,89919,20848
-39582,38920,50960
-16475,37197,3679
-29677,32693,192
-94014,68320,75067
-19333,43237,55592
-95828,85096,34360
-74290,68220,97907
-40661,94360,52454
-89161,26104,15247
-55866,26554,79393
-26825,34119,11833
-75800,95573,39449
-71917,86361,72934
-70306,46022,37666
-17260,52695,15247
-47083,65988,14525
-48105,49227,57556
-41788,19707,97711
-95304,10054,35346
-81145,50795,11084
-65862,70071,99248
-63587,83237,37920
-54891,59034,7953
-98512,64157,65753
-77780,45969,13407
-81556,58794,57017
-76360,31637,29027
-93747,31037,33532
-76099,89777,55163
-19526,24220,27690
-22240,19409,89940
-29783,70839,90171
-79673,71952,55899
-36329,67585,42531
-12429,19899,60052
-86489,87241,97773
-70935,67101,21955
-79263,37662,47524
-57387,2422,9034
-13414,15109,45379
-34647,83333,43640
-31017,5942,59083
-74876,38930,8657
-65071,58603,98584
-84645,90161,50462
-19125,1632,42268
-49814,83236,47031
-34057,80213,40305
-96049,55731,95852
-24752,24987,40065
-84364,72406,13321
-56754,29695,36218
-88353,73171,41052
-45638,245,21694
-196,67381,82865
-27619,23754,63833
-76225,46773,69849
-26680,19930,40720
-41003,59772,69011
-78611,56990,63202
-91303,6636,19809
-54851,54912,46113
-48490,89011,66066
-85623,50527,10055
-57658,24152,78577
-1566,56259,79424
-81226,1189,82627
-7779,91244,92251
-32600,60896,98760
-62180,68906,29188
-20519,31014,64649
-41540,10556,11215
-43689,33280,18116
-11722,87418,86709
-11746,58299,29702
-46274,75823,70962
-58248,19653,89181
-34335,30242,79730
-2216,73529,99474
-64986,96369,26430
-30989,48375,91119
-91557,44829,69825
-31527,51912,12911
-44294,62697,91088
-20442,6491,64723
-54408,66396,2325
-67104,79762,94975
-4594,89447,59340
-33163,11911,15397
-62439,27640,82226
-19006,83320,79549
-79200,42664,97693
-27694,46134,8743
-52192,22465,19830
-14366,47502,14545
-8930,61396,45826
-87585,67641,58375
-64827,33655,27774
-64760,54304,78297
-17459,42508,69411
-40214,3422,18368
-99736,73445,81113
-20078,20748,9888
-91116,29035,50710
-52121,25050,34526
-9068,73958,65567
-93890,32269,64526
-75139,8240,50042
-4763,51039,43909
-13298,29362,19731
-40370,87053,96594
-74630,90966,35339
-40271,15515,3803
-7109,32096,6500
-2412,62403,52039
-44586,8775,65971
-77301,36277,63525
-26212,54815,58133
-54772,93202,90065
-95329,24058,24487
-19844,8424,22481
-70450,50307,63922
-44295,9494,74873
-56172,32263,21563
-41646,38321,67177
-78052,88415,26045
-6093,2256,57262
-44271,1496,13331
-64890,223,29834
-1243,61133,27474
-12649,90476,65510
-36913,16649,61265
-38153,49485,76660
-57646,27523,54529
-97648,66947,71528
-46335,84153,3888
-76772,53203,8192
-61537,48373,71860
-30883,96625,59518
-57611,13848,26091
-81035,83803,43588
-78483,16859,46009
-71367,63638,51633
-23829,27093,61612
-53099,90329,8189
-21346,25942,50796
-93321,50101,7320
-3845,91414,18399
-97868,55142,72200
-46442,90648,86235
-76370,32059,73477
-32431,25861,78088
-54680,57702,18893
-63648,35627,67846
-8060,86158,80161
-72221,98773,51273
-5185,6113,18812
-2752,11445,93492
-58386,47749,572
-15674,57768,67266
-62012,4430,96603
commit 72c92ce036e2c29ecfc5e1db521ef901e8e168d1
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 18:03:08 2025 +0100
Part 2
diff --git a/make.sh b/make.sh
index 93f477a..c8cc1bd 100755
--- a/make.sh
+++ b/make.sh
@@ -154,9 +154,9 @@ example_aoc20257() {
example_aoc20258() {
meta_compile src/examples/aoc20258/aoc20258.meta out/aoc20258.c
c_compile out/aoc20258.c out/aoc20258
- out/aoc20258 <src/examples/aoc20258/example.aoc20258 >out/example.c
- c_compile out/example.c out/example
- out/example
+ #out/aoc20258 <src/examples/aoc20258/example.aoc20258 >out/example.c
+ #c_compile out/example.c out/example
+ #out/example
out/aoc20258 <src/examples/aoc20258/rl.aoc20258 >out/rl.c
c_compile out/rl.c out/rl
out/rl
diff --git a/src/examples/aoc20258/aoc20258.meta b/src/examples/aoc20258/aoc20258.meta
index 9f9fa75..e44eeed 100644
--- a/src/examples/aoc20258/aoc20258.meta
+++ b/src/examples/aoc20258/aoc20258.meta
@@ -2,6 +2,7 @@ main = coordinate*:xs !. -> {
"#define COUNT " xs.count "\n"
C{
#include <stdio.h>
+ #include <stdlib.h>
typedef struct {
unsigned long x;
@@ -38,14 +39,14 @@ main = coordinate*:xs !. -> {
}
}
- void connect_closest() {
+ unsigned long connect_closest() {
int i, j;
int min_i, min_j;
unsigned int min;
int hit = 0;
for (i=0; i<COUNT; i++) {
for (j=0; j<COUNT; j++) {
- if (i < j && !connected[i][j] && (!hit || distances[i][j] < min)) {
+ if (i < j && !connected[i][j] && (!hit || distances[i][j] <= min)) {
min_i = i;
min_j = j;
min = distances[i][j];
@@ -53,8 +54,13 @@ main = coordinate*:xs !. -> {
}
}
}
+ if (!hit) {
+ printf("no small found\n");
+ exit(1);
+ }
connected[min_i][min_j] = 1;
connected[min_j][min_i] = 1;
+ return points[min_i].x * points[min_j].x;
}
unsigned long calculate_circuit(int i) {
@@ -75,11 +81,28 @@ main = coordinate*:xs !. -> {
void calculate_circuits() {
int i;
+ for (i=0; i<COUNT; i++) {
+ circuits[i] = 0;
+ visited[i] = 0;
+ }
for (i=0; i<COUNT; i++) {
circuits[i] = calculate_circuit(i);
}
}
+ int count_circuits() {
+ int i;
+ int count = 0;
+ calculate_circuits();
+ for (i=0; i<COUNT; i++) {
+ if (circuits[i]) {
+ count++;
+ }
+ }
+ printf("count = %d\n", count);
+ return count;
+ }
+
unsigned long pop_largest_curcuit() {
int i, largest_i = 0;
unsigned long largest = 0;
@@ -95,12 +118,17 @@ main = coordinate*:xs !. -> {
int main() {
int i;
+ unsigned long x_product;
calculate_distances();
for (i=0; i<1000; i++) {
connect_closest();
}
calculate_circuits();
printf("Part 1 = %ld\n", pop_largest_curcuit()*pop_largest_curcuit()*pop_largest_curcuit());
+ while (count_circuits() > 1) {
+ x_product = connect_closest();
+ }
+ printf("Part 2 = %ld\n", x_product);
return 0;
}
}
commit 4cae8b897c198b663da8a5e25b1f4743b94a24c7
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 17:45:27 2025 +0100
Clean up
diff --git a/src/examples/aoc20258/aoc20258.meta b/src/examples/aoc20258/aoc20258.meta
index f293594..9f9fa75 100644
--- a/src/examples/aoc20258/aoc20258.meta
+++ b/src/examples/aoc20258/aoc20258.meta
@@ -100,25 +100,6 @@ main = coordinate*:xs !. -> {
connect_closest();
}
calculate_circuits();
- {
- int i, j;
- for (i=0; i<COUNT; i++) {
- for (j=0; j<COUNT; j++) {
- if (connected[i][j]) {
- printf("x");
- } else {
- printf(".");
- }
- }
- printf("\n");
- }
- }
- {
- int i;
- for (i=0; i<COUNT; i++) {
- printf("circuit[%d] = %ld\n", i, circuits[i]);
- }
- }
printf("Part 1 = %ld\n", pop_largest_curcuit()*pop_largest_curcuit()*pop_largest_curcuit());
return 0;
}
commit ff804a80898d94e7268dc1c9935e575985e8aadc
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 17:43:18 2025 +0100
Day 8 part 1
diff --git a/make.sh b/make.sh
index 5a380af..93f477a 100755
--- a/make.sh
+++ b/make.sh
@@ -18,6 +18,7 @@ main() {
example_aoc20255
example_aoc20256
example_aoc20257
+ example_aoc20258
}
dotall() {
@@ -150,6 +151,17 @@ example_aoc20257() {
out/rl
}
+example_aoc20258() {
+ meta_compile src/examples/aoc20258/aoc20258.meta out/aoc20258.c
+ c_compile out/aoc20258.c out/aoc20258
+ out/aoc20258 <src/examples/aoc20258/example.aoc20258 >out/example.c
+ c_compile out/example.c out/example
+ out/example
+ out/aoc20258 <src/examples/aoc20258/rl.aoc20258 >out/rl.c
+ c_compile out/rl.c out/rl
+ out/rl
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
diff --git a/src/examples/aoc20258/aoc20258.meta b/src/examples/aoc20258/aoc20258.meta
new file mode 100644
index 0000000..f293594
--- /dev/null
+++ b/src/examples/aoc20258/aoc20258.meta
@@ -0,0 +1,134 @@
+main = coordinate*:xs !. -> {
+ "#define COUNT " xs.count "\n"
+ C{
+ #include <stdio.h>
+
+ typedef struct {
+ unsigned long x;
+ unsigned long y;
+ unsigned long z;
+ } Point;
+
+ static Point points[COUNT] = {
+ $xs
+ };
+ static unsigned long distances[COUNT][COUNT];
+ static unsigned char connected[COUNT][COUNT];
+ static unsigned long circuits[COUNT];
+ static unsigned char visited[COUNT];
+
+ unsigned long distance2(unsigned long a, unsigned long b) {
+ return (unsigned long)((long)(a-b)*(a-b));
+ }
+
+ unsigned long point_distance2(Point a, Point b) {
+ return (
+ distance2(a.x, b.x) +
+ distance2(a.y, b.y) +
+ distance2(a.z, b.z)
+ );
+ }
+
+ void calculate_distances() {
+ int i, j;
+ for (i=0; i<COUNT; i++) {
+ for (j=0; j<COUNT; j++) {
+ distances[i][j] = point_distance2(points[i], points[j]);
+ }
+ }
+ }
+
+ void connect_closest() {
+ int i, j;
+ int min_i, min_j;
+ unsigned int min;
+ int hit = 0;
+ for (i=0; i<COUNT; i++) {
+ for (j=0; j<COUNT; j++) {
+ if (i < j && !connected[i][j] && (!hit || distances[i][j] < min)) {
+ min_i = i;
+ min_j = j;
+ min = distances[i][j];
+ hit = 1;
+ }
+ }
+ }
+ connected[min_i][min_j] = 1;
+ connected[min_j][min_i] = 1;
+ }
+
+ unsigned long calculate_circuit(int i) {
+ if (visited[i]) {
+ return 0;
+ } else {
+ int j;
+ unsigned long result = 1;
+ visited[i] = 1;
+ for (j=0; j<COUNT; j++) {
+ if (connected[i][j]) {
+ result += calculate_circuit(j);
+ }
+ }
+ return result;
+ }
+ }
+
+ void calculate_circuits() {
+ int i;
+ for (i=0; i<COUNT; i++) {
+ circuits[i] = calculate_circuit(i);
+ }
+ }
+
+ unsigned long pop_largest_curcuit() {
+ int i, largest_i = 0;
+ unsigned long largest = 0;
+ for (i=0; i<COUNT; i++) {
+ if (circuits[i] > largest) {
+ largest = circuits[i];
+ largest_i = i;
+ }
+ }
+ circuits[largest_i] = 0;
+ return largest;
+ }
+
+ int main() {
+ int i;
+ calculate_distances();
+ for (i=0; i<1000; i++) {
+ connect_closest();
+ }
+ calculate_circuits();
+ {
+ int i, j;
+ for (i=0; i<COUNT; i++) {
+ for (j=0; j<COUNT; j++) {
+ if (connected[i][j]) {
+ printf("x");
+ } else {
+ printf(".");
+ }
+ }
+ printf("\n");
+ }
+ }
+ {
+ int i;
+ for (i=0; i<COUNT; i++) {
+ printf("circuit[%d] = %ld\n", i, circuits[i]);
+ }
+ }
+ printf("Part 1 = %ld\n", pop_largest_curcuit()*pop_largest_curcuit()*pop_largest_curcuit());
+ return 0;
+ }
+ }
+};
+
+coordinate = number:x ',' number:y ',' number:z '\n' -> {C{
+ {$x, $y, $z},
+}};
+
+number = digit digit*;
+
+digit = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
diff --git a/src/examples/aoc20258/example.aoc20258 b/src/examples/aoc20258/example.aoc20258
new file mode 100644
index 0000000..e98a3b6
--- /dev/null
+++ b/src/examples/aoc20258/example.aoc20258
@@ -0,0 +1,20 @@
+162,817,812
+57,618,57
+906,360,560
+592,479,940
+352,342,300
+466,668,158
+542,29,236
+431,825,988
+739,650,466
+52,470,668
+216,146,977
+819,987,18
+117,168,530
+805,96,715
+346,949,466
+970,615,88
+941,993,340
+862,61,35
+984,92,344
+425,690,689
diff --git a/src/examples/aoc20258/rl.aoc20258 b/src/examples/aoc20258/rl.aoc20258
new file mode 100644
index 0000000..e5da187
--- /dev/null
+++ b/src/examples/aoc20258/rl.aoc20258
@@ -0,0 +1,1000 @@
+93129,47506,29270
+94426,54960,55561
+37055,50004,72750
+80425,87410,25713
+92115,74827,88953
+96447,57989,5019
+19743,80900,23804
+16068,69163,58323
+4284,94214,85604
+21620,35382,61507
+42510,66823,18202
+17984,86199,46904
+50272,74570,55528
+86438,42653,59774
+9466,49730,97844
+956,77740,29407
+77341,68599,70943
+15289,22320,73603
+79327,68393,43029
+43455,28588,55417
+55982,95224,91318
+52005,259,20253
+14809,44821,89854
+97155,80132,13067
+75836,33112,59961
+49042,75445,76508
+69512,47913,33690
+51668,78109,11538
+82343,94953,59850
+36486,50647,53933
+48091,97843,18124
+81928,27360,67635
+22207,80299,50723
+78446,89424,22679
+33754,31795,28586
+28421,16480,68848
+46026,27246,40801
+44068,37090,91019
+97020,35195,3382
+70371,3577,64761
+3313,9033,98681
+16967,83292,64269
+11214,91556,60697
+11098,6352,14364
+47277,76285,54604
+7723,55677,36998
+82135,37388,22670
+31732,26803,84201
+93918,97486,44769
+16014,37605,48474
+3724,49851,12109
+5833,22968,26443
+87782,34392,10303
+63806,79277,27438
+28718,97131,55260
+41353,50390,46637
+61830,33061,14985
+20047,87521,10133
+67441,52872,57266
+8460,66378,7622
+23677,59517,7453
+96480,12964,68660
+21044,3885,23884
+69812,75617,72999
+98501,48631,37365
+79465,17954,86080
+13804,57271,92620
+93749,14,14474
+39585,19653,77255
+94128,79262,53291
+6499,713,53786
+57797,55787,40866
+21034,88031,87522
+75233,16780,914
+67269,64970,92993
+39117,92337,30930
+30056,34224,49348
+48332,14838,69510
+13704,36720,63216
+6618,89116,41
+15369,81602,36180
+39746,23880,33211
+59840,33869,99542
+34989,66134,15155
+47145,60106,78867
+23687,65459,36960
+42245,75151,61969
+29961,61483,10285
+36307,54880,31175
+48389,67326,65183
+21770,96487,30620
+4464,84721,93164
+17106,41941,63384
+33919,93073,825
+71913,13452,69446
+62608,10733,74426
+47651,20231,2404
+5540,3588,46906
+54110,31913,15149
+9653,25911,74806
+45284,52707,21211
+76223,57814,98481
+26603,27126,70448
+6293,41740,59703
+75310,12193,30960
+57483,75947,68878
+41928,59218,78293
+61281,13052,29535
+16294,91265,91368
+1640,8508,80442
+12056,64196,5518
+11739,25885,29199
+57663,22769,73489
+32757,74577,33662
+86997,52619,61243
+71623,87777,80610
+56416,78689,51129
+34553,7955,18915
+27648,91359,43149
+49123,69780,43613
+10720,72632,79295
+37886,22832,48666
+5715,20155,30892
+98799,21322,56914
+56892,4652,29567
+98996,33811,73409
+30192,26649,3536
+6833,36316,41354
+80873,18440,81247
+23292,27297,27883
+51705,38558,30949
+22720,70313,81518
+60411,18994,24958
+63477,32290,3172
+2476,86465,97775
+80324,46050,62082
+35010,44900,81846
+80343,14020,90477
+83291,97217,43738
+69617,88950,75458
+88565,41836,10135
+79398,60258,21046
+50825,27279,12544
+69269,78894,45318
+36722,23240,93002
+36087,30044,78600
+3452,73789,71450
+63180,12276,13852
+35426,78156,33032
+60920,31419,72501
+24438,74131,8271
+91879,34810,11637
+78151,34918,22192
+77144,18034,85640
+54337,42988,7082
+25655,24957,89573
+71607,69787,89706
+36217,84367,97130
+14558,99251,8681
+50402,97866,19186
+79659,61163,28577
+58552,72223,89371
+49670,8508,48554
+82129,26610,17140
+94327,99061,63975
+91603,14212,87784
+53785,44665,41327
+41260,80542,82930
+34084,24896,546
+37056,56298,22020
+76479,45723,14708
+35316,98107,46266
+21945,74128,91625
+30888,55257,4856
+94883,72621,42334
+97136,4542,48011
+58763,42032,30808
+11393,8081,81275
+92671,50010,48925
+76728,63673,50752
+66310,76003,17747
+82530,69917,29820
+4414,76972,64079
+76556,660,21983
+26810,93956,86765
+54559,71955,92603
+88812,1969,45016
+83034,30774,13935
+23027,31934,73304
+6865,88593,53234
+59340,97344,21892
+79086,83394,93457
+79284,72084,92358
+84889,88011,73936
+71265,86768,865
+13657,73891,46856
+98320,98460,1433
+84596,56655,87765
+84488,45991,85076
+61267,75997,96810
+71986,68995,52884
+43928,26699,28940
+59493,40045,97952
+77362,9212,49641
+41688,90837,15200
+6207,77976,76624
+15276,84659,58713
+59731,28568,24097
+84489,98519,66527
+29673,89560,4490
+72822,37418,19474
+71602,85112,60261
+75899,83010,66771
+29617,99662,31925
+13649,75647,15642
+93677,85571,36221
+14859,19440,75396
+73711,215,91869
+11392,98728,56135
+18787,88026,27910
+10114,24366,52874
+30617,59629,86056
+5432,77370,22914
+18991,19764,85650
+1158,14144,14824
+50044,85217,29420
+12260,41439,7083
+28449,34855,693
+88040,75809,73388
+37062,17644,72021
+44546,60369,63744
+40738,57097,32580
+50409,34580,22543
+62159,91860,76944
+84785,90402,63540
+3442,91532,29109
+61005,58416,98656
+13705,11244,66014
+43614,84601,84587
+59649,71498,15484
+17092,73303,69014
+72891,9124,79182
+99440,33358,64791
+81804,22718,58033
+85694,33058,86735
+49807,20583,27158
+41439,3203,97469
+31388,29738,25348
+56568,47152,66814
+19137,49177,16983
+21078,2984,40111
+63884,39757,10446
+28065,88810,24352
+96292,90861,55357
+5656,41551,40061
+55042,14724,30637
+83996,95286,10395
+90237,9789,60542
+41464,67231,95977
+16565,73165,56095
+8509,11868,44701
+3192,47385,58626
+93591,43595,40215
+79212,50580,7184
+96352,91838,87916
+45075,72843,89172
+76533,19927,75642
+73110,51823,7644
+48897,34839,1508
+21549,46612,76058
+15922,79796,47809
+20433,94775,43691
+64092,56335,94008
+98483,947,26538
+51329,83233,7647
+58180,23930,95453
+79419,28964,51905
+56670,36707,41729
+66193,72868,84720
+29392,51311,19403
+69797,12351,56433
+22508,72691,59132
+99997,62594,71301
+62979,4433,40329
+32449,98717,20720
+91745,53214,98408
+94589,18709,23621
+15498,94654,85776
+63823,96476,70560
+82377,47629,59010
+59470,33137,40471
+75279,80269,70898
+91711,69630,85629
+42380,49321,77799
+16553,60444,38026
+49830,76593,28600
+21521,55787,13415
+60739,74389,19378
+33612,84293,22149
+33224,48195,19180
+78083,25886,36446
+53443,56059,56388
+55930,13501,69633
+10340,17608,41007
+23008,92315,83740
+16765,49601,33602
+49635,6485,83380
+20356,300,74049
+38145,54333,22395
+9896,85392,72578
+28284,38867,34486
+11411,60605,1226
+34807,17914,86130
+79189,1392,4589
+20477,70277,59016
+52214,9538,77892
+58415,86054,8831
+2898,28761,51856
+72838,20480,36849
+72464,88010,21645
+52803,71973,45713
+84163,9238,62151
+65591,24237,53564
+22152,1662,16680
+56764,95434,19152
+71480,65014,32138
+41229,20663,78938
+27292,73249,17915
+68045,28053,5223
+39964,81779,91119
+28276,23004,93100
+75643,30923,78000
+2999,19945,39020
+28478,75020,11231
+47830,65035,45737
+57119,54513,38294
+40842,73351,18492
+31217,95976,32418
+60152,91720,47745
+68442,4727,35295
+92997,1424,8080
+77126,65368,52496
+79849,45097,7143
+46153,82502,94360
+14396,87257,13484
+65194,54588,13159
+22824,36956,31629
+34313,27117,59598
+44985,21615,19434
+31909,30669,83348
+55760,22914,14532
+8439,4466,44409
+66893,71871,53935
+12065,44430,90045
+83002,27642,95582
+42867,52602,62515
+2658,11084,88975
+73693,32863,4126
+7817,77856,75587
+19341,4389,543
+90539,98418,81512
+99702,75249,52973
+50538,92306,57964
+67193,60227,36021
+17870,51325,45514
+95119,46746,92156
+48476,50331,69832
+3808,23568,59430
+97412,28886,70108
+91676,48292,32681
+28808,10986,71065
+4503,73157,75806
+45447,65023,28211
+27419,13617,37507
+61545,11720,17795
+86801,37073,95091
+85367,52014,70457
+4524,44730,87649
+13810,21747,94501
+919,61272,55516
+14415,98836,60399
+84497,59472,82921
+36652,23463,39129
+98859,59766,99834
+52338,36915,66733
+7206,37131,11194
+92091,12586,42752
+23832,73295,59113
+43585,46984,98254
+14115,70638,60901
+40390,41263,29207
+51755,543,16592
+24478,56135,7108
+91844,12003,99755
+48258,29752,91721
+1899,50986,77968
+44878,42087,29029
+9354,77982,25615
+89042,72864,49843
+55543,75356,72393
+62496,62889,7466
+10402,48181,57896
+367,3165,68725
+13789,80735,37927
+5166,52353,16734
+6352,81072,66528
+56256,9629,67788
+39013,28382,98627
+31327,24481,61544
+36902,24447,84351
+35859,68593,11749
+52215,37614,39703
+56644,71144,63158
+76387,45667,64162
+14376,23367,84503
+60674,96283,8948
+60974,15570,21736
+39129,30253,86689
+22005,54648,67103
+19549,73506,73352
+36843,66304,69015
+11903,31857,6295
+70340,50428,82434
+56860,83098,359
+90907,61000,42602
+27389,25786,9762
+12926,397,99795
+25478,94422,4446
+2384,72386,43764
+6950,55990,25214
+16135,74988,66671
+67387,92630,46984
+76811,88313,3887
+91042,41855,35070
+70327,76532,17990
+55740,62404,25703
+95472,58977,23313
+42775,57164,43283
+69755,72811,6305
+7441,91513,69422
+46802,4827,51363
+35905,26176,14538
+56932,99532,61823
+63805,44663,23453
+68819,92800,12332
+8907,28643,25123
+35452,85425,77212
+16926,49269,85321
+24382,53361,12336
+97461,30649,42904
+50401,54127,77702
+4743,16649,23194
+53307,30140,72274
+19101,85976,30127
+61757,62753,77193
+15549,21674,78973
+87480,24206,57930
+26019,94052,48027
+61154,74645,91805
+82107,6726,52886
+3247,29342,27505
+19886,76883,38783
+22354,39647,25534
+23171,10666,69191
+6821,8817,96514
+20494,6345,87900
+20030,80442,11150
+14751,47960,96249
+76352,60728,60058
+37198,93164,90487
+88317,98605,72032
+70763,47791,5637
+2694,73070,91701
+27468,44351,86978
+31125,14611,16934
+50850,77207,1456
+99890,13276,8576
+63725,21937,19018
+595,17161,25393
+27353,8819,84017
+76850,4487,4291
+21458,44140,22698
+61411,98545,73214
+61265,93310,63002
+40500,53705,78868
+56095,72418,4776
+88774,3953,67654
+2832,74684,40185
+15824,48942,60391
+41057,22698,85596
+61876,87727,54140
+33447,54640,6403
+33214,84405,12315
+86897,35299,80186
+16309,92484,49884
+55350,8323,62195
+23370,97755,47639
+73639,80821,83494
+84963,96157,94997
+60700,61562,76508
+35050,71655,43947
+81814,74391,26299
+63289,85840,64914
+35240,18201,47741
+23057,15827,38021
+58795,10191,41470
+79962,48432,96284
+79486,31611,60839
+50298,75134,14616
+66727,14818,84668
+85709,29372,65218
+35004,27530,32155
+77175,15678,29271
+17447,90628,65138
+11791,19304,55791
+49756,34245,69241
+28219,3530,80986
+53712,78426,79012
+14861,31388,38276
+86885,63124,19280
+95228,80779,87128
+9821,98378,84808
+59239,30828,71372
+99933,7999,40525
+59388,49260,93428
+8178,25398,95916
+82090,54347,67902
+55878,19810,64018
+54147,24434,57972
+80990,52997,82596
+6275,96816,46629
+69251,35695,55398
+94251,17979,84966
+62174,91215,13032
+72605,60872,97982
+16768,45021,81260
+23208,37810,5410
+67658,9046,23380
+44394,33353,43155
+75499,3078,3099
+76725,65437,34498
+71029,60200,86729
+27334,20081,74928
+78868,23873,91133
+79291,32347,5370
+14159,49285,63737
+55285,92467,56285
+16072,12803,76572
+26754,85677,34397
+51961,90745,19096
+24068,60297,76917
+31630,27544,55147
+12675,17802,12057
+79361,58406,605
+41204,23842,46490
+74340,69209,57828
+18773,60227,6348
+94214,3187,16441
+78192,94171,41575
+28099,17156,11806
+59974,77623,81880
+9210,50596,43332
+15482,26550,35573
+51913,89583,1347
+87833,78072,69936
+90496,58911,28137
+9266,41511,79256
+1467,71649,83656
+59157,8111,13989
+2079,90334,49206
+57502,19318,75792
+80264,34865,28923
+51936,70652,76035
+9140,98878,15668
+22543,33864,6448
+22524,31256,486
+1721,76983,34555
+5951,83809,53205
+75199,33698,20799
+82487,86828,14333
+67683,74979,71391
+5411,71128,47138
+54231,2920,53037
+52818,18232,65485
+59178,30522,17250
+57598,28217,47844
+3853,19784,69964
+57604,29704,60450
+36901,41188,62138
+58766,60174,42320
+25887,32265,88343
+29648,13377,82756
+84928,36356,94570
+4532,87915,28466
+2396,48728,22250
+45870,22058,55226
+54197,38444,92057
+20614,36330,7450
+46761,88833,73733
+34777,30644,65355
+38378,91234,73772
+87900,328,62145
+3955,69455,35909
+29688,85093,46458
+64256,70102,97516
+93294,46584,84574
+48801,42800,53374
+45863,49823,27087
+33916,97781,74715
+75156,37327,8552
+73650,30004,93413
+37240,35284,34418
+45214,5681,26732
+82122,70503,50967
+77633,68602,91143
+2471,41546,78772
+39837,76426,84639
+61392,90828,87641
+66911,3327,10503
+26536,95028,90938
+5984,58355,15097
+37053,43977,45337
+56374,36347,41689
+30288,37963,61225
+49066,17452,66182
+16231,13352,42764
+13572,68878,48671
+97175,15751,76146
+94567,93399,10702
+31449,96890,95447
+89066,89952,54909
+41892,12906,58982
+61795,25883,84746
+3849,97559,68416
+26016,51676,79164
+64725,22861,31268
+10703,58470,63391
+65241,25502,23753
+70456,1816,53731
+13098,1785,2877
+54890,70078,69689
+78080,9567,51087
+27313,2643,93524
+52263,80717,80430
+47765,78018,45848
+10554,88208,8261
+57817,1782,59611
+46002,15016,16976
+60690,37457,61704
+51867,45998,17462
+66055,86687,28371
+16452,73590,43661
+61667,76517,22934
+31463,13764,26180
+17274,23386,45253
+2304,93405,58096
+80003,36616,14374
+49940,93589,30012
+2101,74510,97787
+64528,94816,49581
+70839,77457,59297
+51895,70304,79609
+59761,7360,78306
+7693,10640,21814
+17045,84818,47387
+8058,49119,31451
+92901,33776,44805
+37849,83312,6298
+73509,27150,28768
+10986,14783,12414
+6872,87976,5041
+70733,29668,19807
+48344,20372,52097
+83361,45864,22799
+39821,11946,851
+28726,27965,5926
+60005,16269,46993
+7441,72899,9123
+86298,20401,17642
+24277,5810,61236
+21375,51741,87723
+88568,30488,65007
+68057,96462,78903
+60292,76145,1905
+98664,17882,91039
+93509,89634,20376
+50446,86527,52774
+83810,99843,95545
+21698,99521,78447
+57731,41445,21129
+12290,28348,22254
+93998,32670,8950
+84221,28406,96360
+35150,39759,84829
+39987,43124,82414
+25494,19079,95654
+93210,56438,4948
+63081,32452,86340
+57137,87440,32535
+7795,96401,14908
+76759,49206,80748
+16768,43617,78998
+11168,54713,9272
+32240,2393,72788
+96374,11703,46093
+92837,89568,42700
+31366,63888,54638
+46815,23827,82922
+67345,29594,83020
+84516,18516,79153
+42411,73513,60729
+7152,56631,87882
+60058,33646,95496
+75511,26379,46063
+6417,29071,6842
+18402,88002,85277
+30055,98510,93743
+79651,497,93041
+80648,83851,32649
+55801,12577,1259
+27618,15396,39813
+76964,78598,32400
+87333,92700,19039
+19996,65372,75409
+23730,80832,52568
+92801,40095,37759
+18521,40787,67802
+68173,37309,29499
+49306,87829,73951
+37805,63348,86759
+93330,54641,85802
+59759,76422,41006
+56890,29260,26333
+93484,56855,57038
+90344,41185,81237
+31384,11689,68049
+36051,91449,92914
+84732,58234,74297
+2347,24315,49910
+1785,76201,57771
+90233,43189,65471
+4649,26162,20197
+91705,96167,15502
+58458,16507,58917
+464,24762,92062
+62386,77894,31642
+54633,80401,29933
+97802,98911,80626
+14318,49460,41953
+85939,41745,56114
+53374,62801,94900
+56267,10249,33656
+52864,31404,86155
+89661,60213,87693
+23772,86162,33080
+57131,77971,33720
+87505,6441,74301
+82324,47653,61373
+67835,23625,83646
+4921,35564,76459
+8150,74402,6656
+53246,46299,68865
+58126,40271,80481
+34419,46682,32982
+56830,41015,42998
+99881,47677,15156
+3522,65635,68557
+84674,92423,97984
+1596,5079,26758
+4726,32159,23167
+99746,29446,42545
+39460,67661,19192
+56426,23117,6709
+97623,98719,23815
+38029,45200,36981
+97034,26186,78199
+38367,90023,12896
+53111,98231,23779
+1117,57505,36786
+94926,41665,95673
+84497,24284,46262
+33149,77521,5254
+97168,32106,5154
+84302,98425,26112
+12533,12454,10192
+41979,85540,85959
+82907,55622,79675
+86324,8247,52654
+555,95532,89208
+70701,77451,7313
+1643,4565,71007
+56161,37391,15647
+26804,13915,37367
+69676,84206,51075
+7992,30599,7629
+63829,71861,20270
+59703,35459,3016
+52917,43715,35347
+97460,17492,18697
+83193,3321,90242
+23974,88902,94071
+52156,31377,58516
+88522,81943,90119
+67821,67621,23862
+10274,2010,89619
+52064,91365,41983
+79880,88731,89693
+15359,51619,83935
+5233,88446,70422
+40969,81397,39963
+93725,14288,50227
+59081,20841,18880
+53025,70944,6769
+13755,42140,57261
+28475,34011,83709
+59038,29000,94714
+93839,11117,31159
+86317,89389,84561
+40507,53808,58156
+13548,58774,94959
+78561,51315,4998
+5583,12554,97510
+93656,44296,56861
+51967,57689,3842
+85105,1512,35558
+60086,51940,91706
+78954,16387,46712
+47594,78462,33464
+94388,55650,40898
+3413,91213,87893
+91692,19169,41913
+6806,55111,74881
+30300,21372,14530
+84545,19523,18427
+23225,39013,66598
+59238,42519,26215
+99745,15599,13194
+73770,66169,12143
+28845,89919,20848
+39582,38920,50960
+16475,37197,3679
+29677,32693,192
+94014,68320,75067
+19333,43237,55592
+95828,85096,34360
+74290,68220,97907
+40661,94360,52454
+89161,26104,15247
+55866,26554,79393
+26825,34119,11833
+75800,95573,39449
+71917,86361,72934
+70306,46022,37666
+17260,52695,15247
+47083,65988,14525
+48105,49227,57556
+41788,19707,97711
+95304,10054,35346
+81145,50795,11084
+65862,70071,99248
+63587,83237,37920
+54891,59034,7953
+98512,64157,65753
+77780,45969,13407
+81556,58794,57017
+76360,31637,29027
+93747,31037,33532
+76099,89777,55163
+19526,24220,27690
+22240,19409,89940
+29783,70839,90171
+79673,71952,55899
+36329,67585,42531
+12429,19899,60052
+86489,87241,97773
+70935,67101,21955
+79263,37662,47524
+57387,2422,9034
+13414,15109,45379
+34647,83333,43640
+31017,5942,59083
+74876,38930,8657
+65071,58603,98584
+84645,90161,50462
+19125,1632,42268
+49814,83236,47031
+34057,80213,40305
+96049,55731,95852
+24752,24987,40065
+84364,72406,13321
+56754,29695,36218
+88353,73171,41052
+45638,245,21694
+196,67381,82865
+27619,23754,63833
+76225,46773,69849
+26680,19930,40720
+41003,59772,69011
+78611,56990,63202
+91303,6636,19809
+54851,54912,46113
+48490,89011,66066
+85623,50527,10055
+57658,24152,78577
+1566,56259,79424
+81226,1189,82627
+7779,91244,92251
+32600,60896,98760
+62180,68906,29188
+20519,31014,64649
+41540,10556,11215
+43689,33280,18116
+11722,87418,86709
+11746,58299,29702
+46274,75823,70962
+58248,19653,89181
+34335,30242,79730
+2216,73529,99474
+64986,96369,26430
+30989,48375,91119
+91557,44829,69825
+31527,51912,12911
+44294,62697,91088
+20442,6491,64723
+54408,66396,2325
+67104,79762,94975
+4594,89447,59340
+33163,11911,15397
+62439,27640,82226
+19006,83320,79549
+79200,42664,97693
+27694,46134,8743
+52192,22465,19830
+14366,47502,14545
+8930,61396,45826
+87585,67641,58375
+64827,33655,27774
+64760,54304,78297
+17459,42508,69411
+40214,3422,18368
+99736,73445,81113
+20078,20748,9888
+91116,29035,50710
+52121,25050,34526
+9068,73958,65567
+93890,32269,64526
+75139,8240,50042
+4763,51039,43909
+13298,29362,19731
+40370,87053,96594
+74630,90966,35339
+40271,15515,3803
+7109,32096,6500
+2412,62403,52039
+44586,8775,65971
+77301,36277,63525
+26212,54815,58133
+54772,93202,90065
+95329,24058,24487
+19844,8424,22481
+70450,50307,63922
+44295,9494,74873
+56172,32263,21563
+41646,38321,67177
+78052,88415,26045
+6093,2256,57262
+44271,1496,13331
+64890,223,29834
+1243,61133,27474
+12649,90476,65510
+36913,16649,61265
+38153,49485,76660
+57646,27523,54529
+97648,66947,71528
+46335,84153,3888
+76772,53203,8192
+61537,48373,71860
+30883,96625,59518
+57611,13848,26091
+81035,83803,43588
+78483,16859,46009
+71367,63638,51633
+23829,27093,61612
+53099,90329,8189
+21346,25942,50796
+93321,50101,7320
+3845,91414,18399
+97868,55142,72200
+46442,90648,86235
+76370,32059,73477
+32431,25861,78088
+54680,57702,18893
+63648,35627,67846
+8060,86158,80161
+72221,98773,51273
+5185,6113,18812
+2752,11445,93492
+58386,47749,572
+15674,57768,67266
+62012,4430,96603
commit 23812b9774a6a26ea7e180242d79ceb11baa36d3
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 17:04:09 2025 +0100
Clean up
diff --git a/src/examples/aoc20257/aoc20257.meta b/src/examples/aoc20257/aoc20257.meta
index b324fd9..fd7d69b 100644
--- a/src/examples/aoc20257/aoc20257.meta
+++ b/src/examples/aoc20257/aoc20257.meta
@@ -22,14 +22,14 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
int is_type(int row, int col, Type type) {
return is_valid(row, col) && board[row][col].type == type;
}
- void set_beam(int row, int col, Number count) {
+ void add_beam(int row, int col, Number count) {
if (is_valid(row, col)) {
board[row][col].type = BEAM;
board[row][col].count += count;
}
}
- void beam_down(int row, int col, int offset_col) {
- set_beam(row+1, col+offset_col, board[row][col].count);
+ void continue_beam(int row, int col, int col_offset) {
+ add_beam(row+1, col+col_offset, board[row][col].count);
}
int main(void) {
int row, col;
@@ -39,11 +39,11 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
for (col=0; col<$cols; col++) {
if (is_type(row, col, BEAM)) {
if (is_type(row+1, col, SPLITTER)) {
- beam_down(row, col, -1);
- beam_down(row, col, 1);
+ continue_beam(row, col, -1);
+ continue_beam(row, col, 1);
count++;
} else {
- beam_down(row, col, 0);
+ continue_beam(row, col, 0);
}
}
if (row == $rows-1) {
commit 491a8b62e14218cfbc39b4e57620d419574e98a7
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 07:42:48 2025 +0100
Clean up
diff --git a/src/examples/aoc20257/aoc20257.meta b/src/examples/aoc20257/aoc20257.meta
index ae073f1..b324fd9 100644
--- a/src/examples/aoc20257/aoc20257.meta
+++ b/src/examples/aoc20257/aoc20257.meta
@@ -1,5 +1,6 @@
main = grid:x dummyRows:rows dummyCols:cols -> {C{
#include <stdio.h>
+ typedef unsigned long Number;
typedef enum {
EMPTY,
SPLITTER,
@@ -7,7 +8,7 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
} Type;
typedef struct {
Type type;
- unsigned long count;
+ Number count;
} Cell;
$x
int is_valid(int row, int col) {
@@ -18,31 +19,31 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
col<$cols
);
}
- int is(int row, int col, Type type) {
+ int is_type(int row, int col, Type type) {
return is_valid(row, col) && board[row][col].type == type;
}
- unsigned long current_count(int row, int col) {
- return board[row][col].count;
- }
- void set(int row, int col, Type type, unsigned long count) {
+ void set_beam(int row, int col, Number count) {
if (is_valid(row, col)) {
- board[row][col].type = type;
+ board[row][col].type = BEAM;
board[row][col].count += count;
}
}
+ void beam_down(int row, int col, int offset_col) {
+ set_beam(row+1, col+offset_col, board[row][col].count);
+ }
int main(void) {
int row, col;
- unsigned long count = 0;
- unsigned long timelines = 0;
+ Number count = 0;
+ Number timelines = 0;
for (row=0; row<$rows; row++) {
for (col=0; col<$cols; col++) {
- if (is(row, col, BEAM)) {
- if (is(row+1, col, SPLITTER)) {
- set(row+1, col-1, BEAM, current_count(row, col));
- set(row+1, col+1, BEAM, current_count(row, col));
+ if (is_type(row, col, BEAM)) {
+ if (is_type(row+1, col, SPLITTER)) {
+ beam_down(row, col, -1);
+ beam_down(row, col, 1);
count++;
} else {
- set(row+1, col, BEAM, current_count(row, col));
+ beam_down(row, col, 0);
}
}
if (row == $rows-1) {
@@ -70,15 +71,12 @@ grid = row*:xs -> {
};
row = cell*:xs '\n' -> {
- #set(W[2] 0)
"{" xs "},\n"
#max(W[3] xs.count)
- #inc(W[1] 1)
};
cell = cellType:x -> {
x
- #inc(W[2] 1)
};
cellType =
diff --git a/src/meta.c b/src/meta.c
index a63096c..dda1cdb 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -143,8 +143,4 @@ unsigned int meta_max(unsigned int a, unsigned int b) {
return a > b ? a : b;
}
-unsigned int meta_set(unsigned int old_value, unsigned int new_value) {
- return new_value;
-}
-
typedef MetaAction (*MetaParseFunction)(MetaParseState* parse_state);
commit b35bbfdfb8e72c19e22b8c191a0aaaab218d6a60
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Tue Dec 9 07:29:11 2025 +0100
Part 2
diff --git a/src/examples/aoc20257/aoc20257.meta b/src/examples/aoc20257/aoc20257.meta
index 0993342..ae073f1 100644
--- a/src/examples/aoc20257/aoc20257.meta
+++ b/src/examples/aoc20257/aoc20257.meta
@@ -5,6 +5,10 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
SPLITTER,
BEAM
} Type;
+ typedef struct {
+ Type type;
+ unsigned long count;
+ } Cell;
$x
int is_valid(int row, int col) {
return (
@@ -15,33 +19,39 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
);
}
int is(int row, int col, Type type) {
- return is_valid(row, col) && board[row][col] == type;
+ return is_valid(row, col) && board[row][col].type == type;
}
- void set(int row, int col, Type type) {
+ unsigned long current_count(int row, int col) {
+ return board[row][col].count;
+ }
+ void set(int row, int col, Type type, unsigned long count) {
if (is_valid(row, col)) {
- board[row][col] = type;
+ board[row][col].type = type;
+ board[row][col].count += count;
}
}
- unsigned long part1(void) {
+ int main(void) {
int row, col;
unsigned long count = 0;
+ unsigned long timelines = 0;
for (row=0; row<$rows; row++) {
for (col=0; col<$cols; col++) {
if (is(row, col, BEAM)) {
if (is(row+1, col, SPLITTER)) {
- set(row+1, col-1, BEAM);
- set(row+1, col+1, BEAM);
+ set(row+1, col-1, BEAM, current_count(row, col));
+ set(row+1, col+1, BEAM, current_count(row, col));
count++;
} else {
- set(row+1, col, BEAM);
+ set(row+1, col, BEAM, current_count(row, col));
}
}
+ if (row == $rows-1) {
+ timelines += board[row][col].count;
+ }
}
}
- return count;
- }
- int main(void) {
- printf("Part 1: %ld\n", part1());
+ printf("Part 1: %ld\n", count);
+ printf("Part 2: %ld\n", timelines);
return 0;
}
}};
@@ -52,7 +62,7 @@ dummyCols = -> { <cols };
grid = row*:xs -> {
$rows
$cols
- "static Type board[" <rows "][" <cols "] = {\n" >
+ "static Cell board[" <rows "][" <cols "] = {\n" >
xs
< "};\n"
>rows { xs.count }
@@ -72,7 +82,7 @@ cell = cellType:x -> {
};
cellType =
- | '.' -> { "EMPTY, " }
- | '^' -> { "SPLITTER, " }
- | 'S' -> { "BEAM, " }
+ | '.' -> { "{EMPTY, 0}," }
+ | '^' -> { "{SPLITTER, 0}," }
+ | 'S' -> { "{BEAM, 1}," }
;
commit 30bbbbb164770e246f47d6ea3fb00ac6516b1deb
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Mon Dec 8 19:35:50 2025 +0100
Clean up
diff --git a/src/examples/aoc20257/aoc20257.meta b/src/examples/aoc20257/aoc20257.meta
index 109e863..0993342 100644
--- a/src/examples/aoc20257/aoc20257.meta
+++ b/src/examples/aoc20257/aoc20257.meta
@@ -22,7 +22,7 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
board[row][col] = type;
}
}
- int main(void) {
+ unsigned long part1(void) {
int row, col;
unsigned long count = 0;
for (row=0; row<$rows; row++) {
@@ -38,7 +38,10 @@ main = grid:x dummyRows:rows dummyCols:cols -> {C{
}
}
}
- printf("Part 1: %ld\n", count);
+ return count;
+ }
+ int main(void) {
+ printf("Part 1: %ld\n", part1());
return 0;
}
}};
commit 7adcf163614a437e83c983ff7613b283ac3a7f57
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Mon Dec 8 19:30:54 2025 +0100
Day 7, part 1
diff --git a/make.sh b/make.sh
index e66c585..5a380af 100755
--- a/make.sh
+++ b/make.sh
@@ -17,6 +17,7 @@ main() {
example_aoc20254
example_aoc20255
example_aoc20256
+ example_aoc20257
}
dotall() {
@@ -138,6 +139,17 @@ example_aoc20256() {
out/rl
}
+example_aoc20257() {
+ meta_compile src/examples/aoc20257/aoc20257.meta out/aoc20257.c
+ c_compile out/aoc20257.c out/aoc20257
+ out/aoc20257 <src/examples/aoc20257/example.aoc20257 >out/example.c
+ c_compile out/example.c out/example
+ out/example
+ out/aoc20257 <src/examples/aoc20257/rl.aoc20257 >out/rl.c
+ c_compile out/rl.c out/rl
+ out/rl
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
diff --git a/src/examples/aoc20257/aoc20257.meta b/src/examples/aoc20257/aoc20257.meta
new file mode 100644
index 0000000..109e863
--- /dev/null
+++ b/src/examples/aoc20257/aoc20257.meta
@@ -0,0 +1,75 @@
+main = grid:x dummyRows:rows dummyCols:cols -> {C{
+ #include <stdio.h>
+ typedef enum {
+ EMPTY,
+ SPLITTER,
+ BEAM
+ } Type;
+ $x
+ int is_valid(int row, int col) {
+ return (
+ row >= 0 &&
+ row<$rows &&
+ col >= 0 &&
+ col<$cols
+ );
+ }
+ int is(int row, int col, Type type) {
+ return is_valid(row, col) && board[row][col] == type;
+ }
+ void set(int row, int col, Type type) {
+ if (is_valid(row, col)) {
+ board[row][col] = type;
+ }
+ }
+ int main(void) {
+ int row, col;
+ unsigned long count = 0;
+ for (row=0; row<$rows; row++) {
+ for (col=0; col<$cols; col++) {
+ if (is(row, col, BEAM)) {
+ if (is(row+1, col, SPLITTER)) {
+ set(row+1, col-1, BEAM);
+ set(row+1, col+1, BEAM);
+ count++;
+ } else {
+ set(row+1, col, BEAM);
+ }
+ }
+ }
+ }
+ printf("Part 1: %ld\n", count);
+ return 0;
+ }
+}};
+
+dummyRows = -> { <rows };
+dummyCols = -> { <cols };
+
+grid = row*:xs -> {
+ $rows
+ $cols
+ "static Type board[" <rows "][" <cols "] = {\n" >
+ xs
+ < "};\n"
+ >rows { xs.count }
+ >cols { W[3] }
+};
+
+row = cell*:xs '\n' -> {
+ #set(W[2] 0)
+ "{" xs "},\n"
+ #max(W[3] xs.count)
+ #inc(W[1] 1)
+};
+
+cell = cellType:x -> {
+ x
+ #inc(W[2] 1)
+};
+
+cellType =
+ | '.' -> { "EMPTY, " }
+ | '^' -> { "SPLITTER, " }
+ | 'S' -> { "BEAM, " }
+ ;
diff --git a/src/examples/aoc20257/example.aoc20257 b/src/examples/aoc20257/example.aoc20257
new file mode 100644
index 0000000..57a2466
--- /dev/null
+++ b/src/examples/aoc20257/example.aoc20257
@@ -0,0 +1,16 @@
+.......S.......
+...............
+.......^.......
+...............
+......^.^......
+...............
+.....^.^.^.....
+...............
+....^.^...^....
+...............
+...^.^...^.^...
+...............
+..^...^.....^..
+...............
+.^.^.^.^.^...^.
+...............
diff --git a/src/examples/aoc20257/rl.aoc20257 b/src/examples/aoc20257/rl.aoc20257
new file mode 100644
index 0000000..ac6411f
--- /dev/null
+++ b/src/examples/aoc20257/rl.aoc20257
@@ -0,0 +1,142 @@
+......................................................................S......................................................................
+.............................................................................................................................................
+......................................................................^......................................................................
+.............................................................................................................................................
+.....................................................................^.^.....................................................................
+.............................................................................................................................................
+....................................................................^...^....................................................................
+.............................................................................................................................................
+...................................................................^.^.^.^...................................................................
+.............................................................................................................................................
+..................................................................^.^...^.^..................................................................
+.............................................................................................................................................
+.................................................................^.^...^...^.................................................................
+.............................................................................................................................................
+................................................................^.^...^.^...^................................................................
+.............................................................................................................................................
+...............................................................^...^.^.^.^...^...............................................................
+.............................................................................................................................................
+..............................................................^.^.....^.....^.^..............................................................
+.............................................................................................................................................
+.............................................................^.....^...^.^...^.^.............................................................
+.............................................................................................................................................
+............................................................^.^.^.^.^.^.......^.^............................................................
+.............................................................................................................................................
+...........................................................^...^.....^.......^.^.^...........................................................
+.............................................................................................................................................
+..........................................................^.^...^...^...^...^.^.^.^..........................................................
+.............................................................................................................................................
+.........................................................^.^...^.^.^.^...^.......^.^.........................................................
+.............................................................................................................................................
+........................................................^.^.^.^.^.^.....^...^.^.^...^........................................................
+.............................................................................................................................................
+.......................................................^.^.^.^...^...^.^.......^.^.^.^.......................................................
+.............................................................................................................................................
+......................................................^.....^...^.^...^.^...^...^.^...^......................................................
+.............................................................................................................................................
+.....................................................^.^.^.............^.^.^.^.^.^.....^.....................................................
+.............................................................................................................................................
+....................................................^.^.^.^.^.^.^.^...^.......^.^.^.^...^....................................................
+.............................................................................................................................................
+...................................................^.^.^.^.^...^.^.^...^...^.....^.^.^...^...................................................
+.............................................................................................................................................
+..................................................^.^.^.....^.........^.^.^.^...^.....^.^.^..................................................
+.............................................................................................................................................
+.................................................^...^.....^.......^.^.^.^...^.^.^.^.^.^.^.^.................................................
+.............................................................................................................................................
+................................................^.^.^...^.......^.^.^.^.......^...^.^.^.^...^................................................
+.............................................................................................................................................
+...............................................^.^.^...........^.^.^.^.^...^.^.....^...^.....^...............................................
+.............................................................................................................................................
+..............................................^.^.....^.^.^.^...^.^...^.^.^.^.^.^.^.^.......^.^..............................................
+.............................................................................................................................................
+.............................................^.^.....^.^.^...^.^...^.^...^.^.....^.^...^.^...^.^.............................................
+.............................................................................................................................................
+............................................^.^.....^.^.^.^.^...^.^.^.^.^.^.....^...^.^...^...^.^............................................
+.............................................................................................................................................
+...........................................^.^.^.^...^.^.....^...^...^.^.^.^.^.^.........^...^.^.^...........................................
+.............................................................................................................................................
+..........................................^.^...^.^.^...^.^.^.^...^.^...^.^.^...^...^...^.^.^.^.^.^..........................................
+.............................................................................................................................................
+.........................................^.^.^.^...^.^...^.^.^.....^.^.....^.^.^...^.....^.^.^...^.^.........................................
+.............................................................................................................................................
+........................................^.^.....^.^.^...^...^.^.^...^.^.^.^.^...^.^.^.^.....^.^.^.^.^........................................
+.............................................................................................................................................
+.......................................^...^.^.........^.^.....^.^.^...^...^.^.^.^.^...^.^.^.^.^.^.^.^.......................................
+.............................................................................................................................................
+......................................^.^...^.^...^.....^...^.^.^.^.....^.^.^...^.^.^.^.^.....^.^.....^......................................
+.............................................................................................................................................
+.....................................^.^.^...^.^.^.^.^...^.^.^...^...^.^.^...^.^.^.^...^...^.^.^...^...^.....................................
+.............................................................................................................................................
+....................................^.^.^...^.^.............^...^.^.^...^...^.^...^.^.^...^.^.^...^.^.^.^....................................
+.............................................................................................................................................
+...................................^.^.^...^...^.....^.......^.....^.^.^.^...^...^.^...^.^.^.^.^.....^...^...................................
+.............................................................................................................................................
+..................................^.^...^...^.^.^...^...^.^.....^.^.^...^.........^.....^...^.^.^.^...^...^..................................
+.............................................................................................................................................
+.................................^.^.^.......^.^.^.......^.^...^.^.^...^...^.^.....^.^.^.^.^.^...^.^.^.^.^.^.................................
+.............................................................................................................................................
+................................^.^.^...^.^.......^...^.^.^.....^.^.^.^.....^.^.^.^...^.^.^...^.^.^...^...^.^................................
+.............................................................................................................................................
+...............................^.^...^.......^.^.^.^.^.^.^.^.......^.^.^.............^.^.^...^.^.^.^...^...^.^...............................
+.............................................................................................................................................
+..............................^.^.^...^.^.^...^.^.....^.....^.^.^.^.^.^.^.....^.^.^...^.^...^...^.^.^.^.^.^.^.^..............................
+.............................................................................................................................................
+.............................^.^.^.^.^.^.^...^.^.^.^...^.^.^.^...^.^.^.^.^.........^...^.......^.^...^.^.^.^.^.^.............................
+.............................................................................................................................................
+............................^...^.^.....^.^.^.........^.^.^.....^.^...^.^.^.....^.^.^.^...^.^.^.^.^.^.^.........^............................
+.............................................................................................................................................
+...........................^...^...^.......^...^.^.....^...^.^.^.^...^.^...^.^.^.^...^...^.^.........^...^...^...^...........................
+.............................................................................................................................................
+..........................^.^.^.^.^.....^.^.^.^.....^.....^...^.^...^...^.^.^.^...^.^.......^.^.^.^...^...^.^.^.^.^..........................
+.............................................................................................................................................
+.........................^.^.^.^...^.^.^.......^.^.....^.^...^...^.^.^.^...^...^...^...^.....^.^.^.^...^.^.^...^.^.^.........................
+.............................................................................................................................................
+........................^.^...^.^.....^.^.^...........^.^.^...^.^...^.......^.......^...^.^.^.^...^.^.^.^.^.^.^.^.^.^........................
+.............................................................................................................................................
+.......................^...........^...^.^.........^.^.^.........^...^.....^.^...^.^.^.^.^.^...^.^.^.^...^...^.^.....^.......................
+.............................................................................................................................................
+......................^.^.^...^.^...^...^.^.........^...^.^.^.^.^...^.^.^.^.^...^.^.^.........^.^...^.^.^.^.....^.^...^......................
+.............................................................................................................................................
+.....................^...^.^.^.^.^.^...^.^...^.....^...^.^...^.^...^.....^.^.^.^.^.^.^.....^.^.^...^.^...^.^.^.^...^.^.^.....................
+.............................................................................................................................................
+....................^.^...^...^.^...^.^.^.....^...^.^.^...^.^.^.^.^.....^.^.^...^.....^.^.^...^.^.^.^.^.^.^.^.^.^.......^....................
+.............................................................................................................................................
+...................^.^...^.^.^...^.^...^.^.^.^...^.^.^.....^.^.^...^.^.......^.^...^.^...^.^...^.^...^...^.....^.....^.^.^...................
+.............................................................................................................................................
+..................^.^.^.^...^...^...^.^...^.^...^.^.^.....^...^.^...^.^.^.^.^.^.^.^.^.^.^.^...^.....^.^.^.^.^.^.^...^.^.^.^..................
+.............................................................................................................................................
+.................^.^.^.^.^.^.^...^.^.^.^.............^.^...^...^.^...^.........^.....^.^...^.....^.^...^.....^...^...^.^.^.^.................
+.............................................................................................................................................
+................^...^.^.^.^.^.^.^...^...^.^.^.^.^...^.^.^.^...^.......^.^.^.^.^.....^.^.^.^.^.^...^.....^...^.^...^.^.^.^...^................
+.............................................................................................................................................
+...............^.^.^.^.^...^.^.^.^.^...^.......^.^.^...^.^...^.^.......^.^.....^.^.^...^...^.^...^.....^.^...^.^.^.^.^.^.^.^.^...............
+.............................................................................................................................................
+..............^.^.^.^.^.....^.^.......^.^.^.^...^.^...^...^.^.^.^.^.^.^.....^.^.^.^.^.^.......^.^.^.^.^...^.^...^.....^...^.^.^..............
+.............................................................................................................................................
+.............^.^.^.....^.^.^.^...^...^.^.......^.^...^.^.......^.^.....^.^...^.^.^.^.^.^.....^.^.^.^.......^.^.^.^.....^.^.^.^.^.............
+.............................................................................................................................................
+............^.^...^.^.....^.^.^.^...^.^.^.^.....^.^.^.^.......^...^.^...^.^.^.^...^.^.^.^.^.^.^...^.^.^...^.^...^.^.^.^.^.....^.^............
+.............................................................................................................................................
+...........^.^.^.^.^.^...^.^.....^...^.^.^.^.^...^...^.^.^.^.^.^.^.....^.^.^.......^.^.^.^.^...^.^.^.^.....^.^.^.^.^.^.....^.^.^.^...........
+.............................................................................................................................................
+..........^...^.^.^...^.^.^.^.^.^.^.^.^.....^.^...^.^.^.^...^.^.^...^.............^.^.......^.^.^.^...^...^.^.^...^.^...^.^.......^..........
+.............................................................................................................................................
+.........^.^.^.^.^.^.^...^.^.^...^...^...^.^.^.^.....^...^.^...^.^.....^.^.^.^.^.^.^.^...^...^.^.^.^.^.^.^...^.^.^.^...^.....^.....^.........
+.............................................................................................................................................
+........^.^.^...^.....^.^...^...^.....^.....^.^.^...^.^.^...^...^...^.^...^.^...^...^.....^.^.^.^...^.......^...^.....^.^.^...^.^...^........
+.............................................................................................................................................
+.......^.......^...^.....^.^...^.^.^.^.^.^.^.............^.^.^...^...^.^.^.^.^.^.^.......^.....^.^.^.^.^.^.^.....^.^.^.^.^.^.^...^...^.......
+.............................................................................................................................................
+......^.^.^.^.^.^...^.^.^.^...^...^.^.^.^.^.......^.....^.^...^...^.^.....^...^.^.^.^...^.^.^...^.^.^.^.^.....^.....^.......^.......^.^......
+.............................................................................................................................................
+.....^...^.^.^.^.^...^.....^.^.....^.^.......^.^.^...^.^.^.^...^.^.^...^.^.^...^.^.^...^.^.^.............^.....^.^.^.^.^.^.......^.^.^.^.....
+.............................................................................................................................................
+....^.......^.^...^.^...^...^.^.^.^.^.^.^...^.^.^.^...^.^.....^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.......^...........^.....^...^.^.^.^.^....
+.............................................................................................................................................
+...^.^.^.^.....^...^.^.....^.........^.^.^...^...^.^.^...^.^.^.^.^.^...^.......^.^.....^...^...^.^.^.^.^.^.^...^...^.^...^.^.^.^.........^...
+.............................................................................................................................................
+..^.^.^...^.....^.....^.^...^.^.^.^.^.^.^.^.^...^...^...^.^.^.^...^.^.^...^.^.^.^.^...^...^.^.^.^...^...^.^.....^.^.....^...^...^.^.......^..
+.............................................................................................................................................
+.^.^.^.^.^.^...^.^.^...^...^.....^...^.^.^.....^.....^.^.^.^.......^.^...^.^...^.^.^.^...^.^...^.^...^.^.^.....^.^.^.^.^...^.^.......^.^.^.^.
+.............................................................................................................................................
diff --git a/src/meta.c b/src/meta.c
index dda1cdb..a63096c 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -143,4 +143,8 @@ unsigned int meta_max(unsigned int a, unsigned int b) {
return a > b ? a : b;
}
+unsigned int meta_set(unsigned int old_value, unsigned int new_value) {
+ return new_value;
+}
+
typedef MetaAction (*MetaParseFunction)(MetaParseState* parse_state);
commit 03483cd48cbb8a7129e11401c9f548e1745b3436
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Mon Dec 8 18:55:58 2025 +0100
First take of more convenient generation of C code
diff --git a/src/examples/aoc20256/aoc20256_2.meta b/src/examples/aoc20256/aoc20256_2.meta
index 799712e..a96fa65 100644
--- a/src/examples/aoc20256/aoc20256_2.meta
+++ b/src/examples/aoc20256/aoc20256_2.meta
@@ -1,28 +1,28 @@
-main = section*:xs space !. -> {
- "#include <stdio.h>\n"
- "typedef unsigned long Number;\n"
- "typedef Number (*Op)(Number, Number);\n"
- "Number op_add(Number a, Number b) { return a + b; }\n"
- "Number op_times(Number a, Number b) { return a * b; }\n"
- "Number reverse(Number in) {\n" >
- "Number out = 0;\n"
- "while (in) {\n" >
- "out *= 10;\n"
- "out += in % 10;\n"
- "in /= 10;\n"
- < "}\n"
- "return out;\n"
- < "}\n"
- "int main() {\n" >
- "Number grand_total = 0;\n"
- "Number total;\n"
- "Number number;\n"
- "Op op;\n"
- xs
- "printf(\"Part 2: %ld\\n\", grand_total);\n"
- "return 0;\n"
- < "}\n"
-};
+main = section*:xs space !. -> {C{
+ #include <stdio.h>
+ typedef unsigned long Number;
+ typedef Number (*Op)(Number, Number);
+ Number op_add(Number a, Number b) { return a + b; }
+ Number op_times(Number a, Number b) { return a * b; }
+ Number reverse(Number in) {
+ Number out = 0;
+ while (in) {
+ out *= 10;
+ out += in % 10;
+ in /= 10;
+ }
+ return out;
+ }
+ int main() {
+ Number grand_total = 0;
+ Number total;
+ Number number;
+ Op op;
+ $xs
+ printf("Part 2: %ld\n", grand_total);
+ return 0;
+ }
+}};
section = space plusTimes:x number*:ys -> {
x
diff --git a/src/meta/language_meta.c b/src/meta/language_meta.c
index 73a5ff0..3cf1675 100644
--- a/src/meta/language_meta.c
+++ b/src/meta/language_meta.c
@@ -345,191 +345,239 @@ static String language_meta_string_301 = {26, "->current_string_builder, "};
static String language_meta_string_302 = {29, "->arena, string_from_integer("};
static String language_meta_string_303 = {9, "->arena, "};
static String language_meta_string_304 = {13, "), 0, NULL);\n"};
-static String language_meta_string_305 = {17, "meta_action_run(&"};
-static String language_meta_string_306 = {11, ", runtime, "};
-static String language_meta_string_307 = {26, "->current_string_builder, "};
-static String language_meta_string_308 = {10, "->arena);\n"};
-static String language_meta_string_309 = {17, "void placeholder_"};
-static String language_meta_string_310 = {34, "(void* runtime, void* variables);\n"};
-static String language_meta_string_311 = {17, "void placeholder_"};
-static String language_meta_string_312 = {35, "(void* runtime, void* variables) {\n"};
-static String language_meta_string_313 = {2, "}\n"};
-static String language_meta_string_314 = {1, "\n"};
-static String language_meta_string_315 = {31, "StringBuilder* string_builder;\n"};
-static String language_meta_string_316 = {31, "StringBuilder* string_builder;\n"};
-static String language_meta_string_317 = {39, "string_builder = string_builder_create("};
-static String language_meta_string_318 = {10, "->arena);\n"};
-static String language_meta_string_319 = {24, "meta_placeholder_append("};
-static String language_meta_string_320 = {9, "->arena, "};
-static String language_meta_string_321 = {63, "->placeholders, string_builder, meta_action_create(placeholder_"};
-static String language_meta_string_322 = {27, ", variables, NULL, 0, 0));\n"};
-static String language_meta_string_323 = {22, "string_builder_append("};
-static String language_meta_string_324 = {26, "->current_string_builder, "};
-static String language_meta_string_325 = {35, "->arena, NULL, 0, string_builder);\n"};
+static String language_meta_string_305 = {2, "C{"};
+static String language_meta_string_306 = {1, " "};
+static String language_meta_string_307 = {1, "}"};
+static String language_meta_string_308 = {17, "meta_action_run(&"};
+static String language_meta_string_309 = {11, ", runtime, "};
+static String language_meta_string_310 = {26, "->current_string_builder, "};
+static String language_meta_string_311 = {10, "->arena);\n"};
+static String language_meta_string_312 = {17, "void placeholder_"};
+static String language_meta_string_313 = {34, "(void* runtime, void* variables);\n"};
+static String language_meta_string_314 = {17, "void placeholder_"};
+static String language_meta_string_315 = {35, "(void* runtime, void* variables) {\n"};
+static String language_meta_string_316 = {2, "}\n"};
+static String language_meta_string_317 = {1, "\n"};
+static String language_meta_string_318 = {31, "StringBuilder* string_builder;\n"};
+static String language_meta_string_319 = {31, "StringBuilder* string_builder;\n"};
+static String language_meta_string_320 = {39, "string_builder = string_builder_create("};
+static String language_meta_string_321 = {10, "->arena);\n"};
+static String language_meta_string_322 = {24, "meta_placeholder_append("};
+static String language_meta_string_323 = {9, "->arena, "};
+static String language_meta_string_324 = {63, "->placeholders, string_builder, meta_action_create(placeholder_"};
+static String language_meta_string_325 = {27, ", variables, NULL, 0, 0));\n"};
static String language_meta_string_326 = {22, "string_builder_append("};
static String language_meta_string_327 = {26, "->current_string_builder, "};
-static String language_meta_string_328 = {9, "->arena, "};
-static String language_meta_string_329 = {12, ", 0, NULL);\n"};
-static String language_meta_string_330 = {1, "#"};
-static String language_meta_string_331 = {1, "("};
-static String language_meta_string_332 = {1, " "};
-static String language_meta_string_333 = {1, ")"};
-static String language_meta_string_334 = {4, "->W_"};
-static String language_meta_string_335 = {8, " = meta_"};
-static String language_meta_string_336 = {1, "("};
+static String language_meta_string_328 = {35, "->arena, NULL, 0, string_builder);\n"};
+static String language_meta_string_329 = {22, "string_builder_append("};
+static String language_meta_string_330 = {26, "->current_string_builder, "};
+static String language_meta_string_331 = {9, "->arena, "};
+static String language_meta_string_332 = {12, ", 0, NULL);\n"};
+static String language_meta_string_333 = {1, "#"};
+static String language_meta_string_334 = {1, "("};
+static String language_meta_string_335 = {1, " "};
+static String language_meta_string_336 = {1, ")"};
static String language_meta_string_337 = {4, "->W_"};
-static String language_meta_string_338 = {3, " ? "};
-static String language_meta_string_339 = {4, "->W_"};
-static String language_meta_string_340 = {6, " : 0, "};
-static String language_meta_string_341 = {3, ");\n"};
-static String language_meta_string_342 = {1, ">"};
-static String language_meta_string_343 = {1, "<"};
-static String language_meta_string_344 = {22, "string_builder_append("};
-static String language_meta_string_345 = {26, "->current_string_builder, "};
-static String language_meta_string_346 = {25, "->arena, NULL, 1, NULL);\n"};
+static String language_meta_string_338 = {8, " = meta_"};
+static String language_meta_string_339 = {1, "("};
+static String language_meta_string_340 = {4, "->W_"};
+static String language_meta_string_341 = {3, " ? "};
+static String language_meta_string_342 = {4, "->W_"};
+static String language_meta_string_343 = {6, " : 0, "};
+static String language_meta_string_344 = {3, ");\n"};
+static String language_meta_string_345 = {1, ">"};
+static String language_meta_string_346 = {1, "<"};
static String language_meta_string_347 = {22, "string_builder_append("};
static String language_meta_string_348 = {26, "->current_string_builder, "};
-static String language_meta_string_349 = {26, "->arena, NULL, -1, NULL);\n"};
-static String language_meta_string_350 = {36, "StringBuilder* named_string_builder_"};
-static String language_meta_string_351 = {2, ";\n"};
-static String language_meta_string_352 = {1, "0"};
-static String language_meta_string_353 = {1, "1"};
-static String language_meta_string_354 = {1, "2"};
-static String language_meta_string_355 = {1, "3"};
-static String language_meta_string_356 = {1, "4"};
-static String language_meta_string_357 = {1, "5"};
-static String language_meta_string_358 = {1, "6"};
-static String language_meta_string_359 = {1, "7"};
-static String language_meta_string_360 = {1, "8"};
-static String language_meta_string_361 = {1, "9"};
-static String language_meta_string_362 = {1, "{"};
-static String language_meta_string_363 = {1, "*"};
-static String language_meta_string_364 = {1, "}"};
-static String language_meta_string_365 = {7, "int i;\n"};
-static String language_meta_string_366 = {7, "int i;\n"};
-static String language_meta_string_367 = {14, "for (i=0; i < "};
-static String language_meta_string_368 = {9, "; i++) {\n"};
-static String language_meta_string_369 = {22, "string_builder_append("};
-static String language_meta_string_370 = {26, "->current_string_builder, "};
-static String language_meta_string_371 = {9, "->arena, "};
-static String language_meta_string_372 = {12, ", 0, NULL);\n"};
-static String language_meta_string_373 = {2, "}\n"};
-static String language_meta_string_374 = {1, "("};
-static String language_meta_string_375 = {4, "->W_"};
-static String language_meta_string_376 = {3, " ? "};
-static String language_meta_string_377 = {4, "->W_"};
-static String language_meta_string_378 = {5, " : 0)"};
-static String language_meta_string_379 = {1, "("};
-static String language_meta_string_380 = {1, "-"};
-static String language_meta_string_381 = {1, ")"};
-static String language_meta_string_382 = {2, "(("};
-static String language_meta_string_383 = {4, "->W_"};
-static String language_meta_string_384 = {3, " ? "};
-static String language_meta_string_385 = {4, "->W_"};
-static String language_meta_string_386 = {6, " : 0)-"};
-static String language_meta_string_387 = {1, ")"};
-static String language_meta_string_388 = {7, "number("};
-static String language_meta_string_389 = {1, ")"};
-static String language_meta_string_390 = {2, "(0"};
-static String language_meta_string_391 = {1, ")"};
-static String language_meta_string_392 = {25, "+(meta_action_first_byte("};
-static String language_meta_string_393 = {1, ")"};
-static String language_meta_string_394 = {1, ")"};
-static String language_meta_string_395 = {2, "<<"};
-static String language_meta_string_396 = {1, "\""};
-static String language_meta_string_397 = {1, "\""};
-static String language_meta_string_398 = {14, "static String "};
-static String language_meta_string_399 = {7, "string_"};
-static String language_meta_string_400 = {4, " = {"};
-static String language_meta_string_401 = {3, ", \""};
-static String language_meta_string_402 = {4, "\"};\n"};
-static String language_meta_string_403 = {2, "(&"};
-static String language_meta_string_404 = {7, "string_"};
-static String language_meta_string_405 = {1, ")"};
-static String language_meta_string_406 = {1, "("};
-static String language_meta_string_407 = {1, ")"};
-static String language_meta_string_408 = {10, "(((struct "};
-static String language_meta_string_409 = {6, "Action"};
-static String language_meta_string_410 = {18, "Vars*)variables)->"};
-static String language_meta_string_411 = {1, ")"};
-static String language_meta_string_412 = {4, ".len"};
-static String language_meta_string_413 = {15, "meta_action_len"};
-static String language_meta_string_414 = {6, ".count"};
-static String language_meta_string_415 = {17, "meta_action_count"};
-static String language_meta_string_416 = {2, "W["};
-static String language_meta_string_417 = {1, "]"};
-static String language_meta_string_418 = {15, "unsigned int W_"};
-static String language_meta_string_419 = {2, ";\n"};
-static String language_meta_string_420 = {1, "\""};
-static String language_meta_string_421 = {1, "\'"};
-static String language_meta_string_422 = {1, "\'"};
-static String language_meta_string_423 = {14, "static String "};
-static String language_meta_string_424 = {7, "string_"};
-static String language_meta_string_425 = {4, " = {"};
-static String language_meta_string_426 = {3, ", \""};
-static String language_meta_string_427 = {4, "\"};\n"};
-static String language_meta_string_428 = {2, "(&"};
-static String language_meta_string_429 = {7, "string_"};
-static String language_meta_string_430 = {1, ")"};
-static String language_meta_string_431 = {1, "\""};
-static String language_meta_string_432 = {2, "\\\""};
-static String language_meta_string_433 = {1, "\'"};
-static String language_meta_string_434 = {1, "\\"};
-static String language_meta_string_435 = {5, "rule_"};
-static String language_meta_string_436 = {1, "a"};
-static String language_meta_string_437 = {1, "b"};
-static String language_meta_string_438 = {1, "c"};
-static String language_meta_string_439 = {1, "d"};
-static String language_meta_string_440 = {1, "e"};
-static String language_meta_string_441 = {1, "f"};
-static String language_meta_string_442 = {1, "g"};
-static String language_meta_string_443 = {1, "h"};
-static String language_meta_string_444 = {1, "i"};
-static String language_meta_string_445 = {1, "j"};
-static String language_meta_string_446 = {1, "k"};
-static String language_meta_string_447 = {1, "l"};
-static String language_meta_string_448 = {1, "m"};
-static String language_meta_string_449 = {1, "n"};
-static String language_meta_string_450 = {1, "o"};
-static String language_meta_string_451 = {1, "p"};
-static String language_meta_string_452 = {1, "q"};
-static String language_meta_string_453 = {1, "r"};
-static String language_meta_string_454 = {1, "s"};
-static String language_meta_string_455 = {1, "t"};
-static String language_meta_string_456 = {1, "u"};
-static String language_meta_string_457 = {1, "v"};
-static String language_meta_string_458 = {1, "w"};
-static String language_meta_string_459 = {1, "x"};
-static String language_meta_string_460 = {1, "y"};
-static String language_meta_string_461 = {1, "z"};
-static String language_meta_string_462 = {1, "A"};
-static String language_meta_string_463 = {1, "B"};
-static String language_meta_string_464 = {1, "C"};
-static String language_meta_string_465 = {1, "D"};
-static String language_meta_string_466 = {1, "E"};
-static String language_meta_string_467 = {1, "F"};
-static String language_meta_string_468 = {1, "G"};
-static String language_meta_string_469 = {1, "H"};
-static String language_meta_string_470 = {1, "I"};
-static String language_meta_string_471 = {1, "J"};
-static String language_meta_string_472 = {1, "K"};
-static String language_meta_string_473 = {1, "L"};
-static String language_meta_string_474 = {1, "M"};
-static String language_meta_string_475 = {1, "N"};
-static String language_meta_string_476 = {1, "O"};
-static String language_meta_string_477 = {1, "P"};
-static String language_meta_string_478 = {1, "Q"};
-static String language_meta_string_479 = {1, "R"};
-static String language_meta_string_480 = {1, "S"};
-static String language_meta_string_481 = {1, "T"};
-static String language_meta_string_482 = {1, "U"};
-static String language_meta_string_483 = {1, "V"};
-static String language_meta_string_484 = {1, "W"};
-static String language_meta_string_485 = {1, "X"};
-static String language_meta_string_486 = {1, "Y"};
-static String language_meta_string_487 = {1, "Z"};
-static String language_meta_string_488 = {1, " "};
-static String language_meta_string_489 = {1, "\n"};
+static String language_meta_string_349 = {25, "->arena, NULL, 1, NULL);\n"};
+static String language_meta_string_350 = {22, "string_builder_append("};
+static String language_meta_string_351 = {26, "->current_string_builder, "};
+static String language_meta_string_352 = {26, "->arena, NULL, -1, NULL);\n"};
+static String language_meta_string_353 = {1, "{"};
+static String language_meta_string_354 = {1, " "};
+static String language_meta_string_355 = {1, "}"};
+static String language_meta_string_356 = {22, "string_builder_append("};
+static String language_meta_string_357 = {26, "->current_string_builder, "};
+static String language_meta_string_358 = {35, "->arena, string_alloc_from_cstring("};
+static String language_meta_string_359 = {27, "->arena, \"{\\n\"), 0, NULL);\n"};
+static String language_meta_string_360 = {22, "string_builder_append("};
+static String language_meta_string_361 = {26, "->current_string_builder, "};
+static String language_meta_string_362 = {25, "->arena, NULL, 1, NULL);\n"};
+static String language_meta_string_363 = {22, "string_builder_append("};
+static String language_meta_string_364 = {26, "->current_string_builder, "};
+static String language_meta_string_365 = {26, "->arena, NULL, -1, NULL);\n"};
+static String language_meta_string_366 = {22, "string_builder_append("};
+static String language_meta_string_367 = {26, "->current_string_builder, "};
+static String language_meta_string_368 = {35, "->arena, string_alloc_from_cstring("};
+static String language_meta_string_369 = {27, "->arena, \"}\\n\"), 0, NULL);\n"};
+static String language_meta_string_370 = {1, "$"};
+static String language_meta_string_371 = {17, "meta_action_run(&"};
+static String language_meta_string_372 = {11, ", runtime, "};
+static String language_meta_string_373 = {26, "->current_string_builder, "};
+static String language_meta_string_374 = {10, "->arena);\n"};
+static String language_meta_string_375 = {1, "\n"};
+static String language_meta_string_376 = {1, " "};
+static String language_meta_string_377 = {22, "string_builder_append("};
+static String language_meta_string_378 = {26, "->current_string_builder, "};
+static String language_meta_string_379 = {35, "->arena, string_alloc_from_cstring("};
+static String language_meta_string_380 = {26, "->arena, \"\\n\"), 0, NULL);\n"};
+static String language_meta_string_381 = {1, "\""};
+static String language_meta_string_382 = {22, "string_builder_append("};
+static String language_meta_string_383 = {26, "->current_string_builder, "};
+static String language_meta_string_384 = {35, "->arena, string_alloc_from_cstring("};
+static String language_meta_string_385 = {26, "->arena, \"\\\"\"), 0, NULL);\n"};
+static String language_meta_string_386 = {1, "\\"};
+static String language_meta_string_387 = {22, "string_builder_append("};
+static String language_meta_string_388 = {26, "->current_string_builder, "};
+static String language_meta_string_389 = {35, "->arena, string_alloc_from_cstring("};
+static String language_meta_string_390 = {26, "->arena, \"\\\\\"), 0, NULL);\n"};
+static String language_meta_string_391 = {1, "{"};
+static String language_meta_string_392 = {1, "}"};
+static String language_meta_string_393 = {22, "string_builder_append("};
+static String language_meta_string_394 = {26, "->current_string_builder, "};
+static String language_meta_string_395 = {35, "->arena, string_alloc_from_cstring("};
+static String language_meta_string_396 = {10, "->arena, \""};
+static String language_meta_string_397 = {14, "\"), 0, NULL);\n"};
+static String language_meta_string_398 = {36, "StringBuilder* named_string_builder_"};
+static String language_meta_string_399 = {2, ";\n"};
+static String language_meta_string_400 = {1, "0"};
+static String language_meta_string_401 = {1, "1"};
+static String language_meta_string_402 = {1, "2"};
+static String language_meta_string_403 = {1, "3"};
+static String language_meta_string_404 = {1, "4"};
+static String language_meta_string_405 = {1, "5"};
+static String language_meta_string_406 = {1, "6"};
+static String language_meta_string_407 = {1, "7"};
+static String language_meta_string_408 = {1, "8"};
+static String language_meta_string_409 = {1, "9"};
+static String language_meta_string_410 = {1, "{"};
+static String language_meta_string_411 = {1, "*"};
+static String language_meta_string_412 = {1, "}"};
+static String language_meta_string_413 = {7, "int i;\n"};
+static String language_meta_string_414 = {7, "int i;\n"};
+static String language_meta_string_415 = {14, "for (i=0; i < "};
+static String language_meta_string_416 = {9, "; i++) {\n"};
+static String language_meta_string_417 = {22, "string_builder_append("};
+static String language_meta_string_418 = {26, "->current_string_builder, "};
+static String language_meta_string_419 = {9, "->arena, "};
+static String language_meta_string_420 = {12, ", 0, NULL);\n"};
+static String language_meta_string_421 = {2, "}\n"};
+static String language_meta_string_422 = {1, "("};
+static String language_meta_string_423 = {4, "->W_"};
+static String language_meta_string_424 = {3, " ? "};
+static String language_meta_string_425 = {4, "->W_"};
+static String language_meta_string_426 = {5, " : 0)"};
+static String language_meta_string_427 = {1, "("};
+static String language_meta_string_428 = {1, "-"};
+static String language_meta_string_429 = {1, ")"};
+static String language_meta_string_430 = {2, "(("};
+static String language_meta_string_431 = {4, "->W_"};
+static String language_meta_string_432 = {3, " ? "};
+static String language_meta_string_433 = {4, "->W_"};
+static String language_meta_string_434 = {6, " : 0)-"};
+static String language_meta_string_435 = {1, ")"};
+static String language_meta_string_436 = {7, "number("};
+static String language_meta_string_437 = {1, ")"};
+static String language_meta_string_438 = {2, "(0"};
+static String language_meta_string_439 = {1, ")"};
+static String language_meta_string_440 = {25, "+(meta_action_first_byte("};
+static String language_meta_string_441 = {1, ")"};
+static String language_meta_string_442 = {1, ")"};
+static String language_meta_string_443 = {2, "<<"};
+static String language_meta_string_444 = {1, "\""};
+static String language_meta_string_445 = {1, "\""};
+static String language_meta_string_446 = {14, "static String "};
+static String language_meta_string_447 = {7, "string_"};
+static String language_meta_string_448 = {4, " = {"};
+static String language_meta_string_449 = {3, ", \""};
+static String language_meta_string_450 = {4, "\"};\n"};
+static String language_meta_string_451 = {2, "(&"};
+static String language_meta_string_452 = {7, "string_"};
+static String language_meta_string_453 = {1, ")"};
+static String language_meta_string_454 = {1, "("};
+static String language_meta_string_455 = {1, ")"};
+static String language_meta_string_456 = {10, "(((struct "};
+static String language_meta_string_457 = {6, "Action"};
+static String language_meta_string_458 = {18, "Vars*)variables)->"};
+static String language_meta_string_459 = {1, ")"};
+static String language_meta_string_460 = {4, ".len"};
+static String language_meta_string_461 = {15, "meta_action_len"};
+static String language_meta_string_462 = {6, ".count"};
+static String language_meta_string_463 = {17, "meta_action_count"};
+static String language_meta_string_464 = {2, "W["};
+static String language_meta_string_465 = {1, "]"};
+static String language_meta_string_466 = {15, "unsigned int W_"};
+static String language_meta_string_467 = {2, ";\n"};
+static String language_meta_string_468 = {1, "\""};
+static String language_meta_string_469 = {1, "\'"};
+static String language_meta_string_470 = {1, "\'"};
+static String language_meta_string_471 = {14, "static String "};
+static String language_meta_string_472 = {7, "string_"};
+static String language_meta_string_473 = {4, " = {"};
+static String language_meta_string_474 = {3, ", \""};
+static String language_meta_string_475 = {4, "\"};\n"};
+static String language_meta_string_476 = {2, "(&"};
+static String language_meta_string_477 = {7, "string_"};
+static String language_meta_string_478 = {1, ")"};
+static String language_meta_string_479 = {1, "\""};
+static String language_meta_string_480 = {2, "\\\""};
+static String language_meta_string_481 = {1, "\'"};
+static String language_meta_string_482 = {1, "\\"};
+static String language_meta_string_483 = {5, "rule_"};
+static String language_meta_string_484 = {1, "a"};
+static String language_meta_string_485 = {1, "b"};
+static String language_meta_string_486 = {1, "c"};
+static String language_meta_string_487 = {1, "d"};
+static String language_meta_string_488 = {1, "e"};
+static String language_meta_string_489 = {1, "f"};
+static String language_meta_string_490 = {1, "g"};
+static String language_meta_string_491 = {1, "h"};
+static String language_meta_string_492 = {1, "i"};
+static String language_meta_string_493 = {1, "j"};
+static String language_meta_string_494 = {1, "k"};
+static String language_meta_string_495 = {1, "l"};
+static String language_meta_string_496 = {1, "m"};
+static String language_meta_string_497 = {1, "n"};
+static String language_meta_string_498 = {1, "o"};
+static String language_meta_string_499 = {1, "p"};
+static String language_meta_string_500 = {1, "q"};
+static String language_meta_string_501 = {1, "r"};
+static String language_meta_string_502 = {1, "s"};
+static String language_meta_string_503 = {1, "t"};
+static String language_meta_string_504 = {1, "u"};
+static String language_meta_string_505 = {1, "v"};
+static String language_meta_string_506 = {1, "w"};
+static String language_meta_string_507 = {1, "x"};
+static String language_meta_string_508 = {1, "y"};
+static String language_meta_string_509 = {1, "z"};
+static String language_meta_string_510 = {1, "A"};
+static String language_meta_string_511 = {1, "B"};
+static String language_meta_string_512 = {1, "C"};
+static String language_meta_string_513 = {1, "D"};
+static String language_meta_string_514 = {1, "E"};
+static String language_meta_string_515 = {1, "F"};
+static String language_meta_string_516 = {1, "G"};
+static String language_meta_string_517 = {1, "H"};
+static String language_meta_string_518 = {1, "I"};
+static String language_meta_string_519 = {1, "J"};
+static String language_meta_string_520 = {1, "K"};
+static String language_meta_string_521 = {1, "L"};
+static String language_meta_string_522 = {1, "M"};
+static String language_meta_string_523 = {1, "N"};
+static String language_meta_string_524 = {1, "O"};
+static String language_meta_string_525 = {1, "P"};
+static String language_meta_string_526 = {1, "Q"};
+static String language_meta_string_527 = {1, "R"};
+static String language_meta_string_528 = {1, "S"};
+static String language_meta_string_529 = {1, "T"};
+static String language_meta_string_530 = {1, "U"};
+static String language_meta_string_531 = {1, "V"};
+static String language_meta_string_532 = {1, "W"};
+static String language_meta_string_533 = {1, "X"};
+static String language_meta_string_534 = {1, "Y"};
+static String language_meta_string_535 = {1, "Z"};
+static String language_meta_string_536 = {1, " "};
+static String language_meta_string_537 = {1, "\n"};
MetaAction language_meta_rule_main(MetaParseState* parse_state);
struct language_meta_Action1Vars {
MetaAction xs;
@@ -666,8 +714,7 @@ struct language_meta_Action49Vars {
MetaAction runtime;
};
struct language_meta_Action50Vars {
- MetaAction x;
- MetaAction runtime;
+ MetaAction xs;
};
struct language_meta_Action51Vars {
MetaAction x;
@@ -678,80 +725,106 @@ struct language_meta_Action52Vars {
MetaAction runtime;
};
struct language_meta_Action53Vars {
+ MetaAction x;
+ MetaAction runtime;
+};
+struct language_meta_Action54Vars {
MetaAction x;
MetaAction y;
MetaAction z;
MetaAction runtime;
};
-struct language_meta_Action54Vars {
+struct language_meta_Action55Vars {
+ MetaAction xs;
+ MetaAction runtime;
+};
+MetaAction language_meta_rule_cFragment(MetaParseState* parse_state);
+struct language_meta_Action56Vars {
MetaAction xs;
MetaAction runtime;
};
+struct language_meta_Action57Vars {
+ MetaAction x;
+ MetaAction runtime;
+};
+struct language_meta_Action58Vars {
+ MetaAction runtime;
+};
+struct language_meta_Action59Vars {
+ MetaAction runtime;
+};
+struct language_meta_Action60Vars {
+ MetaAction runtime;
+};
+struct language_meta_Action61Vars {
+ MetaAction x;
+ MetaAction runtime;
+};
MetaAction language_meta_rule_stringBuilderName(MetaParseState* parse_state);
-struct language_meta_Action55Vars {
+struct language_meta_Action62Vars {
MetaAction x;
};
MetaAction language_meta_rule_actionPrimitiveExpression(MetaParseState* parse_state);
-struct language_meta_Action56Vars {
+struct language_meta_Action63Vars {
MetaAction x;
};
MetaAction language_meta_rule_digit(MetaParseState* parse_state);
MetaAction language_meta_rule_placeholder(MetaParseState* parse_state);
-struct language_meta_Action68Vars {
+struct language_meta_Action75Vars {
MetaAction x;
MetaAction y;
MetaAction runtime;
};
MetaAction language_meta_rule_expr(MetaParseState* parse_state);
-struct language_meta_Action69Vars {
+struct language_meta_Action76Vars {
MetaAction x;
MetaAction runtime;
};
-struct language_meta_Action70Vars {
+struct language_meta_Action77Vars {
MetaAction x;
MetaAction y;
MetaAction runtime;
};
-struct language_meta_Action71Vars {
+struct language_meta_Action78Vars {
MetaAction y;
};
-struct language_meta_Action72Vars {
+struct language_meta_Action79Vars {
MetaAction xs;
};
MetaAction language_meta_rule_numberPart(MetaParseState* parse_state);
-struct language_meta_Action73Vars {
+struct language_meta_Action80Vars {
MetaAction x;
MetaAction y;
};
MetaAction language_meta_rule_maybeShift(MetaParseState* parse_state);
MetaAction language_meta_rule_string(MetaParseState* parse_state);
-struct language_meta_Action76Vars {
+struct language_meta_Action83Vars {
MetaAction xs;
MetaAction runtime;
};
MetaAction language_meta_rule_dotname(MetaParseState* parse_state);
-struct language_meta_Action77Vars {
+struct language_meta_Action84Vars {
MetaAction x;
MetaAction y;
};
MetaAction language_meta_rule_nameAsActionLookup(MetaParseState* parse_state);
-struct language_meta_Action78Vars {
+struct language_meta_Action85Vars {
MetaAction x;
};
MetaAction language_meta_rule_nextname(MetaParseState* parse_state);
MetaAction language_meta_rule_wvar(MetaParseState* parse_state);
-struct language_meta_Action81Vars {
+struct language_meta_Action88Vars {
MetaAction x;
};
MetaAction language_meta_rule_stringInner(MetaParseState* parse_state);
MetaAction language_meta_rule_charString(MetaParseState* parse_state);
-struct language_meta_Action84Vars {
+struct language_meta_Action91Vars {
MetaAction xs;
};
MetaAction language_meta_rule_charStringInner(MetaParseState* parse_state);
MetaAction language_meta_rule_stringEscape(MetaParseState* parse_state);
MetaAction language_meta_rule_ruleName(MetaParseState* parse_state);
-struct language_meta_Action89Vars {
+struct language_meta_Action96Vars {
MetaAction x;
};
MetaAction language_meta_rule_variableName(MetaParseState* parse_state);
@@ -1454,109 +1527,193 @@ void language_meta_action_49(void* runtime, void* variables) {
}
void language_meta_action_50(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_305), 0, NULL);
- meta_action_run(&(((struct language_meta_Action50Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_306), 0, NULL);
- meta_action_run(&(((struct language_meta_Action50Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_307), 0, NULL);
- meta_action_run(&(((struct language_meta_Action50Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_308), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action50Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
}
void language_meta_action_51(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_308), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action51Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_309), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action51Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_310), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action51Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_311), 0, NULL);
+}
+
+void language_meta_action_52(void* runtime, void* variables) {
StringBuilder* last_string_builder;
StringBuilder* string_builder;
((language_meta_Runtime*)runtime)->W_1 = meta_inc(((language_meta_Runtime*)runtime)->W_1 ? ((language_meta_Runtime*)runtime)->W_1 : 0, 1);
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_fileDeclarations;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_309), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_312), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_1 ? ((language_meta_Runtime*)runtime)->W_1 : 0)), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_310), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_313), 0, NULL);
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_placeholders;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_311), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_314), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_1 ? ((language_meta_Runtime*)runtime)->W_1 : 0)), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_312), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_315), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 1, NULL);
string_builder = string_builder_create(((language_meta_Runtime*)runtime)->arena);
((language_meta_Runtime*)runtime)->named_string_builder_placeholderVars = string_builder;
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 0, ((language_meta_Runtime*)runtime)->named_string_builder_placeholderVars);
- meta_action_run(&(((struct language_meta_Action51Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action52Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, -1, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_313), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_314), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_316), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_317), 0, NULL);
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_actionDeclarations;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- if (!string_builder_contains(((language_meta_Runtime*)runtime)->current_string_builder, (&language_meta_string_315))) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_316), 0, NULL);
+ if (!string_builder_contains(((language_meta_Runtime*)runtime)->current_string_builder, (&language_meta_string_318))) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_319), 0, NULL);
}
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_317), 0, NULL);
- meta_action_run(&(((struct language_meta_Action51Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_318), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_319), 0, NULL);
- meta_action_run(&(((struct language_meta_Action51Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_320), 0, NULL);
- meta_action_run(&(((struct language_meta_Action51Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action52Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_321), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_1 ? ((language_meta_Runtime*)runtime)->W_1 : 0)), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_322), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action52Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_323), 0, NULL);
- meta_action_run(&(((struct language_meta_Action51Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action52Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_324), 0, NULL);
- meta_action_run(&(((struct language_meta_Action51Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_1 ? ((language_meta_Runtime*)runtime)->W_1 : 0)), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_325), 0, NULL);
-}
-
-void language_meta_action_52(void* runtime, void* variables) {
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_326), 0, NULL);
meta_action_run(&(((struct language_meta_Action52Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_327), 0, NULL);
meta_action_run(&(((struct language_meta_Action52Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_328), 0, NULL);
- meta_action_run(&(((struct language_meta_Action52Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_329), 0, NULL);
}
void language_meta_action_53(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_329), 0, NULL);
meta_action_run(&(((struct language_meta_Action53Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_334), 0, NULL);
- meta_action_run(&(((struct language_meta_Action53Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_335), 0, NULL);
- meta_action_run(&(((struct language_meta_Action53Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_336), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_330), 0, NULL);
meta_action_run(&(((struct language_meta_Action53Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_331), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action53Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_332), 0, NULL);
+}
+
+void language_meta_action_54(void* runtime, void* variables) {
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_337), 0, NULL);
- meta_action_run(&(((struct language_meta_Action53Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_338), 0, NULL);
- meta_action_run(&(((struct language_meta_Action53Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_339), 0, NULL);
- meta_action_run(&(((struct language_meta_Action53Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_340), 0, NULL);
- meta_action_run(&(((struct language_meta_Action53Vars*)variables)->z), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_341), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_342), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_343), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action54Vars*)variables)->z), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_344), 0, NULL);
}
-void language_meta_action_54(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_344), 0, NULL);
- meta_action_run(&(((struct language_meta_Action54Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_345), 0, NULL);
- meta_action_run(&(((struct language_meta_Action54Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_346), 0, NULL);
- meta_action_run(&(((struct language_meta_Action54Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+void language_meta_action_55(void* runtime, void* variables) {
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_347), 0, NULL);
- meta_action_run(&(((struct language_meta_Action54Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action55Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_348), 0, NULL);
- meta_action_run(&(((struct language_meta_Action54Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action55Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_349), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action55Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_350), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action55Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_351), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action55Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_352), 0, NULL);
}
-void language_meta_action_55(void* runtime, void* variables) {
+void language_meta_action_56(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_356), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_357), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_358), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_359), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_360), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_361), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_362), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_363), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_364), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_365), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_366), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_367), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_368), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action56Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_369), 0, NULL);
+}
+
+void language_meta_action_57(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_371), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action57Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_372), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action57Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_373), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action57Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_374), 0, NULL);
+}
+
+void language_meta_action_58(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_377), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action58Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_378), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action58Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_379), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action58Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_380), 0, NULL);
+}
+
+void language_meta_action_59(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_382), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action59Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_383), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action59Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_384), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action59Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_385), 0, NULL);
+}
+
+void language_meta_action_60(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_387), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action60Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_388), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action60Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_389), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action60Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_390), 0, NULL);
+}
+
+void language_meta_action_61(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_393), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action61Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_394), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action61Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_395), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action61Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_396), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action61Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_397), 0, NULL);
+}
+
+void language_meta_action_62(void* runtime, void* variables) {
StringBuilder* last_string_builder;
StringBuilder* string_builder;
MetaAction action;
@@ -1564,143 +1721,143 @@ void language_meta_action_55(void* runtime, void* variables) {
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_runtimeStruct;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- action = (((struct language_meta_Action55Vars*)variables)->x);
+ action = (((struct language_meta_Action62Vars*)variables)->x);
string_slice(action.input_buffer, action.start, action.end, &slice);
if (!string_builder_contains(((language_meta_Runtime*)runtime)->current_string_builder, &slice)) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_350), 0, NULL);
- meta_action_run(&(((struct language_meta_Action55Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_351), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_398), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action62Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_399), 0, NULL);
}
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
- meta_action_run(&(((struct language_meta_Action55Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action62Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
}
-void language_meta_action_56(void* runtime, void* variables) {
- meta_action_run(&(((struct language_meta_Action56Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+void language_meta_action_63(void* runtime, void* variables) {
+ meta_action_run(&(((struct language_meta_Action63Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
}
-void language_meta_action_68(void* runtime, void* variables) {
+void language_meta_action_75(void* runtime, void* variables) {
StringBuilder* last_string_builder;
StringBuilder* string_builder;
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_placeholderVars;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- if (!string_builder_contains(((language_meta_Runtime*)runtime)->current_string_builder, (&language_meta_string_365))) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_366), 0, NULL);
+ if (!string_builder_contains(((language_meta_Runtime*)runtime)->current_string_builder, (&language_meta_string_413))) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_414), 0, NULL);
}
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_367), 0, NULL);
- meta_action_run(&(((struct language_meta_Action68Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_368), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_415), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action75Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_416), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 1, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_369), 0, NULL);
- meta_action_run(&(((struct language_meta_Action68Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_370), 0, NULL);
- meta_action_run(&(((struct language_meta_Action68Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_371), 0, NULL);
- meta_action_run(&(((struct language_meta_Action68Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_372), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_417), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action75Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_418), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action75Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_419), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action75Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_420), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, -1, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_373), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_421), 0, NULL);
}
-void language_meta_action_69(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_374), 0, NULL);
- meta_action_run(&(((struct language_meta_Action69Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_375), 0, NULL);
- meta_action_run(&(((struct language_meta_Action69Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_376), 0, NULL);
- meta_action_run(&(((struct language_meta_Action69Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_377), 0, NULL);
- meta_action_run(&(((struct language_meta_Action69Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_378), 0, NULL);
+void language_meta_action_76(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_422), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action76Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_423), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action76Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_424), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action76Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_425), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action76Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_426), 0, NULL);
}
-void language_meta_action_70(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_382), 0, NULL);
- meta_action_run(&(((struct language_meta_Action70Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_383), 0, NULL);
- meta_action_run(&(((struct language_meta_Action70Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_384), 0, NULL);
- meta_action_run(&(((struct language_meta_Action70Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_385), 0, NULL);
- meta_action_run(&(((struct language_meta_Action70Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_386), 0, NULL);
- meta_action_run(&(((struct language_meta_Action70Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_387), 0, NULL);
+void language_meta_action_77(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_430), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action77Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_431), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action77Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_432), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action77Vars*)variables)->runtime), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_433), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action77Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_434), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action77Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_435), 0, NULL);
}
-void language_meta_action_71(void* runtime, void* variables) {
- meta_action_run(&(((struct language_meta_Action71Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+void language_meta_action_78(void* runtime, void* variables) {
+ meta_action_run(&(((struct language_meta_Action78Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
}
-void language_meta_action_72(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_390), 0, NULL);
- meta_action_run(&(((struct language_meta_Action72Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_391), 0, NULL);
+void language_meta_action_79(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_438), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action79Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_439), 0, NULL);
}
-void language_meta_action_73(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_392), 0, NULL);
- meta_action_run(&(((struct language_meta_Action73Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_393), 0, NULL);
- meta_action_run(&(((struct language_meta_Action73Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_394), 0, NULL);
+void language_meta_action_80(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_440), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action80Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_441), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action80Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_442), 0, NULL);
}
-void language_meta_action_75(void* runtime, void* variables) {
+void language_meta_action_82(void* runtime, void* variables) {
}
-void language_meta_action_76(void* runtime, void* variables) {
+void language_meta_action_83(void* runtime, void* variables) {
StringBuilder* last_string_builder;
StringBuilder* string_builder;
((language_meta_Runtime*)runtime)->W_2 = meta_inc(((language_meta_Runtime*)runtime)->W_2 ? ((language_meta_Runtime*)runtime)->W_2 : 0, 1);
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_symbols;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_398), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_446), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 0, ((language_meta_Runtime*)runtime)->named_string_builder_prefix);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_399), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_447), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_2 ? ((language_meta_Runtime*)runtime)->W_2 : 0)), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_400), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, meta_action_count((((struct language_meta_Action76Vars*)variables)->xs))), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_401), 0, NULL);
- meta_action_run(&(((struct language_meta_Action76Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_402), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_448), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, meta_action_count((((struct language_meta_Action83Vars*)variables)->xs))), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_449), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action83Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_450), 0, NULL);
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_403), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_451), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 0, ((language_meta_Runtime*)runtime)->named_string_builder_prefix);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_404), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_452), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_2 ? ((language_meta_Runtime*)runtime)->W_2 : 0)), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_405), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_453), 0, NULL);
}
-void language_meta_action_77(void* runtime, void* variables) {
- meta_action_run(&(((struct language_meta_Action77Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_406), 0, NULL);
- meta_action_run(&(((struct language_meta_Action77Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_407), 0, NULL);
+void language_meta_action_84(void* runtime, void* variables) {
+ meta_action_run(&(((struct language_meta_Action84Vars*)variables)->y), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_454), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action84Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_455), 0, NULL);
}
-void language_meta_action_78(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_408), 0, NULL);
+void language_meta_action_85(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_456), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 0, ((language_meta_Runtime*)runtime)->named_string_builder_prefix);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_409), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_457), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_0 ? ((language_meta_Runtime*)runtime)->W_0 : 0)), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_410), 0, NULL);
- meta_action_run(&(((struct language_meta_Action78Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_411), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_458), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action85Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_459), 0, NULL);
}
-void language_meta_action_79(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_413), 0, NULL);
+void language_meta_action_86(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_461), 0, NULL);
}
-void language_meta_action_80(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_415), 0, NULL);
+void language_meta_action_87(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_463), 0, NULL);
}
-void language_meta_action_81(void* runtime, void* variables) {
+void language_meta_action_88(void* runtime, void* variables) {
StringBuilder* last_string_builder;
StringBuilder* string_builder;
MetaAction action;
@@ -1708,49 +1865,49 @@ void language_meta_action_81(void* runtime, void* variables) {
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_runtimeStruct;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- action = (((struct language_meta_Action81Vars*)variables)->x);
+ action = (((struct language_meta_Action88Vars*)variables)->x);
string_slice(action.input_buffer, action.start, action.end, &slice);
if (!string_builder_contains(((language_meta_Runtime*)runtime)->current_string_builder, &slice)) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_418), 0, NULL);
- meta_action_run(&(((struct language_meta_Action81Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_419), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_466), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action88Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_467), 0, NULL);
}
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
- meta_action_run(&(((struct language_meta_Action81Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ meta_action_run(&(((struct language_meta_Action88Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
}
-void language_meta_action_84(void* runtime, void* variables) {
+void language_meta_action_91(void* runtime, void* variables) {
StringBuilder* last_string_builder;
StringBuilder* string_builder;
((language_meta_Runtime*)runtime)->W_2 = meta_inc(((language_meta_Runtime*)runtime)->W_2 ? ((language_meta_Runtime*)runtime)->W_2 : 0, 1);
last_string_builder = ((language_meta_Runtime*)runtime)->current_string_builder;
string_builder = ((language_meta_Runtime*)runtime)->named_string_builder_symbols;
((language_meta_Runtime*)runtime)->current_string_builder = string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_423), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_471), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 0, ((language_meta_Runtime*)runtime)->named_string_builder_prefix);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_424), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_472), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_2 ? ((language_meta_Runtime*)runtime)->W_2 : 0)), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_425), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, meta_action_count((((struct language_meta_Action84Vars*)variables)->xs))), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_426), 0, NULL);
- meta_action_run(&(((struct language_meta_Action84Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_427), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_473), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, meta_action_count((((struct language_meta_Action91Vars*)variables)->xs))), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_474), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action91Vars*)variables)->xs), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_475), 0, NULL);
((language_meta_Runtime*)runtime)->current_string_builder = last_string_builder;
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_428), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_476), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 0, ((language_meta_Runtime*)runtime)->named_string_builder_prefix);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_429), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_477), 0, NULL);
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, string_from_integer(((language_meta_Runtime*)runtime)->arena, (((language_meta_Runtime*)runtime)->W_2 ? ((language_meta_Runtime*)runtime)->W_2 : 0)), 0, NULL);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_430), 0, NULL);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_478), 0, NULL);
}
-void language_meta_action_86(void* runtime, void* variables) {
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_432), 0, NULL);
+void language_meta_action_93(void* runtime, void* variables) {
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_480), 0, NULL);
}
-void language_meta_action_89(void* runtime, void* variables) {
+void language_meta_action_96(void* runtime, void* variables) {
string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, NULL, 0, ((language_meta_Runtime*)runtime)->named_string_builder_prefix);
- string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_435), 0, NULL);
- meta_action_run(&(((struct language_meta_Action89Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
+ string_builder_append(((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena, (&language_meta_string_483), 0, NULL);
+ meta_action_run(&(((struct language_meta_Action96Vars*)variables)->x), runtime, ((language_meta_Runtime*)runtime)->current_string_builder, ((language_meta_Runtime*)runtime)->arena);
}
MetaAction language_meta_rule_main(MetaParseState* parse_state) {
@@ -2750,6 +2907,7 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
void* vars52 = NULL;
void* vars53 = NULL;
void* vars54 = NULL;
+ void* vars55 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
@@ -3055,14 +3213,60 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
vars50 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action50Vars));
_ = language_meta_rule_space(parse_state);
if (_.valid) {
- _ = language_meta_rule_nameAsActionLookup(parse_state);
- ((struct language_meta_Action50Vars*)vars50)->x = _;
+ data = (&language_meta_string_305);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
if (_.valid) {
- _ = language_meta_rule_genRuntime(parse_state);
- ((struct language_meta_Action50Vars*)vars50)->runtime = _;
+ star_start_pos = parse_state->pos;
+ while (1) {
+ star_pos = parse_state->pos;
+ data = (&language_meta_string_306);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (!_.valid) {
+ meta_parse_state_backtrack(parse_state, star_pos);
+ break;
+ }
+ }
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, star_start_pos, parse_state->pos);
if (_.valid) {
- meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_50, vars50, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ star_variables = list_create(parse_state->arena);
+ star_start_pos = parse_state->pos;
+ while (1) {
+ star_pos = parse_state->pos;
+ _ = language_meta_rule_cFragment(parse_state);
+ if (!_.valid) {
+ meta_parse_state_backtrack(parse_state, star_pos);
+ break;
+ }
+ list_append(parse_state->arena, star_variables, arena_copy(parse_state->arena, sizeof(_), (unsigned char*)&_));
+ }
+ _ = meta_action_create(NULL, (void*)star_variables, parse_state->input_buffer, star_start_pos, parse_state->pos);
+ ((struct language_meta_Action50Vars*)vars50)->xs = _;
+ if (_.valid) {
+ data = (&language_meta_string_307);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_50, vars50, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
}
}
}
@@ -3071,7 +3275,7 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
vars51 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action51Vars));
_ = language_meta_rule_space(parse_state);
if (_.valid) {
- _ = language_meta_rule_placeholder(parse_state);
+ _ = language_meta_rule_nameAsActionLookup(parse_state);
((struct language_meta_Action51Vars*)vars51)->x = _;
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
@@ -3087,7 +3291,7 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
vars52 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action52Vars));
_ = language_meta_rule_space(parse_state);
if (_.valid) {
- _ = language_meta_rule_string(parse_state);
+ _ = language_meta_rule_placeholder(parse_state);
((struct language_meta_Action52Vars*)vars52)->x = _;
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
@@ -3103,7 +3307,23 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
vars53 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action53Vars));
_ = language_meta_rule_space(parse_state);
if (_.valid) {
- data = (&language_meta_string_330);
+ _ = language_meta_rule_string(parse_state);
+ ((struct language_meta_Action53Vars*)vars53)->x = _;
+ if (_.valid) {
+ _ = language_meta_rule_genRuntime(parse_state);
+ ((struct language_meta_Action53Vars*)vars53)->runtime = _;
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_53, vars53, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
+ }
+ meta_parse_state_backtrack(parse_state, or_backtrack_pos);
+ action_start_pos = parse_state->pos;
+ vars54 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action54Vars));
+ _ = language_meta_rule_space(parse_state);
+ if (_.valid) {
+ data = (&language_meta_string_333);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3113,9 +3333,9 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_name(parse_state);
- ((struct language_meta_Action53Vars*)vars53)->x = _;
+ ((struct language_meta_Action54Vars*)vars54)->x = _;
if (_.valid) {
- data = (&language_meta_string_331);
+ data = (&language_meta_string_334);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3125,9 +3345,9 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_wvar(parse_state);
- ((struct language_meta_Action53Vars*)vars53)->y = _;
+ ((struct language_meta_Action54Vars*)vars54)->y = _;
if (_.valid) {
- data = (&language_meta_string_332);
+ data = (&language_meta_string_335);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3137,9 +3357,9 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_actionPrimitiveExpression(parse_state);
- ((struct language_meta_Action53Vars*)vars53)->z = _;
+ ((struct language_meta_Action54Vars*)vars54)->z = _;
if (_.valid) {
- data = (&language_meta_string_333);
+ data = (&language_meta_string_336);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3149,10 +3369,10 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
- ((struct language_meta_Action53Vars*)vars53)->runtime = _;
+ ((struct language_meta_Action54Vars*)vars54)->runtime = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_53, vars53, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_54, vars54, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3164,10 +3384,10 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars54 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action54Vars));
+ vars55 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action55Vars));
_ = language_meta_rule_space(parse_state);
if (_.valid) {
- data = (&language_meta_string_342);
+ data = (&language_meta_string_345);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3188,11 +3408,11 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
list_append(parse_state->arena, star_variables, arena_copy(parse_state->arena, sizeof(_), (unsigned char*)&_));
}
_ = meta_action_create(NULL, (void*)star_variables, parse_state->input_buffer, star_start_pos, parse_state->pos);
- ((struct language_meta_Action54Vars*)vars54)->xs = _;
+ ((struct language_meta_Action55Vars*)vars55)->xs = _;
if (_.valid) {
_ = language_meta_rule_space(parse_state);
if (_.valid) {
- data = (&language_meta_string_343);
+ data = (&language_meta_string_346);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3202,10 +3422,10 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
- ((struct language_meta_Action54Vars*)vars54)->runtime = _;
+ ((struct language_meta_Action55Vars*)vars55)->runtime = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_54, vars54, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_55, vars55, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3215,21 +3435,256 @@ MetaAction language_meta_rule_actionexpr(MetaParseState* parse_state) {
return meta_action_create_invalid();
}
+MetaAction language_meta_rule_cFragment(MetaParseState* parse_state) {
+ unsigned int or_backtrack_pos;
+ unsigned int action_start_pos;
+ Highlight highlight = Highlight_None;
+ String* data;
+ String slice;
+ MetaAction _;
+ unsigned int star_pos;
+ unsigned int star_start_pos;
+ List* star_variables;
+ void* vars56 = NULL;
+ void* vars57 = NULL;
+ void* vars58 = NULL;
+ void* vars59 = NULL;
+ void* vars60 = NULL;
+ unsigned int nlookahead_pos;
+ void* vars61 = NULL;
+ or_backtrack_pos = parse_state->pos;
+ meta_parse_state_backtrack(parse_state, or_backtrack_pos);
+ action_start_pos = parse_state->pos;
+ vars56 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action56Vars));
+ data = (&language_meta_string_353);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ star_start_pos = parse_state->pos;
+ while (1) {
+ star_pos = parse_state->pos;
+ data = (&language_meta_string_354);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (!_.valid) {
+ meta_parse_state_backtrack(parse_state, star_pos);
+ break;
+ }
+ }
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, star_start_pos, parse_state->pos);
+ if (_.valid) {
+ star_variables = list_create(parse_state->arena);
+ star_start_pos = parse_state->pos;
+ while (1) {
+ star_pos = parse_state->pos;
+ _ = language_meta_rule_cFragment(parse_state);
+ if (!_.valid) {
+ meta_parse_state_backtrack(parse_state, star_pos);
+ break;
+ }
+ list_append(parse_state->arena, star_variables, arena_copy(parse_state->arena, sizeof(_), (unsigned char*)&_));
+ }
+ _ = meta_action_create(NULL, (void*)star_variables, parse_state->input_buffer, star_start_pos, parse_state->pos);
+ ((struct language_meta_Action56Vars*)vars56)->xs = _;
+ if (_.valid) {
+ data = (&language_meta_string_355);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ _ = language_meta_rule_genRuntime(parse_state);
+ ((struct language_meta_Action56Vars*)vars56)->runtime = _;
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_56, vars56, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
+ }
+ }
+ }
+ meta_parse_state_backtrack(parse_state, or_backtrack_pos);
+ action_start_pos = parse_state->pos;
+ vars57 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action57Vars));
+ data = (&language_meta_string_370);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ _ = language_meta_rule_nameAsActionLookup(parse_state);
+ ((struct language_meta_Action57Vars*)vars57)->x = _;
+ if (_.valid) {
+ _ = language_meta_rule_genRuntime(parse_state);
+ ((struct language_meta_Action57Vars*)vars57)->runtime = _;
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_57, vars57, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
+ }
+ meta_parse_state_backtrack(parse_state, or_backtrack_pos);
+ action_start_pos = parse_state->pos;
+ vars58 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action58Vars));
+ data = (&language_meta_string_375);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ star_start_pos = parse_state->pos;
+ while (1) {
+ star_pos = parse_state->pos;
+ data = (&language_meta_string_376);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (!_.valid) {
+ meta_parse_state_backtrack(parse_state, star_pos);
+ break;
+ }
+ }
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, star_start_pos, parse_state->pos);
+ if (_.valid) {
+ _ = language_meta_rule_genRuntime(parse_state);
+ ((struct language_meta_Action58Vars*)vars58)->runtime = _;
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_58, vars58, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
+ }
+ meta_parse_state_backtrack(parse_state, or_backtrack_pos);
+ action_start_pos = parse_state->pos;
+ vars59 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action59Vars));
+ data = (&language_meta_string_381);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ _ = language_meta_rule_genRuntime(parse_state);
+ ((struct language_meta_Action59Vars*)vars59)->runtime = _;
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_59, vars59, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
+ meta_parse_state_backtrack(parse_state, or_backtrack_pos);
+ action_start_pos = parse_state->pos;
+ vars60 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action60Vars));
+ data = (&language_meta_string_386);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ _ = language_meta_rule_genRuntime(parse_state);
+ ((struct language_meta_Action60Vars*)vars60)->runtime = _;
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_60, vars60, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
+ meta_parse_state_backtrack(parse_state, or_backtrack_pos);
+ action_start_pos = parse_state->pos;
+ vars61 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action61Vars));
+ nlookahead_pos = parse_state->pos;
+ data = (&language_meta_string_391);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ _ = meta_action_create_invalid();
+ } else {
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, 0, 0);
+ }
+ meta_parse_state_backtrack(parse_state, nlookahead_pos);
+ if (_.valid) {
+ nlookahead_pos = parse_state->pos;
+ data = (&language_meta_string_392);
+ string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
+ if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
+ parse_state->pos += data->size;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-data->size, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ if (_.valid) {
+ _ = meta_action_create_invalid();
+ } else {
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, 0, 0);
+ }
+ meta_parse_state_backtrack(parse_state, nlookahead_pos);
+ if (_.valid) {
+ if (parse_state->pos < parse_state->input_buffer->size) {
+ parse_state->pos += 1;
+ _ = meta_action_create(NULL, NULL, parse_state->input_buffer, parse_state->pos-1, parse_state->pos);
+ } else {
+ _ = meta_action_create_invalid();
+ }
+ ((struct language_meta_Action61Vars*)vars61)->x = _;
+ if (_.valid) {
+ _ = language_meta_rule_genRuntime(parse_state);
+ ((struct language_meta_Action61Vars*)vars61)->runtime = _;
+ if (_.valid) {
+ meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
+ return meta_action_create(language_meta_action_61, vars61, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ }
+ }
+ }
+ }
+ return meta_action_create_invalid();
+}
+
MetaAction language_meta_rule_stringBuilderName(MetaParseState* parse_state) {
unsigned int or_backtrack_pos;
unsigned int action_start_pos;
Highlight highlight = Highlight_None;
MetaAction _;
- void* vars55 = NULL;
+ void* vars62 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars55 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action55Vars));
+ vars62 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action62Vars));
_ = language_meta_rule_name(parse_state);
- ((struct language_meta_Action55Vars*)vars55)->x = _;
+ ((struct language_meta_Action62Vars*)vars62)->x = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_55, vars55, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_62, vars62, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
return meta_action_create_invalid();
}
@@ -3239,16 +3694,16 @@ MetaAction language_meta_rule_actionPrimitiveExpression(MetaParseState* parse_st
unsigned int action_start_pos;
Highlight highlight = Highlight_None;
MetaAction _;
- void* vars56 = NULL;
+ void* vars63 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars56 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action56Vars));
+ vars63 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action63Vars));
_ = language_meta_rule_dotname(parse_state);
- ((struct language_meta_Action56Vars*)vars56)->x = _;
+ ((struct language_meta_Action63Vars*)vars63)->x = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_56, vars56, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_63, vars63, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
@@ -3270,7 +3725,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_352);
+ data = (&language_meta_string_400);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3284,7 +3739,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_353);
+ data = (&language_meta_string_401);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3298,7 +3753,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_354);
+ data = (&language_meta_string_402);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3312,7 +3767,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_355);
+ data = (&language_meta_string_403);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3326,7 +3781,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_356);
+ data = (&language_meta_string_404);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3340,7 +3795,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_357);
+ data = (&language_meta_string_405);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3354,7 +3809,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_358);
+ data = (&language_meta_string_406);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3368,7 +3823,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_359);
+ data = (&language_meta_string_407);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3382,7 +3837,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_360);
+ data = (&language_meta_string_408);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3396,7 +3851,7 @@ MetaAction language_meta_rule_digit(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_361);
+ data = (&language_meta_string_409);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3418,12 +3873,12 @@ MetaAction language_meta_rule_placeholder(MetaParseState* parse_state) {
String* data;
String slice;
MetaAction _;
- void* vars68 = NULL;
+ void* vars75 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars68 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action68Vars));
- data = (&language_meta_string_362);
+ vars75 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action75Vars));
+ data = (&language_meta_string_410);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3435,9 +3890,9 @@ MetaAction language_meta_rule_placeholder(MetaParseState* parse_state) {
_ = language_meta_rule_space(parse_state);
if (_.valid) {
_ = language_meta_rule_string(parse_state);
- ((struct language_meta_Action68Vars*)vars68)->x = _;
+ ((struct language_meta_Action75Vars*)vars75)->x = _;
if (_.valid) {
- data = (&language_meta_string_363);
+ data = (&language_meta_string_411);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3447,11 +3902,11 @@ MetaAction language_meta_rule_placeholder(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_expr(parse_state);
- ((struct language_meta_Action68Vars*)vars68)->y = _;
+ ((struct language_meta_Action75Vars*)vars75)->y = _;
if (_.valid) {
_ = language_meta_rule_space(parse_state);
if (_.valid) {
- data = (&language_meta_string_364);
+ data = (&language_meta_string_412);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3461,10 +3916,10 @@ MetaAction language_meta_rule_placeholder(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
- ((struct language_meta_Action68Vars*)vars68)->runtime = _;
+ ((struct language_meta_Action75Vars*)vars75)->runtime = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_68, vars68, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_75, vars75, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3481,33 +3936,33 @@ MetaAction language_meta_rule_expr(MetaParseState* parse_state) {
unsigned int action_start_pos;
Highlight highlight = Highlight_None;
MetaAction _;
- void* vars69 = NULL;
+ void* vars76 = NULL;
String* data;
String slice;
- void* vars70 = NULL;
- void* vars71 = NULL;
+ void* vars77 = NULL;
+ void* vars78 = NULL;
List* star_variables;
unsigned int star_pos;
unsigned int star_start_pos;
- void* vars72 = NULL;
+ void* vars79 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars69 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action69Vars));
+ vars76 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action76Vars));
_ = language_meta_rule_wvar(parse_state);
- ((struct language_meta_Action69Vars*)vars69)->x = _;
+ ((struct language_meta_Action76Vars*)vars76)->x = _;
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
- ((struct language_meta_Action69Vars*)vars69)->runtime = _;
+ ((struct language_meta_Action76Vars*)vars76)->runtime = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_69, vars69, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_76, vars76, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars70 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action70Vars));
- data = (&language_meta_string_379);
+ vars77 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action77Vars));
+ data = (&language_meta_string_427);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3517,9 +3972,9 @@ MetaAction language_meta_rule_expr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_wvar(parse_state);
- ((struct language_meta_Action70Vars*)vars70)->x = _;
+ ((struct language_meta_Action77Vars*)vars77)->x = _;
if (_.valid) {
- data = (&language_meta_string_380);
+ data = (&language_meta_string_428);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3529,9 +3984,9 @@ MetaAction language_meta_rule_expr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_dotname(parse_state);
- ((struct language_meta_Action70Vars*)vars70)->y = _;
+ ((struct language_meta_Action77Vars*)vars77)->y = _;
if (_.valid) {
- data = (&language_meta_string_381);
+ data = (&language_meta_string_429);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3541,10 +3996,10 @@ MetaAction language_meta_rule_expr(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
- ((struct language_meta_Action70Vars*)vars70)->runtime = _;
+ ((struct language_meta_Action77Vars*)vars77)->runtime = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_70, vars70, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_77, vars77, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3553,17 +4008,17 @@ MetaAction language_meta_rule_expr(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars71 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action71Vars));
+ vars78 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action78Vars));
_ = language_meta_rule_dotname(parse_state);
- ((struct language_meta_Action71Vars*)vars71)->y = _;
+ ((struct language_meta_Action78Vars*)vars78)->y = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_71, vars71, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_78, vars78, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars72 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action72Vars));
- data = (&language_meta_string_388);
+ vars79 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action79Vars));
+ data = (&language_meta_string_436);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3584,9 +4039,9 @@ MetaAction language_meta_rule_expr(MetaParseState* parse_state) {
list_append(parse_state->arena, star_variables, arena_copy(parse_state->arena, sizeof(_), (unsigned char*)&_));
}
_ = meta_action_create(NULL, (void*)star_variables, parse_state->input_buffer, star_start_pos, parse_state->pos);
- ((struct language_meta_Action72Vars*)vars72)->xs = _;
+ ((struct language_meta_Action79Vars*)vars79)->xs = _;
if (_.valid) {
- data = (&language_meta_string_389);
+ data = (&language_meta_string_437);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3596,7 +4051,7 @@ MetaAction language_meta_rule_expr(MetaParseState* parse_state) {
}
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_72, vars72, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_79, vars79, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3608,21 +4063,21 @@ MetaAction language_meta_rule_numberPart(MetaParseState* parse_state) {
unsigned int action_start_pos;
Highlight highlight = Highlight_None;
MetaAction _;
- void* vars73 = NULL;
+ void* vars80 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars73 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action73Vars));
+ vars80 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action80Vars));
_ = language_meta_rule_space(parse_state);
if (_.valid) {
_ = language_meta_rule_nameAsActionLookup(parse_state);
- ((struct language_meta_Action73Vars*)vars73)->x = _;
+ ((struct language_meta_Action80Vars*)vars80)->x = _;
if (_.valid) {
_ = language_meta_rule_maybeShift(parse_state);
- ((struct language_meta_Action73Vars*)vars73)->y = _;
+ ((struct language_meta_Action80Vars*)vars80)->y = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_73, vars73, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_80, vars80, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3636,11 +4091,11 @@ MetaAction language_meta_rule_maybeShift(MetaParseState* parse_state) {
String* data;
String slice;
MetaAction _;
- void* vars75 = NULL;
+ void* vars82 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_395);
+ data = (&language_meta_string_443);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3658,7 +4113,7 @@ MetaAction language_meta_rule_maybeShift(MetaParseState* parse_state) {
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_75, vars75, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_82, vars82, parse_state->input_buffer, action_start_pos, parse_state->pos);
return meta_action_create_invalid();
}
@@ -3672,12 +4127,12 @@ MetaAction language_meta_rule_string(MetaParseState* parse_state) {
List* star_variables;
unsigned int star_pos;
unsigned int star_start_pos;
- void* vars76 = NULL;
+ void* vars83 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars76 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action76Vars));
- data = (&language_meta_string_396);
+ vars83 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action83Vars));
+ data = (&language_meta_string_444);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3698,9 +4153,9 @@ MetaAction language_meta_rule_string(MetaParseState* parse_state) {
list_append(parse_state->arena, star_variables, arena_copy(parse_state->arena, sizeof(_), (unsigned char*)&_));
}
_ = meta_action_create(NULL, (void*)star_variables, parse_state->input_buffer, star_start_pos, parse_state->pos);
- ((struct language_meta_Action76Vars*)vars76)->xs = _;
+ ((struct language_meta_Action83Vars*)vars83)->xs = _;
if (_.valid) {
- data = (&language_meta_string_397);
+ data = (&language_meta_string_445);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3710,10 +4165,10 @@ MetaAction language_meta_rule_string(MetaParseState* parse_state) {
}
if (_.valid) {
_ = language_meta_rule_genRuntime(parse_state);
- ((struct language_meta_Action76Vars*)vars76)->runtime = _;
+ ((struct language_meta_Action83Vars*)vars83)->runtime = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_76, vars76, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_83, vars83, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3726,19 +4181,19 @@ MetaAction language_meta_rule_dotname(MetaParseState* parse_state) {
unsigned int action_start_pos;
Highlight highlight = Highlight_None;
MetaAction _;
- void* vars77 = NULL;
+ void* vars84 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars77 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action77Vars));
+ vars84 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action84Vars));
_ = language_meta_rule_nameAsActionLookup(parse_state);
- ((struct language_meta_Action77Vars*)vars77)->x = _;
+ ((struct language_meta_Action84Vars*)vars84)->x = _;
if (_.valid) {
_ = language_meta_rule_nextname(parse_state);
- ((struct language_meta_Action77Vars*)vars77)->y = _;
+ ((struct language_meta_Action84Vars*)vars84)->y = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_77, vars77, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_84, vars84, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
return meta_action_create_invalid();
@@ -3749,16 +4204,16 @@ MetaAction language_meta_rule_nameAsActionLookup(MetaParseState* parse_state) {
unsigned int action_start_pos;
Highlight highlight = Highlight_None;
MetaAction _;
- void* vars78 = NULL;
+ void* vars85 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars78 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action78Vars));
+ vars85 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action85Vars));
_ = language_meta_rule_variableName(parse_state);
- ((struct language_meta_Action78Vars*)vars78)->x = _;
+ ((struct language_meta_Action85Vars*)vars85)->x = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_78, vars78, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_85, vars85, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
return meta_action_create_invalid();
}
@@ -3771,12 +4226,12 @@ MetaAction language_meta_rule_nextname(MetaParseState* parse_state) {
String slice;
MetaAction _;
unsigned int nlookahead_pos;
- void* vars79 = NULL;
- void* vars80 = NULL;
+ void* vars86 = NULL;
+ void* vars87 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_412);
+ data = (&language_meta_string_460);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3795,12 +4250,12 @@ MetaAction language_meta_rule_nextname(MetaParseState* parse_state) {
meta_parse_state_backtrack(parse_state, nlookahead_pos);
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_79, vars79, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_86, vars86, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_414);
+ data = (&language_meta_string_462);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3819,7 +4274,7 @@ MetaAction language_meta_rule_nextname(MetaParseState* parse_state) {
meta_parse_state_backtrack(parse_state, nlookahead_pos);
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_80, vars80, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_87, vars87, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
return meta_action_create_invalid();
@@ -3832,12 +4287,12 @@ MetaAction language_meta_rule_wvar(MetaParseState* parse_state) {
String* data;
String slice;
MetaAction _;
- void* vars81 = NULL;
+ void* vars88 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars81 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action81Vars));
- data = (&language_meta_string_416);
+ vars88 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action88Vars));
+ data = (&language_meta_string_464);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3852,9 +4307,9 @@ MetaAction language_meta_rule_wvar(MetaParseState* parse_state) {
} else {
_ = meta_action_create_invalid();
}
- ((struct language_meta_Action81Vars*)vars81)->x = _;
+ ((struct language_meta_Action88Vars*)vars88)->x = _;
if (_.valid) {
- data = (&language_meta_string_417);
+ data = (&language_meta_string_465);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3864,7 +4319,7 @@ MetaAction language_meta_rule_wvar(MetaParseState* parse_state) {
}
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_81, vars81, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_88, vars88, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3890,7 +4345,7 @@ MetaAction language_meta_rule_stringInner(MetaParseState* parse_state) {
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
nlookahead_pos = parse_state->pos;
- data = (&language_meta_string_420);
+ data = (&language_meta_string_468);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3929,12 +4384,12 @@ MetaAction language_meta_rule_charString(MetaParseState* parse_state) {
List* star_variables;
unsigned int star_pos;
unsigned int star_start_pos;
- void* vars84 = NULL;
+ void* vars91 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars84 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action84Vars));
- data = (&language_meta_string_421);
+ vars91 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action91Vars));
+ data = (&language_meta_string_469);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3955,9 +4410,9 @@ MetaAction language_meta_rule_charString(MetaParseState* parse_state) {
list_append(parse_state->arena, star_variables, arena_copy(parse_state->arena, sizeof(_), (unsigned char*)&_));
}
_ = meta_action_create(NULL, (void*)star_variables, parse_state->input_buffer, star_start_pos, parse_state->pos);
- ((struct language_meta_Action84Vars*)vars84)->xs = _;
+ ((struct language_meta_Action91Vars*)vars91)->xs = _;
if (_.valid) {
- data = (&language_meta_string_422);
+ data = (&language_meta_string_470);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -3967,7 +4422,7 @@ MetaAction language_meta_rule_charString(MetaParseState* parse_state) {
}
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_84, vars84, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_91, vars91, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
}
}
@@ -3981,7 +4436,7 @@ MetaAction language_meta_rule_charStringInner(MetaParseState* parse_state) {
MetaAction _;
String* data;
String slice;
- void* vars86 = NULL;
+ void* vars93 = NULL;
unsigned int nlookahead_pos;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
@@ -3993,7 +4448,7 @@ MetaAction language_meta_rule_charStringInner(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_431);
+ data = (&language_meta_string_479);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4003,12 +4458,12 @@ MetaAction language_meta_rule_charStringInner(MetaParseState* parse_state) {
}
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_86, vars86, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_93, vars93, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
nlookahead_pos = parse_state->pos;
- data = (&language_meta_string_433);
+ data = (&language_meta_string_481);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4047,7 +4502,7 @@ MetaAction language_meta_rule_stringEscape(MetaParseState* parse_state) {
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_434);
+ data = (&language_meta_string_482);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4075,16 +4530,16 @@ MetaAction language_meta_rule_ruleName(MetaParseState* parse_state) {
unsigned int action_start_pos;
Highlight highlight = Highlight_RuleName;
MetaAction _;
- void* vars89 = NULL;
+ void* vars96 = NULL;
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- vars89 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action89Vars));
+ vars96 = arena_alloc(parse_state->arena, sizeof(struct language_meta_Action96Vars));
_ = language_meta_rule_name(parse_state);
- ((struct language_meta_Action89Vars*)vars89)->x = _;
+ ((struct language_meta_Action96Vars*)vars96)->x = _;
if (_.valid) {
meta_highlight_register(parse_state, action_start_pos, parse_state->pos, highlight);
- return meta_action_create(language_meta_action_89, vars89, parse_state->input_buffer, action_start_pos, parse_state->pos);
+ return meta_action_create(language_meta_action_96, vars96, parse_state->input_buffer, action_start_pos, parse_state->pos);
}
return meta_action_create_invalid();
}
@@ -4198,7 +4653,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_436);
+ data = (&language_meta_string_484);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4212,7 +4667,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_437);
+ data = (&language_meta_string_485);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4226,7 +4681,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_438);
+ data = (&language_meta_string_486);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4240,7 +4695,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_439);
+ data = (&language_meta_string_487);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4254,7 +4709,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_440);
+ data = (&language_meta_string_488);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4268,7 +4723,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_441);
+ data = (&language_meta_string_489);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4282,7 +4737,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_442);
+ data = (&language_meta_string_490);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4296,7 +4751,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_443);
+ data = (&language_meta_string_491);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4310,7 +4765,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_444);
+ data = (&language_meta_string_492);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4324,7 +4779,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_445);
+ data = (&language_meta_string_493);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4338,7 +4793,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_446);
+ data = (&language_meta_string_494);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4352,7 +4807,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_447);
+ data = (&language_meta_string_495);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4366,7 +4821,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_448);
+ data = (&language_meta_string_496);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4380,7 +4835,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_449);
+ data = (&language_meta_string_497);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4394,7 +4849,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_450);
+ data = (&language_meta_string_498);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4408,7 +4863,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_451);
+ data = (&language_meta_string_499);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4422,7 +4877,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_452);
+ data = (&language_meta_string_500);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4436,7 +4891,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_453);
+ data = (&language_meta_string_501);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4450,7 +4905,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_454);
+ data = (&language_meta_string_502);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4464,7 +4919,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_455);
+ data = (&language_meta_string_503);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4478,7 +4933,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_456);
+ data = (&language_meta_string_504);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4492,7 +4947,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_457);
+ data = (&language_meta_string_505);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4506,7 +4961,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_458);
+ data = (&language_meta_string_506);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4520,7 +4975,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_459);
+ data = (&language_meta_string_507);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4534,7 +4989,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_460);
+ data = (&language_meta_string_508);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4548,7 +5003,7 @@ MetaAction language_meta_rule_lower(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_461);
+ data = (&language_meta_string_509);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4573,7 +5028,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_462);
+ data = (&language_meta_string_510);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4587,7 +5042,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_463);
+ data = (&language_meta_string_511);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4601,7 +5056,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_464);
+ data = (&language_meta_string_512);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4615,7 +5070,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_465);
+ data = (&language_meta_string_513);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4629,7 +5084,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_466);
+ data = (&language_meta_string_514);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4643,7 +5098,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_467);
+ data = (&language_meta_string_515);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4657,7 +5112,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_468);
+ data = (&language_meta_string_516);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4671,7 +5126,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_469);
+ data = (&language_meta_string_517);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4685,7 +5140,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_470);
+ data = (&language_meta_string_518);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4699,7 +5154,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_471);
+ data = (&language_meta_string_519);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4713,7 +5168,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_472);
+ data = (&language_meta_string_520);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4727,7 +5182,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_473);
+ data = (&language_meta_string_521);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4741,7 +5196,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_474);
+ data = (&language_meta_string_522);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4755,7 +5210,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_475);
+ data = (&language_meta_string_523);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4769,7 +5224,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_476);
+ data = (&language_meta_string_524);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4783,7 +5238,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_477);
+ data = (&language_meta_string_525);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4797,7 +5252,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_478);
+ data = (&language_meta_string_526);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4811,7 +5266,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_479);
+ data = (&language_meta_string_527);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4825,7 +5280,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_480);
+ data = (&language_meta_string_528);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4839,7 +5294,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_481);
+ data = (&language_meta_string_529);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4853,7 +5308,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_482);
+ data = (&language_meta_string_530);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4867,7 +5322,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_483);
+ data = (&language_meta_string_531);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4881,7 +5336,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_484);
+ data = (&language_meta_string_532);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4895,7 +5350,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_485);
+ data = (&language_meta_string_533);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4909,7 +5364,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_486);
+ data = (&language_meta_string_534);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -4923,7 +5378,7 @@ MetaAction language_meta_rule_upper(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_487);
+ data = (&language_meta_string_535);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -5005,7 +5460,7 @@ MetaAction language_meta_rule_spacechar(MetaParseState* parse_state) {
or_backtrack_pos = parse_state->pos;
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_488);
+ data = (&language_meta_string_536);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
@@ -5019,7 +5474,7 @@ MetaAction language_meta_rule_spacechar(MetaParseState* parse_state) {
}
meta_parse_state_backtrack(parse_state, or_backtrack_pos);
action_start_pos = parse_state->pos;
- data = (&language_meta_string_489);
+ data = (&language_meta_string_537);
string_slice(parse_state->input_buffer, parse_state->pos, parse_state->pos+data->size, &slice);
if (parse_state->input_buffer->size-parse_state->pos >= data->size && string_compare(data, &slice)) {
parse_state->pos += data->size;
diff --git a/src/meta/meta.meta b/src/meta/meta.meta
index 448aefb..14f92ac 100644
--- a/src/meta/meta.meta
+++ b/src/meta/meta.meta
@@ -391,6 +391,9 @@ actionexpr =
| space expr:x genRuntime:runtime -> {
"string_builder_append(" runtime "->current_string_builder, " runtime "->arena, string_from_integer(" runtime "->arena, " x "), 0, NULL);\n"
}
+ | space 'C{' ' '* cFragment*:xs '}' -> {
+ xs
+ }
| space nameAsActionLookup:x genRuntime:runtime -> {
"meta_action_run(&" x ", runtime, " runtime "->current_string_builder, " runtime "->arena);\n"
}
@@ -427,6 +430,31 @@ actionexpr =
}
;
+cFragment =
+ | '{' ' '* cFragment*:xs '}' genRuntime:runtime -> {
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, string_alloc_from_cstring(" runtime "->arena, \"{\\n\"), 0, NULL);\n"
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, NULL, 1, NULL);\n"
+ xs
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, NULL, -1, NULL);\n"
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, string_alloc_from_cstring(" runtime "->arena, \"}\\n\"), 0, NULL);\n"
+ }
+ | '$' nameAsActionLookup:x genRuntime:runtime -> {
+ "meta_action_run(&" x ", runtime, " runtime "->current_string_builder, " runtime "->arena);\n"
+ }
+ | '\n' ' '* genRuntime:runtime -> {
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, string_alloc_from_cstring(" runtime "->arena, \"\\n\"), 0, NULL);\n"
+ }
+ | '"' genRuntime:runtime -> {
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, string_alloc_from_cstring(" runtime "->arena, \"\\\"\"), 0, NULL);\n"
+ }
+ | '\\' genRuntime:runtime -> {
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, string_alloc_from_cstring(" runtime "->arena, \"\\\\\"), 0, NULL);\n"
+ }
+ | !'{' !'}' .:x genRuntime:runtime -> {
+ "string_builder_append(" runtime "->current_string_builder, " runtime "->arena, string_alloc_from_cstring(" runtime "->arena, \"" x "\"), 0, NULL);\n"
+ }
+ ;
+
stringBuilderName = name:x -> {
>runtimeStruct {
unseen(x) -> {
diff --git a/src/string.c b/src/string.c
index d67c92e..246f1e0 100644
--- a/src/string.c
+++ b/src/string.c
@@ -48,6 +48,13 @@ String string_from_cstring(char* cstring) {
}
}
+String* string_alloc_from_cstring(Arena* arena, char* cstring) {
+ String* string = arena_alloc(arena, sizeof(String));
+ string->size = strlen(cstring);
+ string->buffer = arena_copy(arena, string->size, (unsigned char*)cstring);
+ return string;
+}
+
char* string_to_cstring(String string, Arena* arena) {
char* cstring = arena_alloc(arena, string.size+1);
size_t index;
commit 0e911d7131e518d50dacb1e99b85cb26808e264f
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Mon Dec 8 17:57:01 2025 +0100
Part 2
diff --git a/make.sh b/make.sh
index b9a7b46..e66c585 100755
--- a/make.sh
+++ b/make.sh
@@ -118,6 +118,24 @@ example_aoc20256() {
out/aoc20256 <src/examples/aoc20256/rl.aoc20256 >out/rl.c
c_compile out/rl.c out/rl
out/rl
+ meta_compile src/examples/aoc20256/rotate.meta out/rotate.c
+ c_compile out/rotate.c out/rotate
+
+ out/rotate <src/examples/aoc20256/example.aoc20256 >out/rotate_example_aoc20256.c
+ c_compile out/rotate_example_aoc20256.c out/rotate_example_aoc20256
+ out/rotate_example_aoc20256 >out/example.aoc20256_2
+ meta_compile src/examples/aoc20256/aoc20256_2.meta out/aoc20256_2.c
+ c_compile out/aoc20256_2.c out/aoc20256_2
+ out/aoc20256_2 <out/example.aoc20256_2 >out/example.c
+ c_compile out/example.c out/example
+ out/example
+
+ out/rotate <src/examples/aoc20256/rl.aoc20256 >out/rotate_rl_aoc20256.c
+ c_compile out/rotate_rl_aoc20256.c out/rotate_rl_aoc20256
+ out/rotate_rl_aoc20256 >out/rl.aoc20256_2
+ out/aoc20256_2 <out/rl.aoc20256_2 >out/rl.c
+ c_compile out/rl.c out/rl
+ out/rl
}
example() {
diff --git a/src/examples/aoc20256/aoc20256_2.meta b/src/examples/aoc20256/aoc20256_2.meta
new file mode 100644
index 0000000..799712e
--- /dev/null
+++ b/src/examples/aoc20256/aoc20256_2.meta
@@ -0,0 +1,52 @@
+main = section*:xs space !. -> {
+ "#include <stdio.h>\n"
+ "typedef unsigned long Number;\n"
+ "typedef Number (*Op)(Number, Number);\n"
+ "Number op_add(Number a, Number b) { return a + b; }\n"
+ "Number op_times(Number a, Number b) { return a * b; }\n"
+ "Number reverse(Number in) {\n" >
+ "Number out = 0;\n"
+ "while (in) {\n" >
+ "out *= 10;\n"
+ "out += in % 10;\n"
+ "in /= 10;\n"
+ < "}\n"
+ "return out;\n"
+ < "}\n"
+ "int main() {\n" >
+ "Number grand_total = 0;\n"
+ "Number total;\n"
+ "Number number;\n"
+ "Op op;\n"
+ xs
+ "printf(\"Part 2: %ld\\n\", grand_total);\n"
+ "return 0;\n"
+ < "}\n"
+};
+
+section = space plusTimes:x number*:ys -> {
+ x
+ ys
+ "grand_total += total;\n"
+};
+
+number = space digit:x digit*:xs -> {
+ "number = reverse(" x xs ");\n"
+ "total = op(total, number);\n"
+};
+
+digit = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'0';
+
+plusTimes[Escape] =
+ | '+' -> {
+ "total = 0;\n"
+ "op = op_add;\n"
+ }
+ | '*' -> {
+ "total = 1;\n"
+ "op = op_times;\n"
+ }
+ ;
+
+space = spaceChar*;
+spaceChar = ' ' | '\n';
diff --git a/src/examples/aoc20256/rotate.meta b/src/examples/aoc20256/rotate.meta
new file mode 100644
index 0000000..09ffc24
--- /dev/null
+++ b/src/examples/aoc20256/rotate.meta
@@ -0,0 +1,44 @@
+main = row*:xs -> {
+ "#include <stdio.h>\n"
+ "typedef struct {\n" >
+ "int count;\n"
+ "char* chars;\n"
+ < "} Row;\n"
+ "typedef struct {\n" >
+ "int count;\n"
+ "Row* rows;\n"
+ < "} Rows;\n"
+ $top
+ <top
+ $rowsArray
+ xs
+ "static Row rows_array[] = {\n" > <rowsArray < "};\n"
+ "static Rows rows = {" xs.count ", rows_array};\n"
+ "int main(void) {\n" >
+ "int row_index, col_index;\n"
+ "for (col_index=0; col_index< " W[2] "; col_index++) {\n" >
+ "for (row_index=rows.count-1; row_index>=0; row_index--) {\n" >
+ "if (col_index < rows.rows[row_index].count) {\n" >
+ "printf(\"%c\", rows.rows[row_index].chars[col_index]);\n"
+ < "}\n"
+ < "}\n"
+ "printf(\"\\n\");\n"
+ < "}\n"
+ "return 0;\n"
+ < "}\n"
+};
+
+row = col*:xs '\n' -> {
+ #max(W[2] xs.count)
+ >top {
+ #inc(W[1] 1)
+ "static char row" W[1] "[] = {" xs "};\n"
+ }
+ >rowsArray {
+ "{" xs.count ", row" W[1] "},\n"
+ }
+};
+
+col = !'\n' .:x -> {
+ "'" x "', "
+};
commit ce318e9e9bacbd87d4ef8ad13ab47221e5df41ae
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Mon Dec 8 00:13:07 2025 +0100
Clean up
diff --git a/src/examples/aoc20256/aoc20256.meta b/src/examples/aoc20256/aoc20256.meta
index c208175..93983f0 100644
--- a/src/examples/aoc20256/aoc20256.meta
+++ b/src/examples/aoc20256/aoc20256.meta
@@ -22,7 +22,7 @@ main = row*:xs symbols:y -> {
y
>rowCount { xs.count }
>colCount { W[1] }
- "int main(void) {\n" >
+ "Number part1() {\n" >
"Number col, row;\n"
"Number grand_total = 0;\n"
"for (col=0; col<" <colCount "; col++) {\n" >
@@ -32,7 +32,10 @@ main = row*:xs symbols:y -> {
< "}\n"
"grand_total += total;\n"
< "}\n"
- "printf(\"Part 1: %ld\\n\", grand_total);\n"
+ "return grand_total;\n"
+ < "}\n"
+ "int main(void) {\n" >
+ "printf(\"Part 1: %ld\\n\", part1());\n"
"return 0;\n"
< "}\n"
};
commit 66e421a8d10659890607e4b2766983ecce1083b5
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Mon Dec 8 00:03:09 2025 +0100
Day 6 part 1
diff --git a/make.sh b/make.sh
index 7839e1d..b9a7b46 100755
--- a/make.sh
+++ b/make.sh
@@ -16,6 +16,7 @@ main() {
example_aoc20253
example_aoc20254
example_aoc20255
+ example_aoc20256
}
dotall() {
@@ -109,6 +110,16 @@ example_aoc20255() {
out/rl
}
+example_aoc20256() {
+ example aoc20256
+ out/aoc20256 <src/examples/aoc20256/example.aoc20256 >out/example.c
+ c_compile out/example.c out/example
+ out/example
+ out/aoc20256 <src/examples/aoc20256/rl.aoc20256 >out/rl.c
+ c_compile out/rl.c out/rl
+ out/rl
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
@@ -145,6 +156,7 @@ languages() {
meta_compile src/examples/aoc20253/aoc20253.meta out/language_aoc20253.c
meta_compile src/examples/aoc20254/aoc20254.meta out/language_aoc20254.c
meta_compile src/examples/aoc20255/aoc20255.meta out/language_aoc20255.c
+ meta_compile src/examples/aoc20256/aoc20256.meta out/language_aoc20256.c
}
banner() {
diff --git a/src/examples/aoc20256/aoc20256.meta b/src/examples/aoc20256/aoc20256.meta
new file mode 100644
index 0000000..c208175
--- /dev/null
+++ b/src/examples/aoc20256/aoc20256.meta
@@ -0,0 +1,66 @@
+#id = aoc20256
+
+main = row*:xs symbols:y -> {
+ "#include <stdio.h>\n"
+ $rowCount
+ $colCount
+ $initial
+ $ops
+ "typedef unsigned long Number;\n"
+ "static Number numbers[" <rowCount "][" <colCount "] = {\n" >
+ xs
+ < "};\n"
+ "static Number initial[" <colCount "] = {\n" >
+ <initial
+ < "};\n"
+ "typedef Number (*Op)(Number, Number);\n"
+ "Number op_add(Number a, Number b) { return a + b; }\n"
+ "Number op_times(Number a, Number b) { return a * b; }\n"
+ "static Op ops[" <colCount "] = {\n" >
+ <ops
+ < "};\n"
+ y
+ >rowCount { xs.count }
+ >colCount { W[1] }
+ "int main(void) {\n" >
+ "Number col, row;\n"
+ "Number grand_total = 0;\n"
+ "for (col=0; col<" <colCount "; col++) {\n" >
+ "Number total = initial[col];\n"
+ "for (row=0; row<" <rowCount "; row++) {\n" >
+ "total = ops[col](total, numbers[row][col]);\n"
+ < "}\n"
+ "grand_total += total;\n"
+ < "}\n"
+ "printf(\"Part 1: %ld\\n\", grand_total);\n"
+ "return 0;\n"
+ < "}\n"
+};
+
+row = col*:xs '\n' -> {
+ #max(W[1] xs.count)
+ "{" xs "},\n"
+};
+
+col = ' '* number:x ' '* -> {
+ x ", "
+};
+
+number[RuleName] = digit digit*;
+
+digit = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9'|'0';
+
+symbols = symbol*:xs '\n' -> { xs };
+
+symbol = ' '* plusTimes:x ' '* -> { x };
+
+plusTimes[Escape] =
+ | '+' -> {
+ >initial { "0,\n" }
+ >ops { "op_add,\n" }
+ }
+ | '*' -> {
+ >initial { "1,\n" }
+ >ops { "op_times,\n" }
+ }
+ ;
diff --git a/src/examples/aoc20256/example.aoc20256 b/src/examples/aoc20256/example.aoc20256
new file mode 100644
index 0000000..2465b9e
--- /dev/null
+++ b/src/examples/aoc20256/example.aoc20256
@@ -0,0 +1,4 @@
+123 328 51 64
+ 45 64 387 23
+ 6 98 215 314
+* + * +
diff --git a/src/examples/aoc20256/rl.aoc20256 b/src/examples/aoc20256/rl.aoc20256
new file mode 100644
index 0000000..a549872
--- /dev/null
+++ b/src/examples/aoc20256/rl.aoc20256
@@ -0,0 +1,5 @@
+1 95 97 1177 86 766 487 62 938 15 82 859 77 16 99 99 863 934 3 976 87 27 3268 5 439 14 18 18 83 553 364 96 4 288 3 55 1 491 6 7 89 963 221 5379 8 7445 529 8 379 47 31 32 56 641 2 1 58 939 2 17 27 772 833 922 682 819 333 829 87 6954 16 25 924 25 43 43 7371 13 559 559 61 1 75 7431 54 34 668 95 912 85 69 8 7 5 7 11 299 23 3 95 94 85 4 8 2743 795 581 9 57 81 741 7 93 65 958 535 32 5 93 48 57 736 7 8 9 49 395 89 3242 68 375 4 77 898 173 665 75 34 683 176 92 85 5 6 7512 3 762 36 143 82 1 72 69 145 74 61 8261 59 295 57 29 4199 8 75 52 21 4 2752 31 94 566 548 6 74 6 12 972 3 31 8 57 41 317 314 35 69 62 169 237 15 281 689 1 6 35 44 627 59 86 522 2 77 23 6 558 517 82 3 8886 754 26 3988 143 158 7 99 589 92 1155 762 3286 533 498 6 9437 58 4 8 552 115 836 51 6 9866 771 5 145 64 715 4 228 597 49 152 7 3 1441 46 2 2 91 67 423 4279 987 41 4888 11 634 99 258 76 98 2 25 5 3 84 46 228 36 933 3 445 55 428 78 25 443 582 37 2585 722 88 19 6 39 41 54 44 27 661 452 44 133 325 2 7618 26 118 213 1948 2 527 799 76 17 236 3346 75 3 12 8 3398 4 2 8 857 78 94 85 7247 513 98 845 347 23 5 9487 4 5 152 323 9194 7 3 636 15 7 1647 39 65 169 49 1 52 814 74 9149 1997 6 95 5 79 32 98 4 224 353 85 75 682 8 2 8 674 9529 2 3 7 99 8 76 173 23 3 8 47 9817 19 896 68 98 58 66 65 767 6 1 3 68 946 41 337 76 8 2523 97 565 9 2 6873 8 27 56 8353 57 8 99 37 74 5 51 8 42 2866 714 19 78 662 537 37 29 9 847 4886 4 3 3 217 272 27 2 51 2 32 4 23 23 95 27 6 44 7327 7244 413 94 58 4 58 7 417 657 5 114 92 76 729 979 6215 3 47 78 248 99 5722 8 35 758 79 64 353 12 862 82 19 67 78 86 662 9 46 83 69 2147 8 1396 3 76 126 88 57 11 3 71 699 17 59 9 73 62 3 8446 57 78 2 1 74 191 85 72 56 24 2 24 27 7761 276 859 215 64 82 6411 39 57 4 7264 17 5 72 3 51 24 7 21 7 2355 457 666 713 15 927 526 822 85 351 8 3 24 4 16 4 356 1 17 99 489 26 97 8 7 21 19 43 84 253 46 685 1 84 12 53 89 288 51 5136 551 32 8229 16 422 26 12 3116 9893 43 16 215 86 2 66 25 81 42 92 265 163 7 96 341 1 1369 479 448 44 26 69 22 11 6631 845 84 67 663 7 3762 6 67 3 2574 21 43 98 235 483 76 78 72 5 9 251 21 79 761 9455 9918 384 1 2846 8 14 8832 11 685 951 4244 4 9 39 79 72 6 565 481 11 656 31 48 271 38 8642 426 35 58 124 299 53 6 72 59 88 42 469 958 31 194 5391 99 65 84 35 68 692 84 68 4997 23 25 62 96 242 554 44 184 5 37 63 464 857 79 587 3 751 23 5 7396 9 54 64 336 52 75 56 94 1 39 1486 33 7 76 54 6 331 1 69 97 4265 57 41 1583 6 57 1 7 492 9 37 789 82 5 16 27 84 48 215 9 83 32 1 48 378 6 6212 67 25 8 82 2 4 4 12 1537 355 323 5 2 3165 93 879 27 257 9 953 591 188 65 9 4 7363 4 189 7973 822 4469 126 49 343 1 93 622 2 9 2 25 8933 73 46 2684 261 19 8 5468 65 45 72 3 3 75 77 9859 97 8 3 4377 742 82 2 32 13 19 363 885 69 96 2 6 32 57 19 4939 46 51 5154 3 366 17 24 66 76 78 1 11 698 86 581 18 3251 62 555 6 26 117 88 61 57 144 489 8381 816 3168 3 3 9 1 2 68 4371 1 51 69 67 14 28 82 131 33 58 7353 42 253 1394 86 954 85 28 7 6736 5 811 2 56 19 28 9 75 9 17 6957 287 37 154 691 1757 72 384 2 49 186 2683 674 57 7 948 97 48 94 17 165 8162 89 67 68 8 316 4713 483 22 395 8497 41 5555 24 24 38 8 113 79 5 79 523 3 44 535 6 44 7 3 36 79 8 813 84 391 538 964 43 99 5328 3 1 18 9 53 55 718 568 723 38 29 6 737 836 574 92 89 6 32 81 3 342 862 1184 4 246 61 2 798 5 951 16 3 7 144 67 59 9 68 1364 54 341
+297 25 21 8883 76 75 967 47 791 41 84 151 77 467 656 89 665 939 1 753 16 11 3266 7 2466 34 52 56 13 226 982 14 9 375 52 838 925 643 37 5 34 335 235 9852 39 2121 899 44 789 16 622 53 29 647 44 59 56 467 23 87 43 197 147 91 493 779 367 349 83 7582 62 36 5772 87 71 66 1839 99 71 882 517 5 16 3356 84 93 645 672 428 29 55 61 21 83 9 94 896 82 43 628 27 54 3 22 2751 775 899 429 914 2797 844 35 73 528 421 137 11 28 67 75 51 159 52 36 173 95 662 824 4331 55 971 76 78 196 179 484 181 627 799 541 19 32 11 17 591 1 456 38 931 71 58 15 17 862 52 236 3864 29 98 31 548 2131 48 62 95 91 79 952 46 79 557 512 8 668 82 3573 593 86 54 375 27 97 5184 9891 59 36 48 923 488 768 848 829 984 6 61 56 833 47 9 8 25 72 67 15 837 358 287 82 8467 385 67 444 767 342 861 91 171 86 5732 768 6214 546 649 69 6764 52 5 76 235 124 581 93 61 9765 489 72 351 9942 796 44 61 612 21 188 59 85 6336 75 42 3 74 99 515 2944 684 863 7427 63 279 46 574 26 74 9 21 8415 483 23 35 521 754 253 63 331 28 73 74 98 941 377 657 4874 875 78 74 9 79 39 54 578 69 743 22 96 645 538 797 4789 58 787 915 397 61 493 918 33 47 367 3798 11 3 42 5 8129 19 7 5 117 75 39 178 961 456 79 64 191 345 93 3292 93 92 8229 183 6932 1 53 153 17 1 3674 46 38 179 557 53 442 192 36 3983 8231 6 214 79 658 49 887 24 243 481 37 41 189 72 8 78 512 8795 85 8 25 455 445 31 199 96 91 641 66 3991 95 477 8 75 5 618 14 292 5 32 2 42 764 18 435 79 383 9842 677 522 8 84 2632 24 29 43 5145 812 71 94 72 75 92 18 47 84 6455 456 66 58 131 242 57 39 69 66 6113 47 79 19 359 335 122 1 86 27 68 1 958 15 51 75 6 899 8459 126 943 636 86 59 617 48 7398 357 23 295 93 68 5212 43 169 47 26 78 421 22 126 46 68 415 5264 29 285 17 7242 91 85 36 98 9 596 96 57 22 69 2169 64 3454 85 729 997 12 27 35 27 84 66 63 88 9846 32 936 14 6856 54 75 1 769 42 815 65 72 78 52 4 5 42 5319 3658 296 18 69 34 353 27 77 29 3391 26 68 27 16 76 66 49 787 2 8736 45 434 123 17 59 478 18 86 433 64 65 98 39 87 927 273 565 95 46 55 57 66 7 292 44 31 9896 77 638 11 458 3 622 96 487 21 662 22 5323 244 465 793 572 485 465 26 156 317 313 98 39 46 3 995 79 718 65 69 799 411 8 13 647 88 6138 125 88 2 217 14 16 65 2866 816 55 48 988 55 463 35 997 9 9226 54 54 35 946 821 94 96 67 31 24 336 517 49 258 558 723 746 72 7788 81 958 8251 3647 511 733 4915 89 335 85 83 673 586 127 865 45 822 91 876 464 92 8993 581 32 71 134 184 51 11 82 65 592 8 589 111 56 933 1472 25 44 57 16 76 739 234 77 5441 45 746 62 65 355 4411 71 488 16 98 22 67 88 156 398 61 1869 238 2 6237 3 82 81 264 92 929 4482 17 289 12 2615 35 54 75 266 4 296 53 49 72 6151 85 157 6511 937 74 65 3 72 3 53 636 63 55 89 16 442 22 444 2 95 47 89 65 154 353 191 32 64 2 17 13 349 74 529 9422 327 153 9 65 9636 88 83 93 269 135 977 244 432 26 48 7 9749 81 822 5836 838 8481 956 66 25 117 26 412 52 139 846 96 5778 39 13 1464 664 73 23 939 36 16 98 4 45 8749 968 5756 82 9 5 9564 5469 835 2 5542 81 39 676 553 68 44 7 8 27 972 244 7489 27 59 9272 6 414 27 81 3518 18 19 11 418 785 81 422 21 522 657 741 11 55 9393 1 66 276 3115 132 1257 773 8532 76 1 3 5 6 71 9794 4 59 82 51 12 86 97 61 734 75 2354 72 632 9766 16 295 21 36 1 878 585 857 52 431 67 97 55 94 299 18 44 958 62 279 959 2677 61 925 6 6414 129 9273 543 69 1 452 24 67 67 49 651 6743 76 62 83 29 7569 7113 752 627 869 6981 116 6839 18 21 23 6549 249 4 9 44 719 55 47 841 12 95 16 27 87 212 351 1172 51 738 79 965 41 53 4186 17 952 37 4 9715 56 641 835 515 2 28 38 345 426 662 171 134 83 33 76 7 735 186 6242 756 97 18 38 943 12 833 81 6 6 918 11 71 45 21 2957 838 267
+986 76 3 27 17 63 242 67 932 63 81 299 41 736 2139 74 8 621 18 946 35 55 128 993 9783 61 72 82 38 538 976 41 49 2 65 524 159 694 74 85 88 16 96 3881 42 6653 778 46 453 6 963 74 27 692 59 753 34 564 36 61 61 534 721 32 695 451 913 13 43 8585 67 83 8726 7658 85 86 63 63 77 576 618 695 84 4316 5 73 15 842 538 98 91 37 92 667 8537 95 479 57 165 887 21 896 46 87 4782 213 87 927 628 3455 17 16 51 617 644 845 94 53 64 2586 46 2299 27 438 456 2 51 595 589 988 225 196 22 34 14 897 276 628 17 486 69 27 88 74 175 19 533 75 372 71 288 779 27 2783 78 261 895 27 94 15 123 1238 636 94 11 38 137 544 96 77 2 2151 64 438 455 1658 296 18 6 123 36 2 4264 9769 26 614 64 825 242 749 278 44 825 3 17 26 25 79 1 7 35 166 863 51 678 78 849 37 513 81 82 63 656 393 7147 179 543 268 341 743 846 17 21 59 1448 95 66 86 546 974 338 3 19 8945 638 531 9992 9116 886 23 54 935 48 739 33 67 917 8 694 71 549 6 343 7258 143 646 327 7 499 78 5 97 49 49 75 9421 477 37 49 6126 881 979 35 274 52 49 82 37 786 181 711 451 418 71 48 69 53 72 85 223 51 361 94 33 474 628 396 691 24 164 722 136 59 961 182 77 17 419 9727 9 89 99 39 6624 424 7 9 918 57 88 8553 898 138 35 84 65 3281 533 915 34 53 2827 543 662 9 46 691 3 55 669 23 4 911 169 247 146 153 29 9885 7764 835 8984 693 333 58 126 59 317 14 972 26 999 44 87 82 91 483 37 79 22 942 6444 5 288 7 9634 7431 9664 4675 47 7894 8 89 8 896 67 27 76 73 84 92 157 37 649 82 116 975 524 12 98 53 375 97 74 17 3233 232 67 37 56 59 14 84 385 1 2794 936 69 64 519 314 76 84 314 85 591 59 42 83 523 189 857 923 53 78 5 76 836 53 57 84 388 161 852 12 76 954 78 26 465 33 8798 62 69 943 72 39 6189 19 958 37 1 3 75 432 295 26 8 622 7395 44 338 73 1658 669 16 19 61 5 26 52 74 9 977 953 81 1792 319 316 968 24 99 85 14 1 38 48 52 3482 85 361 576 545 15 84 9 489 66 7 931 44 63 37 72 3 41 578 3296 939 9 43 71 97 62 42 42 46 82 63 87 85 3 22 66 253 51 9293 9 198 743 27 5 64 52 744 26 25 33 65 484 13 997 675 1748 84 2 24 675 239 2 397 23 5224 1619 19 114 7 418 83 937 35 867 74 42 65 4968 53 888 6 351 637 699 14 84 58 441 888 54 9 77 887 61 242 81 58 982 246 3 8 835 82 1837 59 64 9 927 26 88 3 5121 283 23 93 224 91 668 28 633 31 6441 6 998 899 986 19 74 98 352 81 96 39 875 36 18 844 1 361 65 2935 41 465 5553 3899 443 117 7949 13 611 59 96 132 8538 4 746 3 451 45 835 44 96 7116 368 32 78 835 153 5 472 37 6279 5841 2 948 984 325 168 294 49 8 58 812 31 246 481 61 6736 63 6831 31 31 633 2879 1 433 15 578 96 48 67 332 12 22 7116 411 4 2271 36 32 67 549 6819 512 1255 29 563 74 2612 61 281 7 466 77 361 127 11 29 2813 47 341 9948 319 4 45 19 24 2 85 72 33 253 64 24 578 84 7 81 86 59 798 12 47 576 86 24 3 19 63 37 649 38 479 1618 18 821 76 91 7663 79 97 26 893 157 747 174 5962 98 45 56 684 448 988 6973 865 4225 648 38 65 948 3 71 91 5527 646 4 5677 41 4 496 286 42 686 24 94 81 439 41 14 3872 525 3438 155 989 34 57 1739 679 6 9247 11 56 939 714 48 41 7 89 55 5882 1585 2199 8 4 698 65 455 39 33 5796 38 58 988 833 721 652 882 14 75 685 37 39 79 5494 7 13 615 3729 822 711 273 231 59 46 7 7 85 24 5249 1 14 83 82 56 12 11 5 574 84 491 954 73 8164 5 843 56 418 19 937 486 9672 862 551 39 11 2357 22 664 54 84 945 66 818 267 3832 49 315 29 3168 118 7245 16 77 44 181 55 68 2 55 548 7371 149 84 61 873 7262 56 383 253 838 634 356 49 193 57 43 5972 516 4 39 38 9779 758 3 24 28 13 48 437 592 119 785 7554 61 562 4 336 98 41 3547 52 896 92 63 4789 16 882 514 487 2 14 74 428 148 98 593 8382 68 85 86 518 417 881 429 921 49 7 18 279 733 7961 81 93 281 697 686 27 89 48 594 481 144
+347 94 7 18 1 28 39 62 22 93 89 77 48 888 1422 76 9 882 11 2 11 41 64 774 1677 87 53 52 823 23 14 78 35 2 85 483 533 53 63 52 37 57 4 3271 34 91 263 41 265 2 537 1 14 4 64 943 41 372 97 286 25 2 979 66 74 3 886 23 39 475 5 39 9816 6128 6 2 42 77 9 55 883 248 1 244 9 85 98 879 24 83 29 85 63 418 2865 5 19 74 762 938 69 817 749 988 85 48 8 143 735 7123 7 22 9 826 61 8211 19 545 8 1749 6 8865 71 764 628 9 4 556 24 1543 957 774 22 82 65 274 431 668 13 88 92 43 98 98 36 52 2 83 43 28 615 135 6 1983 2 944 219 11 7 7 273 3823 938 81 8 99 761 87 79 68 5 7893 61 864 742 7483 45 53 9 282 57 1 4711 1735 23 975 1 818 66 711 715 24 8829 61 78 42 7 8 5 2 349 291 281 66 783 45 421 21 18 7 19 98 39 297 4971 636 88 955 57 94 76 5 1 259 8935 97 86 19 4 457 25 3 13 2893 64 717 1849 8412 79 32 26 99 17 5 14 13 72 4 599 16 738 7 38 5 7633 786 32 1 24 99 2 581 92 47 18 3645 683 56 9 3445 843 65 46 61 33 9 1 2 52 728 8859 14 794 31 72 97 36 53 12 146 76 29 57 79 293 855 711 626 52 8 6 86 42 86 93 6 68 8 5532 5 63 3452 59 952 124 13 68 2 89 8 3298 62 7 2 84 48 5433 3619 217 43 17 5641 25 53 42 16 25 9 592 82 494 6 733 428 173 484 739 28 849 6647 786 1672 2188 246 47 117 75 19 6 269 26 26 28 58 41 1 849 811 14 64 683 8545 8 732 1 9988 2858 7565 7877 91 4236 3 86 9 626 11 12 45 42 22 2 75 5 32 81 891 75 993 57 31 26 586 29 7 23 7126 753 45 52 4 76 19 7 221 7 8284 213 1 975 15 76 93 33 371 49 172 35 71 14 593 12 399 157 21 265 9 77 599 27 6 2 133 3511 1 2 3 443 64 47 794 33 7438 55 24 824 71 59 1411 9 27 88 1 2 7 713 211 75 9 433 9914 98 8 41 9843 698 8 6 5463 9 33 57 22 1 6243 357 63 5 957 831 95 96 33 14 49 5 2 81 18 9777 87 977 441 78 16 788 74 537 46 1 339 71 99 8 95 5 31 153 9437 78 5 4 8 12 54 83 38 29 3 97 88 14 2 9 31 1327 89 22 9 491 151 65 3 33 16 671 31 33 99 1 9238 929 527 3 6192 49 9 98 766 432 53 795 11 1837 8613 67 28 2 587 53 316 16 362 1 65 4 91 4 527 3 6789 174 665 26 7 2 335 613 96 9 12 815 2 924 9 96 758 9 55 5 84 31 8149 26 85 5 457 3 4 5 154 68 332 99 37 87 49 77 4679 698 84 9 739 272 88 41 9 65 945 911 28 9 623 89 67 769 2 293 43 79 266 472 7 4848 19 233 2938 21 356 9 4 177 7981 5 599 9 723 84 779 8 392 595 391 4 7 496 669 5 235 832 2719 2719 4 1 458 685 763 3 99 3 94 993 66 6 883 87 454 1 4699 47 36 49 1236 4 14 76 839 19 61 63 664 1 68 4993 7815 45 9871 94 94 3 234 8146 491 9497 4 383 96 12 59 663 2 814 12 728 927 34 54 921 57 2999 54 844 8 95 97 18 72 14 8 98 422 5 81 941 85 8 36 126 15 477 89 81 388 1 78 7 96 34 83 544 15 275 3322 6 147 63 127 27 33 7 463 65 8581 739 926 3252 77 87 76 85 293 985 1393 678 25 3 33 29 159 1 6 57 1767 439 9 69 29 3 797 139 2 585 26 55 47 9688 55 16 8921 747 37 189 897 81 12 1999 747 34 2528 53 72 67 617 96 5 15 18 13 1819 1145 4436 4 7 529 45 5 53 36 9457 82 5 358 581 775 579 31 7 3 285 56 43 55 9569 4 9 297 5855 937 19 971 213 48 72 55 81 795 48 2345 84 26 6 89 88 2 98 9 386 33 85 549 5 5888 9 985 88 9526 28 866 421 7267 624 793 86 82 5895 61 288 9 67 736 9 423 14 329 6 948 45 4388 14 4 6 94 81 7 1 65 9 39 49 735 156 96 72 137 4553 3 97 1974 717 1 473 59 361 694 483 5255 875 5 31 39 4412 261 2 97 782 36 691 6737 9439 553 171 4129 47 44 6 52 37 16 662 41 9989 22 33 2191 3 85 44 66 6 16 26 834 65 4 199 7849 77 97 71 953 98 567 44 577 6 1 61 84 176 7172 38 19 692 937 154 119 91 6 632 7673 2
+* * * + + * * * + + + + * * + * * * * * + * + + + * * * * * * * * + * + + + * * + + + + + + + + + + * * * + * + + + * * * + + + + + * * + + + + + + + + + * + * + + + + + * * + + * * * * + + * + + * * * * * + + * + * * + * * * * + + * + * + + + * + * + + * + + + * * + * * + * + * + + + * + + * * * + + + + + + * + + + + * + * * * * + + * * + + + * * + * * * * * + + + * * * * * * * * + + * * + + + + * + * * + + * + + * * + * * + * * + + * + + + + + * * * + * + * * + * + + + + * * * * + + + + + * * + * + + + + + + + * + * * * * + + * * + * + + * * * * * * + + + + + + + + * + * * * + * + * + + * * + + * * * * * + + + * + * + * * * + * + + + * + + * + + + * * + * + + * * * * + * * * + * * * + + + * + + + + + * + * * * + * + + + + * * + + + * + + + + + + + + + * * + * + * * * * + * + * * + + * + + + * * * + * * * * + * * + * + * + * + * * * * * + + + + + * * + * + * * * + * * * + + + + * + * + * + + + + * * + + + * * * * * + * + * + + * * + + * + + * * * + * + + * + * + + * * * + + * + * + + + + + * + + + + * + + + * + * + + + * * + + + * * + + * * * + * * * + + + * * * + + + * * + + * + + * * + + * * + * + + + + + + * * * + * * * + + * * + + + + + * + * + + * + * + * + + + * * + * * + * * + + * * + * * * + + * * + * + + + * + + * + * + * * * * + * + + * + + * + + * * + + * * + * * + + + + * * * + * + + + + * + + * * * + * + + + * * * + + * + + * * * + * + * + + * + + * + + * * * + * * * + + * + + + * * + + + * * + + + * * + + + * * + + + + + * * * * + * * + * + * * * + * + * + + + + * + + * * + + * + * + + * * + + * * + * + * * + + * + + * * + + + * * + * + * * + * * + * + + * + * + * + + * * + + + + * * + + + + + + * + + + * + * + + + + + + + * * * * + * * + + * + * * + + + * + + * + * + * + + + + + * + * * + * + + + * + * * * + + + + + * * * + * + * + * * + * + * + + + * * * * + * + * + * + + + + * * + + * * + * * + * + + + + + + * + + + + + + + + * + + + * * * * + + + * + + + + * * * + * + + * + * * * + * + * * + * * + * + * + * * + * * * + + + + + * * * + * * * + + +
diff --git a/src/language.c b/src/language.c
index b6fc35d..2ca4320 100644
--- a/src/language.c
+++ b/src/language.c
@@ -6,6 +6,7 @@
#include "language_aoc20253.c"
#include "language_aoc20254.c"
#include "language_aoc20255.c"
+#include "language_aoc20256.c"
#include "language_generic.c"
typedef enum languages {
@@ -16,6 +17,7 @@ typedef enum languages {
Language_AOC20253,
Language_AOC20254,
Language_AOC20255,
+ Language_AOC20256,
Language_Generic
} Language;
@@ -27,6 +29,7 @@ Language language_from_string(String name) {
if (string_eqc(name, "aoc20253")) { return Language_AOC20253; }
if (string_eqc(name, "aoc20254")) { return Language_AOC20254; }
if (string_eqc(name, "aoc20255")) { return Language_AOC20255; }
+ if (string_eqc(name, "aoc20256")) { return Language_AOC20256; }
return Language_Generic;
}
@@ -38,5 +41,6 @@ static MetaParseFunction LANGUAGE_HIGHLIGHERS[] = {
language_aoc20253_rule_main,
language_aoc20254_rule_main,
language_aoc20255_rule_main,
+ language_aoc20256_rule_main,
language_generic_rule_main,
};
commit b391a58df74321ea6cb5fdc7fabbd44015be145b
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 23:18:01 2025 +0100
Part 2 complete
diff --git a/src/examples/aoc20255/aoc20255.meta b/src/examples/aoc20255/aoc20255.meta
index fb4011f..685d3b3 100644
--- a/src/examples/aoc20255/aoc20255.meta
+++ b/src/examples/aoc20255/aoc20255.meta
@@ -32,28 +32,30 @@ main = range*:ranges '\n' id*:freshIds !. -> {
< "}\n"
"return count;\n"
< "}\n"
- "Id overlap(Range a, Range b) {\n" >
- "if (a.start > b.start) {\n" >
- "return overlap(b, a);\n"
- < "}\n"
- "if (a.end < b.start) {\n" >
- "return 0;\n"
- < "}\n"
- "if (b.start > a.end) {\n" >
+ "Id count_total(Range range, int my_index) {\n" >
+ "if (range.end < range.start) {\n" >
"return 0;\n"
< "}\n"
- "return a.end - b.start + 1;\n"
- < "}\n"
- "Id count_total(Range range, int my_index) {\n" >
- "Id total = range.end - range.start + 1;\n"
- "int index;\n"
- "for (index=0; index<my_index; index++) {\n" >
- "total -= overlap(range, ranges[index]);\n"
+ "if (my_index > 0) {\n" >
+ "Range previous = ranges[my_index-1];\n"
+ "if (range.end < previous.start) {\n" >
+ "return count_total(range, my_index-1);\n"
+ < "} else if (range.start > previous.end) {\n" >
+ "return count_total(range, my_index-1);\n"
+ < "} else {\n" >
+ "Range left, right;\n"
+ "left.start = range.start;\n"
+ "left.end = previous.start-1;\n"
+ "right.start = previous.end+1;\n"
+ "right.end = range.end;\n"
+ "return count_total(left, my_index-1) + count_total(right, my_index-1);\n"
+ < "}\n"
+ < "} else {\n" >
+ "return range.end - range.start + 1;\n"
< "}\n"
- "return total;\n"
< "}\n"
"Id count_db_total_fresh() {\n" >
- "Id total;\n"
+ "Id total = 0;\n"
"int index;\n"
"for (index=0; index<" ranges.count "; index++) {\n" >
"total += count_total(ranges[index], index);\n"
commit d050381af59adc1620b2a1b76286e0a2d65ff110
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 22:40:03 2025 +0100
Part 2 in progress
diff --git a/src/examples/aoc20255/aoc20255.meta b/src/examples/aoc20255/aoc20255.meta
index c7e6fbc..fb4011f 100644
--- a/src/examples/aoc20255/aoc20255.meta
+++ b/src/examples/aoc20255/aoc20255.meta
@@ -32,9 +32,37 @@ main = range*:ranges '\n' id*:freshIds !. -> {
< "}\n"
"return count;\n"
< "}\n"
+ "Id overlap(Range a, Range b) {\n" >
+ "if (a.start > b.start) {\n" >
+ "return overlap(b, a);\n"
+ < "}\n"
+ "if (a.end < b.start) {\n" >
+ "return 0;\n"
+ < "}\n"
+ "if (b.start > a.end) {\n" >
+ "return 0;\n"
+ < "}\n"
+ "return a.end - b.start + 1;\n"
+ < "}\n"
+ "Id count_total(Range range, int my_index) {\n" >
+ "Id total = range.end - range.start + 1;\n"
+ "int index;\n"
+ "for (index=0; index<my_index; index++) {\n" >
+ "total -= overlap(range, ranges[index]);\n"
+ < "}\n"
+ "return total;\n"
+ < "}\n"
+ "Id count_db_total_fresh() {\n" >
+ "Id total;\n"
+ "int index;\n"
+ "for (index=0; index<" ranges.count "; index++) {\n" >
+ "total += count_total(ranges[index], index);\n"
+ < "}\n"
+ "return total;\n"
+ < "}\n"
"int main(void) {\n" >
"printf(\"Part 1: %d\\n\", count_fresh());\n"
- "printf(\"Part 2: %d\\n\", 0);\n"
+ "printf(\"Part 2: %ld\\n\", count_db_total_fresh());\n"
"return 0;\n"
< "}\n"
};
commit 00df5bd8400c65bfa0f6486e9557fdb0f9c81a83
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 22:27:59 2025 +0100
Clean up
diff --git a/src/examples/aoc20255/aoc20255.meta b/src/examples/aoc20255/aoc20255.meta
index 720b68d..c7e6fbc 100644
--- a/src/examples/aoc20255/aoc20255.meta
+++ b/src/examples/aoc20255/aoc20255.meta
@@ -1,6 +1,6 @@
#id = aoc20255
-main = range*:xs '\n' id*:ys !. -> {
+main = range*:ranges '\n' id*:freshIds !. -> {
"#include <stdio.h>\n"
"typedef unsigned long Id;\n"
"typedef struct {\n" >
@@ -8,14 +8,14 @@ main = range*:xs '\n' id*:ys !. -> {
"Id end;\n"
< "} Range;\n"
"Range ranges[] = {\n" >
- xs
+ ranges
< "};\n"
- "Id ids[] = {\n" >
- ys
+ "Id fresh_ids[] = {\n" >
+ freshIds
< "};\n"
"int is_fresh(Id id) {\n" >
"int index;\n"
- "for (index=0; index<" xs.count "; index++) {\n" >
+ "for (index=0; index<" ranges.count "; index++) {\n" >
"if (id >= ranges[index].start && id <= ranges[index].end) {\n" >
"return 1;\n"
< "}\n"
@@ -25,8 +25,8 @@ main = range*:xs '\n' id*:ys !. -> {
"int count_fresh() {\n" >
"int count;\n"
"int index;\n"
- "for (index=0; index<" ys.count "; index++) {\n" >
- "if (is_fresh(ids[index])) {\n" >
+ "for (index=0; index<" freshIds.count "; index++) {\n" >
+ "if (is_fresh(fresh_ids[index])) {\n" >
"count++;\n"
< "}\n"
< "}\n"
@@ -39,15 +39,11 @@ main = range*:xs '\n' id*:ys !. -> {
< "}\n"
};
-range = start:x '-' end:y '\n' -> {
- "{" x ", " y "},\n"
-};
-
+range = start:x '-' end:y '\n' -> { "{" x ", " y "},\n" };
start[Reserved] = number;
end[RuleName] = number;
id[Escape] = number:x '\n' -> { x ",\n" };
number = digit digit*;
-
digit = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
commit e2afa9067ad2c115798c5030562100e594279f81
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 22:07:58 2025 +0100
Day 5 part 1
diff --git a/make.sh b/make.sh
index f9c5f27..7839e1d 100755
--- a/make.sh
+++ b/make.sh
@@ -15,6 +15,7 @@ main() {
example_aoc20252
example_aoc20253
example_aoc20254
+ example_aoc20255
}
dotall() {
@@ -98,6 +99,16 @@ example_aoc20254() {
out/rl
}
+example_aoc20255() {
+ example aoc20255
+ out/aoc20255 <src/examples/aoc20255/example.aoc20255 >out/example.c
+ c_compile out/example.c out/example
+ out/example
+ out/aoc20255 <src/examples/aoc20255/rl.aoc20255 >out/rl.c
+ c_compile out/rl.c out/rl
+ out/rl
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
@@ -133,6 +144,7 @@ languages() {
meta_compile src/examples/aoc20252/aoc20252.meta out/language_aoc20252.c
meta_compile src/examples/aoc20253/aoc20253.meta out/language_aoc20253.c
meta_compile src/examples/aoc20254/aoc20254.meta out/language_aoc20254.c
+ meta_compile src/examples/aoc20255/aoc20255.meta out/language_aoc20255.c
}
banner() {
diff --git a/src/examples/aoc20255/aoc20255.meta b/src/examples/aoc20255/aoc20255.meta
new file mode 100644
index 0000000..720b68d
--- /dev/null
+++ b/src/examples/aoc20255/aoc20255.meta
@@ -0,0 +1,53 @@
+#id = aoc20255
+
+main = range*:xs '\n' id*:ys !. -> {
+ "#include <stdio.h>\n"
+ "typedef unsigned long Id;\n"
+ "typedef struct {\n" >
+ "Id start;\n"
+ "Id end;\n"
+ < "} Range;\n"
+ "Range ranges[] = {\n" >
+ xs
+ < "};\n"
+ "Id ids[] = {\n" >
+ ys
+ < "};\n"
+ "int is_fresh(Id id) {\n" >
+ "int index;\n"
+ "for (index=0; index<" xs.count "; index++) {\n" >
+ "if (id >= ranges[index].start && id <= ranges[index].end) {\n" >
+ "return 1;\n"
+ < "}\n"
+ < "}\n"
+ "return 0;\n"
+ < "}\n"
+ "int count_fresh() {\n" >
+ "int count;\n"
+ "int index;\n"
+ "for (index=0; index<" ys.count "; index++) {\n" >
+ "if (is_fresh(ids[index])) {\n" >
+ "count++;\n"
+ < "}\n"
+ < "}\n"
+ "return count;\n"
+ < "}\n"
+ "int main(void) {\n" >
+ "printf(\"Part 1: %d\\n\", count_fresh());\n"
+ "printf(\"Part 2: %d\\n\", 0);\n"
+ "return 0;\n"
+ < "}\n"
+};
+
+range = start:x '-' end:y '\n' -> {
+ "{" x ", " y "},\n"
+};
+
+start[Reserved] = number;
+end[RuleName] = number;
+
+id[Escape] = number:x '\n' -> { x ",\n" };
+
+number = digit digit*;
+
+digit = '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
diff --git a/src/examples/aoc20255/example.aoc20255 b/src/examples/aoc20255/example.aoc20255
new file mode 100644
index 0000000..2e9078d
--- /dev/null
+++ b/src/examples/aoc20255/example.aoc20255
@@ -0,0 +1,11 @@
+3-5
+10-14
+16-20
+12-18
+
+1
+5
+8
+11
+17
+32
diff --git a/src/examples/aoc20255/rl.aoc20255 b/src/examples/aoc20255/rl.aoc20255
new file mode 100644
index 0000000..0ba9926
--- /dev/null
+++ b/src/examples/aoc20255/rl.aoc20255
@@ -0,0 +1,1179 @@
+514636401848126-515021264549070
+284036251378482-284592982874520
+296164416018017-299046449889301
+283426891017632-284036251378482
+343608343658787-349486968016855
+518754439264536-519443780540781
+203443194067628-203933432910977
+519443780540781-519633512362687
+210005855985412-210549428703488
+282811585081172-283522815708147
+282103439366027-282811585081172
+146191319211378-148928182943279
+542009870509829-542009870509829
+285110984007607-285557627386426
+181836090026423-187133491027023
+191383217925987-193740672523902
+529067077613194-530556181878483
+304959261875505-310322684117777
+5221298087814-5845643808551
+121449485422025-121449485422025
+288819540858543-289732112842441
+31314012134697-34077678147946
+355346276508449-356961978424786
+210005855985412-210154987714222
+31314012134697-38289146357504
+57372486536812-58906664319153
+63107431158211-64549017086535
+4590169517791-5221298087814
+50650192430993-52130829319473
+530953193123290-532382284125787
+265252883201638-269190040850024
+496653674559961-496653674559961
+525886102629992-527695520308656
+234586469402843-238198950451156
+519633512362687-520345553919679
+384980372022383-389006578880062
+317844855413056-320364244125646
+503139165919699-507064243567239
+463493316343339-469362738286899
+43073032066090-49251433333982
+6600924130212-7444318394218
+111838895260979-117094893375877
+7648228942274-7897731755256
+84776658354341-90046495985385
+11562463563199-18329087766001
+313521138229416-320364244125646
+193977202606502-196647888828768
+530153466102565-531523921526216
+553391357437896-562488274516946
+459525942526207-459525942526207
+53393578131918-54955075378575
+404190643739100-408213916357702
+520945760876904-521172857358597
+2727821450473-3340299640579
+286048130453075-286665795820799
+528177694307708-529471263275682
+301956083638360-307163599509656
+507064243567240-511953396823239
+260061486329253-260061486329253
+101450700607317-106472683347649
+544317206779689-552355052009161
+283196635166397-283522815708147
+288819540858543-289732112842441
+131234255850576-137062902674911
+352070211023717-353583840322516
+520186230488106-520945760876904
+415995383355085-415995383355085
+395615962419343-397864940668161
+94366474861793-99527846051448
+205173320654056-206051449292310
+58711690964932-59879231977934
+519633512362687-520345553919679
+516022119170784-516365566181711
+238198950451157-238198950451157
+206639071565785-207304603090383
+518602829412794-519443780540781
+82147453568207-84776658354339
+23956737879583-28622963935851
+484025043897742-489248708112258
+544317206779688-544317206779688
+340128853274594-340128853274594
+444827419361595-451800098044043
+294297486844512-296164416018016
+176240640987270-178847650802940
+192995036697202-195029211979726
+404190643739100-408213916357702
+423420802261041-430543339190155
+438096745586433-440661544775439
+516668731856740-516826848891136
+289079205608282-289927106556831
+515546891366899-516365566181711
+56576870014158-58238248382778
+523020705694172-524681162845767
+432699609410984-440661544775439
+73622261592470-78368864856562
+203615147167346-203933432910977
+252433626704883-260061486329253
+415995383355086-418601199927456
+225742115230077-227522359650710
+536745635162015-542009870509829
+208725672081644-208995628405837
+328742269957098-328742269957098
+163318839464148-163318839464148
+242450869652517-250877827576819
+496653674559961-498166797604837
+353406104646330-355006194373241
+207866368794809-208446995196529
+1708595883983-1909532685738
+360121938111677-361422333382878
+173867301639925-176240640987268
+181836090026423-188217989877988
+206944308839538-207304603090383
+101450700607316-101450700607316
+222235372532517-229028822916590
+142908285233132-146191319211377
+354320242004358-355829534227523
+46225481831810-49251433333982
+358708341359993-360462576296801
+1909532685738-2356756942759
+459010164236-822787238930
+52595367244327-53842968937424
+526841632481036-528402608506153
+284592982874520-284889275037951
+198480173290999-200502677914655
+206051449292310-206639071565785
+553391357437896-559252440639087
+213282678483051-217578951006125
+336185428498850-340128853274593
+121449485422025-129884332810178
+356409937299519-358284721371764
+362754678790488-368199822970279
+51349595474361-52880663948995
+163318839464149-167177497489124
+375764731455726-379099669341280
+372528206409103-375764731455724
+283522815708147-283904486146961
+444827419361595-451800098044043
+3811607178621-4081675716328
+154354622006539-157453469587934
+517803425605817-518054191542013
+426576897630361-429161675325908
+284889275037951-285337573624635
+111838895260979-117094893375877
+272614047343400-277766344260508
+392633898190960-400562908625803
+137062902674912-137062902674912
+247628951587102-250877827576819
+466773209641268-471334211762712
+285557627386426-286298272038457
+282557763450697-283426891017632
+2813781325022-3627969709652
+524077645740986-525409953554452
+197098088554829-199433303049802
+54481491520234-55965788224234
+456199144939177-459525942526206
+474922814171466-476551147548164
+14558671052767-16713866144325
+92219205556280-97580264143478
+283426891017632-284036251378482
+55460508141658-56966989766365
+282557763450697-283426891017632
+287379516759852-287963386979452
+64549017086536-69089566650446
+206051449292310-206470060622464
+384980372022383-384980372022383
+525084947593291-526380411135762
+476551147548166-480592004834004
+78368864856562-78368864856562
+286048130453075-286298272038457
+325663773852006-328742269957098
+343608343658787-346343013406331
+154354622006539-154354622006539
+283196635166397-283904486146961
+215411212460336-220375303342442
+517803425605817-518352016878202
+265252883201638-269190040850024
+195877371240788-197931294682307
+357924716181756-359488291571889
+
+278402555432346
+132663185371131
+308642641112043
+33559341434412
+405303123438474
+485951992574145
+313064131630188
+260158596036936
+88167936209309
+172542568004197
+458979566798645
+326040316021558
+441814331976477
+15242696475530
+532409453906558
+264386719516534
+462500896724966
+31810962837711
+376074010339133
+296957769366533
+214356649810920
+391352103109617
+397015393429102
+209254749760423
+396869971040626
+492567648450273
+74223735388468
+235765509681740
+393369865380685
+354084263929807
+29151194853127
+331213306580185
+200775948660881
+184162024247630
+73539350853939
+119830435623787
+27248780736717
+273944736921943
+298748652980771
+299124411214164
+505045728033385
+465052402342861
+114174482868245
+59857080667886
+385740132696595
+80006398406086
+164797560065538
+449676350447067
+331107394599031
+329904479261567
+28661521864528
+241775855437174
+70075146805242
+100377917697325
+320925037686437
+240701225007949
+71167017443884
+409486741604745
+213210388272121
+193305527209317
+454232214381698
+373477528355225
+107915765152720
+484093453725123
+384598203260425
+87692352508770
+287601254688301
+245281846783672
+346938039089651
+268195944549448
+161737144675390
+263926978453657
+399878538434895
+480794774065006
+528604895528697
+140772160424647
+72063884537085
+324924109510539
+232186650292489
+287021682047962
+119395417223177
+63888428378797
+47703189063136
+128421895159085
+145092004217697
+545399776926267
+551091745204299
+324205236371585
+142734991670084
+138011721050796
+29106037358317
+285779273281918
+544729165988472
+278655342638262
+431782774238901
+274987201312127
+482150377119121
+532329225332989
+230886711948544
+277742281856869
+542469937573351
+110928323185174
+406956845060793
+392495345988528
+373156790449365
+28897120503935
+555056437619844
+288282240953804
+233071070092757
+535916810866149
+202318644863533
+274044733613351
+445204650220846
+562599592138838
+484891673726876
+397310529392326
+51152753289229
+221691413891037
+430268065726843
+292727401143432
+148174775882288
+541971954149702
+230205232252218
+394846657281655
+258961064557207
+168538135912262
+306892797457040
+41143047884962
+263909135855905
+555322955749641
+254690587424659
+414433873970870
+24119954815073
+105258178545862
+51575143573061
+129106627117303
+374522807056431
+447497507528143
+223506299719559
+467044350364998
+107409890260230
+503048129804246
+419888793709599
+223670494400224
+254116980329454
+140949814523698
+361281828985173
+52452532098109
+134884440069559
+454230992392750
+513793320462354
+143974081539492
+301367706287735
+112278821902328
+78129336797298
+70183930773340
+113803338297946
+473304604596770
+461769367861589
+357444038347590
+464409465642740
+169918162583622
+381412251915951
+78436010713279
+74247991214850
+294408435111807
+539136654561650
+374103328543636
+211026210839033
+457850304567788
+322287802901955
+393893358183306
+189132199406123
+482062087499501
+119105849679363
+506514462708219
+134680768346040
+174484013026133
+314742387120658
+234825446647221
+526814730910876
+405094103017447
+552239665074466
+487198509367609
+543612878502850
+245955810359582
+138188761104744
+124126125471817
+561823724773957
+129469363656788
+177468379111918
+241039809480056
+550066267667976
+219843124814009
+462720788415678
+274618609488050
+364147995137340
+278379015579457
+340585878842776
+350875903168946
+331070729467974
+100327817295410
+141147271521536
+351926657214835
+262919286473957
+386199840114074
+53393671829457
+379586140154652
+491620501293264
+249990257576572
+64519244313495
+184847470149212
+89126789338975
+544825673728682
+274803776293650
+153834366278901
+435022235924159
+173873826434726
+59042972581418
+148219795626852
+444346667071188
+475532278427376
+507142501942950
+100854211818626
+47917266954190
+288864792760325
+8989755789362
+128822889809511
+478526536303692
+31049864185284
+1587848580816
+147372848518905
+8157614781088
+10988325260280
+449440693245530
+202957505221201
+468146580196327
+341156307953798
+330457556390284
+119275777031453
+157293448767060
+517712624111396
+83382707578378
+211798817670718
+403812991504731
+52438345000658
+141602527034518
+209814406404292
+288892296326853
+278940982316157
+161337794616069
+193325468633700
+385876393717156
+308588158065137
+200934729386951
+307804488538044
+112310131645211
+407549193596788
+347309160609625
+277807738036876
+1124741478798
+181850807389162
+87340536548673
+108917779897587
+409088291844305
+7327968226076
+331409906632409
+55018818407287
+135959244326713
+255607337735622
+404990318863556
+252681084988887
+502726075212134
+376076478146492
+447466454412473
+257429453228785
+252531857544466
+223649896206420
+99921279410798
+289191726250755
+87940639643249
+291657704833929
+250707386270082
+305532517235714
+457845768362257
+499633834016084
+414660722808058
+115185592261478
+323695771212749
+53067690857484
+164312891564458
+184608065212843
+404061324161713
+546670579412106
+34185905019669
+517810909767627
+318928880485847
+57145094982366
+185136468761899
+123803278607569
+275181571671734
+505187529712629
+238513631615170
+150637997035758
+60696159914228
+509153087482532
+143960871978648
+532742283360955
+321896467398818
+78923110493982
+319410013097706
+374545822434791
+329978068684180
+546234683333382
+518615064982021
+265458933753218
+282556850446800
+556536919099390
+408821451178422
+550450331006822
+387020961781675
+392293780264327
+108001809829709
+541151472944936
+372695991295080
+179700539466037
+130945353612610
+29145725683464
+329997728133242
+446881378976432
+127076551811482
+17299891883245
+159462273043256
+393020453645122
+481706204119683
+382389483886370
+423730095802717
+303184318437817
+365797078969040
+209007197844304
+247220926807876
+264292571087588
+135295985727166
+473540877207725
+42383569639867
+284148851920777
+459839683672452
+29598628425336
+92458461620063
+31618483157264
+185648070289563
+98984221426980
+327261545504740
+339544125209591
+351523051242673
+503549480739263
+451133172113710
+198137406661747
+206433566752702
+323117582234084
+402246977646126
+333793124009912
+98992932009061
+501628586740342
+94911549846737
+325461668807707
+130688966388691
+415706162750143
+431795300584506
+551496845169982
+47236321942328
+245545983075020
+110817343051994
+249570412216764
+374802975869957
+325600137603466
+295130410119795
+365918011942534
+22696813705554
+56381928509742
+322479977663160
+328995696233853
+393181808509923
+486543754315217
+384770321822425
+434901434482810
+209992693025500
+35175387586406
+30890674797432
+329334211904446
+95416474896760
+369941677173765
+408776374541039
+463328601327576
+352193059714251
+515561825104149
+509085802605817
+289033271841082
+284129612437330
+128877515059923
+11710783019097
+134496055286541
+318240924531146
+257570046738609
+104319616549205
+89453172689676
+296422863501405
+272224036719966
+403967683900289
+208395071342657
+306101872949874
+120029032017318
+361623195531845
+248456545529726
+314657311386942
+561664993912685
+365060228244264
+20958161702758
+248843859686259
+200203858186422
+6136051960313
+10355251433495
+64511549654450
+55163120105713
+549156964833318
+321255232483566
+302170372255759
+533118918134213
+147734475468464
+531959177379478
+482924799913380
+369403215999109
+517854494165516
+30763624515305
+7116155983626
+82446528448816
+462227031945577
+179818584376189
+123434101955415
+216299405959612
+46271087218668
+463013904377275
+273259685222153
+491125748072723
+448512985842556
+196859191340249
+252832456458708
+442160277872053
+524958983300282
+390106990435196
+129663515108030
+5622352673985
+257173052193326
+239287224626983
+120562509703631
+274159882479959
+228371247154455
+80267049091762
+382314795358348
+529415203479662
+459858722387131
+264282200528651
+75151228174069
+82951634913109
+342763415768211
+28971157275146
+60472601493332
+276337537927196
+351969714938165
+562587650705150
+297284704851148
+499285017085531
+324125551256360
+392206072182703
+35713645611554
+183126895651293
+424679526469974
+271552485627674
+158719592578564
+471693342183649
+97426653934358
+40613102488781
+371993554902223
+114458195370676
+219355431601203
+250239066927683
+376186023004647
+60722752493741
+463087018526652
+34201411990755
+345550248000346
+211780373002897
+169234342894556
+192841149843724
+100042399395284
+111437480645508
+452954711661644
+245907180732031
+418641728926307
+147960464589869
+33233317907622
+473530477343507
+136008282418109
+105521325435126
+487250089102014
+513133744508381
+264552966427013
+176071042788430
+268961848299179
+119949783203076
+51903620717392
+364379781128387
+131580485824532
+344131994194304
+418295349123048
+136697151966550
+548004430449314
+344380637925610
+295135201549386
+155783901147440
+265375979957582
+110702726863666
+475146284606014
+528156187870536
+206423623361985
+320983281821409
+32308190883767
+445953790831068
+280339418761001
+431229011831650
+46684003610056
+38399734614755
+281215185501015
+273353978839061
+449133569775397
+94595686369921
+175731354902944
+21307525454258
+9489987407002
+172412146731026
+193850453491238
+19446253288803
+285378598978585
+135951933336291
+480773983458421
+552984670280393
+261970498485095
+144592737060723
+138116131924687
+460915272940883
+84482553628168
+174659735669386
+404736756586967
+231412765264382
+411604040108554
+172738598023485
+394223174139584
+163258717553805
+53736088706942
+266563475927420
+390310434289887
+83706278003247
+396738905795074
+278225826503322
+191082728745913
+266651846055938
+492508384095809
+316296449653752
+343106511714695
+210459733293601
+233031956892925
+76418270871678
+29769627349822
+556381730568057
+257012482652597
+248840481200902
+222958858307134
+84042322564436
+35720953789269
+260547639489491
+182683830490502
+36952171920209
+307732212279124
+163247408905762
+435855157710622
+318189444743170
+103870743821491
+312285224574605
+98654666776816
+489010975151168
+399507638671271
+365893303170644
+6908925999420
+393324878695594
+383316081935321
+148738496718000
+52774828932456
+296650357872477
+80337082594428
+269671017806274
+55920709856139
+495013170752544
+561155374851795
+338945539513000
+156445561127481
+409561529233480
+484226615652481
+192448259839345
+481903333391252
+264212783399038
+353174725814555
+96222086088154
+493177058134893
+142723498613148
+510045939338343
+213082967590207
+451414930130011
+287178562027706
+35874332629426
+423663996970455
+88932640030339
+898865885810
+366568691213396
+93353448826935
+108107203011512
+484400437194786
+548596042489566
+529313056823226
+463540798359816
+300970233625678
+533498899750362
+134719012789179
+97353115132835
+140521188335366
+445672791299124
+123320177593172
+216791781266638
+119134890365880
+221205354293267
+184784974544773
+179139368257981
+272193704994870
+170024298461309
+271291402037580
+197907060425420
+420240113592691
+414603513638433
+250476880188896
+420090525955459
+61717209916128
+48894483980599
+377367325324804
+172567330529867
+368761772868553
+243859097661139
+116238986487276
+481244946660263
+128604756311656
+247732487283249
+425716677005089
+286601334753733
+361697552270269
+332491437490283
+371464644131715
+359812466559957
+293124187798925
+370182692549338
+402836813601382
+164523843452144
+245507429744801
+26733519594785
+546495124583763
+54555721459701
+198117667481074
+348191326815994
+184329200281240
+539356383362926
+84656623890568
+258149845295513
+209516619356014
+410555079429028
+161984645206044
+357193302837692
+177148646246335
+79841196917799
+4868559382286
+402367850249728
+362642247369303
+478292748379088
+473744859329195
+82709011229711
+524705537585961
+511883694500252
+57879549575559
+73479392417576
+349000443868403
+486425967984117
+323320630688457
+532783358104403
+50005892324280
+10448553976733
+555289371666192
+179277875998235
+295489636648645
+281583361605010
+319406015645873
+209154331723171
+252336179080392
+220101468243703
+123423381556053
+249424456885568
+142214490657924
+394722317410561
+197456057951525
+548966841451350
+266746513524031
+139098093873876
+466273909877373
+312345615912482
+458924144953335
+445118920882541
+24234079914386
+362088150037853
+460399844392608
+111163631417516
+506849603803255
+532375417265875
+187870869665168
+278574590109391
+202009760679628
+266496090594638
+88270214836837
+561632831464762
+76021467178330
+187623147965793
+357276166666099
+166068895666405
+188702242445761
+482351061167209
+391289279201523
+520990493507818
+497475469916
+339228708691089
+495434152189714
+516949693658243
+131555860183160
+481541018788302
+295012343119003
+120501704104067
+165640591375618
+529132580016293
+277893188385960
+269777289670590
+159109932761167
+455564136979615
+188185367614591
+350833577764253
+557233591767987
+123761048587147
+151314215719767
+477449342398537
+62831624082314
+234848279993236
+430602997047715
+405246019124706
+464912511081924
+197393908639185
+291554048390173
+226121989951378
+212676557405587
+554655885820685
+299727225116809
+407472777371527
+420362905416978
+296266044226918
+58192476181379
+121583520951625
+180106397580363
+260200116504662
+498917279509807
+297365431128272
+313584997350275
+456939228573020
+294370795539257
+449502356758512
+312894062722575
+216863658149932
+549519029638937
+491172219037448
+385632358076595
+203419042895174
+180179598866078
+432578305088914
+210183865431187
+388350948160814
+496476163009942
+345666993119293
+445972232903888
+492968915961196
+321236953037237
+272000749564280
+533278028352087
+6448234606804
+255371133551395
+281168111236994
+329978895797265
+81518297099960
+516583473847205
+473238890315554
+312390116937975
+428025089774473
+302568806855463
+442737529200618
+53628674268291
+559025617844995
+335152898280854
+335195085857352
+128606928001719
+539405453793625
+5091586482817
+368211480784205
+72528232324196
+192747744975660
+495687218221476
+244535070342225
+204542989872716
+333607935179787
+460896301612722
+229112968047752
+391421680374751
+110507896326982
+299550929112341
+457383042303170
+307772312034787
+442036711139656
+302535233032398
+386186344798926
+262893592415689
+372413274467022
+279479327522831
+13437891268612
+506325313609980
+131236709875043
+464308682311645
+411378982136999
+120230773754944
+423195153134786
+405990565834555
+534776597763966
+437411109031200
+219742760290494
+228865825066033
+515184891428578
+488544471552241
+269300858458577
+371478928400050
+130159606369408
+287272634734329
+461905672458027
+60329891379141
+60132187294951
+99521362347276
+309350255318622
+510729754639616
+547692850287734
+294380662401067
+310564837887649
+443429135254524
+225864458441609
+204476139942432
+157661558341040
+522328233479084
+108698387051238
+42634436032669
+91659921452940
+541453034568481
+379103522672315
+555689720604736
+132759062170768
+20346299669759
+285095936176573
+75365643884669
+238524319293110
+420903339435757
+334551123089634
+113762253792017
+28849956098160
+194797696966968
+57440169624766
+544810253201978
+436237035019730
+482781361879861
+451562898872753
+395879028348892
+121395935599089
+409431456319018
+154902071228101
+224635463987990
+459013953938681
+142670869874565
+282448069258152
+242382451120362
+17978883345856
+312070524637348
+509249001510454
+336550531120605
+420225858411694
+166872469098795
+554769014606773
+442084799525247
+112555026716453
+518399540637934
+167266744320249
+11629931904201
+313172360380743
+266675580438473
+489981067892109
+539983856126462
+40108126506885
+466597055011791
+293430577847972
+472762959360632
+441385832889494
+421905983310428
+398934722838607
+339061961403756
+225899065252817
+71937122920443
+119350445262324
+261403626362185
+486224612531414
+225971309674624
+473770813799428
+239548733721372
+435235155627578
+317885697957624
+361613326555781
+79814119607842
+459240120548328
+438955250274333
+220175009690700
+474694472577049
+318872451274205
+480338784671075
+270411228834924
+119054285786706
+348514924618706
+122354174726256
+464617525355901
+416113411057972
+420659618938099
+324487471873350
+533600567909712
+300307723453151
+112468187845819
+376164210917809
+26459568637185
+234667763068328
+330656966021309
+227128592895505
+432311421643340
+34030502774204
+437956683674722
+217413642330271
+75283583441064
+538895257967714
+119250975633432
+465464122849785
+239631273839922
+528823824074518
+470974372167650
+457264121923056
+145031905797091
+72730415213737
+106684985437402
+216605441143417
+457701708831003
+224519273459026
+75903444087925
+365475786184033
+122035276077927
+52166796219168
+546664440416045
+542053754220912
+324351452837800
+63702067734507
+243546103671323
+102770017086619
+462250185637793
+292472813603365
+562009114368012
+58620889775917
+138398280327120
+322144689531392
+42371902751795
+291727918325773
+285725217009853
+174366888517324
+366069369837793
+14937448831527
diff --git a/src/language.c b/src/language.c
index f124ea0..b6fc35d 100644
--- a/src/language.c
+++ b/src/language.c
@@ -5,6 +5,7 @@
#include "language_aoc20252.c"
#include "language_aoc20253.c"
#include "language_aoc20254.c"
+#include "language_aoc20255.c"
#include "language_generic.c"
typedef enum languages {
@@ -14,6 +15,7 @@ typedef enum languages {
Language_AOC20252,
Language_AOC20253,
Language_AOC20254,
+ Language_AOC20255,
Language_Generic
} Language;
@@ -24,6 +26,7 @@ Language language_from_string(String name) {
if (string_eqc(name, "aoc20252")) { return Language_AOC20252; }
if (string_eqc(name, "aoc20253")) { return Language_AOC20253; }
if (string_eqc(name, "aoc20254")) { return Language_AOC20254; }
+ if (string_eqc(name, "aoc20255")) { return Language_AOC20255; }
return Language_Generic;
}
@@ -34,5 +37,6 @@ static MetaParseFunction LANGUAGE_HIGHLIGHERS[] = {
language_aoc20252_rule_main,
language_aoc20253_rule_main,
language_aoc20254_rule_main,
+ language_aoc20255_rule_main,
language_generic_rule_main,
};
commit 4d60916b526bd0f0d94ea3d82188e1b36f7c8d1b
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 21:49:15 2025 +0100
Clean up
diff --git a/src/examples/aoc20254/aoc20254.meta b/src/examples/aoc20254/aoc20254.meta
index 2bc1a92..e9b2d81 100644
--- a/src/examples/aoc20254/aoc20254.meta
+++ b/src/examples/aoc20254/aoc20254.meta
@@ -24,21 +24,22 @@ main = grid:x !. -> {
"sum += paper_roll_at(row+1, col+1);\n"
"return sum;\n"
< "}\n"
- "int count() {\n" >
- "int row, col, paper_roll_count = 0;\n"
+ "int count_accessible_paper_rolls() {\n" >
+ "int row, col;\n"
+ "int count = 0;\n"
"for (row=0; row<" <rowCount "; row++) {\n" >
"for (col=0; col<" <rowCount "; col++) {\n" >
"if (paper_roll_at(row, col) && neighbour_paper_rolls(row, col) < 4) {\n" >
- "paper_roll_count++;\n"
+ "count++;\n"
"can_be_removed[row][col] = 1;\n"
< "} else {\n" >
"can_be_removed[row][col] = 0;\n"
< "}\n"
< "}\n"
< "}\n"
- "return paper_roll_count;\n"
+ "return count;\n"
< "}\n"
- "void remove_rolls(void) {\n" >
+ "void remove_paper_rolls(void) {\n" >
"int row, col;\n"
"for (row=0; row<" <rowCount "; row++) {\n" >
"for (col=0; col<" <rowCount "; col++) {\n" >
@@ -48,22 +49,18 @@ main = grid:x !. -> {
< "}\n"
< "}\n"
< "}\n"
- "int count2() {\n" >
- "int total = 0, paper_roll_count = 0;\n"
- "while (1) {\n" >
- "paper_roll_count = count();\n"
- "if (paper_roll_count > 0) {\n" >
- "total += paper_roll_count;\n"
- "remove_rolls();\n"
- < "} else {\n" >
- "break;\n"
- < "}\n"
+ "int count_total_removable_paper_rolls() {\n" >
+ "int total = 0;\n"
+ "int count = 0;\n"
+ "while ((count = count_accessible_paper_rolls())) {\n" >
+ "total += count;\n"
+ "remove_paper_rolls();\n"
< "}\n"
"return total;\n"
< "}\n"
"int main(void) {\n" >
- "printf(\"Part 1: %d\\n\", count());\n"
- "printf(\"Part 2: %d\\n\", count2());\n"
+ "printf(\"Part 1: %d\\n\", count_accessible_paper_rolls());\n"
+ "printf(\"Part 2: %d\\n\", count_total_removable_paper_rolls());\n"
"return 0;\n"
< "}\n"
};
@@ -75,12 +72,8 @@ grid = row*:xs -> {
xs
< "};\n"
"int can_be_removed[" <rowCount "][" <colCount "];\n"
- >rowCount {
- W[1]
- }
- >colCount {
- W[2]
- }
+ >rowCount { W[1] }
+ >colCount { W[2] }
};
row = cell*:xs '\n' -> {
@@ -96,5 +89,3 @@ cell =
empty = '.' -> { "0, " };
paperRoll[Escape] = '@' -> { "1, " };
-
-number = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
commit 8d50434a8dd2e0a6c78724fda5736cce8ff7ea84
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 21:38:55 2025 +0100
Part 2
diff --git a/src/examples/aoc20254/aoc20254.meta b/src/examples/aoc20254/aoc20254.meta
index bcbf3e2..2bc1a92 100644
--- a/src/examples/aoc20254/aoc20254.meta
+++ b/src/examples/aoc20254/aoc20254.meta
@@ -25,18 +25,45 @@ main = grid:x !. -> {
"return sum;\n"
< "}\n"
"int count() {\n" >
- "int row, col, paper_roll_count;\n"
+ "int row, col, paper_roll_count = 0;\n"
"for (row=0; row<" <rowCount "; row++) {\n" >
"for (col=0; col<" <rowCount "; col++) {\n" >
"if (paper_roll_at(row, col) && neighbour_paper_rolls(row, col) < 4) {\n" >
"paper_roll_count++;\n"
+ "can_be_removed[row][col] = 1;\n"
+ < "} else {\n" >
+ "can_be_removed[row][col] = 0;\n"
< "}\n"
< "}\n"
< "}\n"
"return paper_roll_count;\n"
< "}\n"
+ "void remove_rolls(void) {\n" >
+ "int row, col;\n"
+ "for (row=0; row<" <rowCount "; row++) {\n" >
+ "for (col=0; col<" <rowCount "; col++) {\n" >
+ "if (can_be_removed[row][col]) {\n" >
+ "paper_rolls[row][col] = 0;\n"
+ < "}\n"
+ < "}\n"
+ < "}\n"
+ < "}\n"
+ "int count2() {\n" >
+ "int total = 0, paper_roll_count = 0;\n"
+ "while (1) {\n" >
+ "paper_roll_count = count();\n"
+ "if (paper_roll_count > 0) {\n" >
+ "total += paper_roll_count;\n"
+ "remove_rolls();\n"
+ < "} else {\n" >
+ "break;\n"
+ < "}\n"
+ < "}\n"
+ "return total;\n"
+ < "}\n"
"int main(void) {\n" >
"printf(\"Part 1: %d\\n\", count());\n"
+ "printf(\"Part 2: %d\\n\", count2());\n"
"return 0;\n"
< "}\n"
};
@@ -47,6 +74,7 @@ grid = row*:xs -> {
"int paper_rolls[" <rowCount "][" <colCount "] = {\n" >
xs
< "};\n"
+ "int can_be_removed[" <rowCount "][" <colCount "];\n"
>rowCount {
W[1]
}
commit 6d56c2295bcdb2f576d6dabe9ff466a4fbb18f86
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 21:22:57 2025 +0100
Clean up
diff --git a/src/examples/aoc20254/aoc20254.meta b/src/examples/aoc20254/aoc20254.meta
index 6144d9d..bcbf3e2 100644
--- a/src/examples/aoc20254/aoc20254.meta
+++ b/src/examples/aoc20254/aoc20254.meta
@@ -3,41 +3,40 @@
main = grid:x !. -> {
"#include <stdio.h>\n"
x
- "int is_paper_roll(int row, int col) {\n" >
+ "int paper_roll_at(int row, int col) {\n" >
"if (row < 0 || row >= " <rowCount ") {\n" >
"return 0;\n"
< "}\n"
"if (col < 0 || col >= " <colCount ") {\n" >
"return 0;\n"
< "}\n"
- "return paperRolls[row][col];\n"
+ "return paper_rolls[row][col];\n"
< "}\n"
- "int neighbours(int row, int col) {\n" >
+ "int neighbour_paper_rolls(int row, int col) {\n" >
"int sum = 0;\n"
-
- "sum += is_paper_roll(row-1, col-1);\n"
- "sum += is_paper_roll(row-1, col);\n"
- "sum += is_paper_roll(row-1, col+1);\n"
-
- "sum += is_paper_roll(row, col-1);\n"
- "sum += is_paper_roll(row, col+1);\n"
-
- "sum += is_paper_roll(row+1, col-1);\n"
- "sum += is_paper_roll(row+1, col);\n"
- "sum += is_paper_roll(row+1, col+1);\n"
-
+ "sum += paper_roll_at(row-1, col-1);\n"
+ "sum += paper_roll_at(row-1, col);\n"
+ "sum += paper_roll_at(row-1, col+1);\n"
+ "sum += paper_roll_at(row, col-1);\n"
+ "sum += paper_roll_at(row, col+1);\n"
+ "sum += paper_roll_at(row+1, col-1);\n"
+ "sum += paper_roll_at(row+1, col);\n"
+ "sum += paper_roll_at(row+1, col+1);\n"
"return sum;\n"
< "}\n"
- "int main(void) {\n" >
- "int row, col, paperRollCount;\n"
+ "int count() {\n" >
+ "int row, col, paper_roll_count;\n"
"for (row=0; row<" <rowCount "; row++) {\n" >
"for (col=0; col<" <rowCount "; col++) {\n" >
- "if (is_paper_roll(row, col) && neighbours(row, col) < 4) {\n" >
- "paperRollCount++;\n"
+ "if (paper_roll_at(row, col) && neighbour_paper_rolls(row, col) < 4) {\n" >
+ "paper_roll_count++;\n"
< "}\n"
< "}\n"
< "}\n"
- "printf(\"Part 1: %d\\n\", paperRollCount);\n"
+ "return paper_roll_count;\n"
+ < "}\n"
+ "int main(void) {\n" >
+ "printf(\"Part 1: %d\\n\", count());\n"
"return 0;\n"
< "}\n"
};
@@ -45,7 +44,7 @@ main = grid:x !. -> {
grid = row*:xs -> {
$rowCount
$colCount
- "int paperRolls[" <rowCount "][" <colCount "] = {\n" >
+ "int paper_rolls[" <rowCount "][" <colCount "] = {\n" >
xs
< "};\n"
>rowCount {
commit 9d7072adaa14309eaabecb756f961faacb263243
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 21:11:32 2025 +0100
Day 4 part 1
diff --git a/make.sh b/make.sh
index 1299e50..f9c5f27 100755
--- a/make.sh
+++ b/make.sh
@@ -14,6 +14,7 @@ main() {
example_aoc20251
example_aoc20252
example_aoc20253
+ example_aoc20254
}
dotall() {
@@ -87,6 +88,16 @@ example_aoc20253() {
out/rl
}
+example_aoc20254() {
+ example aoc20254
+ out/aoc20254 <src/examples/aoc20254/example.aoc20254 >out/example.c
+ c_compile out/example.c out/example
+ out/example
+ out/aoc20254 <src/examples/aoc20254/rl.aoc20254 >out/rl.c
+ c_compile out/rl.c out/rl
+ out/rl
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
@@ -121,6 +132,7 @@ languages() {
meta_compile src/examples/aoc20251/aoc20251.meta out/language_aoc20251.c
meta_compile src/examples/aoc20252/aoc20252.meta out/language_aoc20252.c
meta_compile src/examples/aoc20253/aoc20253.meta out/language_aoc20253.c
+ meta_compile src/examples/aoc20254/aoc20254.meta out/language_aoc20254.c
}
banner() {
diff --git a/src/examples/aoc20254/aoc20254.meta b/src/examples/aoc20254/aoc20254.meta
new file mode 100644
index 0000000..6144d9d
--- /dev/null
+++ b/src/examples/aoc20254/aoc20254.meta
@@ -0,0 +1,73 @@
+#id = aoc20254
+
+main = grid:x !. -> {
+ "#include <stdio.h>\n"
+ x
+ "int is_paper_roll(int row, int col) {\n" >
+ "if (row < 0 || row >= " <rowCount ") {\n" >
+ "return 0;\n"
+ < "}\n"
+ "if (col < 0 || col >= " <colCount ") {\n" >
+ "return 0;\n"
+ < "}\n"
+ "return paperRolls[row][col];\n"
+ < "}\n"
+ "int neighbours(int row, int col) {\n" >
+ "int sum = 0;\n"
+
+ "sum += is_paper_roll(row-1, col-1);\n"
+ "sum += is_paper_roll(row-1, col);\n"
+ "sum += is_paper_roll(row-1, col+1);\n"
+
+ "sum += is_paper_roll(row, col-1);\n"
+ "sum += is_paper_roll(row, col+1);\n"
+
+ "sum += is_paper_roll(row+1, col-1);\n"
+ "sum += is_paper_roll(row+1, col);\n"
+ "sum += is_paper_roll(row+1, col+1);\n"
+
+ "return sum;\n"
+ < "}\n"
+ "int main(void) {\n" >
+ "int row, col, paperRollCount;\n"
+ "for (row=0; row<" <rowCount "; row++) {\n" >
+ "for (col=0; col<" <rowCount "; col++) {\n" >
+ "if (is_paper_roll(row, col) && neighbours(row, col) < 4) {\n" >
+ "paperRollCount++;\n"
+ < "}\n"
+ < "}\n"
+ < "}\n"
+ "printf(\"Part 1: %d\\n\", paperRollCount);\n"
+ "return 0;\n"
+ < "}\n"
+};
+
+grid = row*:xs -> {
+ $rowCount
+ $colCount
+ "int paperRolls[" <rowCount "][" <colCount "] = {\n" >
+ xs
+ < "};\n"
+ >rowCount {
+ W[1]
+ }
+ >colCount {
+ W[2]
+ }
+};
+
+row = cell*:xs '\n' -> {
+ #inc(W[1] 1)
+ #max(W[2] xs.len)
+ "{" xs "},\n"
+};
+
+cell =
+ | empty:x -> { x }
+ | paperRoll:x -> { x }
+ ;
+
+empty = '.' -> { "0, " };
+paperRoll[Escape] = '@' -> { "1, " };
+
+number = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
diff --git a/src/examples/aoc20254/example.aoc20254 b/src/examples/aoc20254/example.aoc20254
new file mode 100644
index 0000000..8209399
--- /dev/null
+++ b/src/examples/aoc20254/example.aoc20254
@@ -0,0 +1,10 @@
+..@@.@@@@.
+@@@.@.@.@@
+@@@@@.@.@@
+@.@@@@..@.
+@@.@@@@.@@
+.@@@@@@@.@
+.@.@.@.@@@
+@.@@@.@@@@
+.@@@@@@@@.
+@.@.@@@.@.
diff --git a/src/examples/aoc20254/rl.aoc20254 b/src/examples/aoc20254/rl.aoc20254
new file mode 100644
index 0000000..ba20dae
--- /dev/null
+++ b/src/examples/aoc20254/rl.aoc20254
@@ -0,0 +1,138 @@
+.@@@@.@@@@.....@@@@....@.@@.@@.@@.@@..@@.@.@@@@@@@@@.@@@@....@@.@@@@@......@@@@@@.....@.@@@@@.@@.@@.@@.@.@@@@@@@@.@@.@.@.@.@@.@@.@.@.@.@@.
+@@@@.@@@@...@@@@.@...@....@@@@.@@.@.@@@@@@@.@...@@.@@.@@@@@.@@@@....@@@..@...@@@@.@@.@@@@..@.@.@@@@@@.@@...@@@@.@@.@@.@..@@@..@@@@@.@@@.@@
+@...@.@.@.@..@@@.@...@@.@@..@.@...@@@@.@@@@@@@@@@@@@.@....@@@@@@...@@@@..@@@..@@...@.@@@@.@...@@@@@@@@@.@@@@@.@@@@@@@.@@@@@..@@@...@.@@@@@
+@@.@@@@@@.@..@..@@@@@@@@@.@...@@@.@@.@.@@.@.@@@@.@.....@.@@@@@@.@.@..@@@@.@@@...@...@.@..@@..@.@..@.@.@@.@@@@.@..@@@@@..@@@@@.@..@@...@@@@
+@.@@@@@.@@@@@@..@@.@@@@...@.@.@.@@@@.@@@@.@...@@@@@.@.@..@@@@@@.@.@@.@@@@.@@@@..@@@.@.@@.@.@.@...@..@..@@.....@@@@.@@@.@.@.@..@@@.@..@@@@@
+@.@.@@@@.@..@..@@@@@.@.@.@@.@.@.@@@@..@.@@.@@@@@.@.@@@.@@.@..@@@@@@@@.@@....@@@.@.@@@.@@@.@@@...@@@@.@@@@....@@@@.@..@@@.@@@@.@@@@.@@@@@.@
+@@..@@..@@@@@.@.@.@@@@@.@@@@@@@@@.@@.@@@@@@@@@@@@@@.....@@@@@@@@.......@@@@.@..@@@.@...@@@@@@@@.@@@@@.@@..@@.@@@@@.@.@@@@.@@....@@@@@.@.@@
+.@.@@.@@@@@.@..@@@@@@@@@@.@@@@@@@@....@@..@@.@.@...@@.@@@@..@@@..@@@.@@@@@@..@@@@.@@@@@..@@....@.@@@@@.@@...@@@@@@.@@....@@@@@.@@@..@..@@.
+.@@.@@.@....@@.@@@...@@@@@@..@@@@@..@@@..@..@..@@@.@@@..@@.@@@@@@@.@@@...@@@.@@..@.@@@@@.@@@@...@.@@@@@@.@@@@@...@..@@@@@..@.@@@@@@@...@..
+@..@@@.@.@@@@@@@@@.@@@@@@..@@..@.@@@@@.@..@@@..@@@@.@.@...@.@@@@.@@..@@@@.@...@@@..@.@@@@.@@@@@@@.@.@@@@.@.@@@@@@@.@.@..@@..@@.@@.@@@@...@
+@@.@@.@.@@.@.....@@@@.@@@@@....@@.@@@@.@.@.@@..@..@@@@@@@@.@@@.@@..@@@@@@@@@@@@@...@.@@@..@@.@@@....@@@...@@..@..@..@@....@.@@@@@@@@..@.@.
+.@@@@@@@@@@.@@@@..@@@.@@@.@..@....@.@@@@@@@@..@@@@@@@@@@@.@.....@@@@..@@@..@@@@@..@.@@@@@@.@..@.@..@@.@.@@.@@@@@@@.@@@@@@...@@@@@.@@.@.@.@
+.@.@@@..@@@....@..@.@@@.@@@@.@@@@@....@.@.@@@..@@..@.@@.@@.@@@.@.@.@@@@.@.@@@...@@.@@@...@.....@@@@@.@@@.@@@@.@@..@..@@.@@@.@@.@..@@@@@@@@
+...@.@...@...@@@.@.@@.@.@@.@.@.....@.....@@@@@@.@@@.....@@@@.@@@@..@@..@@@@@@@@@@@@@..@@@@.@@@@.@..@@@@@@@..@@.@@@.@@@@@@@@@.@@..@@@@@@@.@
+..@@@@@@@@@@..@@.@@@.@..@@@@@@@@@@...@@.@@.@@@@@@@@@@.@@.@.@@@@@@@.@.@..@@..@@@@@.@@.@@@@@@@@..@@@@@@.@@@@@@@@@@@.@.@@@@@.@@.@.@@@.@@.@...
+.@@@.@@@.@.@@.@@@@@@@.@...@@@@.@@@.@@.@@..@..@@@@@@..@@.@@@.@.@@@@..@@@@@@@@@@@@.@@@@@.@@.@@@@@.@@@.@@@@@@@.@@@.@@@@@.@..@@.@@@.@@.@@@@@@@
+.@@@@.@@@@@@@@@@@@@@...@@..@@.@@@.@@.@.@@@..@.@..@@@.@@@.@.@@@@@@@@@.@@@@.@..@@..@@@@@@@@.@..@@@....@.@@@@@@@.@.@@.@@..@@@@.@@@..@@.@@@.@@
+...@@@@@...@@@@@@.@...@@.@@@@@..@@@@@@@.@@@@@@@@@@...@@@.@..@..@@@..@@@@@..@@@..@@@@.@@@@@@@@@.@.@@@.@@@.@@@@......@@@.@..@@.@.@..@@..@...
+@@@.@@@.@@@@..@@.@..@.@@.@@@.@@@@@@@@@.@@.@@@.@@@@@@@@.@..@@@.@@@@.@@@..@@.@@@.@@.@..@@@@@.@.@.@.@@@..@@..@@...@..@@..@@@@@.@@@@@.@@@@..@@
+@@@.@...@@.@@@.@@@@.@@@@@...@.@@.@.@@@@.@@@@.@@@..@@.@.@.@@@@.@@.@@..@@@@..@@@.@@@.@.@@@@.@.@@@.@@@@@@@@.@..@.@@@@.@@.@.@@@.@...@@@@@.@@@@
+@.@@@.@.@.@@@@@@...@@@.@@@@@.@@@@@@@@..@@@@@@@@@@@@@@.@@.@@.@@@.@@@.@..@@@@.@...@@.@@@@@....@@.@.@@.@@@@@@...@@..@@@.@@.@@.@.@@@@..@..@@@.
+.@@.@@...@@@.@@@@.@@@.@@@@@@@@@.@.@.@...@@...@@@@@@@@@@@@@@@@@@@.@..@.@@@..@..@@@..@@@@@.@@@@@@.@@@.@@@.@.@.......@@.@@....@@@@@@@.@@.@@.@
+@.@.@@.@@@@.@@.@@@.@@..@@@@.@@.@.@@....@@@.@@.@@.@@..@@@.@@.@.@@.@.@@@@.@@@.@@@.@@@.@@.@@...@.@@@@@..@.@@@@@.@@.@.@..@@@@@@.@...@.@@@@...@
+.@@@.@@@@@.@@@.@...@.@@@@@.@..@.@@@@@@@@@@@.@@@@@@@@@@.@.@@.@@@@.@@@@@..@@..@@.@@@@@.@@..@@@@@@@@...@@..@.@@@@.@@@.@.@@..@..@@.@@@..@@@@@.
+.@.@@..@@.@.@...@@@.@@@@@@@@@....@.@@.....@@@...@@@@@@.@@.@....@@.@.@.@@@@@.@......@.@@@@@.@@@@.@@@@.@.@@@@@@@.@@.@@@@@@@..@@@@@@@.@@.@.@.
+@@@.@@@.@@.@@@@.@@@@@..@@@.@.@@.@@@@@@@.@@@@@@.@@@@@.@@@@.@@...@@@.@@.@@@@.@@@@...@@@.@.@@@@@@.@@@@@@@@@@@@@.@@@@@@@...@@@@@@.@@@.@@.@@.@@
+.@.@.@.@@@..@@.@@.@.@@@@@.@.@@@@.@..@@..@@@@.@@@@@..@.@.@@@@....@@...@.@@@@@..@@@.@.@@@@@..@.@.@@...@.@.@.@..@.@..@@@@@@@@@.@@@..@@@@@@@@@
+@@@@@@@.@..@@@.@@@@@@.@@.@..@@@@@@@.@@.@.@@@.@@@....@@@@.@.@@@@@@..@.@@@.@.@.@@@@@@@@@@.@.@..@.@@@.@.@.@.@@..@.@.@@@@@@@@@.@@@@@@@.@@.@..@
+@@@@..@...@@@@.@@@...@@@@@@@@@@@@.@@@.@.@@@@@..@@..@@@@.@...@@.@@@@.@..@....@@@@.@@...@..@..@@@@@@@...@.@@.@@@.@@.@.@.@@@@@.@@.@..@.@.@..@
+..@.@.@@@..@..@@@@@@@@@.@@.@@@@@@@@@..@@@@@@@.@@@.......@.@.@@@.@@@@@@@@@@.@@..@@.@.@@.@.@.@@..@@.@@.@@@..@@.@@@@.@@@.@@@@@@@.....@...@.@@
+@..@@..@..@@@.@@..@@@@@@.@@@@..@@@@.@@...@@@.@@@..@@@..@.@.@.@@@@@@@..@..@@@@@@@@@@@.@@@@....@@@..@.@@.@.@@@@.@@@@....@@.@.@@..@.@.@@@@.@@
+.@.@..@..@@@@@@..@@@@@@@.@@@@@@@.@..@.@@@.@.@@.@..@@@@@.@.@@@@@@.....@.@@..@@@@.@.@@@@@@@@@@.@@@..@@@@@.@...@@@@@@@.@.@...@@@@@@@@.@@.@..@
+@@@@.@@@@@.@@@.@.....@..@@..@@@@@@@@.@@......@...@@.@..@@@@.@.@@.@.@@@@.@@@...@@@.@@..@@...@@..@..@@@@.@@@@@@@@.@@@...@@@@@@@@.@..@@@..@@@
+@.@..@.@.@@@.@..@@.@@@..@@@.@@....@.@@@@@..@.@.@....@@@.@@@..@..@@@@@@..@.@.@..@@.@..@@@.@@@@@@@@@@...@@@@@.@@.@@.@@@@@@@@@@.@..@@@@@@@..@
+@@.@@.@@@.@@@.@@.@..@@@..@@.@@@@.@.@.@@@@@@.@@@@@@@@@......@.@@@.@.@@.@@@@.@@@....@@@.@@.@@..@@@..@.@@@@@@.@@@..@@@@@@@..@..@@@@..@@.@.@.@
+.@@..@..@.@@@.@@@@@.@...@@@@@@@@.@...@@.@@@.@.@@@@.@@@@@.@@@@@@....@.@@@@@@@@@@@@..@@@@.@@@.@@.@.@@...@@.@.@...@@.@...@@@..@.@@.@.@@.@@@@@
+@.@@.@@@@@@@@@@@@@@@@.@@.@@.@.@@..@@.@.@.@.@@@..@@@@@.@@@@..@@.@@@@@@@@@.@@@.@@@@@.@@@@@@.@@@@@@@.@@@@.@@@@@@@@..@@@@..@.@..@.@@.@@@@....@
+@@.@.@.@@@@..@@@@@....@@@@@@@.@@@@.@@.@@@.@.@@.@@@..@@.@@@@.@..@.@@@@..@@@.@..@@@@@@..@.@@...@.@@.@.@.@@@@.@@.@@@.@....@...@.@@..@...@@.@@
+@...@.@@.@@@@.@.@.@@.@@@..@@.@@.@@@...@....@@@.@@.@@.@.@@@@..@@@.@.@@@...@@@@@.@.@@.@..@@@...@@.@@.@@.@@@@.@..@@@.@.@.@@@@@@@@@.@@@@.@@@@.
+@@@@@@.@@.@@@..@.@@@@@@..@@@.@@@.@@....@..@.@@.@@@@@@@@@@@@@@...@@@.@.@@@.@..@@.@..@@@@.@@@..@@@@..@.@@@@@..@.@@@@@@.@..@@@...@@@@@@.@@@@.
+.@.@@@.@@.@@@@@.@@@@@@.@@@@@..@@.@.@@@..@..@@..@..@.@..@@..@..@@@.@@..@@@@.@@.....@@@@.@.@.@@.@@.@@@@.@@@@....@@.@@.@..@@.@.@.@.@@@@.@@@@.
+.@@.@@@.@@@@@..@@@.@..@@.@@@@@....@@@@@@.@@@@@@@@@@.@@....@.@.@.@@@.@...@.@@.@@@@@@@.@@@@.@@@@@@@.@@.@@@.@..@@@@@.@.@..@.@..@@.@.@@.@@.@@.
+....@.@@..@.@@..@@.@.@..@.@.@@.@@..@@..@@@..@..@.@.@@.@@@@..@.@@@@@....@@..@@.@.@@..@@....@@.@@..@..@......@@@..@@@@...@@@@@.@@@@@@@@@@@@.
+@@@.@@@@.@@@.@@@@@@@.@.@@@..@@.@.@@@.@@.@@@...@@@@@@@..@.@@..@@.@...@@.@..@@@..@@.@@@..@@@@@@@@.@@@@@@..@@@@@.@@@@@@@@@@@....@@@@@@@@@@@@@
+@..@@@@.@.@.@@@@@@.@.@@@.@@.@.@@@@@..@@.@@.@@@..@@@.@@@..@..@@..@...@...@@@.@.@..@..@@@..@@.@@@.@@@@@@@@@@.@@@@..@@..@..@.@@@@@@@.@@..@.@@
+@@.@.@.@.@.@@@@.....@@.@@@@@@@@@..@.....@..@.@@.@.@.@.@.@@...@@@@@@@@...@....@.@@.@@@@.@@@.@@@@.@@@.@@@@@@@@...@@.@.@@@@@@@@@.@@@@@@.@.@@@
+..@@@.@@@@.@.@@@.@@@.@@@.@@.@..@@@.@@@.@@..@..@@@@@.@@.@@@.@@@@@@@.@@@.@@@@@.@.@@@@@.@@.@.@@@.@.@@@@.@@@@.@@@@@...@@@@@@@.....@@@..@@.@@.@
+.@@...@.@@@@.@@@@..@@@.@..@@@@@...@@.@@@.@.@@.@@@.@@@@@@.@.@@...@@@....@@.@@@@@@.@@@@.@@@..@@@@@.@@.@@.@..@@@@.@@@...@@..@@@@@@.@@@@@.@@@@
+@@@@@@@@@.@.@.@.@......@...@@@@..@..@@..@.@@@.@@@@.@.@@@..@@@...@@@@@...@..@@.@@.@@@@@@.@@..@@.@@.@@@.@.@@.@..@.@.@@.@...@@@@.@@@@@@@@@@@@
+@@.@@@.@@@@@.@@@...@.@@..@@@@@.@..@.@@..@@.@@.@@@.@@@@..@.@.@@@@@.@@.@@@@.@@@@.@.@@@@.@.@@@...@@@@.@.@@.@..@@@@@..@@@.@@@..@@@.@@.@@..@.@@
+.@.@.@.@@@..@.@@@.@@.@@..@@@...@.@...@.@@..@..@.@@@.@@@.@@@@@@.@@@@@@@.@.@.@@.@@@.@@..@@...@@@@@@.@@@@.@..@@@...@@.@@@@@@..@@.@@@@.@@@@...
+@@.@@@@@@@.@@@.@@.@@@...@.@@.@.@@@@@@@@@@.@...@@.@.@@@@@@@@.@@@@@.@.@@@@@@...@@......@@@..@@@@@@.@@@@@@@@@@.@...@.@@@@...@@@@.@@.@@@.@.@@@
+@@@.@.@@.@@@@@@..@@@@@@.@...@....@@.@@@@@@@@@.@@@@@@@@..@..@@@@@@.@@@@@..@.@@.@.@@@.@@@@@@.@...@@..@..@@@..@@@.@....@@@@.@.@.@@@@@@@@.@@@@
+@@@.@@@@@@.@@.@@..@@.@.@.@@@@@.@.@@@@.@@.@.@@@@@.@..@@@.@@@@@@@@.@@..@@@.@@@@@@@@.@@...@.@@@@@@@@@@@@@@@@.@@.@.@@@.@...@@@...@..@.@.@@@@.@
+@.@...@@@.@@@@..@@..@@..@.@@@@..@.@.....@@..@.@@@@.@.@@@@@@@.@@.@.@@@...@.@@@@@.@@@..@@.@@@@@..@@@.@.@@.@@.@@@@@@@@@@@..@.@.@@.@@@.@.@@@.@
+@@@@@@@..@@.@@.@..@@@...@.@.@@@@..@@@@@@.@..@.@.@@@@@..@@@@..@@@.@@@@@@.@@@@.@.@@@..@@@.@@.@@.@@@@@.@.@@.@.@@@@@.@@@@@@..@@@@@@@..@@@.@@@.
+...@@@@@.@@@..@@..@@@@.@.@@@.....@@@@@@.@@@.@@.@@@@.@@...@@@.@@...@.@@@.@@@@@...@.@@@..@.@@.@@@@@@@@@....@.@@@.@@@.@@@@@@..@...@@@.@..@@.@
+@..@@@.@@@@.@.@@@@.@.@@@...@@@@@..@@..@@..@@@.@@.@@@@.@@..@@@@@@@@@@@@@.@.@@@.@@..@@...@@@@@.@@.@@.@@@@@@@@@..@@@.@@.@@.@..@@@@@@.@@@@.@@@
+@@@@@..@@..@@..@...@@@.@..@@@@@.@@....@@@@@@.@.@@@@@@@.@.@..@..@@@@@@@@.@@@@.....@@@@.@@@@@@@@@.@.....@@@@@@..@.@@@@@@@@@@.@@@@@@......@@@
+@.@.@@@....@.@@@@@.@...@.@.@@@@.@@@..@@..@..@@@@@@@@@@@@@@.@.@@.@@@@.@@@@..@@@@.@@@.@@@@..@@@@..@@@..@@@...@..@.@@@@@@@@@@..@@@@@@@@..@@@.
+@@....@@@.@@..@.@@.@..@@@.@.@..@@@.@@.@@.@@@@@@@@@@@@@.@@@.@.@.@@@@....@@.@@@.@@...@.@@@@@..@...@....@@@@@@@.@@..@@...@.@@.@@@.@.@@@.@.@.@
+..@@@.@.@@@@.@.@@....@@...@@.@@@.@.@@.@.@@@@.@.@...@@@@@.@@.@@@@@.@@@@@@..@@.@@@@@@.@..@.@@.@@.@..@@@@@@@@@.@..@.@@.@@..@@@@@...@@@@@@.@.@
+@@.@.@.@@.@@@.@@.@@@@@@.@.@..@.@@@.@@.@..@@@..@@@@@@@.@..@@@@..@@@.@@@.@@.@@@..@....@@@@@@@@@.@@@@@..@.@@@.@..@@@@@...@@@@.@..@.@.@.@...@@
+..@@@@.@@@.@.@@..@.@@@@@.@@.@@@@.@@.@.@.@@@.@@.@..@@@@....@@.@@.@@.@.@.@@@@@...@@.@@@@@@@@@@@@@@@.@.@@@.@@.@..@..@@@@..@.@@..@@.@.@@..@@@@
+@.@@@@@@.@@.@.@...@..@@..@@...@..@@@.@@@@@.@@@.@....@@@@..@@.@@@@@..@@..@@.@@@...@@.@@@@.@@.@.@.@@@@@@@@@@@.@@@@.@@@@.@..@.@@@@.@@.@.@@@@@
+@@@@@.@.@.@@@@@@@@@@@@.@...@@@@@@@@@.@.@.@@@@@@.@.@...@@.@..@.@@@@@.@@.@@@@@.@@@.@@.@@@@@..@@@.@...@@@@..@@.@@.@@@@@@@@@@@@..@..@@.@@@@.@@
+@@@@@.@@.@.@@@...@@.@@@@@@..@@@..@@@.@@.@@@.@@@@@.@@@@@...@..@@@@@@@@@@..@@@@.@@...@..@@@..@@@@@@@.@@@.@@..@.@@@@@@@@@..@@@@.@@.@@@@.@@.@.
+@@@@@@@@@@@@@.@@@@@.@@@@@@@@@..@@@@@.@@.@@@@@@.@@@@@.@@.@.@.@@@@@.@@@@.@.@@.@@...@.@@@@.@@@@@.@@@@@.@@@@..@@@@@@@@@@@@@@.@..@...@.@@@@.@.@
+@...@@@.@..@@@@.@@@@@...@@..@@..@@@@.@.@@..@@@@@@.@@.@@@.@..@@..@@@.@@.@@@@@.@..@.@@.............@@@.@.@@@..@@@@@@@@.@@...@.@@@.@.@@@@@@@.
+.@@..@@@..@@.@..@@@@.@@.@...@..@@@@@@@.@@@@.@@@@@.@....@@@@@.@.@..@@.@.@@@..@...@.@@@@@@@.@@@.@..@@.@.@..@.@@..@@.@@@@@.@.@@.@@@@.@.@@@@@.
+..@@@@@@.@.@.@.@@.@..@@@.@..@@@.@@@@..@@@@....@@@.@.@@@@@..@.@@@.@.@.@....@@.@...@.@@@@@@.@@@.@.@.@@@.@.@.@@@.@.@@@..@@@@@@@@..@@.....@@@@
+.@@.@.@...@@@@@@@...@@@@@@@.@..@@.@@@@.@@@.@@@@...@.@@@@@@@@@...@@@@.@.@@..@@.@@@@@@.....@@@....@.@.@@@@.@@...@...@@@@@.@@.@@@@@.@.@@..@..
+@@.@@@@@.@...@@.@@.@@..@.@@@@...@.@.@@.@@@@.@@.@....@@@.@@@@..@.@@..@@.@.@@.@.@@@@.@@..@@.@@@@@@@@@.@.@.@@.@@...@.@.@..@@@@@.@.@@..@@@.@.@
+.@..@@...@.@@@@....@.@@@@@@@.@.@@@.@.@@.@@.@..@@@@@@.@@.@@.@.@.@@@@@@@@@..@@@@@@.@.@@.@@@@@.@@.@.@.@@@@@@@..@...@@.@@..@..@@@..@@@@@@@.@@.
+.@...@@@@.@@..@...@..@.@@@@@@@@.@@@...@@.@@@@@@@.@@.@.@.@@@@@@@@@.@.@@@..@@.@.@..@.@@@@@.@@@@.@@@.@.@.@@@...@.@..@..@....@@.@@@.@...@.@..@
+@...@@..@.@.@@@@..@.@.@@@..@@@.@@@@@..@@.@@@.@.@@..@@@@@.@@@@@@..@@...@@.@@@.@@@@@.@@..@@.@@@@@@@@@@.@@.@@@@@.@.@..@.@@@@.....@@@@@@@.@@@@
+@.@@@.@..@@@@.@@.@@@@@@.@.@@@@@@.@..@@.@@@@@@@.@..@.@.@@@@@@..@@@.@.@..@@.@@@@.@@@@@@@@@@@...@....@..@..@.@....@@.@@@@@@@.@@@.@@@@@@.@.@@@
+@.@..@@..@@..@....@@.@.@@.@..@@..@@@..@@@.@@.@@@@.@.@@.@.@@@@@@@@@@@.@@@@@@.@@@@@@@..@@.@.@@@@@@@@.....@.@@@.@@@@.@.@.@@..@@@@@.@.@..@@.@@
+@@@@@@@.@@@@..@.@@@@@@.@.@.@@@@@.@.@@@@.@@@.@@@@@@@@@@@@@@.@@.@@@@@@@@@...@.@..@@@......@@@.@@@.@@@.@@..@@.@@@@..@.@.@@@.@@.@@..@@@@.@@.@.
+.....@@@@...@@..@@.@@.@@@@.@@.@@@@.@@.@@@@@@@..@..@@@@@.@@@@@@@..@@.@@..@.@@@.@..@.@.@@@@@@@...@@@..@@@.@.@.@@..@.@.@@@.@....@.@@@@@...@@@
+@..@@@@@.@.@.@@@@@.@@@@@.@@@.@@....@@.@@@@@@@.@.@@@...@@@@@@.@.@@@@.@@@.@@@..@@@@@.@@@@@.@@.@@@@@@@@@@@@@@@@.@@.@@@@.@@@...@@@@@.@@..@.@@.
+.@@.@@.@.@@@@.@.@.@@@@@@@@@@@.@.......@@.@@..@@@@..@@.@@.@@.@@@.@@.@@.@@.@.@@.@..@@@.@.@@.@@@.@@.@@@@.@.@@@@@@..@@@@.@.@..@.@...@@@@@...@.
+@@@.@.@@@@@@@@@@.@@@...@@@.@@@@...@@@@.@@@.@.@.@@@@@@@@@@....@.@..@.@.@@@@@..@@..@@.@@@@@@..@@.@.@@.@..@@@.@@@@.@@@@.@@@@@@@@@...@@.@@@.@.
+@@@@.@@@@@@@.@@@@@@@@@@..@.@@..@@@..@.@@@@.@.@@@@@@..@.@@...@.@@@.@@..@.@..@@...@....@@.@.@@@@@..@@.@@@...@.@@@@@@@@..@@@@@@@@@...@..@..@@
+@@@@.@.@@.@@@@.@@@@@.@@.@@@.@@@.@@@..@@..@@@.@@@.@@.@.@@@@.@@.@@.@..@@@@@.@@@@@@@@@@...@@@.@@.@...@.@@@....@@@@...@..@..@@....@.@.@@...@.@
+@@..@.@@@@..@@@..@@.@@.@.@@@@...@@.@@.@.@@@.@@@....@@@@@.@@@@.@.@@..@@..@.@..@@@@@..@@.@@.@@@@@@@...@@.@@@..@.@@@.@.@@@@.@@..@@@@.@@@.@.@.
+@@.@....@@@@@@@@@@@@@@...@@@.@@@@@@@@.@@.@@.@.@....@@.@.@@@@..@@@@..@@@@@@.@.@@@.@@@..@@@@@@@..@@@@.@@.@@.@...@.@@..@@@..@@@.@.@@@@..@@@@.
+@....@.@@@.@.@@.@.@.@@@@....@@@...@@..@.@...@@@@..@@@.@@@@.@@@@@@.@.@@@@@.@@..@@@@@.@@@@...@@@@..@@@@@@@@@.@@@@@@@..@@.@@@@.@@@...@@@@@@.@
+@@@@@@@@@@@..@@.@@@@.@@.@@.@@@.@@@.@@@...@@@@.@@..@@@@@@@.@@...@@@@@@.@@@@....@.@@@@@@.@@.@@@@.@.@..@@@@@..@@.@@...@@@@@@@.@.@@..@.@@.@@@.
+@@.@@.@@@.@.@@.@..@.@.@@@@@@.@@@.@.@@@.@@@.@@@@..@.....@@@@.@.@@.@..@...@..@@.@@.@@.@@@@@.@..@.@@@@@.@@@..@.@@@.@@@@@@..@.@@@.@@.@@@@.@@@.
+@@@@@@@.@@.@@@@.@@@@.@@@@@@@.@@...@@@@.@.@@..@@@@@.@.@@..@@@.@@@..@@@...@@@@..@@@@@...@@@@@.@@@..@.@@@@@@@@.@@.@@@@@.@@@.@@@.@@@...@@.@@.@
+@@@..@.@@@.@...@..@@..@@@@@@.@@@@@@@@@.@.@@.@@....@.@@..@..@@@@@@@@@@.@@@@@@@@@.@@@.@..@.@@.@@@.@.@....@@....@@@@.@@.@@.@.@@.@@....@..@@@.
+@@@@@@@@@@@@@@.@@@@.@...@.@..@@@.@@@..@@..@@@@@@@@.@..@.@@@..@@..@@..@@.@.@@@.@@@@@@@...@..@@.@@@.@@@@@@.@@@@.@.@@@@..@@@@.@@@..@@.@@@@..@
+@.@@@@@@@.@@@@..@.@@@........@@@@@.@@@@@@@@@@.@@@.@..@@@.@@..@@@@@.@..@.@.@..@@....@.@@.@.@..@...@@@.@@@.@.@.@..@.@@@@@@.@@@..@@.@.@@.@.@@
+@@@@@@@@@@.@@..@.@@@@@@@@@@.@.@@@.@@....@@@@@@..@@@@@@..@@@..@.@@..@@.@..@.@@.@@.@@..@@@@@@@@@.@@@@.@@@@..@.@@@.@.@.@@.@@@@@@@@@@@.@.@@.@.
+@@@@@@@@.@@@@@@@@@.@@@@@@@@@.@..@@@@@@@@@.@@@.@@@@@.@@@@.@@.@@..@.@@@@@@.@@.@@@.@@@@@.@..@@@@..@@@..@@@@@@@@@.@@.@@@.@.@..@@..@@@@@.@.@..@
+@@@@..@.@@..@.@@.@@.@.@@@@@@@@@@@@@@@@@@@@@@.@@@@@.@@@@@@.@@.@@@@..@.@@@@@@.@@..@@..@..@@@@@@.@.@@@.@@@@@@.@..@@@@.@@@@@@@@@@@@@@@@@@.@@@@
+@..@.@@@@@@..@@..@@.@@@@@...@@.@@...@@@..@@.@@..@@@@@@@@@@.@@@@@@.@@@.@@.@@@.@@@@..@.@@@.@.@.@@.@.@@@..@@@@@@@..@@@.@@@@@..@@@@@@@@.@.....
+..@...@@.@...@...@@.@@...@@.@@@@@.@@@@.@.@@.@...@@.@@..@@@@@@.@@@@.@@..@.@@@.@@@@.@@@@@@.@.@..@@@..@@.@.@.@@@@@.@@@@@@@.@.@@@@@@@@.@@.@..@
+..@@@@@@@@@@@@@.@@.@@@...@@@@@@@@@@@@@@@@@@.@.@@@@@@@@@@@@@..@@@@@..@@.@@..@....@.@.@..@.@@@@@.@..@.@@@@@@@@..@@@@@@.@@....@@@..@@@@@.@@@@
+.@@@@..@@@@@@....@@@@@@@@.@@..@.@.@.@@.@@.@@@.@@@..@..@@@.@.@@@@.@..@@.@.@@@@.@.@.@.@.@@.@@.@@@@@@.@@@..@.@@..@@@.@...@.@.@@@@@@@@@.@@.@@@
+@@@...@.@@@@@@.@@@@..@.@@@@@@@@@@@.@@@@.@.@@.@.@@@@@@.@.@@.@@...@@..@.@@@@@@@@@@@.@.@@@.@.@..@@@..@@@.@@@@.@@.@..@.@@@.@.@....@..@.@@@@@@.
+.@.@@@@@@.@@@@@@@@@.@@@@..@.@.@...@.@@@@@@.@@.@@@@@@@..@@@@@@..@.@@@.@.@.@..@@...@@@@@@@@.@.@@@.@.@@@.@..@@@.@@..@.@..@...@.@@@@@@@..@@@@.
+..@.@..@@@.@@@@@..@.@@@@@@.@.@@@@@@....@.@@.@..@@..@@@@@@..@@@.@.@@@@.@@.......@@@@@...@..@@...@.@@..@.@.@.@@@.@@.@@@...@@@@.@.@.@.@@@@.@.
+.@@.@@.@...@..@...@..@.@@.@@.@@@@@@.@@.@.@..@@@@@@@@@@@@@@..@@@@@@.@@@@...@@@@..@.@@@@@.@@@@.@@@@.@@....@@.@..@.@@..@@....@@.@@@@@@@.@..@@
+@.@@..@@@.@.@@@@@.@@@@@..@@@.@@@@@@.@.@.@@.@@@......@@@.@..@@@.@@@@@@@@@@@.@.@@@@@@@.@@.@.@...@@...@..@@@@@.@..@@@@@@.@.@@@@@.@....@..@.@.
+@@.@@@@.@@@.@@..@@@@@.@..@@.@@@@@@.@.@..@.@@@@@.@@.@.@@..@@@..@..@@.@@@..@@@.@@@..@@..@@......@@@.@@.@@.@@@@@@@..@@@.@@@@@@@@.@.@@@@.@@@@@
+.@.@@@@@@...@.@..@@...@@@@@.@..@.@..@@@@@@@@@@.@@@@@@.@@@@.@@.@@.@....@@.@@@@@.@@..@@..@@@.@@@.@@@..@.@.@@@@@@.@@@..@@@@.@.@@.@.@@.@@@.@.@
+@@@@@...@@..@.@@@..@@.@@@@@@.@@@@@@.@@@..@@@.@@@@.@@@.@.@.@@@@@@.@@@..@@@.@@.@@@@....@.@.@@@@@@@.@.@@@@@.@@@@@@@....@@@....@..@@@..@@.@@@@
+@@.@@@@@@.@..@.@.@.@@...@..@@@@@@@.@@.@@@@..@@...@@..@....@@@..@.@@....@@@@@.@@@@@.@.@@.@..@..@@@@@@@@@@@@..@@@...@..@..@@@..@@.@@@@@@@.@.
+.@@..@@@.@.@.@@@@.@...@@@@.@@@@@@.@.@@@@@@@@..@.@@@@@.@@.@@@.@@...@@...@@@.@@@@@@.@@@@@.@..@@@@@@@@@..@.@@..@.@.@..@@..@@@@...@@@..@@@@@@@
+@...@...@@@@.@@@@.@.@@@@@.@@.@@..@@@.@.@..@@.@..@@@@@@@..@@..@@@@@@.@..@..@@@@@@@.@.@.@..@@@@@..@@@.@@@..@.@.@@@@@@@@@@.@@.@..@@@@@@@@@...
+...@@.@@@@.@@.....@@@.@@@@@@@..@...@....@...@@.@@@@@@.@..@.@@.@..@.@......@@@@...@@@.@..@@@@.@@..@.@@@.@@....@@..@...@.@@..@@@..@@@@@@@.@.
+@@.@@@@@@@@@@.@@..@..@@@@.@@@@@@.@..@@@.@@.@..@@@.@@@@..@.@@.@.@@@@@@@..@.@@@@@.@@.@.@.@@@.@.@..@@@..@@.@@@@@@@@@@@@..@@.@.@@..@..@@.@@.@.
+@@@.@@@.@@@@@.@.@@@@@@..@@@@@@@...@..@@@@...@.@.@.@@.@..@@@.@@@..@@@@..@@.@@@@@@...@@.@.@@@@@...@@...@@@..@@@.@@@@@@.@@@@@@...@@@@@@.@.@.@
+...@...@@@@@..@@.@.@.@@....@@@@@.@@@@@@..@@@@@.@.@.@@@...@..@@.@..@@@@@@..@@@.@@.@@.@.@@..@@@@@@.@..@@..@.@@.@..@@@@..@@@@@@@@@@@.@.@@@@.@
+@@.@@@@@@.@@.@@@.@@@....@.@.@@@.@@@.@.@@@@@.@@..@.@@@@.@@@.@.@@.@..@....@@@@@@.@@.@@@@@@@.@@@.@@@@@.@.@@@.@@@.@@@@@..@@.@@@..@@@.@@@@.@...
+@@.@@@.@@..@..@.@@.@.@...@.@@.@@@@@@@@@@.@.@@@.@.@..@@@....@@@@@@..@@..@@.@@.@@@@@@.@@@@@@@@.@@..@.@@@..@.@@@@.@@.@...@@@.@@@@@.@.@@@@.@@@
+...@@@..@@@..@@.@@.@@@@@@..@@@@@@.@...@@@@.@@@@@@@@.@.@@@@@@@@@.@@@.@@@..@@@.@.@@@@@.@@.@@@@.@@@@@@@@.@.@.@@@...@.......@.@@.@...@@@@@@...
+@@@@@@@...@.@@..@....@@@@@..@@@@.@.@@@@@..@@@@..@.@.@@@.@..@.@...@@.@..@@@.@@@.@@@.@@@@@.@.@@@@.@.@..@@.@@..@..@.@@@@@@.@...@.@@@..@@@.@@@
+@.@.@@..@@.@@@@@@@@@@@..@@@.@@@..@..@@@@@@@@..@.@@@@@@@@@@.@@.@.@@..@@@.@....@@@.@..@.@@@@@.@.@@@@.@@@@@@@@.@@.@.@@.@.@.@.@@..@@@@@@@.@@..
+.@@@@.@.@.@@@..@@@@...@@..@@.@@@@@...@@@@..@.@@@@@..@@.@@...@@@@..@@.@@@@@@.@.@.@@@@@@@@.@..@@@.@@@@.@.@.@@@@@@.@.@@@.@@@.@@@.@@.@@@@@@.@.
+..@...@@@..@@@..@@@@@@@@..@.@@@@@..@@....@.@.@@@@@@@@.@@@..@....@@@@@@@@.@@.@..@.@@@..@.@@@.@@@@.@@@....@@@.@@.@.@@@@@.@.@@..@@@@@@..@@@@@
+@@@@@@@@@..@@@..@@@@.@.@@@@@@@@@@@@@@@.@@.@..@.@..@@.@...@@@.@@@@.@..@@.@@@@.@@@@..@..@@.@@@@@@@@..@@@@@.@@..@@..@.@@@@.@@@@..@@.@..@@.@@@
+@@.@@@@@.@@@@@@@@@.@.@.@.@.@@@@.@@@..@@.@@@@@@.@.@@@@@@@@@@@@@.@@@@.@@@@@.@@@.@@@.@.@@...@@@@.@@@@@.@.@@.@@@@.@@.@..@@@@...@@..@@@@@...@@@
+@...@.@.@@@@.@.@..@@@@@.@..@@@.@..@.@.@@.@@@@@@@.@@.@@@@.@@@@@@@@.@@.@.@.@@@@.@@@..@@@@@@.@.@@.@.@@@@.@@.@@@.......@.@@@@@@.@@@.@.@..@@@@.
+@@..@@.@@.@@@@..@..@@@@.@@..@@@.@.@.@@@@@@@@....@@.@.@@.@@.@@@.@@.@@@@@.@.@@@.@@@@@.@.@@@@@@@.@@@@@@@.@@@.@.@@.@.@@@.@@@.@.@@@@@@.@.....@@
+@@@.@@@.@.@.@..@@@.@@@@@....@@.@@@..@@@@@@@.@@@@..@@@@.@.@.@.@.@@@@..@@.@@...@@...@.@.@.@....@@..@@@@@@@@@@@@@.@@.@@....@@@.@@@@.@...@..@@
+..@@@@....@.@@.@.@.@@@@..@....@@@@@@@@@@.@@.@@@@@..@.@@@...@@@@@@..@..@@@@@@.@@@..@@@@@@.@.@@..@@@@@@@@@@.@@@.@@@@.@@@.@...@...@...@.@@@@.
+@..@.@.@.@@.@@.@.@.@@...@@...@...@@@..@@@@@..@@@@@@@@.@@.@@@@.@..@@@..@..@@@@@..@..@@@..@@@.@..@.@@.@@@...@@@..@@.@..@..@@.@@@@@@@@@@@@.@@
+@..@.@@.@@...@@@@@@@@.@..@@@..@@.@@@..@@@@@.@@@@@.@.@@@@@@@@@..@@.@..@@..@@.@@....@.@.@@.@.@@@@@...@.@..@@@.@...@.@.@@@@.@@.@@.@.@@@@@@.@@
+.@.@..@...@@.@@...@..@@.@.@@@.@.@.@@.@@@.@.@@@@.@@...@@..@..@@@.@@@.@@@@@.@.@.@@@.@.@.@@@@@@..@@...@.@.@@.@@@.@@@@@..@.@.@.@@@.@.@.@@.@@@@
+@@...@.@.@..@@@@..@..@@...@.@@@.....@.@@.@@@@@@@@@@@@.@@.@.@@@@@@@..@.@@@@@.@@.@@@@@.@@@.@@.@@@.@@@@@@@.@@@.@@@@..@.@@.@@@.@@@@@@@@@@@@.@@
+@..@..@@.@@@@@.@@..@.@@.@@..@@.@@@@@.@..@@@@@@@.@@...@@@@@@.@.@.@@@...@.@.@..@@@..@@@@@.@...@.@.@.....@.@@.@..@@.@@@.@@..@@.@@.@@..@..@...
+.@@.@.@@@@@@@@@@.@..@@@.@@@@....@@.@@@@@@@.@@.@.@@@@@@@.@..@.@@@@@@@...@@@...@@@...@@@@@@@@...@@@@.....@@@@@@@..@...@@.@@@@@@@@@@@..@@.@@@
+..@@@@..@@@@...@@..@@@@@@@.@..@@@@@@@@@@@.....@@...@.@.@@@@.......@.@@@.@.@@@@@@@@@@.@@@@@@@@.@@.@..@.@.@@@.@@.@@@@.@.@@@@@@@@.....@@@@@.@
+.....@@@...@@@.@@@@@.@@..@.@@...@...@.@@@@....@@..@@@@@.......@@...@.@@@..@@@@@.@@.@@@@@@@.@@@@@..@@@@..@@@@@@.@.@@@.@@@.@@@@@@..@@.@@@@@.
+.@@.@@@@.@.@@.@@@@@@@..@@.@.@.@@@@.@.@@..@.@..@.@@@..@.@@@@@@@@@.......@@@@@..@.@.@@@@@@@@@@@@@..@@.@.@@@@@.@@.@@@@@@.@...@@.@@@.@.@.@..@@
diff --git a/src/language.c b/src/language.c
index 9d16d75..f124ea0 100644
--- a/src/language.c
+++ b/src/language.c
@@ -4,6 +4,7 @@
#include "language_aoc20251.c"
#include "language_aoc20252.c"
#include "language_aoc20253.c"
+#include "language_aoc20254.c"
#include "language_generic.c"
typedef enum languages {
@@ -12,6 +13,7 @@ typedef enum languages {
Language_AOC20251,
Language_AOC20252,
Language_AOC20253,
+ Language_AOC20254,
Language_Generic
} Language;
@@ -21,6 +23,7 @@ Language language_from_string(String name) {
if (string_eqc(name, "aoc20251")) { return Language_AOC20251; }
if (string_eqc(name, "aoc20252")) { return Language_AOC20252; }
if (string_eqc(name, "aoc20253")) { return Language_AOC20253; }
+ if (string_eqc(name, "aoc20254")) { return Language_AOC20254; }
return Language_Generic;
}
@@ -30,5 +33,6 @@ static MetaParseFunction LANGUAGE_HIGHLIGHERS[] = {
language_aoc20251_rule_main,
language_aoc20252_rule_main,
language_aoc20253_rule_main,
+ language_aoc20254_rule_main,
language_generic_rule_main,
};
commit 9880a3b1995fbab750c7f964eea7ad9c7dee1d72
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 17:34:02 2025 +0100
Clean up
diff --git a/src/examples/aoc20253/aoc20253.meta b/src/examples/aoc20253/aoc20253.meta
index 78591fb..52729d9 100644
--- a/src/examples/aoc20253/aoc20253.meta
+++ b/src/examples/aoc20253/aoc20253.meta
@@ -1,14 +1,16 @@
#id = aoc20253
-main = bank*:xs !. -> {
+main = bank12*:xs !. -> {
"#include <stdio.h>\n"
"int main(void) {\n" >
- "printf(\"Part 1: %ld\\n\", 0 " xs ");\n"
+ "printf(\"Part 1: %ld\\n\", (long int)(0" xs "));\n"
"return 0;\n"
< "}\n"
};
-bank = joltage12:x number* '\n' -> { " + " x };
+bank2 = joltage2:x number* '\n' -> { " + " x };
+
+bank12 = joltage12:x number* '\n' -> { " + " x };
joltage12 =
| nine:x joltage11:y -> { x y }
commit e6b65eb6c161a064f48aa3de7a146b75f6acad05
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 17:32:03 2025 +0100
Clean up
diff --git a/src/examples/aoc20253/aoc20253.meta b/src/examples/aoc20253/aoc20253.meta
index 405c5aa..78591fb 100644
--- a/src/examples/aoc20253/aoc20253.meta
+++ b/src/examples/aoc20253/aoc20253.meta
@@ -8,141 +8,141 @@ main = bank*:xs !. -> {
< "}\n"
};
-bank = number1:x number* '\n' -> { " + " x };
-
-number1 =
- | nine:x number2:y -> { x y }
- | eight:x number2:y -> { x y }
- | seven:x number2:y -> { x y }
- | six:x number2:y -> { x y }
- | five:x number2:y -> { x y }
- | four:x number2:y -> { x y }
- | three:x number2:y -> { x y }
- | two:x number2:y -> { x y }
- | one:x number2:y -> { x y }
+bank = joltage12:x number* '\n' -> { " + " x };
+
+joltage12 =
+ | nine:x joltage11:y -> { x y }
+ | eight:x joltage11:y -> { x y }
+ | seven:x joltage11:y -> { x y }
+ | six:x joltage11:y -> { x y }
+ | five:x joltage11:y -> { x y }
+ | four:x joltage11:y -> { x y }
+ | three:x joltage11:y -> { x y }
+ | two:x joltage11:y -> { x y }
+ | one:x joltage11:y -> { x y }
;
-number2 =
- | nine:x number3:y -> { x y }
- | eight:x number3:y -> { x y }
- | seven:x number3:y -> { x y }
- | six:x number3:y -> { x y }
- | five:x number3:y -> { x y }
- | four:x number3:y -> { x y }
- | three:x number3:y -> { x y }
- | two:x number3:y -> { x y }
- | one:x number3:y -> { x y }
+joltage11 =
+ | nine:x joltage10:y -> { x y }
+ | eight:x joltage10:y -> { x y }
+ | seven:x joltage10:y -> { x y }
+ | six:x joltage10:y -> { x y }
+ | five:x joltage10:y -> { x y }
+ | four:x joltage10:y -> { x y }
+ | three:x joltage10:y -> { x y }
+ | two:x joltage10:y -> { x y }
+ | one:x joltage10:y -> { x y }
;
-number3 =
- | nine:x number4:y -> { x y }
- | eight:x number4:y -> { x y }
- | seven:x number4:y -> { x y }
- | six:x number4:y -> { x y }
- | five:x number4:y -> { x y }
- | four:x number4:y -> { x y }
- | three:x number4:y -> { x y }
- | two:x number4:y -> { x y }
- | one:x number4:y -> { x y }
+joltage10 =
+ | nine:x joltage9:y -> { x y }
+ | eight:x joltage9:y -> { x y }
+ | seven:x joltage9:y -> { x y }
+ | six:x joltage9:y -> { x y }
+ | five:x joltage9:y -> { x y }
+ | four:x joltage9:y -> { x y }
+ | three:x joltage9:y -> { x y }
+ | two:x joltage9:y -> { x y }
+ | one:x joltage9:y -> { x y }
;
-number4 =
- | nine:x number5:y -> { x y }
- | eight:x number5:y -> { x y }
- | seven:x number5:y -> { x y }
- | six:x number5:y -> { x y }
- | five:x number5:y -> { x y }
- | four:x number5:y -> { x y }
- | three:x number5:y -> { x y }
- | two:x number5:y -> { x y }
- | one:x number5:y -> { x y }
+joltage9 =
+ | nine:x joltage8:y -> { x y }
+ | eight:x joltage8:y -> { x y }
+ | seven:x joltage8:y -> { x y }
+ | six:x joltage8:y -> { x y }
+ | five:x joltage8:y -> { x y }
+ | four:x joltage8:y -> { x y }
+ | three:x joltage8:y -> { x y }
+ | two:x joltage8:y -> { x y }
+ | one:x joltage8:y -> { x y }
;
-number5 =
- | nine:x number6:y -> { x y }
- | eight:x number6:y -> { x y }
- | seven:x number6:y -> { x y }
- | six:x number6:y -> { x y }
- | five:x number6:y -> { x y }
- | four:x number6:y -> { x y }
- | three:x number6:y -> { x y }
- | two:x number6:y -> { x y }
- | one:x number6:y -> { x y }
+joltage8 =
+ | nine:x joltage7:y -> { x y }
+ | eight:x joltage7:y -> { x y }
+ | seven:x joltage7:y -> { x y }
+ | six:x joltage7:y -> { x y }
+ | five:x joltage7:y -> { x y }
+ | four:x joltage7:y -> { x y }
+ | three:x joltage7:y -> { x y }
+ | two:x joltage7:y -> { x y }
+ | one:x joltage7:y -> { x y }
;
-number6 =
- | nine:x number7:y -> { x y }
- | eight:x number7:y -> { x y }
- | seven:x number7:y -> { x y }
- | six:x number7:y -> { x y }
- | five:x number7:y -> { x y }
- | four:x number7:y -> { x y }
- | three:x number7:y -> { x y }
- | two:x number7:y -> { x y }
- | one:x number7:y -> { x y }
+joltage7 =
+ | nine:x joltage6:y -> { x y }
+ | eight:x joltage6:y -> { x y }
+ | seven:x joltage6:y -> { x y }
+ | six:x joltage6:y -> { x y }
+ | five:x joltage6:y -> { x y }
+ | four:x joltage6:y -> { x y }
+ | three:x joltage6:y -> { x y }
+ | two:x joltage6:y -> { x y }
+ | one:x joltage6:y -> { x y }
;
-number7 =
- | nine:x number8:y -> { x y }
- | eight:x number8:y -> { x y }
- | seven:x number8:y -> { x y }
- | six:x number8:y -> { x y }
- | five:x number8:y -> { x y }
- | four:x number8:y -> { x y }
- | three:x number8:y -> { x y }
- | two:x number8:y -> { x y }
- | one:x number8:y -> { x y }
+joltage6 =
+ | nine:x joltage5:y -> { x y }
+ | eight:x joltage5:y -> { x y }
+ | seven:x joltage5:y -> { x y }
+ | six:x joltage5:y -> { x y }
+ | five:x joltage5:y -> { x y }
+ | four:x joltage5:y -> { x y }
+ | three:x joltage5:y -> { x y }
+ | two:x joltage5:y -> { x y }
+ | one:x joltage5:y -> { x y }
;
-number8 =
- | nine:x number9:y -> { x y }
- | eight:x number9:y -> { x y }
- | seven:x number9:y -> { x y }
- | six:x number9:y -> { x y }
- | five:x number9:y -> { x y }
- | four:x number9:y -> { x y }
- | three:x number9:y -> { x y }
- | two:x number9:y -> { x y }
- | one:x number9:y -> { x y }
+joltage5 =
+ | nine:x joltage4:y -> { x y }
+ | eight:x joltage4:y -> { x y }
+ | seven:x joltage4:y -> { x y }
+ | six:x joltage4:y -> { x y }
+ | five:x joltage4:y -> { x y }
+ | four:x joltage4:y -> { x y }
+ | three:x joltage4:y -> { x y }
+ | two:x joltage4:y -> { x y }
+ | one:x joltage4:y -> { x y }
;
-number9 =
- | nine:x number10:y -> { x y }
- | eight:x number10:y -> { x y }
- | seven:x number10:y -> { x y }
- | six:x number10:y -> { x y }
- | five:x number10:y -> { x y }
- | four:x number10:y -> { x y }
- | three:x number10:y -> { x y }
- | two:x number10:y -> { x y }
- | one:x number10:y -> { x y }
+joltage4 =
+ | nine:x joltage3:y -> { x y }
+ | eight:x joltage3:y -> { x y }
+ | seven:x joltage3:y -> { x y }
+ | six:x joltage3:y -> { x y }
+ | five:x joltage3:y -> { x y }
+ | four:x joltage3:y -> { x y }
+ | three:x joltage3:y -> { x y }
+ | two:x joltage3:y -> { x y }
+ | one:x joltage3:y -> { x y }
;
-number10 =
- | nine:x number11:y -> { x y }
- | eight:x number11:y -> { x y }
- | seven:x number11:y -> { x y }
- | six:x number11:y -> { x y }
- | five:x number11:y -> { x y }
- | four:x number11:y -> { x y }
- | three:x number11:y -> { x y }
- | two:x number11:y -> { x y }
- | one:x number11:y -> { x y }
+joltage3 =
+ | nine:x joltage2:y -> { x y }
+ | eight:x joltage2:y -> { x y }
+ | seven:x joltage2:y -> { x y }
+ | six:x joltage2:y -> { x y }
+ | five:x joltage2:y -> { x y }
+ | four:x joltage2:y -> { x y }
+ | three:x joltage2:y -> { x y }
+ | two:x joltage2:y -> { x y }
+ | one:x joltage2:y -> { x y }
;
-number11 =
- | nine:x number12:y -> { x y }
- | eight:x number12:y -> { x y }
- | seven:x number12:y -> { x y }
- | six:x number12:y -> { x y }
- | five:x number12:y -> { x y }
- | four:x number12:y -> { x y }
- | three:x number12:y -> { x y }
- | two:x number12:y -> { x y }
- | one:x number12:y -> { x y }
+joltage2 =
+ | nine:x joltage1:y -> { x y }
+ | eight:x joltage1:y -> { x y }
+ | seven:x joltage1:y -> { x y }
+ | six:x joltage1:y -> { x y }
+ | five:x joltage1:y -> { x y }
+ | four:x joltage1:y -> { x y }
+ | three:x joltage1:y -> { x y }
+ | two:x joltage1:y -> { x y }
+ | one:x joltage1:y -> { x y }
;
-number12 =
+joltage1 =
| nine:x -> { x }
| eight:x -> { x }
| seven:x -> { x }
commit fe7bd415aa519c384e2f2aa3275979cb8156d484
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 17:27:50 2025 +0100
Part 2
diff --git a/src/examples/aoc20253/aoc20253.meta b/src/examples/aoc20253/aoc20253.meta
index 292705a..405c5aa 100644
--- a/src/examples/aoc20253/aoc20253.meta
+++ b/src/examples/aoc20253/aoc20253.meta
@@ -3,7 +3,7 @@
main = bank*:xs !. -> {
"#include <stdio.h>\n"
"int main(void) {\n" >
- "printf(\"Part 1: %d\\n\", 0 " xs ");\n"
+ "printf(\"Part 1: %ld\\n\", 0 " xs ");\n"
"return 0;\n"
< "}\n"
};
@@ -23,6 +23,126 @@ number1 =
;
number2 =
+ | nine:x number3:y -> { x y }
+ | eight:x number3:y -> { x y }
+ | seven:x number3:y -> { x y }
+ | six:x number3:y -> { x y }
+ | five:x number3:y -> { x y }
+ | four:x number3:y -> { x y }
+ | three:x number3:y -> { x y }
+ | two:x number3:y -> { x y }
+ | one:x number3:y -> { x y }
+ ;
+
+number3 =
+ | nine:x number4:y -> { x y }
+ | eight:x number4:y -> { x y }
+ | seven:x number4:y -> { x y }
+ | six:x number4:y -> { x y }
+ | five:x number4:y -> { x y }
+ | four:x number4:y -> { x y }
+ | three:x number4:y -> { x y }
+ | two:x number4:y -> { x y }
+ | one:x number4:y -> { x y }
+ ;
+
+number4 =
+ | nine:x number5:y -> { x y }
+ | eight:x number5:y -> { x y }
+ | seven:x number5:y -> { x y }
+ | six:x number5:y -> { x y }
+ | five:x number5:y -> { x y }
+ | four:x number5:y -> { x y }
+ | three:x number5:y -> { x y }
+ | two:x number5:y -> { x y }
+ | one:x number5:y -> { x y }
+ ;
+
+number5 =
+ | nine:x number6:y -> { x y }
+ | eight:x number6:y -> { x y }
+ | seven:x number6:y -> { x y }
+ | six:x number6:y -> { x y }
+ | five:x number6:y -> { x y }
+ | four:x number6:y -> { x y }
+ | three:x number6:y -> { x y }
+ | two:x number6:y -> { x y }
+ | one:x number6:y -> { x y }
+ ;
+
+number6 =
+ | nine:x number7:y -> { x y }
+ | eight:x number7:y -> { x y }
+ | seven:x number7:y -> { x y }
+ | six:x number7:y -> { x y }
+ | five:x number7:y -> { x y }
+ | four:x number7:y -> { x y }
+ | three:x number7:y -> { x y }
+ | two:x number7:y -> { x y }
+ | one:x number7:y -> { x y }
+ ;
+
+number7 =
+ | nine:x number8:y -> { x y }
+ | eight:x number8:y -> { x y }
+ | seven:x number8:y -> { x y }
+ | six:x number8:y -> { x y }
+ | five:x number8:y -> { x y }
+ | four:x number8:y -> { x y }
+ | three:x number8:y -> { x y }
+ | two:x number8:y -> { x y }
+ | one:x number8:y -> { x y }
+ ;
+
+number8 =
+ | nine:x number9:y -> { x y }
+ | eight:x number9:y -> { x y }
+ | seven:x number9:y -> { x y }
+ | six:x number9:y -> { x y }
+ | five:x number9:y -> { x y }
+ | four:x number9:y -> { x y }
+ | three:x number9:y -> { x y }
+ | two:x number9:y -> { x y }
+ | one:x number9:y -> { x y }
+ ;
+
+number9 =
+ | nine:x number10:y -> { x y }
+ | eight:x number10:y -> { x y }
+ | seven:x number10:y -> { x y }
+ | six:x number10:y -> { x y }
+ | five:x number10:y -> { x y }
+ | four:x number10:y -> { x y }
+ | three:x number10:y -> { x y }
+ | two:x number10:y -> { x y }
+ | one:x number10:y -> { x y }
+ ;
+
+number10 =
+ | nine:x number11:y -> { x y }
+ | eight:x number11:y -> { x y }
+ | seven:x number11:y -> { x y }
+ | six:x number11:y -> { x y }
+ | five:x number11:y -> { x y }
+ | four:x number11:y -> { x y }
+ | three:x number11:y -> { x y }
+ | two:x number11:y -> { x y }
+ | one:x number11:y -> { x y }
+ ;
+
+number11 =
+ | nine:x number12:y -> { x y }
+ | eight:x number12:y -> { x y }
+ | seven:x number12:y -> { x y }
+ | six:x number12:y -> { x y }
+ | five:x number12:y -> { x y }
+ | four:x number12:y -> { x y }
+ | three:x number12:y -> { x y }
+ | two:x number12:y -> { x y }
+ | one:x number12:y -> { x y }
+ ;
+
+number12 =
| nine:x -> { x }
| eight:x -> { x }
| seven:x -> { x }
commit ddbba44513c03a8819824b5a3d0edd032508ceb0
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 17:23:02 2025 +0100
Clean up
diff --git a/src/examples/aoc20253/aoc20253.meta b/src/examples/aoc20253/aoc20253.meta
index d46aecf..292705a 100644
--- a/src/examples/aoc20253/aoc20253.meta
+++ b/src/examples/aoc20253/aoc20253.meta
@@ -2,26 +2,27 @@
main = bank*:xs !. -> {
"#include <stdio.h>\n"
- "int main(void) { printf(\"Part 1: %d\\n\", 0 " xs "); return 0; }\n"
+ "int main(void) {\n" >
+ "printf(\"Part 1: %d\\n\", 0 " xs ");\n"
+ "return 0;\n"
+ < "}\n"
};
-bank = highest:x number* '\n' -> {
- " + " x
-};
+bank = number1:x number* '\n' -> { " + " x };
-highest =
- | nine:x low:y -> { x y }
- | eight:x low:y -> { x y }
- | seven:x low:y -> { x y }
- | six:x low:y -> { x y }
- | five:x low:y -> { x y }
- | four:x low:y -> { x y }
- | three:x low:y -> { x y }
- | two:x low:y -> { x y }
- | one:x low:y -> { x y }
+number1 =
+ | nine:x number2:y -> { x y }
+ | eight:x number2:y -> { x y }
+ | seven:x number2:y -> { x y }
+ | six:x number2:y -> { x y }
+ | five:x number2:y -> { x y }
+ | four:x number2:y -> { x y }
+ | three:x number2:y -> { x y }
+ | two:x number2:y -> { x y }
+ | one:x number2:y -> { x y }
;
-low =
+number2 =
| nine:x -> { x }
| eight:x -> { x }
| seven:x -> { x }
commit f939b99a0d9392ad35ec24a6ee3dc2b27a0dccbe
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 17:16:20 2025 +0100
Clean up
diff --git a/src/examples/aoc20253/aoc20253.meta b/src/examples/aoc20253/aoc20253.meta
index 997b536..d46aecf 100644
--- a/src/examples/aoc20253/aoc20253.meta
+++ b/src/examples/aoc20253/aoc20253.meta
@@ -43,6 +43,6 @@ three = &'3' hit:x -> { x } | number three:x -> { x };
two = &'2' hit:x -> { x } | number two:x -> { x };
one = &'1' hit:x -> { x } | number one:x -> { x };
-hit[VariableName] = .;
+hit[Escape] = number;
-number[Escape] = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
+number = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
commit c299a28b338f0446adbbcd41801de0b87e563282
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 14:10:51 2025 +0100
Part 2
diff --git a/src/examples/aoc20253/aoc20253.meta b/src/examples/aoc20253/aoc20253.meta
index 8e91ace..997b536 100644
--- a/src/examples/aoc20253/aoc20253.meta
+++ b/src/examples/aoc20253/aoc20253.meta
@@ -1,13 +1,48 @@
#id = aoc20253
-main = bank* !. -> {
- "int main(void) { return 0; }"
+main = bank*:xs !. -> {
+ "#include <stdio.h>\n"
+ "int main(void) { printf(\"Part 1: %d\\n\", 0 " xs "); return 0; }\n"
};
-bank = battery* '\n';
+bank = highest:x number* '\n' -> {
+ " + " x
+};
+
+highest =
+ | nine:x low:y -> { x y }
+ | eight:x low:y -> { x y }
+ | seven:x low:y -> { x y }
+ | six:x low:y -> { x y }
+ | five:x low:y -> { x y }
+ | four:x low:y -> { x y }
+ | three:x low:y -> { x y }
+ | two:x low:y -> { x y }
+ | one:x low:y -> { x y }
+ ;
+
+low =
+ | nine:x -> { x }
+ | eight:x -> { x }
+ | seven:x -> { x }
+ | six:x -> { x }
+ | five:x -> { x }
+ | four:x -> { x }
+ | three:x -> { x }
+ | two:x -> { x }
+ | one:x -> { x }
+ ;
+
+nine = &'9' hit:x -> { x } | number nine:x -> { x };
+eight = &'8' hit:x -> { x } | number eight:x -> { x };
+seven = &'7' hit:x -> { x } | number seven:x -> { x };
+six = &'6' hit:x -> { x } | number six:x -> { x };
+five = &'5' hit:x -> { x } | number five:x -> { x };
+four = &'4' hit:x -> { x } | number four:x -> { x };
+three = &'3' hit:x -> { x } | number three:x -> { x };
+two = &'2' hit:x -> { x } | number two:x -> { x };
+one = &'1' hit:x -> { x } | number one:x -> { x };
-battery = high | medium | low;
+hit[VariableName] = .;
-high[Reserved] = '9' | '8';
-medium = '4' | '5' | '6' | '7';
-low[RuleName] = '3' | '2' | '1';
+number[Escape] = '1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9';
commit e8d75af547d58d4acdac3c32bcdd54f3ae7d2fbb
Author: Rickard Lindberg <rickard@rickardlindberg.me>
Date: Sat Dec 6 09:03:05 2025 +0100
Parse aoc 2025 day 3
diff --git a/make.sh b/make.sh
index 563845d..1299e50 100755
--- a/make.sh
+++ b/make.sh
@@ -13,6 +13,7 @@ main() {
workbench_sdl
example_aoc20251
example_aoc20252
+ example_aoc20253
}
dotall() {
@@ -76,6 +77,16 @@ example_aoc20252() {
out/rl
}
+example_aoc20253() {
+ example aoc20253
+ out/aoc20253 <src/examples/aoc20253/example.aoc20253 >out/example.c
+ c_compile out/example.c out/example
+ out/example
+ out/aoc20253 <src/examples/aoc20253/rl.aoc20253 >out/rl.c
+ c_compile out/rl.c out/rl
+ out/rl
+}
+
example() {
banner "Example: $1"
meta_compile src/examples/$1/$1.meta out/$1.c
@@ -109,6 +120,7 @@ languages() {
meta_compile src/generic.meta out/language_generic.c
meta_compile src/examples/aoc20251/aoc20251.meta out/language_aoc20251.c
meta_compile src/examples/aoc20252/aoc20252.meta out/language_aoc20252.c
+ meta_compile src/examples/aoc20253/aoc20253.meta out/language_aoc20253.c
}
banner() {
diff --git a/src/examples/aoc20253/aoc20253.meta b/src/examples/aoc20253/aoc20253.meta
new file mode 100644
index 0000000..8e91ace
--- /dev/null
+++ b/src/examples/aoc20253/aoc20253.meta
@@ -0,0 +1,13 @@
+#id = aoc20253
+
+main = bank* !. -> {
+ "int main(void) { return 0; }"
+};
+
+bank = battery* '\n';
+
+battery = high | medium | low;
+
+high[Reserved] = '9' | '8';
+medium = '4' | '5' | '6' | '7';
+low[RuleName] = '3' | '2' | '1';
diff --git a/src/examples/aoc20253/example.aoc20253 b/src/examples/aoc20253/example.aoc20253
new file mode 100644
index 0000000..7255fca
--- /dev/null
+++ b/src/examples/aoc20253/example.aoc20253
@@ -0,0 +1,4 @@
+987654321111111
+811111111111119
+234234234234278
+818181911112111
diff --git a/src/examples/aoc20253/rl.aoc20253 b/src/examples/aoc20253/rl.aoc20253
new file mode 100644
index 0000000..da1e67f
--- /dev/null
+++ b/src/examples/aoc20253/rl.aoc20253
@@ -0,0 +1,200 @@
+1122328377227565294573525668246252925164246287987784122693983869922222576473238222367725229292476776
+3439534344443341434449413434544546443313443434337243446444273233229964474333524343343263333397462332
+6446534656654345665545756845652445664554567453344355533455445732365554785365556466544424657625334454
+5764366546346565433173426656673446256755342552276356475358736554561768323235448436642626716668436552
+2432245322434343223312234234145234422422151425334232333434465223124422432123313313144223245434213122
+6373269138466626334224232272352251726573428236361362251272335335353545412626366252362443323122568732
+5673357339533533557574944447475576653565555474357764385574312376575243553954836367339357555551434444
+3232332132231233321122322231333232213233313332432312143232132213233232233243131223222222233422123252
+2532332134274262221121535425342131732342222326625224242334335132442252434322423352213461259334224487
+7565667856454556567454551653458944467437678656453544834356545556463354463263379773577656253433555445
+1376533544556457252934534268532349354424919842725952222763551835834557316545232355343561434353534372
+2523224493232433232232455126224252263322422141222233724236541332332735342832245213233463352313233144
+2125433524432544443453442442415232314454515362344343344431423442473342513223323343242354443455412243
+2223253513531336231535341344345453334337333533533361233323412322433143663333333373465253335734633327
+4222443232236314324237231323222882275222733343331312832133839321228313232237135332232232382344322422
+2531231222624224222222221242321222233212232242324222212221311445532222222224121224222222221252222524
+1282322243523323214433323343353334144321323323232732322223331131423423332423323326142343424314333343
+2233222322332112322233213222336221232222222214321225322213222122222352112222251322233152122421233222
+2133332225122552132443253453123412221223124644261212221552222235242211223223252155412122322122223222
+2342322335344224245235521242242243244442442432343445366241334834335442144222344342324144436322223252
+2255222226226744212232452222211222226644152224654642222241212623263422212222222123625471252525231222
+5253225434222243232256531212424522455213211226332242213164222254163325125452125461243424432232521451
+4288524434546485223254522441625265492255546828544443435345215657285553533178244452552176455574652293
+3235223132313212332222313343333222533331243421222333232232242221233321253222222311122211231321322323
+4123522222232222222222212221222312422443212311122224412242222422224221222222222421211512213232212222
+3322373222222242321232243243233223232232512214323122273433454631213413261244431323333233422222231333
+2436942332444453225144242332328323644174461313334813734323432222643133233737233352242843536483323424
+6623144536217362257362532276645667275225345632247317547264542717622752322512614462233614623212714313
+7643456556435262153535522356454446472226533567512621825444284454542422642342465553247415548425143345
+4232122253524333334533233324453222123233355235433223215572332412412135421543333225525442333542135342
+4323634634112252442592132533345314252129523914383352446365752563854222222135312255213224324234346522
+4353236333333443555453153222447234744855224242235222342821423544314432335143463324453212425243526253
+4534533361674341342373533433515133733463337326382435134633116532215664264731353346325231336324543442
+2441442233421553345123135143544543514414123543133232143423433134342241153555343533344332141124526789
+2212132232223312224121332321533433233231422432232322122242112121722221232232333333243232232321421332
+8276778647457225634262651262236665334746366328315345666276362545653426736648663235942674241466416645
+6757738683896779756978663273677647866865646763676539757557937794766886638666596578695866568667655479
+3235324533378448433335274942743645133375734577352715333261865358656374737284338777478232537365245343
+4544353485657685546454346442946313765454162559656661655383342671254345353453455264741766557648336668
+4264444443344473336242134323433423332343324333333254454443353213543335532443424243315435135233422373
+1432231244233483432121332254224143463222222243441213141223116223382721445238114213423233232232332221
+2222232322231222124222632512222322213212221522222322622211221322323233231312252122312222125222322125
+5366463442922353342532343315353122223432333452564936553861366438243355223456466376443429233733334342
+3333313233338514434336423444332456333438337336334342944347366333335933448363374642593526334235338432
+4222227222723244622222522625222227222591432114121271213422152232224222226451352886471215497226325622
+1111232241325222223121223534135331234513222224322152124231242425541542225512524325733232352114412425
+2223242372213783432244443234232241344257232234142233121223233244472224342214321145234135323222432222
+7222442251221342522212221263241222371222232252234532724122222223222242224126211222532342223261652272
+4123225523222243223332322233234223232323322421142343312222229252254332222231193233834232232232232342
+2455764672725285657557127457517886446383484443658853833551482862866696188528695445645864389836857824
+2335444449544244436542644344544332333444523525443443443433354544543555542346346934445434844534545545
+5456273732532761553636356321172336466215117763244762713542265616432246521176656227355141144521551389
+2333422422432424443133444224144223341444434246243346423344424236632222442323343342324426234343122243
+3232132222422262223173221122312222152213222216322222322165261222322331222222121213321311112321122223
+3336333635243464343314533547253312547553323635943356434524952334676984593636433632765833434735333295
+4466554446434343493244435644444546434456454446348134436455234534443633474446345344434349465344542534
+2283252222342324222242622432262222323242122472321325124722324133443416344232141342132222553222421221
+4733348213224614422542424524214442636434324322292112134274318423422425123232424143342426622122238342
+2547264446444453762654263745461534446445544246536154444456443634445537415555334834377456344442646345
+3234224523322112535364324435413222325212153235152232455542541542221253231224252442422424254422322212
+4434564642215554435546544343332243535432454423352834136234355653533947223444444433559353348543449567
+2252223221242232222222222222322222135222522222422222212152222212142212232121524124222322322224512122
+6635325243417345346543264825444676456234266553634661542263245335263444345423441364353444546365574427
+7244414324124342461462282831333363334223423253732522331422224422472834422742232252325332625423268222
+2522622422112622217136512442223148422522324324124421413262423456322242411142825222228223214212228222
+3542431852246554422545441526832353454624686525132255542551525344785454952341555431284422845282543531
+6456543746236666493367458482564445566646525647444144454366346513356435534382553243655846351653344585
+4223242121216152122132225135242212122223222322224214222231222243243232242222241122122221122232122545
+3666373263664638165458763666665656467334352246464434543434477354455615261454865224445241343254422436
+2545565568686975346357665466842836222436467776544436712632246471487464342898667553627255465468376526
+8222221224443333523484433432432252335423242323328434425143514452234724343465245447444244224323224222
+2231312223232323222282423422223414222223222212211122131222271221212222132322225122122322122122313322
+2351332722235622221115145344331322225322122522212322121233331363235353126542531252122234332322222632
+2222242222312422212844422121412221224224124242222252422142322325522324223312222232212212221212211423
+2422244322524332312422342135124221236423242242223232314218225183222432432232316163341254323211322422
+7932432222612262562422365343251724436522544235334252356725456232252325344141535346213432274336253556
+9517575495452463285625246622534143448544564729362945322553625244434653552723435775592696432635377248
+3285162422434542545733334242423355222835383224499473445323643214353333757362543467664433552383344345
+2624644522324533575226262424221534652968142565323566422323427228547262322561472973342542424234374363
+4252222322228122522222212224312211422343261243323222142222222223232323122231233212321322212352523231
+6333223322633614336133113463236222231322323361233153422235132233233241222221222633632232623332353323
+2434212432262232444423248513532323352132223343222235343843132342229242656331455524752215233354246225
+2821224223223233412223241321221222321222222132223132222321312242322424223132131232228221623221812221
+2522242314662335523532565226725434225254232633423425643565362345346345325359543433233622333547274127
+2142225142338322332322243224221253323412624233233424332332213311232233333332232242212321243433422222
+5457355948683856656457323863456263474356866754656654653576636656534564565268665746465622445365445614
+2221341212182232121222221241212223211232222322227222232222452221432211221422115225225322222212412223
+3333434443324362261444445643385443327443332324449763243385411335233354943533422338233545444394352393
+2433147245324334441433333313333642232142541344333123332343338463224233333342333343532434433113523383
+5214225313223233254524132672222242143113242231232312312242222244224353533113122132312212131222343213
+2651382833637664484389263776638888223726886234133422477852462545242564244982243246336763492552122385
+3447347335463643563377634477743644335336334244551444337536654736676124685542476435225623446634324664
+6798722675959385959955965473475636478285786397788537344625695675694767865289787789684444365577697799
+4342392334342333343323434242433342443444334332454368444343443444343333316224422333634353433444524243
+1132232222322423222322812312222222211132213222212222223231223222225212222222222222232122232222222242
+6777676475454474963718646644654675646848455656875566677876634666673675765957556849565967666775724657
+9937685975477776554675666685777758757636985565656687448887574884454865669765655445678158564484556665
+2233222122221222222222221222222121231221322322422242321332222222211122222122221222221122511322222222
+5343434464433254367753443233454474354443464536462244254424343346533432454253644316546443536534322563
+4231232232312222222223113211223222125212232132224222122332212223322243121332233232322123232324331322
+3323243333343232234442221332433312233222222241343232223342434132441343322223233243433115233233341142
+2261321222222222221229246925531422323635533332222333422527231332353227222133228352423224227332262223
+5555958875565589677535967847573599996477698587254577575545554589558899538785774458869568857545573977
+5214222222222222222345312246222322237247342225222235222222222242413322222322222222153223442132322472
+3243338152344243429215412527332523242224373343648344241373243332385624742434422444654442336442534422
+1222226123222152934223223122222162221222672222122222122222213232212222222235212212222322222252222222
+5854456249637745756667484452645648695565856545425335866356574555555555676868475555378293465665575479
+3245455545452243862642554833652545413524455331444434334363344434431241365343523434433554332553213535
+2654764623252226452222126726264584214222526925222565934251222228175322722323627475621432222712266228
+2211593522362319922453245223592262143135224173239127386572222172224261212222442582447253172726525722
+1292232247422327232931222122473236332229414132432322226322242422234121254245434124433749432244311222
+2376266634476255566464645552246527646527116472755384536339256364314546223561571544557837662576545225
+4256364466666844987645457666556542666665666585356953545624223376445516665425542276465756445675634233
+3331333333333342254332333333353233333532352323341332433232533353333423443433123224333923333323434533
+3133323315314232333313215512438333233223223344623343221322442854333391333223333321332325333856733144
+2232222221222352222322322222233121222123222321212223222122221323314223224325221232322222212322322242
+3223312325434422333263234122126353314612232211222412424324351423242327324333333214232432252512415321
+4324312443333412313243112123212343331122241334333241341134433343134413422313423234433431244324156789
+4243522334622415411232154541422322533823354423252322454343524624233244321332422341223121253327212442
+2634332652432675331222272824265621332859222925233323632295371137223232376222225232424762243526136227
+1262622222432222213232222211223822221322222123223331323222222236221422512212222223131233122261422232
+2894221243222512212222224123331312229212222125136523212542122321322222222342223223233231221522572623
+2743946428734154148535536567233352844848227254434468132453632673482434344253644422324567623737462358
+7475533242444354536668624624455233655454632655465453454463323345444646265533671445624652646445424353
+2142321233213322114232225223224533224241233623642342221121313233223222219423222211222313433233226332
+3434447434937346434744423322255134514526553464272334633641332232434322443445343343224644244646223345
+2226242226412127622225121242432463313111222132325122221212523113223132231321263325122122122324221112
+2243533353234655333344333313536352333333232343322335123433453333533334333352254222333354553335324334
+2242124281222122144913212222222322222242222442222322228223218223122723422121222222231225222222212521
+6333333233846425213386353453331543224231222232388343243131333732311233327753333353226142471182426927
+4835333534662133342343434444343462583311535233334453433455584323535433641444144234314733352343442243
+6536758559666357457485434644655556854996457444563433954756763433378345587465535696547957436365555476
+3311312223223242222213222223322422221322223222322112254333221212322612352313212444222252312212232233
+5235222121222231324221123333123212122212221222532262222244223423132223241423212211423323221244248244
+2323121223423223324222223322232333233232324222323122223432123232232322222333342323333433332322122223
+5153323234232342222332222226312232113233322222222132233122232211232232322132223222232322222233231332
+4445242122222412252131484252816482332322212742325664246322226222235222222726222422222723148172562332
+5313353552552441443332334323344544346525363544533433453334332452543645345333333145125333435532535545
+2253325121232521322235332544212312312334233333613533544262125333433323242334312213353412313224335323
+3442455225824322325483215225328113822323363525253546424414346444685422225156364832522575532426362223
+1221232215252242322241122222322122232222222232222222221222222312222122524222222322225224232221142222
+1434411514222231342462123235465455646133223251262356536544253133563344423361124424434443451651453789
+5421333333154443254642523234545223143421434524543454242744542212333743422434244174422545424435324354
+2422225221321523422522321223422222221282132222421214132232224212127424222332352213214233722312221224
+8353366333623336363313332333668463335533335157633543646363234266534224738445635343936313336233333233
+4322313323734333233333133324332223361223333223333643133333152343333233334332222431433334232332342333
+4433555432513464345746344453554444945533345446356524754433455232462436463458454945555522134644345462
+1113322363222143322232422212222212112222233722231223321222234222322213321222262213432332223223222322
+4222333453325447341444442235423245335414424246724344234442633222442244424342345526444334443433343311
+2132392234222424334346324322232414433224332241443234442222422333423412332323524464444342261235341532
+2112332342532272232223275313233436223321233437135331262264123523352223532764132713226233262613423352
+4322222423721333283242323831364445738311334244633453347343472243237432374552234437223243212124322625
+1242468252334224755152335722155522422413313344554714234126324454626564243715252472212245243814274254
+7288471218123876835345677886537524525236527146666547752676112542531773366423574584288157326835587569
+7873669783877895986988965879478566639655779488956895968166899989557765975793814875581995987549987493
+1334334411325223943913344532323253464273222224622231241226241385242422514224312467644744674332264744
+1435222224242252225222521223522262223246265253223153233312525272222325424212513524222225183226643257
+3333332333333333333333333233323332333733313223313322432333323553322223334326334383334373323433423332
+2434222434342632322321224344227322233222451243242242322331322422422424223452222341223222524244223224
+2334113333222224331331421225323232452662862632333236231524234433234233233432434234343532393232233332
+4134224234542424342343312344334323334322342434444643233924434333338222243241442324422333425544423233
+3565636644445546545564766358556624446435646236664567636346646356364654647675612752316533743545346563
+2122232321222232134122222263434222142312323322211322222512231121221821122222131125232242232232342322
+5375425527762434248677433758261823212541262432573347762373434443753131295314323323425336274272313675
+3222222222222222246212321331121322212122262252122223122222121222232222222221223222222212222222533232
+2142432532411353333545333513346433433533244333233326433433333566331333335445333143333333323363373533
+3333334214223333334343323343323453434333333333333244343343443343233333334344524233313337434333432322
+2232432224433433313385333321323345333333333223243243334333332252323333233212223342433323353333233223
+3234337223322314472232212314143623424244223434234133321222215136433234223221321442432422424334222224
+4422625214416262624221172625722223459222256245232634254242434722522128225323225713135335221224222111
+1332233222222352233332151322322233222222321233324232332132222233133625322222222323143225333424413222
+1212221233434411242222222232342272261362231222122213233211242123448423412622121212224222245232221231
+5299239242432267722312144753524325235544143326621526223357993233413345372525642521566214321229314226
+4145815259445253437345286245352965222465396946455525666535157576493246439135482348345259474534214895
+4359454935483443642555444253332646423565846452265442345833574549442746543574436733264526894364357572
+4455362612251424257347533535244543123224216453411496584314352529524942421253415255562112225354222522
+1442232342433253322444534281432832532221672244522533352331353433357344632533273418434294521434522442
+4222222215222314232121254322233232222223122634122452442325321222225215221262211462212251222122432225
+5433343433354336555313334535433334646344314443334434323324433351432333233343343453434443354755443144
+7455735614556556475541373865756554446747474542632733338546537454714443436561535533325555442337664366
+3344244343421362432233243522354253434334144424341223843414452442242233253333415322242242421421222344
+6566496645534446467563655546666284568446568656566488652487754568586356364667666343653435344856634686
+3144742294362343433433444152533433333354533454223125636323643244343342222413333242523375333224753333
+3221523222332442343532222237412235442452325221435232234441525512343524244632563143252254222455154221
+3224327652164274373434256367436252531482365553771428333238873236774688169262541264643619643249432147
+4884532535643454176544345559146393647314561543235243325754646564452432255522565243562352226356533255
+2311434244645331433437443324222242222346543444433231311844443214411344612234346424445322444644242422
+2162123222225122221111123222322122322233422452224412222322421212222421237222222225232132222231522142
+4634423245446733424454237456446454376514876546452544686573653263546426444252424446345435263643465462
+3333433236833532333323333332633353333373964224333234334234434235324533133333366333323333233443527332
+2213222322242112532233111222211252231251222334273212372255322233222322521253222127321321121222351322
+3333531243833462333332223231353333233423323335442148233323423433334223232432341332332113321733223323
+1253222412232122142223322252221331232333213442223222222322329232133533222333322223233421612131455332
+2126352214354453312222742413223131233982433261445213341234522712243224286251232222322412242832421233
+6755646362147242536753172684353487842555958732547755226562634346554123245448573341747273467855165235
+2222212222222722222322211223233322242232221125222151222152123226222164222523412311242122125222222212
+3335321234234455143444233435223252532335334336334245233424223444352465523413253533334644323424424432
+3343742454932436532444334343432433343532443425428234452394453474344344383332325454346344412541474253
+2474477763936979663333346343374443344643635572649454475855374386394583444346862733437379465433493339
+3289373373182327263634375433233261632333632233239373343722362254522232326722313742223237132632342532
diff --git a/src/language.c b/src/language.c
index fcfba64..9d16d75 100644
--- a/src/language.c
+++ b/src/language.c
@@ -3,6 +3,7 @@
#include "language_c.c"
#include "language_aoc20251.c"
#include "language_aoc20252.c"
+#include "language_aoc20253.c"
#include "language_generic.c"
typedef enum languages {
@@ -10,6 +11,7 @@ typedef enum languages {
Language_C,
Language_AOC20251,
Language_AOC20252,
+ Language_AOC20253,
Language_Generic
} Language;
@@ -18,6 +20,7 @@ Language language_from_string(String name) {
if (string_eqc(name, "c")) { return Language_C; }
if (string_eqc(name, "aoc20251")) { return Language_AOC20251; }
if (string_eqc(name, "aoc20252")) { return Language_AOC20252; }
+ if (string_eqc(name, "aoc20253")) { return Language_AOC20253; }
return Language_Generic;
}
@@ -26,5 +29,6 @@ static MetaParseFunction LANGUAGE_HIGHLIGHERS[] = {
language_c_rule_main,
language_aoc20251_rule_main,
language_aoc20252_rule_main,
+ language_aoc20253_rule_main,
language_generic_rule_main,
};