gpt4 book ai didi

parsing - Scala Packrat 解析器

转载 作者:行者123 更新时间:2023-12-04 06:47:16 24 4
gpt4 key购买 nike

我对 Scala 2.8 中提供的 Packrat 解析器组合器有一些疑问。

不幸的是,除了 Scaladoc PackratParsers 特征描述之外,我找不到任何有关如何使用此新功能的教程,该描述相当简短。是否有可能收到使用它的示例?

实际上,我对 Scala 没有任何经验。我在尝试使用 Packrat 解析器时发现的第一个问题是实现 PackratReader 类。 Scaladoc 说程序员应该像 new PackratReader(new lexical.Scanner("input")) 一样手动创建这个对象。因此我写了以下内容:

包项目

导入 scala.util.parsing.combinator._

class MyParser 使用 PackratParsers 扩展 JavaTokenParsers {
懒惰的 val expr: PackratParser[Any] = ident ~ "+"~ ident
}

对象测试应用{
def main(参数:数组[字符串]){
val myParser = 新的 MyParser
println(myParser.parse(
myParser.expr,
新 PackratReader(新词法.Scanner("x+y"))
))
}
}

编译器给出了错误:

错误:未找到:输入 PackratReader
新 PackratReader(新词法.Scanner("x+y"))

因此,我的第二个问题是关于如何实现(或在可能的情况下实例化)PackratReader。此外,我还对如何实例化 trait 的内部类(如上一个问题中提到的 PackratReader)感兴趣?

我的最后一个问题是如何一起使用 Packrat 解析器和常规 Scala 的解析器组合器。 Scaladoс 说:“它们可以在单一语法中与常规解析器自由混合”。您能否解释一下不提供内存功能的常规解析规则将如何影响支持它的 Packrat 规则?

谢谢。

最佳答案

class PackratReader嵌套在 trait PackratParsers 内.您需要在 PackratParsers 的特定实例的上下文中实例化它。特征。我会通过“普通”ReaderMyParser构造函数所以 PackratReader可以在那里实例化。

关于parsing - Scala Packrat 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3567862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com