GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  PEGEX::COMPILER (3)

.ds Aq ’

NAME

Pegex::Compiler - Pegex Compiler

CONTENTS

SYNOPSIS



    use Pegex::Compiler;
    my $grammar_text = ... grammar text ...;
    my $pegex_compiler = Pegex::Compiler->new();
    my $grammar_tree = $pegex_compiler->compile($grammar_text)->tree;



or:



    perl -Ilib -MYourGrammarModule=compile



DESCRIPTION

The Pegex::Compiler transforms a Pegex grammar string (or file) into a compiled form. The compiled form is known as a grammar tree, which is simply a nested data structure.

The grammar tree can be serialized to YAML, JSON, Perl, or any other programming language. This makes it extremely portable. Pegex::Grammar has methods for serializing to all these forms.

NOTE: Unless you are developing Pegex based modules, you can safely ignore
this module. Even if you are you probably won’t use it directly. See [In
Place Compilation] below.

METHODS

The following public methods are available:
$compiler = Pegex::Compiler->new(); Return a new Pegex::Compiler object.
$grammar_tree = $compiler->compile($grammar_input); Compile a grammar text into a grammar tree that can be used by a Pegex::Parser. This method is calls the parse and combinate methods and returns the resulting tree.

Input can be a string, a string ref, a file path, a file handle, or a Pegex::Input object. Return $self so you can chain it to other methods.

$compiler->parse($grammar_text) The first step of a compile is parse. This applies the Pegex language grammar to your grammar text and produces an unoptimized tree.

This method returns $self so you can chain it to other methods.

$compiler->combinate() Before a Pegex grammar tree can be used to parse things, it needs to be combinated. This process turns the regex tokens into real regexes. It also combines some rules together and eliminates rules that are not needed or have been combinated. The result is a Pegex grammar tree that can be used by a Pegex::Parser.

NOTE: While the parse phase of a compile is always the same for various
programming langugaes, the combinate phase takes into consideration and
special needs of the target language. Pegex::Compiler only combinates
for Perl, although this is often sufficient in similar languages like
Ruby or Python (PCRE based regexes). Languages like Java probably need
to use their own combinators.

$compiler->tree() Return the current state of the grammar tree (as a hash ref).
$compiler->to_yaml() Serialize the current grammar tree to YAML.
$compiler->to_json() Serialize the current grammar tree to JSON.
$compiler->to_perl() Serialize the current grammar tree to Perl.

IN PLACE COMPILATION

When you write a Pegex based module you will want to precompile your grammar into Perl so that it has no load penalty. Pegex::Grammar provides a special mechanism for this. Say you have a class like this:



    package MyThing::Grammar;
    use Pegex::Base;
    extends Pegex::Grammar;

    use constant file => ../mything-grammar-repo/mything.pgx;
    sub make_tree {
    }



Simply use this command:



    perl -Ilib -MMyThing::Grammar=compile



and Pegex::Grammar will call Pegex::Compile to put your compiled grammar inside your tree subroutine. It will actually write the text into your module. This makes it trivial to update your grammar module after making changes to the grammar file.

See Pegex::JSON for an example.

AUTHOR

Ingy doet Net <ingy@cpan.org>

COPYRIGHT AND LICENSE

Copyright 2010-2015. Ingy doet 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>

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 PEGEX::COMPILER (3) 2015-01-28

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.