问题标签 [parboiled]

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 投票
3 回答
1622 浏览

parsing - ANTLR vs 半熟

ANTLR 和 parboiled 在 Java 中解析有什么区别?

  • 初学者在解析中哪个更容易使用?
  • 哪个更具可扩展性?(从简单到复杂的语法)
  • 哪个对AST构建有更好的支持?
  • 哪个会为语法错误产生更好的错误或警告消息?
  • 哪个解决的问题更少?(例如左递归、移位/归约冲突、归约/归约冲突)
  • 与其他开源工具的比较也值得赞赏
0 投票
1 回答
166 浏览

scala - 在 Parboiled 中匹配 {N,M} 个字符

如何编写规则

  • 至少 N 个字符 - 正则表达式 [az](2,}

  • 最多 N 个字符 - 正则表达式 [az](,5}

  • 从 N 到 M 字符 - 正则表达式 [az]{3,10}

在煮熟的?

0 投票
1 回答
410 浏览

java - 使用 Grappa (Java PEG Parser) 匹配 OR 表达式

我是 PEG 解析的新手,并试图编写一个简单的解析器来解析一个表达式,例如:“term1 OR term2 anotherterm”,理想情况下,它看起来像一个 AST:

我目前正在使用 Grappa ( https://github.com/fge/grappa ),但它甚至不匹配更基本的表达式“term1 OR term2”。这就是我所拥有的:

谁能指出我正确的方向?

0 投票
1 回答
117 浏览

scala - Running a parser within parboiled2

The docs for parboiled2 mention the following to get results:

https://github.com/sirthias/parboiled2#access-to-parser-results

However I get a compilation error when attemping what seems to that approach:

Here is the outline of the parser:

The code to attempt to run it

But the "run" is not accepted:

0 投票
0 回答
36 浏览

scala - parboiled2 中是否有一种方法可以进行子类化,以便您可以接受多种语法(PowerShell 样式、bash/sh 样式、Cisco 样式)?

警告我是新手parboiled2

我希望能够以某种与所涉及的语法无关的方式编写我的 CLI。它将始终具有相同的形状,三元组:

我想更进一步,也许是子类这个或子类它的解析器,或者以其他方式扩展以实现具有以下功能的能力:

接受以下任何一项:

  • Create-Dog -Feet 4 -Name Fido -Walks Daily /Home/Dogs
  • create_dog -f 4 --name Fido ~/Dogs
  • Dog.Create Feet=4, Name=Fido, Walks=Daily in /Home/Dogs

只是作为一个例子。我在这里根本不问细节;我要问的是如何从一开始就解决这个问题。

我至少看到了两种或三种方法。

  1. 保持现有CommandParser状态不变,并为每个命令语法排列编写特定于命令的解析器
  2. 为每个命令保留现有但编写特定于命令的、语法中立的解析器,以便可以使用任何语法,只要它被全面使用(但我该怎么做呢?)
  3. 编写CommandParser每个语法。

CurrentCommandParser主要是从其他开源“启发”而来的:

所以我在想,也许我应该扩展CommandParser或只是增加我的能力

0 投票
2 回答
295 浏览

scala - Parboiled - 如何解析实数?

我从一个声称解析实数的项目中获取了这个,但它以某种方式吃掉了小数点前的部分:

这打印:

这里有什么问题?请注意,目前我不能从 Parboiled-1 转到 Parboiled-2,因为我有一个更大的语法需要重写。

0 投票
0 回答
70 浏览

scala - 是否有适用于字符串标记而不是字符的 Scala 解析解决方案?

我有一个文档,我想一次解析一行。我的标记是整行:

我可以将上面的内容与语法(伪代码)相匹配,例如:

我想要的是将每一行作为令牌独立发送到解析器并尝试匹配它,但是到目前为止我尝试过的每个解决方案(scala-parser-combinatorsFastParse等)都需要我用附加换行符以便正确地将其分开。显然,我实际上并不希望我的语法知道换行符;它们应该用于在输入到达解析器之前对其进行标记。

是否有兼容 Scala 的解析解决方案可以以这种方式逐行工作,从而使换行符完全从我的语法定义中消失?(有人可以给我看一个简单的例子吗?)