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

ruby - BBCode Treetop 解析器和智能标签关闭?

我写了一个最有效的树顶语法文件。对于像我这样的标签,[b]我想将它们传递到一个函数中,该函数具有为该论坛配置的 BBCodes 的哈希值。如果允许粗体,它将返回 HTML,否则它将忽略 BB 代码。

这不适用于嵌套标签。例如,[b][i]Bold and italics[/i][/b]将无法正确处理,因为它们与 . 的第一个结束标记匹配[/i]

我怎样才能做到这一点,当它找到一个标签时,它会在负头中寻找结束标签?

我宁愿不必为每种 BBCode 写出所有规则,因为这是一个动态系统,论坛管理员可以在其中打开/关闭某些标签。

0 投票
1 回答
100 浏览

ruby - 规则的顺序在 TreeTop 中是否重要?

我刚刚开始使用 TreeTop 进行解析工作。以下是让我困惑的片段:

结果ast是:

但是当我放在rule id上面时rule integer,结果是nil。那么问题是什么?提前致谢!

0 投票
1 回答
284 浏览

ruby - 树梢语法中的罗马数字

我想解析一个有序列表,类似于:

到目前为止,我的树顶语法是:

但是,相应的解析器无法解析文本。什么坏了?

0 投票
2 回答
65 浏览

ruby - 如何使用树顶编写动作触发器?

每次解析器识别令牌时,我都会尝试运行一些代码。

比方说

这里的想法是puts每次foo找到令牌时都执行此操作。按原样编码,它不起作用,因为它只触发一次(在类加载时),当然stuff_i_want.text_value那时不存在。

任何的想法?甚至可能吗?图书馆缺乏文档并不容易分辨。

0 投票
2 回答
186 浏览

ruby - 树顶忽略语法规则

Treetop 似乎在第一个规则之后忽略了更多规则,并且无法解析与语法文件中的第一个规则不匹配的任何内容。我已经尝试交换规则的顺序,但仍然只考虑第一个。

此语法文件匹配所有整数和浮点数,但不匹配 '123, 456' 或 '123,456' 解析器 failure_reason 属性显示此“预期 - 在第 1 行第 1 列(字节 1)之后”

我错过了什么吗?

0 投票
1 回答
106 浏览

ruby-on-rails - 从中加载 .treeptop 文件的 Treeptop 和 Rails

我似乎在 Rails 应用程序中找不到任何 Treetop 示例。在非 Rails 应用程序中,当我执行 Treetop.load('name_of_treetop_file') 时,它会在同一个文件夹中查找并加载 .treetop 文件。

在我的 Rails 应用程序中,无论我把它放在哪里,我都会得到:

没有这样的文件或目录 - name_of_treetop_.treetop

我将 .treetop 文件放在哪里,这样我就可以轻松地调用 .load('name_of_treetop_file')

谢谢

0 投票
1 回答
101 浏览

ruby - Treetop 忽略语法中定义的方法

我正在尝试用树顶解析百分比。我写了以下语法:

这匹配正确,但由于某种原因,to_f结果中缺少根节点上的方法。

当我检查 tt 生成的代码时,它为百分比节点创建了两个模块,其余代码中只使用了其中一个模块:

Percentage1 永远不会出现在代码的其他任何地方,而 Percentage0 用于正确的节点

另一方面,to_f方法 ondecimal工作正常(也是两个模块,但都用于扩展节点)。我找不到它的定义有什么不同,这导致了这种情况。

0 投票
1 回答
74 浏览

ruby - 如何在 Treetop 中嵌入 Ruby 代码以生成完全自定义的 AST?

我正在尝试使用 Treetop 编写一个解析器,它的玩具语言看起来像这样:

我的语法似乎没问题,但是当我尝试在语法中嵌入 Ruby 代码时,我收到了我无法理解的奇怪消息。

问题似乎是“陈述”的替代品使用不当,但我不确定。

我的树顶语法是这样的:

高手可以看看这个吗?

0 投票
1 回答
88 浏览

ruby - 由两个 / 包围的正则表达式的规则

如何将一对/字符与树顶之间的所有内容匹配?我也想匹配转义/字符。例如,如果我要解析“正则表达式”:

结果将返回:

0 投票
1 回答
610 浏览

ruby - 将 Treetop 解析树转换为抽象语法树 (AST)

我已经简化了用 Treetop 表达的语法,并且我正在尝试使用自定义节点将解析器的输出过滤到 AST 中。

基本上,它可以解析以下示例:

自定义节点全部继承Treetop::Runtime::SyntaxNode

现在,我需要将 Treetop 生成的解析树过滤成 AST。

我遵循这里解释的策略,但没有成功:我的 AST 只是空的......

我的编译器驱动程序如下:

我错过了什么?