Parser combinators for expressions.
Parser combinators for expressions.
(*chain-left p op x)Parses zero or more occurrences of p, separated by op. Returns a value
obtained by a left associative application of all functions returned by op
to the values returned by p. If there are zero occurrences of p, the value
x is returned.
Parses _zero_ or more occurrences of `p`, separated by `op`. Returns a value obtained by a _left_ associative application of all functions returned by `op` to the values returned by `p`. If there are zero occurrences of `p`, the value `x` is returned.
(*chain-right p op x)Parses zero or more occurrences of p, separated by op. Returns a value
obtained by a right associative application of all functions returned by
op to the values returned by p. If there are no occurrences of p, the
value x is returned.
Parses _zero_ or more occurrences of `p`, separated by `op`. Returns a value obtained by a _right_ associative application of all functions returned by `op` to the values returned by `p`. If there are no occurrences of `p`, the value `x` is returned.
(+chain-left p op)Parses one or more occurrences of p, separated by op. Returns a value
obtained by a left associative application of all functions returned by op
to the values returned by p. This parser can for example be used to
eliminate left recursion which typically occurs in expression grammars.
(def mulop (p/alt (p/after (char/is \*) (p/result *))
(p/after (char/is \/) (p/result /))))
(def addop (p/alt (p/after (char/is \+) (p/result +))
(p/after (char/is \-) (p/result -))))
(def expr (+chain-left term addop))
(def term (+chain-left factor mulop))
(def factor (p/alt (parens expr) integer))
Parses _one_ or more occurrences of `p`, separated by `op`. Returns a value
obtained by a _left_ associative application of all functions returned by `op`
to the values returned by `p`. This parser can for example be used to
eliminate left recursion which typically occurs in expression grammars.
(def mulop (p/alt (p/after (char/is \*) (p/result *))
(p/after (char/is \/) (p/result /))))
(def addop (p/alt (p/after (char/is \+) (p/result +))
(p/after (char/is \-) (p/result -))))
(def expr (+chain-left term addop))
(def term (+chain-left factor mulop))
(def factor (p/alt (parens expr) integer))
(+chain-right p op)Parses one or more occurrences of p, separated by op. Returns a value
obtained by a right associative application of all functions returned by
op to the values returned by p.
Parses _one_ or more occurrences of `p`, separated by `op`. Returns a value obtained by a _right_ associative application of all functions returned by `op` to the values returned by `p`.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |