Package

xerial.core.io.text

parser

Permalink

package parser

Visibility
  1. Public
  2. All

Type Members

  1. trait Grammar extends Logger

    Permalink

    A trait for defining expression grammars.

    A trait for defining expression grammars.

    Example:

    trait MyGrammar extends Grammar {
    
    // Define expression patterns using expr blocks
    // '~' denotes a sequence of matches
    def comment = expr { "#" ~ untilEOF }
    def expr  = expr { value | string | "(" ~ expr ~ ")" }
    def value = expr { "0" - "9" | "A" - "Z" | "a" - "z" } // Range of characters
    
    // repetition of patterns and syntactic predicate (!->).
    def string     = expr { "\"" ~ repeat("\\" !->  not("\"") | escapeSequence) ~ "\"" }
    def escapeSequence = expr { "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "u" ~ hexDigit ~ hexDigit ~ hexDigit ~ hexDigit) }
    def digit      = expr { "0" - "9" }
    def hexDigit   = expr { digit | "A" - "F" | "a" - "f" }
    
    // Define tokens to ignore
    def whiteSpace = expr { " " | "\t" | "\n" | "\r" }
    ignore(whiteSpace)
    }
    

  2. sealed abstract class ParseError extends Exception

    Permalink
  3. class Parser extends Logger

    Permalink

  4. case class SyntaxError(message: String) extends ParseError with Product with Serializable

    Permalink

Value Members

  1. object Grammar extends Logger

    Permalink

    Syntax grammar

  2. object NoMatch extends ParseError with Product with Serializable

    Permalink
  3. object Parser extends Serializable

    Permalink

Ungrouped