The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use Parse::YALALR::Build;

my $testfile;
my $language = 'perl';

sub usage (;$) {
    if (my $msg = shift) {
	print "$0: $msg\n";
    }
    print "usage: $0 [--lang=c|perl] <grammar.y>\n";
    exit 1;
}

foreach (@ARGV) {
    if (/^--lang=(.*)/) {
	$language = $1;
    } elsif ($_ eq '-h' || '--help') {
	usage();
    } elsif (/^-/) {
	usage("Unknown -option $_");
    } elsif (defined $testfile) {
	usage();
    } else {
	$testfile = $_;
    }
}

open(SAMPLE, $testfile) or die "open $testfile: $!";
$::t0 = time;
my $builder = Parse::YALALR::Build->new($language, \*SAMPLE);
my $parser = $builder->{parser};
print "Done: time=".(time-$::t0)." seconds\n";

print $parser->dump_parser();
$builder->build_table();
print $parser->stats();