问题标签 [grako]

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 投票
1 回答
91 浏览

parsing - 如果我的语法包含由许多或连接的子表达式组成的表达式,为什么 Grako 解析过程会失败?

我正在使用 Grako。在我的 EBNF 语法中,我有一个表达式,它由许多使用 OR 运算符连接的子表达式组成,如下所示:

如果输入字符串包含后面的子表达式之一,例如 subexpressionZ,则解析过程总是失败。当我像这样重写语法时

如果输入字符串包含 subexpressionZ,则解析过程成功完成,但如果它包含 subexpressionA,则现在将失败。

有没有人遇到过类似的问题?这是 Grako 中的错误(我使用的是 3.6.3。)还是我做错了什么?

非常感谢您的任何想法!

0 投票
0 回答
31 浏览

python - Grako 的有序匹配

这确实解析了一个输入文件

这给出了错误

xxx

据我了解,模式规则会尝试匹配“数字”,但它不能。然后它应该继续尝试匹配任何东西并成功。

为什么不解析?

0 投票
1 回答
170 浏览

error-handling - 如何从 grako/TatSu 获取简洁的语法错误消息

如果 grako/tatsu 生成的解析器的输入有语法错误,例如calc.py 示例,除了 我可以使用3 + / 3的相关内容之外,还会获得一长串 Python 调用序列 -构造,但随后我丢失了相关部分的错误信息。 3 + / 3 ^ tryexcept

我想使用 grako/tatsu 来解析规则编译器的语法规则,我很欣赏以干净的方式分离语法和语义的可能性。用户会对过多的错误消息感到非常恼火。有没有办法清除错误消息?

0 投票
1 回答
229 浏览

python - 如何实现这种EBNF语法(lookahead)?

我正在尝试使用这种 TatSu (grako) 中的 EBNF 语法来解析字符串“###”:

我收到一个错误:

我怀疑首先执行搜索{'#'}(匹配'#' 零次或多次),然后找不到'#'(必需的字符'#')。是否有可能以某种方式实现它,以便首先我看到所需的字符'#',然后才寻找{'#'}附加字符?

0 投票
1 回答
52 浏览

bnf - 如何实现表达式的优先级 Bakus-Naur 形式

文档中描述了这种语法:

如何正确描述语法,以便在尝试解析字符串时得到以下结果:

对于字符串'######',我们得到的结果(['#', '#', '#', '#', '#'], '#')是 True(第一个规则)

对于字符串'#####%',我们得到的结果(['#', '#', '#', '#'], '#')是 False 它应该是(['#', '#', '#', '#'], '#%')(首先工作,但应该是第二个规则)

对于字符串'000000',我们得到的结果(['0', '0', '0', '0', '0'], '0')是 True(适用的第三条规则)

对于字符串'###000',我们得到的结果(['#', '#'], '#')是 False (首先工作,但应该是第五条规则)

文档中给出的规则是荒谬的还是我做错了什么?