]> www.fi.muni.cz Git - aoc.git/blob - 2015/y/38-ypgen.pl
Year 2015
[aoc.git] / 2015 / y / 38-ypgen.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4 use strict;
5
6 say <<'HEAD';
7 %{
8         my $count = 0;
9 %}
10
11 %start e
12
13 %%
14 HEAD
15
16 my $prev;
17 while (<>) {
18         chomp;
19         last if /^$/;
20         my ($src, $dst) = /(\w+) => (\w+)/;
21         $dst =~ s/(?=[A-Z])/ /g;
22         if (!$prev || $src ne $prev) {
23                 if ($prev) {
24                         say "\t;";
25                 }
26                 if ($src eq 'e') {
27                         say "$src:";
28                 } else {
29                         say "$src :\t'$src'";
30                 }
31         }
32         if ($src eq 'e' && $prev ne $src) {
33                 say "\t  $dst { shift->YYData->{count}++ }";
34         } else {
35                 say "\t| $dst { shift->YYData->{count}++ }";
36         }
37         $prev = $src;
38 }
39 say "\t;";
40 say '%%';