scala-parser-combinators

基于组合器的简单解析Scala。 以前是Scala标准库的一部分,现在是一个单独的社区维护模块。(simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module)

Github stars Tracking Chart

scala-parser-combinators




Scala Standard Parser Combinator Library

This library is now community-maintained. If you are interested in helping please contact @Philippus or @SethTisue.

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.2"

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

Scala.js and Scala Native

Scala-parser-combinators is also available for Scala.js 0.6+ and Scala Native:

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

Example

import scala.util.parsing.combinator._

case class WordFreq(word: String, count: Int) {
  override def toString = s"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(s"FAILURE: $msg")
      case Error(msg,_) => println(s"ERROR: $msg")
    }
  }
}

For a detailed unpacking of this example see
Getting Started.

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

Overview

Name With Ownerscala/scala-parser-combinators
Primary LanguageScala
Program languageScala (Language Count: 1)
PlatformLinux, Mac, Windows
License:Apache License 2.0
Release Count44
Last Release Namev2.4.0 (Posted on )
First Release Namev1.0-RC1 (Posted on 2013-08-15 17:02:03)
Created At2013-08-15 18:35:18
Pushed At2024-05-10 23:53:50
Last Commit At
Stargazers Count641
Watchers Count33
Fork Count132
Commits Count1k
Has Issues Enabled
Issues Count119
Issue Open Count20
Pull Requests Count380
Pull Requests Open Count3
Pull Requests Close Count45
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top