问题标签 [tatsu]

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 回答
41 浏览

python - 达没有停在文末

我试图在 Tatsu 中为 DSL 语法添加一些简单的错误处理。我编写了一个简单的语法,可以将输入解析为数字或错误。

输入看起来像:

123:2.3:-1.:错误:-.0123:-2.1e-2:+1.2e+3:

通过跟踪,我可以看到它正在正确解析所有输入。当它到达最后时,它似乎在无限循环中继续解析。从最后一个数字到循环开始,输出如下所示:

对于我的生活,我无法弄清楚为什么它不会停止。我什至不确定它试图解析什么。任何人都可以帮忙吗?

谢谢!

0 投票
1 回答
28 浏览

parsing - 无法将匹配规则的字符与 PEG 解析器匹配

我正在尝试解析 Java 风格的浮点数(接受数字中间的下划线)并简化了Java 规范中的语法:

不幸的是,这不接受“1e10”输入,奇怪的是无法匹配 FLOAT_EXP 中的“e”,如下面的跟踪所示:

谁能指出我做错了什么?

0 投票
2 回答
89 浏览

random - 在 TatSu (Python) 中生成随机语法扩展

我正在为使用 TatSu 生成的语法解析器编写解释器。我正在寻找一种方便的方法来为我的语法生成用例,这样我就可以为我的解释器编写单元测试。目前,我正在手动生成我的测试用例。

我想知道 TatSu 包是否确实提供了任何(可能是未记录的)方法来自动生成随机语法推导,以便我可以将它们用作我的解释器的测试用例。此外,最好指定我需要随机产生的语法规则。

0 投票
1 回答
44 浏览

python - Tatsu 解析器:前瞻语法在我的情况下不起作用

使用 Tatsu 5.7.0 Python 包。

我有一个非常简单的结构来解析。以下是文本示例:

每个文本部分在序列“AC....”之前或文本末尾终止。

我为 Tatsu 写了这个语法:

问题是,如果我将前瞻条件放在“文本”正则表达式规则中,它可以正常工作,否则在使用 Tatsu 表达式进行前瞻时它不起作用

似乎是.+?不向前看&att表达式,而是消耗所有输入。

如果我取消注释“ text = /(?s).+?/ &att ; ”,它只会识别第一个 at 为“2092”的部分,并在文本规则中捕获其他所有内容。

任何人都可以帮助我吗?

0 投票
1 回答
31 浏览

tatsu - 我在 Tatsu 语法中用正则表达式替换 ebnf 规则时遇到问题

我使用 Tatsu 为 Gerber 格式开发了一个语法检查器。它工作正常,我感谢 Tatsu 开发人员。但是,它并不算太快,我现在正在优化语法。

Gerber 格式是一个命令流,这是由语法的主循环处理的,如下所示:

开始 =

整数 = /[+-]?[0-9]+/;

在大文件中,性能很重要,选择中的第一条规则涵盖了绝大多数语句。(实际上是三个命令。通过将它们放在首位,然后合并以消除公共元素,使检查器快 2-3 倍。)现在我尝试用正则表达式替换第一条规则,假设正则表达式在 C 中更快.

在第一步中,我内联了整数:

这工作得很好,并给出了适度的加速。

然后我尝试了整个规则的正则表达式。失败。作为测试,我只修改了序列中的第一条规则:

这无法识别以下命令:X81479571Y-38450761D01*

我看不出 ['X' /[+-]?[0-9]+/] 和 /(X[+-]?[0-9]+)?/ 之间的区别

我想念什么?