问题标签 [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 投票
8 回答
11043 浏览

ruby - 学习树梢

我正在尝试自学 Ruby 的 Treetop 语法生成器。我发现,对于那里的“最佳”文档而言,不仅文档非常稀少,而且它似乎不像我希望的那样直观地工作。

在高层次上,我真的很喜欢比现场文档或视频更好的教程,如果有的话。

在较低级别上,这是我根本无法使用的语法:

当我加载它并在一个非常简单的测试对象中运行一些断言时,我发现:

工作正常,而

引发错误:NoMethodError: private method `eval' called for #

如果我在描述中反转整数和浮点数,整数和浮点数都会给我这个错误。我认为这可能与有限的前瞻性有关,但我在任何文档中都找不到任何信息,甚至无法涵盖在“或”上下文中进行评估的想法

更多信息可能会有所帮助。这是这两个 parse() 块的 pp 信息。

浮子:

Integer... 请注意,它似乎已被定义为遵循整数规则,但未捕获 eval() 方法:

更新:

我遇到了我的特殊问题,但我不知道为什么:

这对存在的文档没有意义,但只是删除额外的括号使匹配包括 Integer1 类以及 Integer0。Integer1 显然是持有 eval() 方法的类。我不知道为什么会这样。

我仍在寻找有关树梢的更多信息。

0 投票
1 回答
1192 浏览

ruby - 树顶 SGF 解析

我目前正在尝试编写 Treetop 语法来解析简单游戏格式文件,并且到目前为止大部分都可以正常工作。但是,有几个问题出现了。

  1. 我不确定如何在解析后实际访问 Treetop 生成的结构。
  2. 有没有比我的字符规则更好的方法来处理捕获所有字符?
  3. 有一种情况是我似乎无法正确写出评论。

    C[player1 [4k\]:嗨 player2 [3k\]:嗨!]

我不知道如何处理带有 [] 的 C[] 节点的嵌套结构。

以下是我目前的进展。

sgf-grammar.treetop

而我的测试用例,目前排除了具有上述嵌套括号问题的 C[] 节点:

例子.rb

0 投票
2 回答
970 浏览

ruby - 树顶和嵌套样式表规则中的 CSS/HSS 解析器

我是 Treetop 的新手,正在尝试编写 CSS/HSS 解析器。HSS 通过嵌套样式、变量和一种混合功能增强了 CSS 的基本功能。

我非常接近 - 解析器可以处理 CSS - 但在实现样式的样式时我失败了。例如:

我拍了两张照片,一张处理空白,一张不处理。我不能完全得到工作。树顶文档有点稀疏,我真的觉得我错过了一些基本的东西。希望有人可以让我直截了当。

A:

乙:

线束代码:

0 投票
3 回答
1296 浏览

regex - Treetop / PEG中的非贪婪匹配?

我将如何在 Treetop 中做这样的事情?

似乎唯一的方法是:

哪一种丑陋..还有其他方式吗?.+?好像不行。。

0 投票
2 回答
192 浏览

ruby - 如何在树梢挂钩中定义 {min,max} 匹配

使用 Ruby 的正则表达式,我可以写 /[0-9]{3,}/ 我不知道如何在树顶中写这个,除了:

树梢是否有“匹配[至少|最] n”规则?

0 投票
4 回答
872 浏览

ruby - Treetop 的 Vim 缩进文件(Ruby 解析器)

有没有人看到过treetop的 vim 缩进文件,Ruby 解析器/生成器?我找到了一个 vim 语法高亮文件,但还没有看到用于缩进的文件。

0 投票
1 回答
173 浏览

ruby - Treetop:如何制定组合规则?

我想使用 Treetop 制作一个简单的 JSP 解析器。现在,我有以下问题:

我开始的基本语法是:

jspToken 应该匹配 '<%' 而 jspPageToken 应该匹配 '<%@page'

当我在 irb 中尝试这个时:

但是当我尝试

我错过了什么?

0 投票
2 回答
1319 浏览

ruby - Treetop 基本解析和正则表达式使用

我正在使用 ruby​​ Treetop 库开发一个脚本,并且在使用它的正则表达式语法时遇到问题。首先,许多在其他设置中工作的正则表达式在树顶中的工作方式不同。

这是我的语法:(myline.treetop)

这是我的用法:(usage.rb)

这应该会找到 new 这个词,而且确实如此!现在我不会扩展它,以便如果输入字符串变为“随机字符串另一个字符串新另一个和另一个”并且可能在规则条件的正则表达式之前和之后有任意数量的字符串后跟空格(包括选项卡),它可以找到新的。换句话说,如果我将任何带有“new”等单词的句子传递给它,它应该能够匹配它。

因此,假设我将语法更改为:

然后,它应该能够找到匹配项:

那么,我该怎么做才能让字符串空格在条件之前和之后重复呢?如果我尝试写这个:

,它进入一个无限循环。如果我将上面的 () 替换为 [],它会返回 nil 通常,当我使用上述内容时,正则表达式会返回匹配项,但树顶正则表达式不会。有人对如何解决这个问题有任何提示/要点吗?另外,由于树顶的文档不多,并且示例太琐碎或太复杂,有没有人知道更详尽的树顶文档/指南?

0 投票
2 回答
371 浏览

ruby - 使用正则表达式的树顶语法问题

我有一个简单的语法设置,如下所示:

假设我的输入是“这是一个好球。让我们使用它”。这给出了一个错误,我现在没有提到它,因为我想先了解为什么它是错误的理论。那么,如何创建规则 not_adjective 以便它匹配规则形容词不匹配的任何内容?一般来说,我如何编写“不”匹配另一个命名规则的 I 规则(特别是在 Treetop 中)?

0 投票
2 回答
542 浏览

ruby - 用树顶解析 ruby​​ 中的 tcl 数组

我在(我认为是)一个 tcl 数组中有一堆数据。基本上它的形式是{a {b c} d {e f} g}. 它只嵌套了一层,但并不总是嵌套,也就是说,a可能只是a或者可能是{aa bb}或可能{},但从不{aa {bb cc}}。我想提取这个数组,以便可以在 ruby​​ 中使用它。

我的第一个想法是,“没问题,我会写一点语法来解析这个。” 我安装了 treetop gem,并编写了一个解析器,它似乎工作得很好。当我尝试从解析的树中提取数组时,我开始遇到问题。我想更好地了解问题的原因以及我做错了什么。

到目前为止,这是我的解析器代码:(tcl_array.treetop)

调用p.parse("{a}").content收益率tcl_array.rb:99:in 'content': undefined local variable or method 'array_element'

array_element_list (array_element) 中的第一项表示 array_element 是一个未定义的局部变量,但访问器方法应该根据树顶文档自动定义。

早些时候,我尝试了一个基于语法的解决方案,它的规则更少但稍微复杂一些:

但是对于这个语法,我遇到了一些问题,即解析器似乎为数组规则创建了几个不同的表达式,即使它没有使用任何替代表达式 (/)。结果是我无法弄清楚如何访问数组规则的各个位以将它们作为 ruby​​ 数组返回。