Ergo.Combinators.many
You're seeing just the function
many
, go back to Ergo.Combinators module for more information.
Link to this function
many(parser, opts \\ [])
Examples
iex> alias Ergo.{Context, Combinators}
iex> context = Context.new("Hello World")
iex> parser = Combinators.many(Ergo.Terminals.wc())
iex> parser.(context)
%Context{status: :ok, ast: [?H, ?e, ?l, ?l, ?o], input: " World", index: 5, col: 6, char: ?o}
iex> alias Ergo.{Context, Terminals, Combinators}
iex> context = Context.new("Hello World")
iex> parser = Combinators.many(Terminals.wc(), min: 6)
iex> parser.(context)
%Context{status: {:error, :many_less_than_min}, ast: nil, input: " World", char: ?o, index: 5, col: 6}
iex> alias Ergo.{Context, Terminals, Combinators}
iex> context = Context.new("Hello World")
iex> parser = Combinators.many(Terminals.wc(), max: 3)
iex> parser.(context)
%Context{status: :ok, ast: [?H, ?e, ?l], input: "lo World", char: ?l, index: 3, col: 4}
iex> alias Ergo.{Context, Combinators}
iex> context = Context.new("Hello World")
iex> parser = Combinators.many(Ergo.Terminals.wc(), map: &Enum.count/1)
iex> parser.(context)
%Context{status: :ok, ast: 5, input: " World", index: 5, col: 6, char: ?o}