MarpaX::ESLIF::Grammar::Rule::Properties - ESLIF Grammar Rule Properties
version 2.0.39
use MarpaX::ESLIF; my $eslif = MarpaX::ESLIF->new(); my $data = do { local $/; <DATA> }; my $eslifGrammar = MarpaX::ESLIF::Grammar->new($eslif, $data); my $ruleProperties = $eslifGrammar->ruleProperties(0); my $rulePropertiesByLevel = $eslifGrammar->rulePropertiesByLevel(0, 0); __DATA__ # # This is an example of a calculator grammar # :start ::= Expression :default ::= action => do_op symbol-action => do_symbol free-action => do_free # Supported but useless :desc ::= 'Calculator' :discard ::= whitespaces event => discard_whitespaces$ :discard ::= comment event => discard_comment$ event ^Number = predicted Number event Number$ = completed Number Number ::= NUMBER action => ::shift event Expression$ = completed Expression event ^Expression = predicted Expression Expression ::= Number action => do_int | '(' Expression ')' assoc => group action => ::copy[1] || Expression '**' Expression assoc => right || Expression '*' Expression | Expression '/' Expression || Expression '+' Expression | Expression '-' Expression whitespaces ::= WHITESPACES comment ::= /(?:(?:(?:\/\/)(?:[^\n]*)(?:\n|\z))|(?:(?:\/\*)(?:(?:[^\*]+|\*(?!\/))*)(?:\*\/)))/u :lexeme ::= NUMBER pause => before event => ^NUMBER :lexeme ::= NUMBER pause => after event => NUMBER$ :desc ~ 'Calculator Tokens' NUMBER ~ /[\d]+/ name => 'NUMBER Lexeme' WHITESPACES ~ [\s]+ name => 'WHITESPACES Lexeme'
Returns Rule's id (always >= 0)
Returns Rule's description (auto-generated if there is not "name" keyword in the grammar)
Returns Rule's show
Returns Rule's LHS symbol id (always >= 0)
Returns Rule's separator symbol id (< 0 if the rule is not a sequence)
Returns Rule's RHS ids (none for a null rule)
Returns Rule's exception id (< 0 if there is no exception)
Returns Rule's action (null if none)
Returns Rule's discard event name (only when LHS is ":discard" and "event" keyword is present)
Returns Rule's discard initial state is on ?
Alias to isDiscardEventInitialState()
Returns Rule's rank (defaults to 0)
Returns Rule rank high when it is a nullable ?
Alias to isNullRanksHigh()
Returns Rule is a sequence ?
Alias to isSequence()
Returns Rule's separation is proper ? (meaningful only when it is sequence)
Alias to isProper()
Returns Rule's minimum number of RHS (meaningful only when rule is a sequence)
Returns Rule is internal ? (possible only when there is the loosen operator "||")
Alias to isInternal()
Returns Rule's low-level property bits (combination of MarpaX::ESLIF::Grammar::Rule::PropertyBitSet values)
Returns Hide separator in action callback ? (meaningful only when rule is a sequence)
Alias to isHideseparator()
ESLIF Grammar Rule Properties.
Calls to grammar's currentRuleProperties() or rulePropertiesByLevel() methods outputs an instance of this class.
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.
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.