问题标签 [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 回答
46 浏览

ruby - 基本树顶语法不起作用

我无法根据最基本的规则集进行 Treetop 解析。任何帮助,将不胜感激

0 投票
1 回答
61 浏览

ruby - 使用树顶定义语法节点时,如何将许多替代项关联到同一类?

我有以下简单的语法:

当我解析字符串>时,它成功返回:

当我解析字符串=时,它返回时没有语法错误,但不将匹配的字符串与ComparisonOperator实例相关联,而仅与

如果我颠倒语法中字符的顺序......

那么它可以正常工作,=但不能正常工作>

如果我将每个符号与ComparisonOperator

那么它对两者都适用,但我觉得这不是很直观。如果一个人有很多符号替代品,它会变得很麻烦。

有没有办法以ComparisonOperator更简单的方式将所有替代方案关联起来?

更新: 我在此处添加了一个新的 Github 存储库,其中包含演示此问题的所有代码:https ://github.com/pmatsinopoulos/treetop_tutorial

0 投票
1 回答
186 浏览

ruby - 如何处理树顶解析树?

我使用treetop编写了一个解析器,它成功地生成了一个解析树,其中的一部分在下面复制。

现在我有了这棵树,我不知道如何过滤它,以便只处理与特定规则匹配的特定节点。

我想用一个标识符替换字符串文字,该标识符引用字符串文件中的字符串。


cool_parser.treetop


0 投票
1 回答
152 浏览

ruby-on-rails - 使用树顶解析器库的问题

我正在尝试使用树顶在 ruby​​ 中创建一个简单的文本解析器。尽管我已按照博客中提到的所有步骤进行操作,但我无法运行该程序。它失败并显示错误消息:

我在 treetop 的网络上找不到很多资源,但很高兴能得到一些帮助。以下是代码:

-- myParser.rb --

-- node_extensions.rb --

-- sexp_extensions.rb --

-- sep_parser.treetop --

0 投票
1 回答
33 浏览

ruby - 为什么自定义 SyntaxNode 子类不能使用括号?

我有一个如下的树顶语法:

当我解析表达式时,这是有效的:

. . . 有一个"1234"与 type匹配的语法节点ExprNumber。但是,如果我像这样在规则中添加括号:

它与类不匹配ExprNumber。为什么会发生这种情况?

0 投票
1 回答
66 浏览

ruby - Treetop parser : how to handle spaces?

Good morning everyone,

I'm currently trying to describe some basic Ruby grammar but I'm now stuck with parse space? I can handle x = 1 + 1,
but can't parser x=1+1,
how can I parser space?
I have tried add enough space after every terminal. but it can't parse,give a nil..... How can I fix it? Thank you very much, have a nice day.

this code works problem Solved!!!!

0 投票
1 回答
68 浏览

ruby - 如何在 Verilog 语法示例中消除左递归

我正在使用 Treetop 为 Verilog 语言创建语法,并且遇到了一些情况,其中语言规范涉及不转换为 Treetop 的左递归构造。

我已经对此进行了一些阅读,这个答案很好地总结了消除左递归的通用方法:左递归消除

但是,我无法理解这实际上是如何工作的,如果有更多知识的人可以确认我的方法是否正确,我将不胜感激......

对于这个包含左递归的原始规则(注释是它在语言规范中的编写方式):

以下内容是否真的等同于删除了左递归?

0 投票
1 回答
79 浏览

ruby - 树顶语法节点的自定义方法

我有一个匹配某些键的Treetop PEG 语法。我想在我给解析器的哈希中查找与这些键关联的值。如何使语法节点可以访问解析器中的方法或变量?

例如,这是一个简单的语法,它找到一个单词并尝试查找它的值:

这是一个使用它的测试文件:

运行这个测试,我得到输出:

如何find_variable在方法内部进行访问value?(在真正的解析器中,这些规则嵌套很深,需要解析值而不将实际名称返回到解析树的顶部。我不能只返回text_value并在外面查找。)

0 投票
1 回答
115 浏览

ruby - 如何使用 ruby​​ treetop 解析多行?

我是新手rubytreetop

我浏览了本教程并提出了以下规则。

我希望解析器提取出像下面这样的 blob。它总是以空行开头Port.和结尾。

上面提到的规则可以在单独传递时识别文本中的所有行,但我无法提取 blob。另外我只想提取匹配的文本并忽略其余部分。

有人可以指出我正确的方向吗?

0 投票
1 回答
65 浏览

ruby - Ruby Treetop 如何包含与语法不匹配的所有内容

我想创建一个树顶语法。我创建了规则来匹配文件中我感兴趣的部分。

如何在文件上运行它以提取bodies并忽略我不关心的其他部分,或者我是否还需要最终为这些部分编写规则?

提前致谢