Ergo.Parser.track_parser
You're seeing just the function
track_parser
, go back to Ergo.Parser module for more information.
Link to this function
track_parser(ctx)
track_parser
first checks if the parser has already been tracked for the current input index and, if it has,
raises a CycleError
to indicate the parser is in a loop. Otherwise it adds the parser at the current index.
Examples
iex> alias Ergo.{Context, Parser} iex> import Ergo.{Terminals, Combinators} iex> parser = many(char(?H)) iex> context = ...> Context.new("Hello World") ...> |> Map.put(:parser, parser) ...> |> Parser.track_parser() iex> assert Context.parser_tracked?(context, parser.ref)