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

Main metrics

Overview
Name With Ownerscala/scala-parser-combinators
Primary LanguageScala
Program languageScala (Language Count: 1)
PlatformLinux, Mac, Windows
License:Apache License 2.0
所有者活动
Created At2013-08-15 18:35:18
Pushed At2024-10-21 14:45:00
Last Commit At
Release Count44
Last Release Namev2.4.0 (Posted on )
First Release Namev1.0-RC1 (Posted on 2013-08-15 17:02:03)
用户参与
Stargazers Count654
Watchers Count36
Fork Count131
Commits Count1.1k
Has Issues Enabled
Issues Count120
Issue Open Count21
Pull Requests Count392
Pull Requests Open Count2
Pull Requests Close Count46
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private