NAME

MarpaX::ESLIF::Value::Interface - MarpaX::ESLIF's value interface

VERSION

version 6.0.33.1

DESCRIPTION

Value interface is a list of methods that are required by MarpaX::ESLIF at run-time to perform valuation. It has to be an object instance, referenced with $valueInterface below.

METHODS

$valueInterface->isWithHighRankOnly()

Returns the rank order preference.

When the interface returns true, only the choices with the highest rank are kept. This method is used at valuation instance creation step only.

$valueInterface->isWithOrderByRank()

Returns the rank order preference.

Orders the parse tree values by their rank value. This method is used at valuation instance creation step only.

$valueInterface->isWithAmbiguous()

Returns the ambiguity acceptance.

Accept ambiguous parse tree. This method is used at valuation instance creation step only.

$valueInterface->isWithNull()

Returns the null acceptance.

Accept a null parse tree value (e.g. when the start rule is not complete). This method is used at valuation instance creation step only.

$valueInterface->maxParses()

Returns the maximum number of wanted parses, 0 for all parse trees.

A very ambiguous parsing can provide a lot of parse tree values, it is possible to reduce such number, at the cost of not having all the valuation possibilities. This method is used at valuation instance creation step only.

$valueInterface->setResult($result)

Store the parsing result.

When valuation is successful, marpaESLIF is using this callback.

$valueInterface->getResult()

Returns the parsing result.

marpaESLIF is not using this method per-se, but it is nevertheless required to ensure the interface coherency v.s. the getResult() required method.

LOCALIZED VARIABLES

At each symbol or rule callback, the following values are localized:

$MarpaX::ESLIF::Context::symbolName

Symbol name in case of a symbol callback, undef otherwise.

$MarpaX::ESLIF::Context::symbolNumber

Symbol number in case of a symbol callback, undef otherwise.

$MarpaX::ESLIF::Context::ruleName

Rule name in case of a rule callback, undef otherwise.

$MarpaX::ESLIF::Context::ruleNumber

Rule number in case of a rule callback, undef otherwise.

$MarpaX::ESLIF::Context::grammar

Grammar instance.

OPTIONAL METHODS SINCE VERSION 2.0.15

$valueInterface->setSymbolName($symbolName)

Stores symbol name. Always set in case of a symbol callback, undef otherwise.

$valueInterface->setSymbolNumber($symbolNumber)

Stores symbol number. Always set in case of a symbol callback, undef otherwise.

$valueInterface->setRuleName($ruleName)

Stores rule name. Always set in case of a rule callback, undef otherwise.

$valueInterface->setRuleNumber($ruleNumber)

Stores rule number. Always set in case of a rule callback, undef otherwise.

$valueInterface->setGrammar($grammar)

Stores grammar instance.

OPTIONAL METHODS SINCE VERSION 6.0.30

$valueInterface->resolver($action)

This method is not required, and only necessary if you want to use callbacks without polluting a package stash.

Value callbacks to perl are are resolved this way:

  • If the resolved method exist, it is used to get the callback for a given action $action.

  • If the return value of the resolver is a code reference, it is used. Else it will be assumed that the callback is available in package's stash.

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.