parser-combinators

    5热度

    2回答

    我目前在Scala中实现了一个小型编译器,当我在做上下文分析的组件时,我发现了包scala.util.parsing.ast(我使用Scala 2.9 RC)中的特征Binders,它是Documented以在解析时间期间启用名称绑定。这听起来很有趣,我一直在搜索,但我仍然不知道如何使用它。虽然我当然能够让我的抽象语法derrak从Binders我看不到如何从那里继续。网上有使用的例子吗?

    8热度

    2回答

    最近我正在寻找算术表达式的体面语法,但只发现了一些不重要的语法,例如忽略pow(..., ...)。然后我自己试了一下,但有时它并没有像预期的那样工作。例如,我错过了允许表达式前面的一个单一的-并修复它。也许有人可以看看我目前的做法并改进它。此外,我认为其他人可以利用,因为解析算术表达式是一项常见任务。 import scala.math._ import scala.util.parsing.

    1热度

    1回答

    我希望Combinator parsers(http://debasishg.blogspot.com/2008/04/external-dsls-made-easy-with-scala.html)将用于设计来处理用Scalatra(http://tutorialbin.com/tutorials/80408/infoq-scalatra-a-sinatra-like-web-framework

    4热度

    1回答

    我试图写一个简单的HTML模板引擎(为了好玩),并想解析一个结构类似这样的 A.正常线是HTML B.如果符合$开始然后查看它作为Java代码线 $ if (isSuper) { <span>Are you wearing red underwear?</span> $ } C.如果${}缠绕多条线路,在它所有的代码应该是Java代码。 D.如果符合$include开始那么做就行了

    4热度

    1回答

    我正在使用Scala语法分析程序组合器编写解释器。我的解释器将lexing和解析分为两个阶段。我想为我的词法分析器编写单元测试,以确保它产生正确的输出。 现在,我正在使用一个辅助方法方法进行单元测试,我已经在下面介绍了这个方法。该方法将程序的源代码作为参数并返回一个Token对象列表。使用单元测试框架(ScalaTest),我可以对结果列表中的令牌进行模式匹配。 问题与当前的方法: 它需要我的词法

    9热度

    1回答

    什么是使我的解析器尊重(忽略)C风格注释的最简单方法。我对这两种评论类型都很感兴趣,尽管只有一种类型的解决方案也是受欢迎的。 我目前只是简单地扩展JavaTokenParsers。

    2热度

    3回答

    我正在为外部工具的命令行界面编写解析器,并且我正在使用Scala的解析器组合器库。作为这个的一部分,我需要解析格式为的标准日期EEE MMM d HH:mm:ss yyyy Z。 Scala的解析器组合器是“基于流的”并且与CharSequence的而不是字符串一起使用。这使我很难使用来自JodaTime的java.text.DateTimeFormat或DateTimeFormat,因为它们都与

    8热度

    1回答

    考虑语法这部分: def expression = SimpleExpression ~ opt(relation ~ SimpleExpression) def relation = "=" | "#" | "<=" | "<" | ">=" | ">" | "IN" | "IS" def SimpleExpression = opt("+" | "-") ~ rep1sep

    5热度

    1回答

    我正在尝试创建一个language,并且还有一些部分我想不区分大小写。我相信这很容易,但我一直无法找到它。 编辑: 重读让我对这个问题感到羞耻。 Here是一个失败的测试,解释我的意思。

    1热度

    1回答

    我抓起一些Scala的CSV解析代码从这里: Use Scala parser combinator to parse CSV files 然后我试着写了它的基本测试: assertEquals(List(List()), CSV.parse("")) 这失败,带消息: java.lang.AssertionError:expected:scala.collection.immutable。$