MediaWiki
REL1_22
|
Helper class for converting rules to reverse polish notation (RPN). More...
Static Public Member Functions | |
static | convert ($rule) |
Convert a rule to RPN. | |
Public Attributes | |
int | $end |
The past-the-end position. | |
array | $operands = array() |
The operand stack. | |
array | $operators = array() |
The operator stack. | |
int | $pos |
The current position. | |
string | $rule |
The input string. | |
const | NUMBER_CLASS = '0123456789' |
Same for digits. | |
const | OPERAND_SYMBOLS = 'nivwft' |
A character list of symbolic operands. | |
const | WHITESPACE_CLASS = " \t\r\n" |
A character list defining whitespace, for use in strspn() etc. | |
const | WORD_REGEX = '/[a-zA-Z@]+/A' |
An anchored regular expression which matches a word at the current offset. | |
Static Public Attributes | |
static | $precedence |
Precedence levels. | |
Protected Member Functions | |
__construct ($rule) | |
Private constructor. | |
doConvert () | |
Do the operation. | |
doOperation ($op) | |
For the binary operator $op, pop its operands off the stack and push a fragment with rpn and type members describing the result of that operation. | |
error ($message) | |
Throw an error. | |
newNumber ($text, $pos) | |
Create a numerical expression object. | |
newOperator ($type, $pos, $length) | |
Create a binary operator. | |
nextToken () | |
Fetch the next token from the input string. |
Helper class for converting rules to reverse polish notation (RPN).
Definition at line 264 of file CLDRPluralRuleEvaluator.php.
CLDRPluralRuleConverter::__construct | ( | $ | rule | ) | [protected] |
Private constructor.
Definition at line 346 of file CLDRPluralRuleEvaluator.php.
static CLDRPluralRuleConverter::convert | ( | $ | rule | ) | [static] |
Convert a rule to RPN.
This is the only public entry point.
Definition at line 338 of file CLDRPluralRuleEvaluator.php.
References $parser, and $rule.
Referenced by CLDRPluralRuleEvaluator\compile().
CLDRPluralRuleConverter::doConvert | ( | ) | [protected] |
Do the operation.
Definition at line 355 of file CLDRPluralRuleEvaluator.php.
CLDRPluralRuleConverter::doOperation | ( | $ | op | ) | [protected] |
For the binary operator $op, pop its operands off the stack and push a fragment with rpn and type members describing the result of that operation.
Definition at line 508 of file CLDRPluralRuleEvaluator.php.
CLDRPluralRuleConverter::error | ( | $ | message | ) | [protected] |
Throw an error.
Definition at line 535 of file CLDRPluralRuleEvaluator.php.
Referenced by nextToken().
CLDRPluralRuleConverter::newNumber | ( | $ | text, |
$ | pos | ||
) | [protected] |
Create a numerical expression object.
Definition at line 521 of file CLDRPluralRuleEvaluator.php.
Referenced by nextToken().
CLDRPluralRuleConverter::newOperator | ( | $ | type, |
$ | pos, | ||
$ | length | ||
) | [protected] |
Create a binary operator.
Definition at line 528 of file CLDRPluralRuleEvaluator.php.
Referenced by nextToken().
CLDRPluralRuleConverter::nextToken | ( | ) | [protected] |
Fetch the next token from the input string.
Return it as a CLDRPluralRuleConverter_Fragment object.
Definition at line 413 of file CLDRPluralRuleEvaluator.php.
References error(), newNumber(), newOperator(), and rule().
int CLDRPluralRuleConverter::$end |
The past-the-end position.
Definition at line 281 of file CLDRPluralRuleEvaluator.php.
The operand stack.
Definition at line 293 of file CLDRPluralRuleEvaluator.php.
The operator stack.
Definition at line 287 of file CLDRPluralRuleEvaluator.php.
int CLDRPluralRuleConverter::$pos |
The current position.
Definition at line 275 of file CLDRPluralRuleEvaluator.php.
CLDRPluralRuleConverter::$precedence [static] |
array( 'or' => 2, 'and' => 3, 'is' => 4, 'is-not' => 4, 'in' => 4, 'not-in' => 4, 'within' => 4, 'not-within' => 4, 'mod' => 5, ',' => 6, '..' => 7, )
Precedence levels.
Note that there's no need to worry about associativity for the level 4 operators, since they return boolean and don't accept boolean inputs.
Definition at line 300 of file CLDRPluralRuleEvaluator.php.
string CLDRPluralRuleConverter::$rule |
The input string.
Definition at line 269 of file CLDRPluralRuleEvaluator.php.
Referenced by convert().
const CLDRPluralRuleConverter::NUMBER_CLASS = '0123456789' |
Same for digits.
Note that the grammar given in UTS #35 doesn't allow negative numbers or decimal separators.
Definition at line 323 of file CLDRPluralRuleEvaluator.php.
const CLDRPluralRuleConverter::OPERAND_SYMBOLS = 'nivwft' |
A character list of symbolic operands.
Definition at line 328 of file CLDRPluralRuleEvaluator.php.
const CLDRPluralRuleConverter::WHITESPACE_CLASS = " \t\r\n" |
A character list defining whitespace, for use in strspn() etc.
Definition at line 317 of file CLDRPluralRuleEvaluator.php.
const CLDRPluralRuleConverter::WORD_REGEX = '/[a-zA-Z@]+/A' |
An anchored regular expression which matches a word at the current offset.
Definition at line 333 of file CLDRPluralRuleEvaluator.php.