问题标签 [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.
parsing - ANTLR vs 半熟
ANTLR 和 parboiled 在 Java 中解析有什么区别?
- 初学者在解析中哪个更容易使用?
- 哪个更具可扩展性?(从简单到复杂的语法)
- 哪个对AST构建有更好的支持?
- 哪个会为语法错误产生更好的错误或警告消息?
- 哪个解决的问题更少?(例如左递归、移位/归约冲突、归约/归约冲突)
- 与其他开源工具的比较也值得赞赏
scala - 在 Parboiled 中匹配 {N,M} 个字符
如何编写规则
至少 N 个字符 - 正则表达式 [az](2,}
最多 N 个字符 - 正则表达式 [az](,5}
从 N 到 M 字符 - 正则表达式 [az]{3,10}
在煮熟的?
java - 使用 Grappa (Java PEG Parser) 匹配 OR 表达式
我是 PEG 解析的新手,并试图编写一个简单的解析器来解析一个表达式,例如:“term1 OR term2 anotherterm”,理想情况下,它看起来像一个 AST:
我目前正在使用 Grappa ( https://github.com/fge/grappa ),但它甚至不匹配更基本的表达式“term1 OR term2”。这就是我所拥有的:
谁能指出我正确的方向?
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:
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
只是作为一个例子。我在这里根本不问细节;我要问的是如何从一开始就解决这个问题。
我至少看到了两种或三种方法。
- 保持现有
CommandParser
状态不变,并为每个命令语法排列编写特定于命令的解析器 - 为每个命令保留现有但编写特定于命令的、语法中立的解析器,以便可以使用任何语法,只要它被全面使用(但我该怎么做呢?)
- 编写
CommandParser
每个语法。
CurrentCommandParser
主要是从其他开源“启发”而来的:
所以我在想,也许我应该扩展CommandParser
或只是增加我的能力
scala - Parboiled - 如何解析实数?
我从一个声称解析实数的项目中获取了这个,但它以某种方式吃掉了小数点前的部分:
这打印:
这里有什么问题?请注意,目前我不能从 Parboiled-1 转到 Parboiled-2,因为我有一个更大的语法需要重写。
scala - 是否有适用于字符串标记而不是字符的 Scala 解析解决方案?
我有一个文档,我想一次解析一行。我的标记是整行:
我可以将上面的内容与语法(伪代码)相匹配,例如:
我想要的是将每一行作为令牌独立发送到解析器并尝试匹配它,但是到目前为止我尝试过的每个解决方案(scala-parser-combinators、FastParse等)都需要我用附加换行符以便正确地将其分开。显然,我实际上并不希望我的语法知道换行符;它们应该用于在输入到达解析器之前对其进行标记。
是否有兼容 Scala 的解析解决方案可以以这种方式逐行工作,从而使换行符完全从我的语法定义中消失?(有人可以给我看一个简单的例子吗?)