View Source Minipeg.Parsers (Minipeg v0.2.7)
A collection of basic parsers
Summary
Functions
Parses a character iff it matches the given char_class
. The legal values for char_class
are the POSIX class names which are also
described in the docs of the Regex
module, here are the currently supported values
Parses any character in the specified set, defaulting to all characters
Parser that only succeeds on empty input / end of input
parses an escape char and then any char
This parser always fails
Succeeds if any of the given keywords parse
Parses only an exact occurrance of the literal
string
Parses any character but delimiter, unless it is escpaed by escape_char
or
doubled in case allow_doubles
is true.
Parses any char with the exception of chars in the forbidden
set
parses only if parser parses a string with a prefix that is discarded
Parses a character iff it matches the given char_class
. The legal values for char_class
are the POSIX class names which are also
described in the docs of the Regex
module, here are the currently supported values
A classic string parser which parses input like
This parser always succeeds. N.B. It does not advance the input
parses a string up to the first char in charset
fails iff less then min_count
chars are parsed.
If a character from `charset is encountered it is removed from the input stream, but is not returned in the ast.
Parses a sequence of at least min_count
whitespaces.
min_count
defaults to 0
Types
@type ast_list_t() :: [ast_t()]
@type ast_t() :: any()
@type binaries() :: [binary()]
@type char_class_t() ::
:alnum
| :alpha
| :blank
| :cntrl
| :digit
| :graph
| :lower
| :print
| :punct
| :space
| :upper
| :word
| :xdigit
@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 result_t() :: Minipeg.Failure.t() | Minipeg.Success.t()
@type satisfier_t() :: (any() -> satisfier_result_t())
@type str_or_count_t() :: binary() | non_neg_integer()
Functions
@spec char_class_parser(char_class_t(), binary?()) :: Minipeg.Parser.t()
Parses a character iff it matches the given char_class
. The legal values for char_class
are the POSIX class names which are also
described in the docs of the Regex
module, here are the currently supported values:
:alnum | :alpha | :blank | :cntrl | :digit | :graph | :lower | :print | :punct | :space | :upper | :word | :xdigit
@spec char_parser(maybe(binary() | list()), binary?()) :: Minipeg.Parser.t()
Parses any character in the specified set, defaulting to all characters
Succeeds if next char in input is in the specified set Fails if input is empty or next char is not in the specified set
delimited_string_parser(delimiter, escape_char \\ "\\", allow_double_escapes \\ true, name \\ nil)
View Source@spec delimited_string_parser(binary(), binary(), boolean(), binary?()) :: Minipeg.Parser.t()
@spec end_parser(binary?()) :: Minipeg.Parser.t()
Parser that only succeeds on empty input / end of input
@spec escaped_char_parser(binary?(), binary?()) :: Minipeg.Parser.t()
parses an escape char and then any char
@spec failure_parser(binary?(), binary?()) :: Minipeg.Parser.t()
This parser always fails
@spec int_parser(binary?()) :: Minipeg.Parser.t()
@spec keywords_parser([binary()], binary?()) :: Minipeg.Parser.t()
Succeeds if any of the given keywords parse
@spec literal_parser(binary(), binary?()) :: Minipeg.Parser.t()
Parses only an exact occurrance of the literal
string
maybe_escaped_char_parser(delimiter, escape_char \\ "\\", allow_doubles \\ true, name \\ nil)
View Source@spec maybe_escaped_char_parser(binary(), binary(), boolean(), binary?()) :: Minipeg.Parser.t()
Parses any character but delimiter, unless it is escpaed by escape_char
or
doubled in case allow_doubles
is true.
@spec not_char_parser(char_set_t(), binary?()) :: Minipeg.Parser.t()
Parses any char with the exception of chars in the forbidden
set
@spec prefixed_parser(char_set_t(), Minipeg.Parser.t(), binary?()) :: Minipeg.Parser.t()
parses only if parser parses a string with a prefix that is discarded
@spec regex_parser(binary() | Regex.t(), binary?()) :: Minipeg.Parser.t()
Parses a character iff it matches the given char_class
. The legal values for char_class
are the POSIX class names which are also
described in the docs of the Regex
module, here are the currently supported values:
:alnum | :alpha | :blank | :cntrl | :digit | :graph | :lower | :print | :punct | :space | :upper | :word | :xdigit
string_parser(paren_chars \\ ["\"", "'"], escape_char \\ "\\", allow_double_escapes \\ true, name \\ nil)
View Source@spec string_parser(char_set_t(), binary?(), boolean(), binary?()) :: Minipeg.Parser.t()
A classic string parser which parses input like
""
'"a\\'b"c'
"ab""c"
but not
'ab
"abc'
"ad"e
(e not parsed)
@spec success_parser(ast_t(), binary?()) :: Minipeg.Parser.t()
This parser always succeeds. N.B. It does not advance the input
@spec unsigned_int_parser(binary?()) :: Minipeg.Parser.t()
@spec upto_parser(char_set_t(), non_neg_integer(), binary?()) :: Minipeg.Parser.t()
parses a string up to the first char in charset
fails iff less then min_count
chars are parsed.
If a character from `charset is encountered it is removed from the input stream, but is not returned in the ast.
@spec ws_parser(boolean(), non_neg_integer(), binary?()) :: Minipeg.Parser.t()
Parses a sequence of at least min_count
whitespaces.
min_count
defaults to 0