![]() |
Home | Libraries | People | FAQ | More |
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
|