NAME MarpaX::Simple - Generate Marpa-based parser VERSION This document describes version 0.02 of MarpaX::Simple (from Perl distribution MarpaX-Simple), released on 2014-05-13. SYNOPSIS use MarpaX::Simple qw(gen_parser); my $parser = gen_parser( grammar => <<'EOG', :start ::= expr expr ::= num | num '+' num action => do_add num ~ [\d]+ :discard ~ whitespace whitespace ~ [\s]+ EOG actions => { do_add => sub { shift; $_[0] + $_[2] } }, ); print $parser->('3 + 4'); # -> 7 print $parser->('3 + '); # dies with parse error which is a shortcut for roughly this: no strict 'refs'; use Marpa::R2; my $grammar = Marpa::R2::Scanless::G->new({source => \$args{grammar}}); my $pkg = "MarpaX::Simple::gen" . some_random_value(); my $actions = $args{actions}; for (keys %$actions) { ${"$pkg\::$_"} = $actions->{$_}; } my $parser = sub { my $input = shift; my $recce = Marpa::R2::Scanless::R->new({ grammar => $grammar, semantics_package => $pkg, }); }; DESCRIPTION This module tries to simplify the incantation of producing a parser using Marpa::R2 (the scanless interface) by reducing the process to a single function call: "gen_parser". FUNCTIONS gen_parser(%args) -> code Generate Marpa-based parser. Arguments ('*' denotes required arguments): * actions => *hash* Supply actions specified in the grammar. * grammar* => *str* * too_many_earley_items => *int* Will be passed to recognizer's constructor. * trace_terminals => *bool* Will be passed to recognizer's constructor. * trace_values => *bool* Will be passed to recognizer's constructor. Return value: TODO Allow customizing error message/behavior. Support more grammar (Marpa::R2::Scanless::G) options, e.g.: "trace_file_handle". Support more recognizer (Marpa::R2::Scanless::R) options, e.g.: "max_parses", "trace_file_handle". SEE ALSO Marpa::R2 HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. AUTHOR Steven Haryanto COPYRIGHT AND LICENSE This software is copyright (c) 2014 by Steven Haryanto. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.