Module ast

Source
Expand description

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.

🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways, including in SemVer minor releases. In particular, the `DataProvider` implementations are only guaranteed to match with this version's `*_unstable` providers. Use with caution.

§Examples

use icu::plurals::provider::rules::reference::ast::*;
use icu::plurals::provider::rules::reference::parse_condition;

let input = "i = 1";

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

assert_eq!(
    ast,
    Condition(vec![AndCondition(vec![Relation {
        expression: Expression {
            operand: Operand::I,
            modulus: None,
        },
        operator: Operator::Eq,
        range_list: RangeList(vec![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.