The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Parse::YALALR - Yet Another LALR parser

SYNOPSIS

 From the command line:
 % yalalr [--lang=c] [--lang=perl] grammar.y

 In a program:
 use Parse::YALALR::Build;
 use Parse::YALALR::Run;

 open(GRAMMAR, "<expr.y") or die "open expr.y: $!";
 $builder = Parse::YALALR::Build->new("perl", \*GRAMMAR);
 $builder->build_table();
 $parser = $builder->{parser};
 @inputstream = ([number=>10], ["'+'"=> undef ], [number=>20]);
 $_->[0] = $parser->{symmap}->get_index($_->[0]) foreach (@inputstream);
 Parse::YALALR::Run::run_parser($parser, \@inputstream);

DESCRIPTION

Generates an LALR parser from an input grammar. Really just intended as a companion to Parse::Vipar, but (sorta) works standalone. Does not yet generate a standalone parser.

run_parser will also accept a CODE ref to use as a lexer. Every invocation should return a pair (token, value). The above example is equivalent to

 $lexer = { my $i = 0; sub {
                             my ($t,$v)=@{$inputstream[$i++]};
                             ($parser->get_index($t), $v)
                           }
          };
 Parse::YALALR::Run::run_parser($parser, $lexer);

AUTHOR

Steve Fink <steve@fink.com>

SEE ALSO

Parse::YALALR