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.005

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, $package, $spec)

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

strict($self, [$strict])

Sets/Returns the strict mode of the grammar.

content($self)

Returns the content of the grammar.

extract($self)

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

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.

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.

value($self, $impl)

Return the blessed 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.

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.