AlexanderRay / scala-parser-combinators

simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

scala-parser-combinators Gitter

Scala Standard Parser Combinator Library

This library is now community-maintained. If you are interested in helping please contact @gourlaysama or mention it on Gitter.

As of Scala 2.11, this library is a separate jar that can be omitted from Scala projects that do not use Parser Combinators.

Documentation

Adding an SBT dependency

To depend on scala-parser-combinators in SBT, add something like this to your build.sbt:

libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.1"

To support multiple Scala versions, see the example in scala/scala-module-dependency-sample.

Example

import scala.util.parsing.combinator._

case class WordFreq(word: String, count: Int) {
    override def toString = "Word <" + word + "> " +
                            "occurs with frequency " + count
}

class SimpleParser extends RegexParsers {
    def word: Parser[String]   = """[a-z]+""".r       ^^ { _.toString }
    def number: Parser[Int]    = """(0|[1-9]\d*)""".r ^^ { _.toInt }
    def freq: Parser[WordFreq] = word ~ number        ^^ { case wd ~ fr => WordFreq(wd,fr) }
}

object TestSimpleParser extends SimpleParser {
    def main(args: Array[String]) = {
        parse(freq, "johnny 121") match {
            case Success(matched,_) => println(matched)
            case Failure(msg,_) => println("FAILURE: " + msg)
            case Error(msg,_) => println("ERROR: " + msg)
        }
    }
}

For a detailed unpacking of this example see Getting Started.

ScalaJS support

Scala-parser-combinators directly supports Scala.js 0.6+:

libraryDependencies += "org.scala-lang.modules" %%% "scala-parser-combinators" % "1.1.1"

Issues

Many old issues from the Scala JIRA issue tracker have been migrated here, but not all of them. Community assistance identifying and migrating still-relevant issues is welcome. See this page for details.

Contributing

About

simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Scala 97.4%Language:Shell 2.6%