[][src]Module icu::plurals::rules::ast

AST provides a set of Syntax Tree Nodes used to store the output of parse method that is used in test_condition method to evaluate whether a given PluralCategory should be used.

Examples

use icu_plurals::rules::parse_condition;
use icu_plurals::rules::ast::*;

let input = "i = 1";

let ast = parse_condition(input.as_bytes())
    .expect("Parsing failed.");

assert_eq!(ast, Condition(Box::new([
    AndCondition(Box::new([
        Relation {
            expression: Expression {
                operand: Operand::I,
                modulus: None,
            },
            operator: Operator::Eq,
            range_list: RangeList(Box::new([
                RangeListItem::Value(
                    Value(1)
                )
            ]))
        }
    ]))
])));

Structs

AndCondition

An incomplete AST representation of a plural rule. Comprises a vector of Relations.

Condition

A complete AST representation of a plural rule's condition. Comprises a vector of AndConditions.

DecimalValue

A decimal value used in samples.

Expression

An incomplete AST representation of a plural rule. Comprises an Operand and an optional Modulo.

RangeList

An incomplete AST representation of a plural rule. Comprises a vector of RangeListItems.

Relation

An incomplete AST representation of a plural rule. Comprises an Expression, an Operator, and a RangeList.

Rule

A complete AST representation of a plural rule. Comprises a vector of AndConditions and optionally a set of Samples.

SampleList

A list of values used in samples.

SampleRange

A value range used in samples.

Samples

A sample of example values that match the given rule.

Value

An incomplete AST representation of a plural rule, representing one integer.

Enums

Operand

An incomplete AST representation of a plural rule. Comprises a char.

Operator

An enum of Relation operators for plural rules.

RangeListItem

An enum of items that appear in a RangeList: Range or a Value.