NAME

MarpaX::ESLIF::Grammar::Rule::Properties - ESLIF Grammar Rule Properties

VERSION

version 3.0.17

SYNOPSIS

  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'

$self->getId

Returns Rule's id (always >= 0)

$self->getDescription

Returns Rule's description (auto-generated if there is not "name" keyword in the grammar)

$self->getShow

Returns Rule's show

$self->getLhsId

Returns Rule's LHS symbol id (always >= 0)

$self->getSeparatorId

Returns Rule's separator symbol id (< 0 if the rule is not a sequence)

$self->getRhsIds

Returns Rule's RHS ids (none for a null rule or a sequence)

$self->getSkipIndices

Returns Rule's RHS skip indices (none for a null rule)

$self->getExceptionId

Returns Rule's exception id (< 0 if there is no exception)

$self->getAction

Returns Rule's action (null if none)

$self->getDiscardEvent

Returns Rule's discard event name (only when LHS is ":discard" and "event" keyword is present)

$self->isDiscardEventInitialState

Returns Rule's discard initial state is on ?

$self->getDiscardEventInitialState

Returns Rule's discard initial state is on ?

Alias to isDiscardEventInitialState()

$self->getRank

Returns Rule's rank (defaults to 0)

$self->isNullRanksHigh

Returns Rule rank high when it is a nullable ?

$self->getNullRanksHigh

Returns Rule rank high when it is a nullable ?

Alias to isNullRanksHigh()

$self->isSequence

Returns Rule is a sequence ?

$self->getSequence

Returns Rule is a sequence ?

Alias to isSequence()

$self->isProper

Returns Rule's separation is proper ? (meaningful only when it is sequence)

$self->getProper

Returns Rule's separation is proper ? (meaningful only when it is sequence)

Alias to isProper()

$self->getMinimum

Returns Rule's minimum number of RHS (meaningful only when rule is a sequence)

$self->isInternal

Returns Rule is internal ? (possible only when there is the loosen operator "||")

$self->getInternal

Returns Rule is internal ? (possible only when there is the loosen operator "||")

Alias to isInternal()

$self->getPropertyBitSet

Returns Rule's low-level property bits (combination of MarpaX::ESLIF::Grammar::Rule::PropertyBitSet values)

$self->isHideseparator

Returns Hide separator in action callback ? (meaningful only when rule is a sequence)

$self->getHideseparator

Returns Hide separator in action callback ? (meaningful only when rule is a sequence)

Alias to isHideseparator()

DESCRIPTION

ESLIF Grammar Rule Properties.

Calls to grammar's currentRuleProperties() or rulePropertiesByLevel() methods outputs an instance of this class.

SEE ALSO

MarpaX::ESLIF::Rule::PropertyBitSet

1;

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.