MediaWiki  REL1_24
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.

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.

Static Private Attributes

static $precedence
 Precedence levels.

Detailed Description

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

Definition at line 15 of file CLDRPluralRuleConverter.php.


Constructor & Destructor Documentation

CLDRPluralRuleConverter::__construct ( rule) [protected]

Private constructor.

Parameters:
string$rule

Definition at line 102 of file CLDRPluralRuleConverter.php.

References $rule.


Member Function Documentation

static CLDRPluralRuleConverter::convert ( rule) [static]

Convert a rule to RPN.

This is the only public entry point.

Parameters:
string$ruleThe rule to convert
Returns:
string The RPN representation of the rule

Definition at line 92 of file CLDRPluralRuleConverter.php.

Referenced by CLDRPluralRuleEvaluator\compile().

Do the operation.

Returns:
string The RPN representation of the rule (e.g. "5 3 mod n is")

Definition at line 113 of file CLDRPluralRuleConverter.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.

Parameters:
CLDRPluralRuleConverterOperator$op

Definition at line 277 of file CLDRPluralRuleConverter.php.

CLDRPluralRuleConverter::error ( message) [protected]

Throw an error.

Parameters:
string$message

Definition at line 314 of file CLDRPluralRuleConverter.php.

CLDRPluralRuleConverter::newNumber ( text,
pos 
) [protected]

Create a numerical expression object.

Parameters:
string$text
int$pos
Returns:
CLDRPluralRuleConverterExpression The numerical expression

Definition at line 294 of file CLDRPluralRuleConverter.php.

CLDRPluralRuleConverter::newOperator ( type,
pos,
length 
) [protected]

Create a binary operator.

Parameters:
string$type
int$pos
int$length
Returns:
CLDRPluralRuleConverterOperator The operator

Definition at line 306 of file CLDRPluralRuleConverter.php.

Fetch the next token from the input string.

Returns:
CLDRPluralRuleConverterFragment The next token

Definition at line 173 of file CLDRPluralRuleConverter.php.


Member Data Documentation

int CLDRPluralRuleConverter::$end

The past-the-end position.

Definition at line 32 of file CLDRPluralRuleConverter.php.

array CLDRPluralRuleConverter::$operands = array()

The operand stack.

Definition at line 44 of file CLDRPluralRuleConverter.php.

array CLDRPluralRuleConverter::$operators = array()

The operator stack.

Definition at line 38 of file CLDRPluralRuleConverter.php.

int CLDRPluralRuleConverter::$pos

The current position.

Definition at line 26 of file CLDRPluralRuleConverter.php.

CLDRPluralRuleConverter::$precedence [static, private]
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 51 of file CLDRPluralRuleConverter.php.

string CLDRPluralRuleConverter::$rule

The input string.

Definition at line 20 of file CLDRPluralRuleConverter.php.

Referenced by __construct().

Same for digits.

Note that the grammar given in UTS #35 doesn't allow negative numbers or decimal separators.

Definition at line 74 of file CLDRPluralRuleConverter.php.

A character list of symbolic operands.

Definition at line 79 of file CLDRPluralRuleConverter.php.

A character list defining whitespace, for use in strspn() etc.

Definition at line 68 of file CLDRPluralRuleConverter.php.

const CLDRPluralRuleConverter::WORD_REGEX = '/[a-zA-Z@]+/A'

An anchored regular expression which matches a word at the current offset.

Definition at line 84 of file CLDRPluralRuleConverter.php.


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