问题标签 [parser-combinators]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
438 浏览

scala - 使用解析器组合器丢弃剩余的输入

我只想解析以下字符串,直到END令牌然后忽略其余部分:

使用

进入无限循环和 OutOfMemoryError。我做错了什么,如何解决这个问题?

0 投票
1 回答
3074 浏览

scala - Scala 解析器组合器的运算符优先级

我正在研究需要考虑运算符优先级的解析逻辑。我的需求并不太复杂。首先,我需要乘法和除法的优先级高于加法和减法。

例如:1 + 2 * 3 应该被视为 1 + (2 * 3)。这是一个简单的例子,但你明白了!

[我需要将更多自定义标记添加到优先逻辑中,我可以根据我在此处收到的建议添加这些标记。]

这是处理运算符优先级的一个示例:http: //jim-mcbeath.blogspot.com/2008/09/scala-parser-combinators.html#precedencerevisited

还有其他想法吗?

0 投票
1 回答
396 浏览

scala - Scala解析器陷入无限循环

我正在尝试在 scala 中编写一个简单的解析器,但是当我添加一个重复的标记时,Scala 似乎陷入了无限循环......

以及调用它的代码

收到任何建议

0 投票
1 回答
106 浏览

scala - 如何解析为Scala中的类型

我正在尝试在 Scala 中编写一个解析器,以逐渐建立具体的类型层次结构。我开始:

这很好。/hello/ 将被解析为快速令牌

现在我想将 quicktoken 添加到复合表达式中。我有一堂课

我本来以为我可以写...

但它不起作用。它说 word 是 Option[String] 类型和 String 类型的 quicktoken。我错过了什么?

0 投票
4 回答
555 浏览

scala - 如何将 ParseResults 传递给其他方法?

我必须给形式参数什么类型parse?将鼠标悬停在parse里面whateverval parse: parser.ParseResult[parsing.Program],但是这当然不能作为 的参数类型semanticAnalysis,因为局部变量parse不在此处的范围内。

0 投票
2 回答
131 浏览

parsing - 如何使用 scala 组合器解析器解析这个结构:“name[arg,arg]”?

我有几个这样的字符串:

我想用 scala 组合器解析器解析它,这是我设法得到的最好的:

它可以工作name,但无法工作name[arg]- 说string matching regex\z' 预期但是[' found。有可能修复它吗?

0 投票
1 回答
1044 浏览

parsing - 使用 Trifecta 的布局解析器

我正在尝试使用 Trifecta 来解析具有类似 Haskell 布局语法的非常简单的函数式语言。我正在研究 Haddock 文档和我在 Parsec 方面的经验,因为我找不到关于 Trifecta 本身的任何介绍性材料。

我遇到的问题是使用布局的东西,因为即使是 Haddock 文档也没有多大帮助。

给定以下代码:

我正在尝试解析以下文本test

但它因解析错误而失败:

但如果我注释掉第 2 行和第 3 行,它会起作用。

那么,即使包含第 2 行和第 3 行,我如何让它解析呢?

0 投票
2 回答
201 浏览

scala - 被路径依赖类型挫败

在一个特征中,我无法使用从另一个特征中的方法返回的解析器。编译器抱怨类型不匹配,在我看来问题是由于路径相关类造成的。我不知道如何得到我想要的。

和错误:

我有点明白了:每个“某事”方法都定义了一个 Parser 类型,其路径特定于封闭类(Outerparser 或 Innerparser)。Outerparser 的“引用”方法需要一个 Outerparser.this.Parser 类型的实例,但正在获取 Innerparser#Parser。

我喜欢能够使用从此类或其他类获得的解析器引用。我怎样才能做到这一点?

0 投票
2 回答
1264 浏览

parsing - 在scala中使用解析器组合器逐步评估

我只是在学习 Scala 解析器组合器库。我已经尝试了一个可以使用抽象语法树解析一些算术表达式的工作解析器。所以当我打电话时

我的解析器解析所有输入然后给我一个评估。但是我怎样才能有一步一步的评估呢?

3 + 4 * 7

它打印

3 + 28

然后

31

在单独的行中。

我已经浏览了 API,但那里的文档不是很有帮助......感谢您的帮助。

0 投票
1 回答
891 浏览

scala - Scala Parser Combinators:高效解析 C 风格的注释

/* ... */使用 Scala 解析器组合器(有效地)解析 C 风格的多行注释(即 )的最佳方法是什么?

在我参与的一个项目中,我们解析了一种类似 C 的编程语言,并希望支持多行注释。我们使用 的子类StandardTokenParsers,它已经处理了此类注释(通过StdLexical。但是,该类仅适用于相当短的多行注释,否则会耗尽堆栈空间。

我们还尝试提供我们自己的空白定义以提高效率。我们使用了一个RegexParser(灵感来自StackOverflow 上的另一个问题),如下所示:

这稍微改善了这种情况,但如果注释超过几十行,仍然会导致堆栈溢出。任何想法如何改善这一点?