#!/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 '%%';
