MediaWiki  REL1_22
CLDRPluralRuleConverter Class Reference

Helper class for converting rules to reverse polish notation (RPN). More...

Collaboration diagram for CLDRPluralRuleConverter:

List of all members.

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.

Detailed Description

Helper class for converting rules to reverse polish notation (RPN).

Definition at line 264 of file CLDRPluralRuleEvaluator.php.


Constructor & Destructor Documentation

CLDRPluralRuleConverter::__construct ( rule) [protected]

Private constructor.

Definition at line 346 of file CLDRPluralRuleEvaluator.php.


Member Function Documentation

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().

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().

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().


Member Data Documentation

int CLDRPluralRuleConverter::$end

The past-the-end position.

Definition at line 281 of file CLDRPluralRuleEvaluator.php.

array CLDRPluralRuleConverter::$operands = array()

The operand stack.

Definition at line 293 of file CLDRPluralRuleEvaluator.php.

array CLDRPluralRuleConverter::$operators = array()

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]
Initial value:
 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().

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.

A character list of symbolic operands.

Definition at line 328 of file CLDRPluralRuleEvaluator.php.

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.


The documentation for this class was generated from the following file: