Packages

  • package root
    Definition Classes
    root
  • package scala
    Definition Classes
    root
  • package util
    Definition Classes
    scala
  • package parsing
    Definition Classes
    util
  • package combinator
    Definition Classes
    parsing
  • trait PackratParsers extends Parsers

    PackratParsers is a component that extends the parser combinators provided by scala.util.parsing.combinator.Parsers with a memoization facility (Packrat Parsing).

    PackratParsers is a component that extends the parser combinators provided by scala.util.parsing.combinator.Parsers with a memoization facility (Packrat Parsing).

    Packrat Parsing is a technique for implementing backtracking, recursive-descent parsers, with the advantage that it guarantees unlimited lookahead and a linear parse time. Using this technique, left recursive grammars can also be accepted.

    Using PackratParsers is very similar to using Parsers:

    • any class/trait that extends Parsers (directly or through a subclass) can mix in PackratParsers. Example: object MyGrammar extends StandardTokenParsers with PackratParsers
    • each grammar production previously declared as a def without formal parameters becomes a lazy val, and its type is changed from Parser[Elem] to PackratParser[Elem]. So, for example, def production: Parser[Int] = {...} becomes lazy val production: PackratParser[Int] = {...}
    • Important: using PackratParsers is not an all or nothing decision. They can be free mixed with regular Parsers in a single grammar.

    Cached parse results are attached to the input, not the grammar. Therefore, PackratsParsers require a PackratReader as input, which adds memoization to an underlying Reader. Programmers can create PackratReader objects either manually, as in production(new PackratReader(new lexical.Scanner("input"))), but the common way should be to rely on the combinator phrase to wrap a given input with a PackratReader if the input is not one itself.

    Definition Classes
    combinator
    Since

    2.8

    See also

    Alessandro Warth, James R. Douglass, Todd Millstein: "Packrat Parsers Can Support Left Recursion." PEPM'08

    Bryan Ford: "Packrat Parsing: Simple, Powerful, Lazy, Linear Time." ICFP'02

  • Elem
  • Error
  • Failure
  • NoSuccess
  • OnceParser
  • PackratParser
  • PackratReader
  • ParseResult
  • Parser
  • Success
  • ~

class PackratReader[+T] extends Reader[T]

A specialized Reader class that wraps an underlying Reader and provides memoization of parse results.

Self Type
PackratReader[T]
Source
PackratParsers.scala
Linear Supertypes
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. PackratReader
  2. Reader
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new PackratReader(underlying: Reader[T])

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. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def atEnd: Boolean

    true iff there are no more elements in this reader.

    true iff there are no more elements in this reader.

    Definition Classes
    PackratReaderReader
  6. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. def drop(n: Int): Reader[T]

    Returns an abstract reader consisting of all elements except the first n elements.

    Returns an abstract reader consisting of all elements except the first n elements.

    Definition Classes
    Reader
  8. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. def first: T

    Returns the first element of the reader

    Returns the first element of the reader

    Definition Classes
    PackratReaderReader
  12. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int
    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  16. final def notify(): Unit
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit
    Definition Classes
    AnyRef
  18. def offset: Int
    Definition Classes
    PackratReaderReader
  19. def pos: Position

    The position of the first element in the reader.

    The position of the first element in the reader.

    Definition Classes
    PackratReaderReader
  20. def rest: Reader[T]

    Returns an abstract reader consisting of all elements except the first

    Returns an abstract reader consisting of all elements except the first

    returns

    If atEnd is true, the result will be this'; otherwise, it's a Reader containing more elements.

    Definition Classes
    PackratReaderReader
  21. def source: CharSequence

    If this is a reader over character sequences, the underlying char sequence.

    If this is a reader over character sequences, the underlying char sequence. If not, throws a NoSuchMethodError exception.

    Definition Classes
    PackratReaderReader
    Exceptions thrown

    [[java.lang.NoSuchMethodError]] if this not a char sequence reader.

  22. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  23. def toString(): String
    Definition Classes
    AnyRef → Any
  24. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Reader[T]

Inherited from AnyRef

Inherited from Any

Ungrouped