| Home | Libraries | People | FAQ | More

##### Parser Operators

Expression | Attribute | Description
--- | --- | ---
`!a` | `Unused` | Not predicate. If the predicate `a` matches, fail. Otherwise, return a zero length match.
`&a` | `Unused` | And predicate. If the predicate `a` matches, return a zero length match. Otherwise, fail.
`-a` | `optional<A>` | Optional. Parse `a` zero or one time
`*a` | `vector<A>` | Kleene. Parse `a` zero or more times
`+a` | `vector<A>` | Plus. Parse `a` one or more times
`a | b` | `variant<A, B>` | Alternative. Parse `a` or `b`
`a >> b` | `tuple<A, B>` | Sequence. Parse `a` followed by `b`
`a > b` | `tuple<A, B>` | Expect. Parse `a` followed by `b`. `b` is expected to match when `a` matches, otherwise, an `expectation_failure` is thrown.
`a - b` | `A` | Difference. Parse `a` but not `b`
`a || b` | `tuple<` `optional<A>,` `optional<B> >` | Sequential Or. Parse `a` or `b` or `a` followed by `b`
`a % b` | `vector<A>` | List. Parse `a` delimited `b` one or more times
`a ^ b` | `tuple<` `optional<A>,` `optional<B> >` | Permutation. Parse `a` or `b` or `a` followed by `b` or `b` followed by `a`.