问题标签 [treetop]

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

ruby - 最简单的树顶语法返回解析错误,只是学习

我正在尝试学习树顶,并且正在从https://github.com/survival/lordbishop获取大部分代码来解析名称,并将以此构建。

我的结构有点不同,因为我是在 Rails 中构建它,而不是 ruby​​ 命令行。

当我运行一个非常简单的解析时,我在一个空格上返回了一个解析错误(这应该是我语法中更简单的事情之一。我做错了什么?

在我的模型中,我的代码相当简单

我已经将大部分语法剥离为只获取单词和空格

我正在尝试解析'john smith',我希望只取回单词和空格并从那里建立我的逻辑,但我什至被困在这个简单的水平上。有什么建议么??

0 投票
2 回答
487 浏览

ruby-on-rails - 为什么这会返回“未定义的方法”错误

我开始使用 Treetop(尽管我不认为这是一个树顶错误),并且我正在尝试解析一个简单的日期字段。

我试图弄清楚日期是否包括一个月,如果是,则返回。所以我将我解析的树传递给我的视图并说

在我的@input_date 中,月份不存在,所以我期待没有输出,但我得到了一个错误

我也尝试过使用 .exists,但我得到了相同的结果。

为什么是这样??还有其他方法可以检查月份的存在吗?

0 投票
1 回答
91 浏览

ruby - 在树梢解析分数

我在解析树顶语法中的分数时遇到了一些困难。

我的语法看起来像这样

当我尝试从中获取值时

我虽然规则

将作为分数返回。知道我的语法有什么问题吗?

0 投票
2 回答
103 浏览

ruby - 在树梢中查找单词 - 一些匹配未进行

我遇到了一些奇怪的情况。

我正在尝试使用树梢解析测量值。

例如 - 6' of 1/2" Copper Pipe 当然,这也可以写成英尺、英尺、英寸、英寸、英寸、英寸等。

所以我有一个规则

当我输入“6 英寸”、“6 磅”、“6 米”时,一切正常,我得到了我的号码和测量值。

当我输入“6 米”时,没有正确解析米。

大多数测量结果都很好,我在这里提供的测量值中只有“米”和“磅”被遗漏了(但我相信我将来会添加更多的测量值。

关于我为什么会遇到这种情况的任何想法?

根据要求,完整语法的更“精简”版本

0 投票
3 回答
236 浏览

ruby - 使用 PEG 问题制作 BBcode 解析器

我正在使用 PEG(Ruby 的柑橘实现)制作 bbcode 解析器,但我一直在解析这个[b]sometext[anothertext[/b]

有代码

问题在于text我不知道怎么说的规则,该文本可以包含除 \r、\n、open_tag 或 close_tag 之外的所有内容。使用此实现,由于排除 [ 和 ],它在示例中失败(那是错误的)

所以最后的问题是如何做规则,它可以匹配除 \r、\n 或 open_tag 或 close_tag 的完全匹配之外的任何内容

如果您有另一个 PEG 实施的解决方案,也可以在那里提供。我可以切换:)

0 投票
2 回答
535 浏览

ruby - 树顶解析器:函数定义语法 - n 个参数

我目前正在尝试描述一些基本的 Ruby 语法,但我现在陷入了函数定义的困境。确实,我不知道如何处理“n”论点。这是我用来处理包含 0 到 2 个 args 的函数的代码:

我该怎么做才能处理'n'论点?有没有递归的方法来做到这一点?

编辑 :

我想强调一个事实,即我需要将参数放在结果树中。像 :

所以我需要做一个 cstom SyntaxNode 子类声明,就像我对 function_definition 规则所做的那样。

0 投票
1 回答
193 浏览

ruby - 树梢中最简单的规则不起作用

我有一个只有两条规则的树顶语法:

我正在尝试解析简单的字符串(“A”和“5”)。如果我将该规则放在第一位,则“5”被识别为 Num,如果我将该规则放在第二位,则返回 nil。同样,如果我将该规则放在第一位,“A”将被识别为 ID,如果我将该规则放在第二位,则返回 nil。我无法理解这两个规则如何以任何方式重叠。这让我疯狂!

关于树梢或正则表达式,我有什么遗漏或不了解的吗?在此先感谢您的帮助。

0 投票
1 回答
378 浏览

ruby - Treetop:解析字符串文字?

所以,我正在努力学习一点 ruby​​、一点 TDD 和一点 Treetop。

我有以下用于解析字符串文字的语法:

以及以下测试方法:

第三个测试(带有反斜杠的那个)没有通过(字符串没有被解析):为什么?

谢谢!

0 投票
1 回答
139 浏览

treetop - Treetop(PEG)语法中使用的省略号(空字符串)是什么?

Treetop网站给出了以下我看不懂的解释

省略号 一个空字符串匹配任何位置并且不消耗任何输入。当您希望将单个符号视为序列的一部分时,它很有用,例如,当使用共享代码处理备用规则时。

规则 alts ( foo bar / baz '' ) { def value elements.map{|e| e.text_value } 结束 } 结束

何时将符号视为序列的一部分有用?任何人都可以提供一个有意义的例子吗?

0 投票
2 回答
200 浏览

ruby - 如何使用树顶解析包含空格和转义符号的解析目录路径?

我需要解析一些包含目录路径的字符串。问题是包含转义的空格和其他转义的符号。例如:

请注意, 之前有一个空格P\&G/

这是我的树顶语法(alpha_digit_special 开头包含空格)

nil在解析这个字符串后得到。那么如何指定规则以使字符串可以包含转义的空格?