NAME
MarpaX::ESLIF - ESLIF is Extended ScanLess InterFace
VERSION
version 3.0.30
SYNOPSIS
use MarpaX::ESLIF;
my $eslif = MarpaX::ESLIF->new();
printf "ESLIF library version: %s\n", $eslif->version;
With a logger, using Log::Any::Adapter::Stderr as an example:
use MarpaX::ESLIF;
use Log::Any qw/$log/;
use Log::Any::Adapter ('Stderr', log_level => 'trace' );
my $eslif = MarpaX::ESLIF->new($log);
printf "ESLIF library version: %s\n", $eslif->version;
This class and its derivatives are thread-safe. Although there can be many ESLIF instances, in practice a single instance is enough, unless you want different logging interfaces. This is why the new
method is implemented as a multiton. Once a MarpaX::ESLIF instance is created, the user should create a MarpaX::ESLIF::Grammar instance to have a working grammar.
DESCRIPTION
ESLIF is derived from perl's Marpa::R2, and has its own BNF, documented in MarpaX::ESLIF::BNF.
The main features of this BNF are:
- Sub-grammars
-
The number of sub grammars is unlimited.
- Regular expressions
-
Native support of regular expression using the PCRE2 library (i.e. this is <not> exactly perl regexps, although very closed).
- Streaming
-
Native support of streaming input.
Beginners might want to look at MarpaX::ESLIF::Introduction.
METHODS
MarpaX::ESLIF->new($loggerInterface)
my $loggerInterface = My::Logger::Interface->new();
my $eslif = MarpaX::ESLIF->new();
Returns an instance of MarpaX::ESLIF, noted $eslif
below.
$loggerInterface
is an optional parameter that, when its exists, must be an object instance that can do the methods documented in MarpaX::ESLIF::Logger::Interface, or undef
.
An example of logging implementation can be a Log::Any adapter.
MarpaX::ESLIF->getInstance($loggerInterface)
Alias to new
.
$eslif->version()
printf "ESLIF library version: %s\n", $eslif->version;
Returns a string containing the current underlying ESLIF library version.
NOTES
The perl interface is an all-in-one version of marpaESLIF library, which means that character conversion is using iconv
(or iconv
-like on Windows) instead of ICU, even if the later is available on your system.
BOOLEAN TYPE
ESLIF has a boolean type, perl has not. In order to not reinvent the wheel, the widely JSON's Perl's boolean utilities via JSON::MaybeXS wrapper are used, i.e.:
- true
-
A true value. You may localize
$MarpaX::ESLIF::true
before using ESLIF to change it.Defaults to
JSON::MaybeXS::true()
. - false
-
A false value. You may localize
$MarpaX::ESLIF::false
before using ESLIF to change it.Defaults to
JSON::MaybeXS::false()
. - is_bool($value)
-
Returns a true value if
$value
is a boolean. You may localizeMarpaX::ESLIF::is_bool()
function before using ESLIF to change it. ESLIF always requires at least that$value
is an object, object nature then defaults toJSON::MaybeXS::is_bool($value)
INTEGER TYPE
ESLIF consider scalars that have only the internal IV flag.
FLOAT TYPE
ESLIF consider scalars that have only the internal NV flag.
STRING TYPE
ESLIF consider scalars that have only the internal PV flag.
SEE ALSO
MarpaX::ESLIF::Introduction, PCRE2, MarpaX::ESLIF::BNF, MarpaX::ESLIF::Logger::Interface, MarpaX::ESLIF::Grammar, MarpaX::ESLIF::Recognizer, Types::Standard, JSON::MaybeXS.
AUTHOR
Jean-Damien Durand <jeandamiendurand@free.fr>
COPYRIGHT AND LICENSE
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.