Packages

object Parser

Source
Parser.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Parser
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Type Members

  1. final case class Error(failedAtOffset: Int, expected: NonEmptyList[Expectation]) extends Product with Serializable

    Represents where a failure occurred and all the expectations that were broken

  2. sealed abstract class Expectation extends AnyRef

    An expectation reports the kind or parsing error and where it occured.

  3. final class Soft[+A] extends Soft0[A]

    If we can parse this then that, do so, if we fail that without consuming, rewind before this without consuming.

    If we can parse this then that, do so, if we fail that without consuming, rewind before this without consuming. If either consume 1 or more, do not rewind

  4. sealed class Soft0[+A] extends AnyRef

    If we can parse this then that, do so, if we fail that without consuming, rewind before this without consuming.

    If we can parse this then that, do so, if we fail that without consuming, rewind before this without consuming. If either consume 1 or more, do not rewind

  5. final class Soft01[+A] extends AnyVal

    If we can parse this then that, do so, if we fail that without consuming, rewind before this without consuming.

    If we can parse this then that, do so, if we fail that without consuming, rewind before this without consuming. If either consume 1 or more, do not rewind

  6. final class State extends AnyRef
    Attributes
    protected[parse]
  7. final class With1[+A] extends AnyVal

    Enables syntax to access product01, product and flatMap01 This helps us build Parser instances when starting from a Parser0

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. val Fail: Parser[Nothing]

    A parser that always fails with an epsilon failure

  5. def anyChar: Parser[Char]

    Parse 1 character from the string

  6. def as[B](pa: Parser[Any], b: B): Parser[B]

    Replaces parsed values with the given value.

  7. def as0[B](pa: Parser0[Any], b: B): Parser0[B]

    Replaces parsed values with the given value.

  8. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  9. def backtrack[A](pa: Parser[A]): Parser[A]

    If we fail, rewind the offset back so that we can try other branches.

    If we fail, rewind the offset back so that we can try other branches. This tends to harm debuggability and ideally should be minimized

  10. def backtrack0[A](pa: Parser0[A]): Parser0[A]

    If we fail, rewind the offset back so that we can try other branches.

    If we fail, rewind the offset back so that we can try other branches. This tends to harm debuggability and ideally should be minimized

  11. def caret: Parser0[Caret]

    return the current Caret (offset, line, column) this is a bit more expensive that just the index

  12. implicit val catsInstancesParser: FlatMap[Parser] with Defer[Parser] with MonoidK[Parser] with FunctorFilter[Parser]
  13. def char(c: Char): Parser[Unit]

    parse a single character

  14. def charIn(c0: Char, cs: Char*): Parser[Char]

    parse one of a given set of characters

  15. def charIn(cs: Iterable[Char]): Parser[Char]

    An empty iterable is the same as fail

  16. def charWhere(fn: (Char) => Boolean): Parser[Char]

    parse one character that matches a given function

  17. def charsWhile(fn: (Char) => Boolean): Parser[String]

    Parse a string while the given function is true parses at least one character

  18. def charsWhile0(fn: (Char) => Boolean): Parser0[String]

    Parse a string while the given function is true

  19. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  20. def defer[A](pa: => Parser[A]): Parser[A]

    Lazily create a Parser This is useful to create some recursive parsers see Defer0[Parser].fix

  21. def defer0[A](pa: => Parser0[A]): Parser0[A]

    Lazily create a Parser0 This is useful to create some recursive parsers see Defer0[Parser].fix

  22. def eitherOr[A, B](first: Parser[B], second: Parser[A]): Parser[Either[A, B]]

    If the first parser fails to parse its input with an epsilon error, try the second parser instead.

    If the first parser fails to parse its input with an epsilon error, try the second parser instead.

    If the first parser fails with an arresting error, the second parser won't be tried.

    Backtracking may be used on the first parser to allow the second one to pick up after any error, resetting any state that was modified by the first parser.

  23. def eitherOr0[A, B](first: Parser0[B], second: Parser0[A]): Parser0[Either[A, B]]

    If the first parser fails to parse its input with an epsilon error, try the second parser instead.

    If the first parser fails to parse its input with an epsilon error, try the second parser instead.

    If the first parser fails with an arresting error, the second parser won't be tried.

    Backtracking may be used on the first parser to allow the second one to pick up after any error, resetting any state that was modified by the first parser.

  24. def end: Parser0[Unit]

    succeeds when we are at the end

  25. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  26. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  27. def fail[A]: Parser[A]

    A parser that always fails with an epsilon failure

  28. def failWith[A](message: String): Parser[A]

    A parser that always fails with an epsilon failure and a given message this is generally used with flatMap to validate a result beyond the literal parsing.

    A parser that always fails with an epsilon failure and a given message this is generally used with flatMap to validate a result beyond the literal parsing.

    e.g. parsing a number then validate that it is bounded.

  29. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  30. def flatMap0[A, B](pa: Parser0[A])(fn: (A) => Parser0[B]): Parser0[B]

    Standard monadic flatMap Avoid this function if possible.

    Standard monadic flatMap Avoid this function if possible. If you can instead use product, ~, *>, or <* use that. flatMap always has to allocate a parser, and the parser is less amenable to optimization

  31. def flatMap01[A, B](pa: Parser0[A])(fn: (A) => Parser[B]): Parser[B]

    Standard monadic flatMap where you end with a Parser Avoid this function if possible.

    Standard monadic flatMap where you end with a Parser Avoid this function if possible. If you can instead use product, ~, *>, or <* use that. flatMap always has to allocate a parser, and the parser is less amenable to optimization

  32. def flatMap10[A, B](pa: Parser[A])(fn: (A) => Parser0[B]): Parser[B]

    Standard monadic flatMap where you start with a Parser Avoid this function if possible.

    Standard monadic flatMap where you start with a Parser Avoid this function if possible. If you can instead use product, ~, *>, or <* use that. flatMap always has to allocate a parser, and the parser is less amenable to optimization

  33. def fromCharMap[A](charMap: Map[Char, A]): Parser[A]

    Convert a Map[Char, A] to Parser[A] first match a character, then map it to a value A

  34. def fromStringMap[A](stringMap: Map[String, A]): Parser[A]

    Convert a Map[String, A] to Parser[A] first match a character, then map it to a value A This throws if any of the keys are the empty string

  35. def fromStringMap0[A](stringMap: Map[String, A]): Parser0[A]

    Convert a Map[String, A] to Parser[A] first match a character, then map it to a value A

  36. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  37. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  38. def ignoreCase(str: String): Parser[Unit]

    Parse a given string, in a case-insensitive manner, or fail.

    Parse a given string, in a case-insensitive manner, or fail. This backtracks on failure this is an error if the string is empty

  39. def ignoreCase0(str: String): Parser0[Unit]

    Parse a potentially empty string, in a case-insensitive manner, or fail.

    Parse a potentially empty string, in a case-insensitive manner, or fail. This backtracks on failure

  40. def ignoreCaseChar(c: Char): Parser[Unit]

    Ignore the case of a single character If you want to know if it is upper or lower, use .string to capture the string and then map to process the result.

  41. def ignoreCaseCharIn(c0: Char, cs: Char*): Parser[Char]

    Parse any single character in a set of characters as lower or upper case

  42. def ignoreCaseCharIn(cs: Iterable[Char]): Parser[Char]

    Parse any single character in a set of characters as lower or upper case

  43. def index: Parser0[Int]

    return the current position in the string we are parsing.

    return the current position in the string we are parsing. This lets you record position information in your ASTs you are parsing

  44. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  45. def length(len: Int): Parser[String]

    Parse the next len characters where len > 0 if (len < 1) throw IllegalArgumentException

  46. def length0(len: Int): Parser0[String]

    if len < 1, the same as pure("") else length(len)

  47. def map[A, B](p: Parser[A])(fn: (A) => B): Parser[B]

    transform a Parser result

  48. def map0[A, B](p: Parser0[A])(fn: (A) => B): Parser0[B]

    transform a Parser0 result

  49. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  50. def not(pa: Parser0[Any]): Parser0[Unit]

    returns a parser that succeeds if the current parser fails.

    returns a parser that succeeds if the current parser fails. Note, this parser backtracks (never returns an arresting failure)

  51. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  52. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  53. def oneOf[A](parsers: List[Parser[A]]): Parser[A]

    go through the list of parsers trying each as long as they are epsilon failures (don't advance) see @backtrack if you want to do backtracking.

    go through the list of parsers trying each as long as they are epsilon failures (don't advance) see @backtrack if you want to do backtracking.

    This is the same as parsers.foldLeft(fail)(_.orElse(_))

    recommended style: oneOf(p1 :: p2 :: p3 :: Nil) rather than oneOf(List(p1, p2, p3))

    Note: order matters here, since we don't backtrack by default.

  54. def oneOf0[A](ps: List[Parser0[A]]): Parser0[A]

    go through the list of parsers trying each as long as they are epsilon failures (don't advance) see @backtrack if you want to do backtracking.

    go through the list of parsers trying each as long as they are epsilon failures (don't advance) see @backtrack if you want to do backtracking.

    This is the same as parsers.foldLeft(fail)(_.orElse(_))

    recommended style: oneOf(p1 :: p2 :: p3 :: Nil) rather than oneOf(List(p1, p2, p3))

    Note: order matters here, since we don't backtrack by default.

  55. def peek(pa: Parser0[Any]): Parser0[Unit]

    a parser that consumes nothing when it succeeds, basically rewind on success

  56. def product0[A, B](first: Parser0[A], second: Parser0[B]): Parser0[(A, B)]

    parse first then second

  57. def product01[A, B](first: Parser0[A], second: Parser[B]): Parser[(A, B)]

    product with the second argument being a Parser

  58. def product10[A, B](first: Parser[A], second: Parser0[B]): Parser[(A, B)]

    product with the first argument being a Parser

  59. def pure[A](a: A): Parser0[A]

    Don't advance in the parsed string, just return a This is used by the Applicative typeclass.

  60. def recursive[A](fn: (Parser[A]) => Parser[A]): Parser[A]

    Build a recursive parser by assuming you have it Useful for parsing recurive structures, like for instance JSON.

  61. def repAs[A, B](p1: Parser[A], min: Int, max: Int)(implicit acc: Accumulator[A, B]): Parser[B]

    Repeat the parser min or more times, but no more than max

    Repeat the parser min or more times, but no more than max

    The parser fails if it can't match at least min times After repeating the parser max times, the parser completes succesfully

    Exceptions thrown

    java.lang.IllegalArgumentException if min < 1 or max < min

  62. def repAs[A, B](p1: Parser[A], min: Int)(implicit acc: Accumulator[A, B]): Parser[B]

    Repeat the parser min or more times

    Repeat the parser min or more times

    The parser fails if it can't match at least min times

    Exceptions thrown

    java.lang.IllegalArgumentException if min < 1

  63. def repAs0[A, B](p1: Parser[A], max: Int)(implicit acc: Accumulator0[A, B]): Parser0[B]

    Repeat the parser 0 or more times, but no more than max

    Repeat the parser 0 or more times, but no more than max

    It may seem weird to accept 0 here, but without, composing this method becomes more complex. Since and empty parse is possible for this method, we do allow max = 0

    Exceptions thrown

    java.lang.IllegalArgumentException if max < 0

    Note

    this can wind up parsing nothing

  64. def repAs0[A, B](p1: Parser[A])(implicit acc: Accumulator0[A, B]): Parser0[B]

    Repeat the parser 0 or more times

    Repeat the parser 0 or more times

    Note

    this can wind up parsing nothing

  65. def repExactlyAs[A, B](p: Parser[A], times: Int)(implicit acc: Accumulator[A, B]): Parser[B]

    Repeat the parser exactly times times

    Repeat the parser exactly times times

    Exceptions thrown

    java.lang.IllegalArgumentException if times < 1

  66. def repSep[A](p1: Parser[A], min: Int, max: Int, sep: Parser0[Any]): Parser[NonEmptyList[A]]

    Repeat min or more, up to max times with a separator, at least once.

    Repeat min or more, up to max times with a separator, at least once.

    Exceptions thrown

    java.lang.IllegalArgumentException if min <= 0 or max < min

  67. def repSep[A](p1: Parser[A], min: Int, sep: Parser0[Any]): Parser[NonEmptyList[A]]

    Repeat min or more times with a separator, at least once.

    Repeat min or more times with a separator, at least once.

    Exceptions thrown

    java.lang.IllegalArgumentException if min <= 0

  68. def repSep[A](p1: Parser[A], sep: Parser0[Any]): Parser[NonEmptyList[A]]

    Repeat 1 or more times with a separator

  69. def repSep0[A](p1: Parser[A], min: Int, max: Int, sep: Parser0[Any]): Parser0[List[A]]

    Repeat min or more, up to max times with a separator.

    Repeat min or more, up to max times with a separator.

    Exceptions thrown

    java.lang.IllegalArgumentException if min < 0 or max < min

  70. def repSep0[A](p1: Parser[A], min: Int, sep: Parser0[Any]): Parser0[List[A]]

    Repeat min or more times with a separator.

    Repeat min or more times with a separator.

    Exceptions thrown

    java.lang.IllegalArgumentException if min < 0

  71. def repSep0[A](p1: Parser[A], sep: Parser0[Any]): Parser0[List[A]]

    Repeat 0 or more times with a separator

  72. def repUntil[A](p: Parser[A], end: Parser0[Any]): Parser[NonEmptyList[A]]

    parse one or more times until Parser end succeeds.

  73. def repUntil0[A](p: Parser[A], end: Parser0[Any]): Parser0[List[A]]

    parse zero or more times until Parser end succeeds.

  74. def repUntilAs[A, B](p: Parser[A], end: Parser0[Any])(implicit acc: Accumulator[A, B]): Parser[B]

    parse one or more times until Parser end succeeds.

  75. def repUntilAs0[A, B](p: Parser[A], end: Parser0[Any])(implicit acc: Accumulator0[A, B]): Parser0[B]

    parse zero or more times until Parser end succeeds.

  76. def select[A, B](p: Parser[Either[A, B]])(fn: Parser0[(A) => B]): Parser[B]

    Parser version of select

  77. def select0[A, B](p: Parser0[Either[A, B]])(fn: Parser0[(A) => B]): Parser0[B]

    Parse p and if we get the Left side, parse fn This function name comes from seletive functors.

    Parse p and if we get the Left side, parse fn This function name comes from seletive functors. This should be more efficient than flatMap since the fn Parser0 is evaluated once, not on every item parsed

  78. def softProduct0[A, B](first: Parser0[A], second: Parser0[B]): Parser0[(A, B)]

    softProduct, a variant of product A soft product backtracks if the first succeeds and the second is an epsilon-failure.

    softProduct, a variant of product A soft product backtracks if the first succeeds and the second is an epsilon-failure. By contrast product will be a failure in that case

    see @Parser.soft

  79. def softProduct01[A, B](first: Parser0[A], second: Parser[B]): Parser[(A, B)]

    softProduct with the second argument being a Parser A soft product backtracks if the first succeeds and the second is an epsilon-failure.

    softProduct with the second argument being a Parser A soft product backtracks if the first succeeds and the second is an epsilon-failure. By contrast product will be a failure in that case

    see @Parser.soft

  80. def softProduct10[A, B](first: Parser[A], second: Parser0[B]): Parser[(A, B)]

    softProduct with the first argument being a Parser A soft product backtracks if the first succeeds and the second is an epsilon-failure.

    softProduct with the first argument being a Parser A soft product backtracks if the first succeeds and the second is an epsilon-failure. By contrast product will be a failure in that case

    see @Parser.soft

  81. def start: Parser0[Unit]

    succeeds when we are at the start

  82. def string(pa: Parser[Any]): Parser[String]

    Discard the result A and instead capture the matching string this is optimized to avoid internal allocations

  83. def string(str: String): Parser[Unit]

    Parse a given string or fail.

    Parse a given string or fail. This backtracks on failure this is an error if the string is empty

  84. def string0(pa: Parser0[Any]): Parser0[String]

    Discard the result A and instead capture the matching string this is optimized to avoid internal allocations

  85. def string0(str: String): Parser0[Unit]

    Parse a potentially empty string or fail.

    Parse a potentially empty string or fail. This backtracks on failure

  86. def stringIn(strings: Iterable[String]): Parser[String]

    Parse the longest matching string between alternatives.

    Parse the longest matching string between alternatives. The order of the strings does not matter.

    If no string matches, this parser results in an epsilon failure.

    It is an error to pass the empty string here, if you need that see stringIn0

  87. def stringIn0(strings: Iterable[String]): Parser0[String]

    Version of stringIn that allows the empty string

  88. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  89. def tailRecM[A, B](init: A)(fn: (A) => Parser[Either[A, B]]): Parser[B]

    tail recursive monadic flatMaps on Parser This is a rarely used function, but needed to implement cats.FlatMap Avoid this function if possible.

    tail recursive monadic flatMaps on Parser This is a rarely used function, but needed to implement cats.FlatMap Avoid this function if possible. If you can instead use product, ~, *>, or <* use that. flatMap always has to allocate a parser, and the parser is less amenable to optimization

  90. def tailRecM0[A, B](init: A)(fn: (A) => Parser0[Either[A, B]]): Parser0[B]

    tail recursive monadic flatMaps This is a rarely used function, but needed to implement cats.FlatMap Avoid this function if possible.

    tail recursive monadic flatMaps This is a rarely used function, but needed to implement cats.FlatMap Avoid this function if possible. If you can instead use product, ~, *>, or <* use that. flatMap always has to allocate a parser, and the parser is less amenable to optimization

  91. def toString(): String
    Definition Classes
    AnyRef → Any
  92. val unit: Parser0[Unit]

    A parser that returns unit

  93. def until(p: Parser0[Any]): Parser[String]

    parse one or more characters as long as they don't match p

  94. def until0(p: Parser0[Any]): Parser0[String]

    parse zero or more characters as long as they don't match p this is useful for parsing comment strings, for instance.

  95. def void(pa: Parser[Any]): Parser[Unit]

    discard the value in a Parser.

    discard the value in a Parser. This is an optimization because we remove trailing map operations and don't allocate internal data structures This function is called internal to Functor.as and Apply.*> and Apply.<* so those are good uses.

  96. def void0(pa: Parser0[Any]): Parser0[Unit]

    discard the value in a Parser.

    discard the value in a Parser. This is an optimization because we remove trailing map operations and don't allocate internal data structures This function is called internal to Functor.as and Apply.*> and Apply.<* so those are good uses.

  97. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  98. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  99. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  100. def withContext[A](p: Parser[A], ctx: String): Parser[A]

    Add a context string to Errors to aid debugging

  101. def withContext0[A](p0: Parser0[A], ctx: String): Parser0[A]

    Add a context string to Errors to aid debugging

  102. object Expectation

Inherited from AnyRef

Inherited from Any

Ungrouped