MarpaX::ESLIF::Symbol - MarpaX::ESLIF's symbol
version 6.0.12
use MarpaX::ESLIF; my $eslif = MarpaX::ESLIF->new(); my $stringSymbol = MarpaX::ESLIF::Symbol->new($eslif, type => 'string', pattern => '"String Pattern"'); # # In ESLIF, a regex is anchored by default # my $regexSymbol = MarpaX::ESLIF::Symbol->new($eslif, type => 'regex', pattern => 'Regex.*Pattern', modifiers => 'A'); my $metaSymbol = MarpaX::ESLIF::Symbol->new($eslif, type => 'meta', grammar => MarpaX::ESLIF::Grammar->new( $eslif, "<something> ::= <SOMETHING>\n<SOMETHING> ~ 'that'") symbol => 'SOMETHING'); if (defined(my $match = $stringSymbol->try('String Pattern here'))) { print "==> String match: $match\n"; } if (defined(my $match = $regexSymbol->try('Should match Regex etc Pattern in there'))) { print "==> Regex match: $match\n"; } if (defined(my $match = $metaSymbol->try('something'))) { print "==> Meta match: $match\n"; }
External symbols can be of type string, regex or meta. They can be used agains a MarpaX::ESLIF::Recognizer or any external input.
string
regex
meta
A string pattern must follow ESLIF)s BNF, i.e. start and ends with:
'
"
“
”
A meta symbol must be a lexeme in the given external grammar.
MarpaX::ESLIF::Symbol allows to create external symbols on demand
Returns a symbol instance, noted $symbol later. %options is a hash that contains:
$symbol
%options
type
Value must be "string", "regex" or "meta". Required.
pattern
Value is the pattern content. Required for "string" and "regex" types.
encoding
Value is the pattern encoding. Optional for "string" and "regex" types.
modifiers
Value is a string containing modifiers. Optional for "string" and "regex" types.
It must follow the specification of the Terminals section of MarpaX::ESLIF::BNF:
---------------------------------------------------------------- Modifiers Explanation ---------------------------------------------------------------- e Unset back-references in the pattern will match to empty strings i Case-insensitive j \u, \U and \x and unset back-references will act as JavaScript standard m Multi-line regex n Enable Unicode properties and extend meaning of meta-characters s A dot meta-character in the pattern matches all characters, including newlines x Enable comments. This has some limitation due marpaESLIF semantics D A dollar meta-character matches only at the end of the subject string J Allow duplicate names for sub-patterns U Inverts the "greediness" of the quantifiers a Meta-characters will be limited to their ASCII equivalent u Forces support of large codepoints b Could mean "forced binary" mode c Could mean "forced unicode character" mode A Remove the systematic anchoring ----------------------------------------------------------------
Note that a string pattern accepts only the i and c modifiers.
i
c
grammar
Value is an external grammar. Required for "meta" type.
symbol
Value is a lexeme in the external grammar. Required for "meta" type.
Try to match the external symbol $symbol on $scalar, that can be anything. Return undef if failure, the matched string if success.
$scalar
undef
MarpaX::ESLIF, MarpaX::ESLIF::Recognizer
Jean-Damien Durand <jeandamiendurand@free.fr>
This software is copyright (c) 2017 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.
2 POD Errors
The following errors were encountered while parsing the POD:
'=item' outside of any '=over'
You forgot a '=back' before '=head2'
To install MarpaX::ESLIF, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MarpaX::ESLIF
CPAN shell
perl -MCPAN -e shell install MarpaX::ESLIF
For more information on module installation, please visit the detailed CPAN module installation guide.