Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext

Compound Attribute Rules

The notation will be for instance:

a: A, b: B --> (a >> b): tuple<A, B>

which reads as: given, a and b are parsers/generators, and A is the type of the attribute of a, and B is the type of the attribute of b, then the type of the attribute of a >> b will be tuple<A, B>.

Table 4. compound parser attribute types

Expression

Attribute

sequence (>>)

a: A, b: B --> (a >> b): tuple<A, B>
a: A, b: Unused --> (a >> b): A
a: Unused, b: B --> (a >> b): B
a: Unused, b: Unused --> (a >> b): Unused
a: A, b: A --> (a >> b): vector<A>

expect (>)

a: A, b: B --> (a > b): tuple<A, B>
a: A, b: Unused --> (a > b): A
a: Unused, b: B --> (a > b): B
a: Unused, b: Unused --> (a > b): Unused
a: A, b: A --> (a > b): vector<A>

alternative (|)

a: A, b: B --> (a | b): variant<A, B>
a: A, b: Unused --> (a | b): variant<Unused, A>
a: Unused, b: B --> (a | b): variant<Unused, B>
a: Unused, b: Unused --> (a | b): Unused
a: A, b: A --> (a | b): A

difference (-)

a: A, b: B --> (a - b): A

kleene (*)

a: A --> *a: vector<A>
a: Unused --> a: Unused

plus (+)

a: A --> +a: vector<A>
a: Unused --> a: Unused

list (%)

a: A, b: B --> (a % b): vector<A>
a: Unused, b: B --> (a % b): Unused

repetition

a: A --> repeat(...,...)[a]: vector<A>
a: Unused --> repeat(...,...)[a]: Unused

sequential or (||)

a: A, b: B --> (a || b): tuple<optional<A>, optional<B> >
a: A, b: Unused --> (a || b): optional<A>
a: Unused, b: B --> (a || b): optional<B>
a: Unused, b: Unused --> (a || b): Unused

optional (-)

a: A --> -a: optional<A>
a: Unused --> -a: Unused

and predicate (&)

a: A --> &a: Unused

not predicate (!)

a: A --> !a: Unused

permutation (^)

a: A, b: B --> (a ^ b): tuple<optional<A>, optional<B> >
a: A, b: Unused --> (a ^ b): optional<A>
a: Unused, b: B --> (a ^ b): optional<B>
a: Unused, b: Unused --> (a ^ b): Unused


PrevUpHomeNext