View Source Minipeg.Parser (Minipeg v0.7.5)
A struct containung a parser function and a name
Summary
Functions
Create a new struct
Parses an input of type Input.t
(and potentially a cache) with a given parser and returns a result of type Success.t
or Failure.t
A convenience function wrapping parse
such as we can use a string as input and get and
{:ok, ast} | {:error, reason}
tuple response
Another convenience function, unwrapping an :ok
result of parse_string
and
raising a Minipeg.Error
otherwise
Types
@type ast_list_t() :: [ast_t()]
@type ast_t() :: any()
@type atoms() :: [atom()]
@type binaries() :: [binary()]
@type either(success_t, error_t) :: {:ok, success_t} | {:error, error_t}
@type input_t() :: binary() | [binary()] | Minipeg.Input.t()
@type maybe(t) :: nil | t
@type parser_function_t() :: (Minipeg.Input.t(), Minipeg.Cache.t(), binary() -> result_t())
@type position_t() :: {pos_integer(), pos_integer()}
@type result_t() :: Minipeg.Failure.t() | Minipeg.Ignore.t() | Minipeg.Success.t()
@type result_tuple_t(ast_t) :: {:ok, ast_t} | {:error, binary()}
@type satisfier_t() :: (any() -> satisfier_result_t())
@type str_or_count_t() :: binary() | non_neg_integer()
@type t() :: %Minipeg.Parser{name: binary(), parser_function: parser_function_t()}
@type token_comp_t() :: [token1_comp_t()]
@type token_spec_t() :: [token1_spec_t()]
Functions
@spec new(binary(), parser_function_t()) :: t()
Create a new struct
@spec parse(t(), Minipeg.Input.t(), Minipeg.Cache.t()) :: result_t()
Parses an input of type Input.t
(and potentially a cache) with a given parser and returns a result of type Success.t
or Failure.t
iex(1)> case parse(char_parser("a"), Input.new("abc")) do
...(1)> %Success{ast: ast, rest: %Input{input: rest}} -> {ast, rest}
...(1)> end
{"a", "bc"}
iex(2)> case parse(char_parser("a"), Input.new("")) do
...(2)> %Failure{reason: reason} -> reason
...(2)> end
"encountered end of input"
@spec parse_string(t(), binary()) :: result_tuple_t(any())
A convenience function wrapping parse
such as we can use a string as input and get and
{:ok, ast} | {:error, reason}
tuple response
iex(3)> parse_string(char_parser("a"), "abc")
{:ok, "a"}
iex(4)> parse_string(char_parser("a"), "")
{:error, "encountered end of input (in char_parser(\"a\")) in <binary>:1,1"}
Another convenience function, unwrapping an :ok
result of parse_string
and
raising a Minipeg.Error
otherwise
iex(5)> parse_string!(char_parser("a"), "abc")
"a"
iex(6)> assert_raise(Error, fn -> parse_string!(char_parser("a"), "") end)