Pegex::Grammar(3) | User Contributed Perl Documentation | Pegex::Grammar(3) |
Pegex::Grammar - Pegex Grammar Base Class
Define a Pegex grammar (for the Foo syntax):
package Pegex::Foo::Grammar; use base 'Pegex::Base'; extends 'Pegex::Grammar'; has text => q{ foo: bar baz ... rest of Foo grammar ... };
then use it to parse some Foo:
use Pegex::Parser; my $parse_tree = Pegex::Parser->new( grammar => 'Pegex::Foo::Grammar', receiver => 'Pegex::Tree', )->parse('my/file.foo');
Pegex::Grammar is a base class for defining your own Pegex grammar classes. You just need to provide the grammar view the "text" or the "file" attributes.
When Pegex::Parser uses your grammar, it will want it in the tree (compiled) form, so Pegex::Grammar provides automatic compilation support.
The "make_tree" method will call on Pegex::Compiler to compile the "text" property by default. You can define your own "make_tree" method to do override this behavior.
Often times you will want to generate your own Pegex::Grammar subclasses in an automated fashion. The Pegex and TestML modules do this to be performant. This also allows you to keep your grammar text in a separate file, and often in a separate repository, so it can be shared by multiple programming language's module implementations.
See <https://github.com/ingydotnet/pegex-pgx> and <https://github.com/ingydotnet/pegex-pm/blob/master/lib/Pegex/Pegex/Grammar.pm>.
Ingy döt Net <ingy@cpan.org>
Copyright 2010-2020. Ingy döt Net.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See <http://www.perl.com/perl/misc/Artistic.html>
2020-02-13 | perl v5.34.0 |