The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

MarpaX::Languages::ECMAScript::AST::Grammar::Base - ECMAScript, grammars base package

VERSION

version 0.006

SYNOPSIS

    use strict;
    use warnings FATAL => 'all';
    use MarpaX::Languages::ECMAScript::AST::Grammar::Base;

    my $grammar = MarpaX::Languages::ECMAScript::AST::Grammar::Base->new("grammar", "My::Package", "ECMAScript_262_5");

    my $grammar_content = $grammar->content();
    my $grammar_option = $grammar->grammar_option();
    my $recce_option = $grammar->recce_option();

DESCRIPTION

This modules returns a base package for all the ECMAScript grammars written in Marpa BNF.

SUBROUTINES/METHODS

new($grammar_content, $package, $spec)

Instance a new object. Takes a grammar content $grammar_content, a package name $package and an ECMAScript specification $spec as required parameters.

strict($self, [$strict])

Sets/Returns the strict mode of the grammar.

content($self)

Returns the content of the grammar.

make_content($class, $spec, $original_content)

Class method that return the default content of the grammar writen for specification $spec and based on $original_content. Grammars in the ECMA script typically use Posix user-defined classes without the full classname; this method is making sure full classname is used.

extract($self)

Returns the part of the grammar that can be safely extracted and injected in another.

make_grammar_option($class, $package, $spec, $grammar_content)

Class method that returns default grammar options for a given package $package, ECMA specification $spec, and grammar content $grammar_content. Default $package is the class name used for this call.

grammar_option($self)

Returns recommended option for Marpa::R2::Scanless::G->new(), returned as a reference to a hash.

recce_option($self)

Returns recommended option for Marpa::R2::Scanless::R->new(), returned as a reference to a hash.

make_recce_option($class, $package)

Class method that returns default recce options.

parse($self, $source, [$optionsp], [$start], [$length])

Parse the source given as reference to a scalar, an optional reference to a options that is a hash that can contain:

callbackargsp

Callbak Code Reference. Default is undef.

callbackargs

Reference to an array of Callback Code Reference first arguments. Default is [].

failure

Failure callback Code Reference. Default is undef.

failureargs

Reference to an array of Failure callback Code Reference first arguments. Default is [].

end

End callback Code Reference. Default is undef.

endargs

Reference to an array of End callback Code Reference first arguments. Default is [].

keepOriginalSource

Because of Automatic Semicolon Insertion that may happen at the end, a space is appended to a copy of the source to be parsed. If a true value, this option disable that append. Default is true.

This method must be called as a super method by grammar using this package as a parent. $self must be a reference to a grammar instantiated via MarpaX::Languages::ECMAScript::AST::Grammar. The callback code will always be called with: per-callback arguments, $source, $pos (i.e. current position), $max (i.e. max position), $impl (i.e. a MarpaX::Languages::ECMAScript::AST::Impl instance). The default and failure callbacks must always return the new position in the stream, and raise a MarpaX::Languages::ECMAScript::AST::Exception::SyntaxError exception if there is an error. In the 'end' and 'failure' callbacks, $pos is not meaningful: this is the last position where external scanning restarted. You might want to look to the getLastLexeme() method. Output of the 'end' callback is ignored. Please note that this method explicitely creates a recognizer using $impl->make_R(), destroyed in case of error.

value($self, $impl)

Return the parse tree (unique) value. $impl is the recognizer instance for the grammar. Will raise an InternalError exception if there is no parse tree value, or more than one parse tree value. Please note that this method explicity destroys the recognizer using $impl->destroy_R. Value itself is an AST where every string is a perl string.

getLexeme($self, $lexemeHashp, $impl)

Fills a hash with latest paused lexeme:

name

Lexeme name

start

Start position

length

Length

line

Line number as per Marpa

column

Column number as per Marpa

value

Lexeme value

Returns a true value if a lexeme pause information is available.

getLastLexeme($self, $lexemeHashp, $impl)

Fills a hash with latest lexeme (whatever it is, its name is unknown):

start

Start position

length

Length

value

Lexeme value

Returns a true value if a lexeme pause information is available.

SEE ALSO

MarpaX::Languages::ECMAScript::AST::Impl

MarpaX::Languages::ECMAScript::AST::Util

AUTHOR

Jean-Damien Durand <jeandamiendurand@free.fr>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Jean-Damien Durand.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.