]> www.fi.muni.cz Git - aoc.git/blobdiff - 2015/y/38-ypgen.pl
Year 2015
[aoc.git] / 2015 / y / 38-ypgen.pl
diff --git a/2015/y/38-ypgen.pl b/2015/y/38-ypgen.pl
new file mode 100755 (executable)
index 0000000..9975d15
--- /dev/null
@@ -0,0 +1,40 @@
+#!/usr/bin/perl -w
+
+use v5.16;
+use strict;
+
+say <<'HEAD';
+%{
+       my $count = 0;
+%}
+
+%start e
+
+%%
+HEAD
+
+my $prev;
+while (<>) {
+       chomp;
+       last if /^$/;
+       my ($src, $dst) = /(\w+) => (\w+)/;
+       $dst =~ s/(?=[A-Z])/ /g;
+       if (!$prev || $src ne $prev) {
+               if ($prev) {
+                       say "\t;";
+               }
+               if ($src eq 'e') {
+                       say "$src:";
+               } else {
+                       say "$src :\t'$src'";
+               }
+       }
+       if ($src eq 'e' && $prev ne $src) {
+               say "\t  $dst { shift->YYData->{count}++ }";
+       } else {
+               say "\t| $dst { shift->YYData->{count}++ }";
+       }
+       $prev = $src;
+}
+say "\t;";
+say '%%';