Parser

object Parser
Companion:
class
class Object
trait Matchable
class Any
Parser.type

Type members

Classlikes

trait FollowedBy[In, +A, M[_, _]]

An intermediate object for creating sequence-based combination methods for a Parser or Consumer.

An intermediate object for creating sequence-based combination methods for a Parser or Consumer.

Type parameters:
A

Output type for the "first" parser/consumer; using the combination methods in this trait will result in an instance of T1 being used to create a "second" parser/consumer/transformer to be run sequentially after the first.

M

Type constructor for the parser/consumer of a given output type

trait Handler[-In, +Out]

An internally-mutable representation of a Parser, which reacts to inputs from a data stream and eventually produces a result.

An internally-mutable representation of a Parser, which reacts to inputs from a data stream and eventually produces a result.

final implicit class ParserFlatten[In, A, F[_]](parser: Parser[In, F[F[A]]]) extends AnyVal
implicit class ParserFollowedByOps[In, A](parser: Parser[In, A])

Adds followedBy and followedByStream to Parser (they aren't defined in the Parser trait due to the In type needing to be invariant here)

Adds followedBy and followedByStream to Parser (they aren't defined in the Parser trait due to the In type needing to be invariant here)

trait Stateless[-In, +Out] extends Parser[In, Out] with Handler[In, Out]

Specialization for Parsers which require no mutable state. A "stateless" parser acts as its own handler.

Specialization for Parsers which require no mutable state. A "stateless" parser acts as its own handler.

Value members

Concrete methods

Convenience for creating parsers whose input type is bound to In.

Convenience for creating parsers whose input type is bound to In.

This is particularly nice when the Out type can be inferred by the compiler, e.g.

Parser[Int].fold(1)(_ + _)
// versus
Parser.fold[Int, Int](1)(_ + _)
def defer[In, Out](p: => Parser[In, Out]): Parser[In, Out]

Creates a parser which delegates to the given call-by-name p parser. The p expression isn't evaluated until a handler created by this parser is created - that handler will be p's handler. The underlying parser is not memoized, so if a new handler is constructed, the p expression will be re-evaluated.

Creates a parser which delegates to the given call-by-name p parser. The p expression isn't evaluated until a handler created by this parser is created - that handler will be p's handler. The underlying parser is not memoized, so if a new handler is constructed, the p expression will be re-evaluated.

Type parameters:
In

The parser's input type

Out

The parser's output type

Value parameters:
p

A call-by-name expression which returns a Parser

def deferHandler[In, Out](h: => Handler[In, Out]): Parser[In, Out]

Creates a parser from a call-by-name handler construction expression. This is effectively doing

Creates a parser from a call-by-name handler construction expression. This is effectively doing

new Parser[In, Out] {
 def newHandler = h
}
def delay[Out](value: => Out): Parser[Any, Out]

Creates a parser which evaluates the call-by-name value expression. The value expression won't be evaluated until a handler created by this parser is asked to step or finish. The value is not memoized, so if a new handler is created, that handler will re-evaluate the value.

Creates a parser which evaluates the call-by-name value expression. The value expression won't be evaluated until a handler created by this parser is asked to step or finish. The value is not memoized, so if a new handler is created, that handler will re-evaluate the value.

Type parameters:
Out

the result type

Value parameters:
value

A call-by-name expression which will be evaluated by the returned parser's Handler

def drain: Parser[Any, Unit]

Create a parser which will consume the entire input stream, ignoring each value, yielding a Unit result when the stream ends.

Create a parser which will consume the entire input stream, ignoring each value, yielding a Unit result when the stream ends.

def find[In](predicate: In => Boolean): Parser[In, Option[In]]

Creates a parser which returns the first input for which the predicate function returns true.

Creates a parser which returns the first input for which the predicate function returns true.

def first[In : TypeName]: Parser[In, In]

Creates a parser which returns the first input it receives, or throws a SpacException.MissingFirstException when handling an empty stream.

Creates a parser which returns the first input it receives, or throws a SpacException.MissingFirstException when handling an empty stream.

def firstOpt[In]: Parser[In, Option[In]]

Creates a parser which returns the first input it receives, or None when handling an empty stream.

Creates a parser which returns the first input it receives, or None when handling an empty stream.

def fold[In, Out](init: Out)(op: (Out, In) => Out): Parser[In, Out]

Creates a parser which folds inputs into its state according to the op function, returning its final state when the input stream ends.

Creates a parser which folds inputs into its state according to the op function, returning its final state when the input stream ends.

Value parameters:
init

The initial state

op

state update function

def fromBuilder[In, Out](b: => Builder[In, Out]): Parser[In, Out]

Creates a parser whose handlers which will construct a new builder via the call-by-name b expression. The builder's result will be used as the result of the handler.

Creates a parser whose handlers which will construct a new builder via the call-by-name b expression. The builder's result will be used as the result of the handler.

def oneOf[In, Out](parsers: Parser[In, Out]*): Parser[In, Out]

Create a single parser which will attempt to run each of the given parsers in parallel, yielding the result from the first of the parsers that successfully completes. If multiple parsers return a result for the same input, priority is determined by their order when given to this method. If all of the parsers fail by throwing exceptions, all but the latest exception will be swallowed, and the last exception will be rethrown.

Create a single parser which will attempt to run each of the given parsers in parallel, yielding the result from the first of the parsers that successfully completes. If multiple parsers return a result for the same input, priority is determined by their order when given to this method. If all of the parsers fail by throwing exceptions, all but the latest exception will be swallowed, and the last exception will be rethrown.

Value parameters:
parsers

A collection of Parsers which will be run in parallel.

def pure[Out](value: Out): Parser[Any, Out]

Creates a parser which always results in value.

Creates a parser which always results in value.

Value parameters:
value

the result of the parser

def tap[In](f: In => Unit): Parser[In, Unit]

Create a parser which runs the side-effecting function f for each input it receives, yielding a Unit result.

Create a parser which runs the side-effecting function f for each input it receives, yielding a Unit result.

def toChain[In]: Parser[In, Chain[In]]

Creates a parser that builds a cats.data.Chain from the inputs it receives.

Creates a parser that builds a cats.data.Chain from the inputs it receives.

def toList[In]: Parser[In, List[In]]

Creates a parser that builds a List from the inputs it receives.

Creates a parser that builds a List from the inputs it receives.

def toMap[K, V]: Parser[(K, V), Map[K, V]]

Creates a parser that builds a Map from the (key, value) tuple inputs it receives.

Creates a parser that builds a Map from the (key, value) tuple inputs it receives.

Deprecated methods

@deprecated("use `.pure` instead", "v0.9")
def constant[Out](value: Out): Parser[Any, Out]
Deprecated
@deprecated("Use `firstOpt` instead", "v0.9")
def firstOption[In]: Parser[In, Option[In]]
Deprecated
@deprecated("Use `tap` instead", "v0.9")
def foreach[In](f: In => Any): Parser[In, Unit]
Deprecated

Implicits

Implicits

final implicit def ParserFlatten[In, A, F[_]](parser: Parser[In, F[F[A]]]): ParserFlatten[In, A, F]
final implicit def ParserFollowedByOps[In, A](parser: Parser[In, A]): ParserFollowedByOps[In, A]

Adds followedBy and followedByStream to Parser (they aren't defined in the Parser trait due to the In type needing to be invariant here)

Adds followedBy and followedByStream to Parser (they aren't defined in the Parser trait due to the In type needing to be invariant here)

implicit def catsApplicativeForParser[In](implicit callerPos: CallerPos): Applicative[[A] =>> Parser[In, A]]

Applicative for Parser with a fixed In type.

Applicative for Parser with a fixed In type.