parser-combinators

    6热度

    1回答

    我在斯卡拉初学者,对S99努力尝试学习阶。其中一个问题涉及从字符串转换为树数据结构。我可以通过“手动”来完成,我也想看看如何使用Scala的解析器组合器库来完成它。 为树的数据结构是 sealed abstract class Tree[+T] case class Node[+T](value: T, left: Tree[T], right: Tree[T]) extends Tree[T]

    12热度

    1回答

    我在写一个Scala分析器组合语法,它读取换行符分隔的单词列表,其中列表由一个或多个空行分隔。鉴于以下字符串: cat mouse horse apple orange pear 我想要它返回List(List(cat, mouse, horse), List(apple, orange, pear))。 我写了这个基本的语法,它把单词列表当作换行分隔的单词。请注意,我必须覆盖wh

    0热度

    1回答

    当前,我试图解析Scala中的一个Reader[Token]。因此,我想在分析步骤中检查Token是否是特定类的元素(例如AToken)。 我可以用下面的代码做到这一点很容易: def aToken = acceptIf(_.isInstanceOf[AToken])("Token " + _ + " is not of type AToken") ^^ { _.asInstanceOf

    6热度

    2回答

    是否有一种方便的方式使用Scala的解析器组合器来解析缩进显着的语言? (例如Python)的

    1热度

    2回答

    的Wikipedia文章PEG解析器定义了以下组合子:真正需要 2.Given any existing parsing expressions e, e1, and e2, a new parsing expression can be constructed using the following operators: Sequence: e1 e2 Ordered choice: e

    2热度

    1回答

    我想提出以下,从一个动态填充列表: val primitives = "x" | "y" | "z" // what I want val primitives2 = List("x", "y", "z") // what I need to transform from 我想这样的事情可能工作: primitives2.reduce(_|_) 但没有去。后来我发现这个片段中,其工作原

    2热度

    1回答

    tl; dr,如何实现可以限制回溯的解析器,其中解析器是monad变换器堆栈? 我还没有找到任何文章,博客或这种方法的示例实现;似乎限制回溯的典型方法是带有附加构造函数的数据类型,或默认情况下回溯关闭的Parsec方法。 我目前的实现 - 使用commit组合器,见下文 - 是错误的;我不确定类型,它是否属于类型类型,而我的实例不如它们应该的感觉。 任何人都可以描述如何做到这一点干净,或指向我的资

    1热度

    3回答

    我有一个处理以逗号分隔的十进制数字列表的Scala组合器解析器。赋予了与该模式匹配的字符串时 object NumberListParser extends RegexParsers { def number: Parser[Double] = """\d+(\.\d*)?""".r ^^ (_.toDouble) def numbers: Parser[List[Doubl

    2热度

    1回答

    我一直有一个问题,得到了整数和浮点数之间的scala combinator分析器(特别是通过JavaTokenParsers的RegexParsers)。我必须在这里错过一些非常基本的东西,因为我无法在任何地方发现这个特定问题。我已经包含了一个有问题的解析器代码的规范(当然不包括)。 @RunWith(classOf[JUnitRunner]) class SandboxSpec extends

    0热度

    1回答

    我想在Scala中使用我从书中复制过来的简单语法中的解析器组合器。当我运行下面的代码停止后的第一个标记已经被解析与错误 [1.3] failure: string matching regex '\z' expected but '+' found 我明白为什么出问题。第一个标记是一个表达式,因此它是唯一需要根据语法进行分析的东西。但我不知道什么是解决问题的好方法。 object SimplePa