Scanners
This component provides core functionality for lexical parsers.
See its subclasses scala.util.parsing.combinator.lexical.Lexical and -- most interestingly scala.util.parsing.combinator.lexical.StdLexical, for more functionality.
Type members
Classlikes
Scanner
is essentially¹ a parser that produces Token
s
from a stream of characters. The tokens it produces are typically
passed to parsers in TokenParsers
.
Scanner
is essentially¹ a parser that produces Token
s
from a stream of characters. The tokens it produces are typically
passed to parsers in TokenParsers
.
- Note:
¹
Scanner
is really aReader
ofToken
s
Inherited classlikes
The fatal failure case of ParseResult: contains an error-message and
the remaining input.
No back-tracking is done when a parser returns an Error
.
The fatal failure case of ParseResult: contains an error-message and
the remaining input.
No back-tracking is done when a parser returns an Error
.
- Value parameters:
- msg
An error message string describing the error.
- next
The parser's unconsumed input at the point where the error occurred.
- Inherited from:
- Parsers
The failure case of ParseResult
: contains an error-message and the remaining input.
Parsing will back-track when a failure occurs.
The failure case of ParseResult
: contains an error-message and the remaining input.
Parsing will back-track when a failure occurs.
- Value parameters:
- msg
An error message string describing the failure.
- next
The parser's unconsumed input at the point where the failure occurred.
- Inherited from:
- Parsers
A common super-class for unsuccessful parse results.
A common super-class for unsuccessful parse results.
- Inherited from:
- Parsers
An extractor so NoSuccess(msg, next)
can be used in matches.
An extractor so NoSuccess(msg, next)
can be used in matches.
- Inherited from:
- Parsers
A parser whose ~
combinator disallows back-tracking.
A parser whose ~
combinator disallows back-tracking.
- Inherited from:
- Parsers
A base class for parser results. A result is either successful or not
(failure may be fatal, i.e., an Error, or not, i.e., a Failure). On
success, provides a result of type T
which consists of some result
(and the rest of the input).
A base class for parser results. A result is either successful or not
(failure may be fatal, i.e., an Error, or not, i.e., a Failure). On
success, provides a result of type T
which consists of some result
(and the rest of the input).
- Inherited from:
- Parsers
The root class of parsers. Parsers are functions from the Input type to ParseResult.
The root class of parsers. Parsers are functions from the Input type to ParseResult.
- Inherited from:
- Parsers
The success case of ParseResult
: contains the result and the remaining input.
The success case of ParseResult
: contains the result and the remaining input.
- Value parameters:
- next
The parser's remaining input
- result
The parser's output
- Inherited from:
- Parsers
A wrapper over sequence of matches.
A wrapper over sequence of matches.
Given p1: Parser[A]
and p2: Parser[B]
, a parser composed with
p1 ~ p2
will have type Parser[~[A, B]]
. The successful result
of the parser can be extracted from this case class.
It also enables pattern matching, so something like this is possible:
def concat(p1: Parser[String], p2: Parser[String]): Parser[String] =
p1 ~ p2 ^^ { case a ~ b => a + b }
- Inherited from:
- Parsers
Inherited types
Value members
Abstract methods
This token is produced by a scanner Scanner
when scanning failed.
This token is produced by a scanner Scanner
when scanning failed.
A parser that produces a token (from a stream of characters).
A parser that produces a token (from a stream of characters).
Inherited methods
The parser that matches an element in the domain of the partial function f
.
The parser that matches an element in the domain of the partial function f
.
If f
is defined on the first element in the input, f
is applied
to it to produce this parser's result.
Example: The parser accept("name", {case Identifier(n) => Name(n)})
accepts an Identifier(n)
and returns a Name(n)
- Value parameters:
- expected
a description of the kind of element this parser expects (for error messages)
- f
a partial function that determines when this parser is successful and what its output is
- Returns:
A parser that succeeds if
f
is applicable to the first element of the input, applyingf
to it to produce the result.- Inherited from:
- Parsers
A parser that matches only the given list of element es
.
A parser that matches only the given list of element es
.
accept(es)
succeeds if the input subsequently provides the elements in the list es
.
- Value parameters:
- es
the list of expected elements
- Returns:
a Parser that recognizes a specified list of elements
- Inherited from:
- Parsers
A parser matching input elements that satisfy a given predicate.
A parser matching input elements that satisfy a given predicate.
acceptIf(p)(el => "Unexpected "+el)
succeeds if the input starts with an element e
for which p(e)
is true.
- Value parameters:
- err
A function from the received element into an error message.
- p
A predicate that determines which elements match.
- Returns:
A parser for elements satisfying p(e).
- Inherited from:
- Parsers
The parser that matches an element in the domain of the partial function f
.
The parser that matches an element in the domain of the partial function f
.
If f
is defined on the first element in the input, f
is applied
to it to produce this parser's result.
Example: The parser acceptMatch("name", {case Identifier(n) => Name(n)})
accepts an Identifier(n)
and returns a Name(n)
- Value parameters:
- expected
a description of the kind of element this parser expects (for error messages)
- f
a partial function that determines when this parser is successful and what its output is
- Returns:
A parser that succeeds if
f
is applicable to the first element of the input, applyingf
to it to produce the result.- Inherited from:
- Parsers
A parser that matches only the given scala.collection.Iterable collection of elements es
.
A parser that matches only the given scala.collection.Iterable collection of elements es
.
acceptSeq(es)
succeeds if the input subsequently provides the elements in the iterable es
.
- Value parameters:
- es
the list of expected elements
- Returns:
a Parser that recognizes a specified list of elements
- Inherited from:
- Parsers
A parser generator that, roughly, generalises the rep1sep
generator
so that q
, which parses the separator, produces a left-associative
function that combines the elements it separates.
A parser generator that, roughly, generalises the rep1sep
generator
so that q
, which parses the separator, produces a left-associative
function that combines the elements it separates.
- Value parameters:
- first
a parser that parses the first element
- p
a parser that parses the subsequent elements
- q
a parser that parses the token(s) separating the elements, yielding a left-associative function that combines two elements into one
- Inherited from:
- Parsers
A parser generator that, roughly, generalises the rep1sep generator so
that q
, which parses the separator, produces a left-associative
function that combines the elements it separates.
A parser generator that, roughly, generalises the rep1sep generator so
that q
, which parses the separator, produces a left-associative
function that combines the elements it separates.
''From: J. Fokker. Functional parsers. In J. Jeuring and E. Meijer, editors, Advanced Functional Programming, volume 925 of Lecture Notes in Computer Science, pages 1--23. Springer, 1995.''
- Value parameters:
- p
a parser that parses the elements
- q
a parser that parses the token(s) separating the elements, yielding a left-associative function that combines two elements into one
- Inherited from:
- Parsers
A parser generator that generalises the rep1sep
generator so that q
,
which parses the separator, produces a right-associative function that
combines the elements it separates. Additionally, the right-most (last)
element and the left-most combining function have to be supplied.
A parser generator that generalises the rep1sep
generator so that q
,
which parses the separator, produces a right-associative function that
combines the elements it separates. Additionally, the right-most (last)
element and the left-most combining function have to be supplied.
rep1sep(p: Parser[T], q) corresponds to chainr1(p, q ^^ cons, cons, Nil) (where val cons = (x: T, y: List[T]) => x :: y)
- Value parameters:
- combine
the "last" (left-most) combination function to be applied
- first
the "first" (right-most) element to be combined
- p
a parser that parses the elements
- q
a parser that parses the token(s) separating the elements, yielding a right-associative function that combines two elements into one
- Inherited from:
- Parsers
Wrap a parser so that its failures become errors (the |
combinator
will give up as soon as it encounters an error, on failure it simply
tries the next alternative).
Wrap a parser so that its failures become errors (the |
combinator
will give up as soon as it encounters an error, on failure it simply
tries the next alternative).
- Inherited from:
- Parsers
A parser that matches only the given element e
.
A parser that matches only the given element e
.
elem(e)
succeeds if the input starts with an element e
.
- Value parameters:
- e
the
Elem
that must be the next piece of input for the returned parser to succeed
- Returns:
a
Parser
that succeeds ife
is the next available input (and returns it).- Inherited from:
- Parsers
A parser matching input elements that satisfy a given predicate.
A parser matching input elements that satisfy a given predicate.
elem(kind, p)
succeeds if the input starts with an element e
for which p(e)
is true.
- Value parameters:
- kind
The element kind, used for error messages
- p
A predicate that determines which elements match.
- Inherited from:
- Parsers
A parser that results in an error.
A parser that results in an error.
- Value parameters:
- msg
The error message describing the failure.
- Returns:
A parser that always fails with the specified error message.
- Inherited from:
- Parsers
A parser that always fails.
A parser that always fails.
- Value parameters:
- msg
The error message describing the failure.
- Returns:
A parser that always fails with the specified error message.
- Inherited from:
- Parsers
A parser generator for guard expressions. The resulting parser will fail or succeed just like the one given as parameter but it will not consume any input.
A parser generator for guard expressions. The resulting parser will fail or succeed just like the one given as parameter but it will not consume any input.
- Value parameters:
- p
a
Parser
that is to be applied to the input
- Returns:
A parser that returns success if and only if
p
succeeds but never consumes any input- Inherited from:
- Parsers
A helper method that turns a Parser
into one that will
print debugging information to stdout before and after
being applied.
A helper method that turns a Parser
into one that will
print debugging information to stdout before and after
being applied.
- Inherited from:
- Parsers
Given a concatenation with a repetition (list), move the concatenated element into the list
Given a concatenation with a repetition (list), move the concatenated element into the list
- Inherited from:
- Parsers
Wrap a parser so that its failures and errors become success and vice versa -- it never consumes any input.
Wrap a parser so that its failures and errors become success and vice versa -- it never consumes any input.
- Inherited from:
- Parsers
A parser generator for optional sub-phrases.
A parser generator for optional sub-phrases.
opt(p)
is a parser that returns Some(x)
if p
returns x
and None
if p
fails.
- Value parameters:
- p
A
Parser
that is tried on the input
- Returns:
a
Parser
that always succeeds: either with the result provided byp
or with the empty result- Inherited from:
- Parsers
A parser generator delimiting whole phrases (i.e. programs).
A parser generator delimiting whole phrases (i.e. programs).
phrase(p)
succeeds if p
succeeds and no input is left over after p
.
- Value parameters:
- p
the parser that must consume all input for the resulting parser to succeed.
- Returns:
a parser that has the same result as
p
, but that only succeeds ifp
consumed all the input.- Inherited from:
- Parsers
positioned
decorates a parser's result with the start position of the
input it consumed.
positioned
decorates a parser's result with the start position of the
input it consumed.
- Value parameters:
- p
a
Parser
whose result conforms toPositional
.
- Returns:
A parser that has the same behaviour as
p
, but which marks its result with the start position of the input it consumed, if it didn't already have a position.- Inherited from:
- Parsers
A parser generator for repetitions.
A parser generator for repetitions.
rep(p)
repeatedly uses p
to parse the input until p
fails
(the result is a List of the consecutive results of p
).
- Value parameters:
- p
a
Parser
that is to be applied successively to the input
- Returns:
A parser that returns a list of results produced by repeatedly applying
p
to the input.- Inherited from:
- Parsers
A parser generator for non-empty repetitions.
A parser generator for non-empty repetitions.
rep1(f, p)
first uses f
(which must succeed) and then repeatedly
uses p
to parse the input until p
fails
(the result is a List
of the consecutive results of f
and p
)
- Value parameters:
- first
a
Parser
that parses the first piece of input- p0
a
Parser
that is to be applied successively to the rest of the input (if any) -- evaluated at most once, and only when necessary
- Returns:
A parser that returns a list of results produced by first applying
f
and then repeatedlyp
to the input (it only succeeds iff
matches).- Inherited from:
- Parsers
A parser generator for non-empty repetitions.
A parser generator for non-empty repetitions.
rep1(p)
repeatedly uses p
to parse the input until p
fails -- p
must succeed at least
once (the result is a List
of the consecutive results of p
)
- Value parameters:
- p
a
Parser
that is to be applied successively to the input
- Returns:
A parser that returns a list of results produced by repeatedly applying
p
to the input (and that only succeeds ifp
matches at least once).- Inherited from:
- Parsers
A parser generator for non-empty repetitions.
A parser generator for non-empty repetitions.
rep1sep(p, q)
repeatedly applies p
interleaved with q
to parse the
input, until p
fails. The parser p
must succeed at least once.
- Value parameters:
- p
a
Parser
that is to be applied successively to the input- q
a
Parser
that parses the elements that separate the elements parsed byp
(interleaved withq
)
- Returns:
A parser that returns a list of results produced by repeatedly applying
p
to the input (and that only succeeds ifp
matches at least once). The results ofp
are collected in a list. The results ofq
are discarded.- Inherited from:
- Parsers
A parser generator for a specified number of repetitions.
A parser generator for a specified number of repetitions.
repN(n, p)
uses p
exactly n
time to parse the input
(the result is a List
of the n
consecutive results of p
).
- Value parameters:
- num
the exact number of times
p
must succeed- p
a
Parser
that is to be applied successively to the input
- Returns:
A parser that returns a list of results produced by repeatedly applying
p
to the input (and that only succeeds ifp
matches exactlyn
times).- Inherited from:
- Parsers
A parser generator for a specified range of repetitions interleaved by a separator.
A parser generator for a specified range of repetitions interleaved by a separator.
repNM(n, m, p, s)
uses p
at least n
times and up to m
times, interleaved
with separator s
, to parse the input
(the result is a List
of at least n
consecutive results of p
and up to m
results).
- Value parameters:
- m
maximum number of repetitions
- n
minimum number of repetitions
- p
a
Parser
that is to be applied successively to the input- sep
a
Parser
that interleaves with p
- Returns:
A parser that returns a list of results produced by repeatedly applying
p
interleaved withsep
to the input. The list has a size betweenn
and up tom
(and that only succeeds ifp
matches at leastn
times).- Inherited from:
- Parsers
A parser generator for interleaved repetitions.
A parser generator for interleaved repetitions.
repsep(p, q)
repeatedly uses p
interleaved with q
to parse the input, until p
fails.
(The result is a List
of the results of p
.)
Example: repsep(term, ",")
parses a comma-separated list of term's, yielding a list of these terms.
- Value parameters:
- p
a
Parser
that is to be applied successively to the input- q
a
Parser
that parses the elements that separate the elements parsed byp
- Returns:
A parser that returns a list of results produced by repeatedly applying
p
(interleaved withq
) to the input. The results ofp
are collected in a list. The results ofq
are discarded.- Inherited from:
- Parsers
Implicits
Inherited implicits
A parser that matches only the given element e
.
A parser that matches only the given element e
.
The method is implicit so that elements can automatically be lifted to their parsers.
For example, when parsing Token
s, Identifier("new")
(which is a Token
) can be used directly,
instead of first creating a Parser
using accept(Identifier("new"))
.
- Value parameters:
- e
the
Elem
that must be the next piece of input for the returned parser to succeed
- Returns:
a
tParser
that succeeds ife
is the next available input.- Inherited from:
- Parsers