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星跟踪图

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

主要指标

概览
名称与所有者scala/scala-parser-combinators
主编程语言Scala
编程语言Scala (语言数: 1)
平台Linux, Mac, Windows
许可证Apache License 2.0
所有者活动
创建于2013-08-15 18:35:18
推送于2025-05-09 14:36:21
最后一次提交
发布数44
最新版本名称v2.4.0 (发布于 )
第一版名称v1.0-RC1 (发布于 2013-08-15 17:02:03)
用户参与
星数663
关注者数32
派生数130
提交数1.1k
已启用问题?
问题数121
打开的问题数22
拉请求数414
打开的拉请求数2
关闭的拉请求数46
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?