问题标签 [treesitter]

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 投票
0 回答
17 浏览

path - Tree-Sitter.py 所有叶子到叶子的路径

我正在尝试从使用 tree-sitter 创建的语法树中提取所有叶子到叶子的路径,以在 code2vec 中使用,但我无法弄清楚如何识别叶子以及如何设计算法。

0 投票
0 回答
368 浏览

syntax - YAML 使用 neovim 和 treesitter 缩进?

我最近升级到 neovim 0.5.0,我一直在尝试用 treesitter 替换旧语法和缩进插件。在编辑 YAML 文件时,我在让事情正常工作时遇到了一些问题。

我的init.lua文件中有以下内容:

运行:checkhealth报告

但是当我创建一个 YAML 文件时,例如......

...然后光标在下一行的第 0 列结束,而不是按要求缩进。这种行为在文件的其余部分仍然存在:不管 YAML 语法如何,光标总是在返回时转到第 0 列

我知道treesitter缩进支持被认为是“实验性的”。这是刚刚坏了,还是我配置错误?

0 投票
1 回答
79 浏览

grammar - 类似结构的树保姆匹配

我正在尝试为 Minecraft 函数语法创建一个树保姆

该语言的结构如下所示:

在上面的示例中,我对第二个参数(目标选择器)中的值有疑问。这个值可以是很多东西,比如字符串、数字、布尔值和两个类似的对象结构(NBT 和记分牌对象)。

以下是每个示例:

NBT

记分牌对象

我的语法文件包含以下代码:

但是,如果我编译和解析test @e[scores={example=1..}],我会得到:

预期:而不是ERROR,它应该是selector_score,并且应该有一个score_keyand score_value

selector_nbt如果我从中删除序列,则不会发生这种情况selector_object。但是,如果在使用 nbt 数据的命令上运行解析(使用两个序列或仅使用selector_nbt),则不会出现错误。

我究竟做错了什么?

0 投票
0 回答
24 浏览

atom-editor - Atom 在使用自定义语法时随机停止正确突出显示

作为一个练习,我正在构建一种类似汇编的语言(但通过数字),所以我想为它制作自己的语法。但是语法随机停止工作。这是 tree-sitter-dasm.cson(dasm 是临时名称)。

有时它可以工作,但一段时间后它会停止工作(即使我没有改变任何东西)。

这是给我带来麻烦的代码:

我检查了我正在使用的自定义解析器,它按预期工作。

package.json 配置为:

示例文件: 错误突出显示的文件

0 投票
1 回答
23 浏览

treesitter - 保姆,如何正确使用“包罗万象”的规则?

我有这样的语法:

tail规则假设捕获之后的任何东西uninomial。但是我在这个测试中遇到了麻烦:

生产:

(source_file (uninomial) (tail))

代替

(source_file (uninomial (genus) (subgenus)))

更改优先级似乎不会影响此行为。有没有办法制定一个“包罗万象”的规则,比如tail只有在所有其他以前的规则都失败的情况下才参与?

0 投票
2 回答
91 浏览

colors - 如何修复 NeoSolarized 红色支架

我已经切换到使用 NeoVim 并且我决定使用的颜色方案是NeoSolarized,此外我还安装了 treesitter 以改进语法突出显示,并且我已经通过运行成功安装了 c++ 解析器TSInstall cpp,但是我遇到了一个小问题,现在我所有的括号、括号和分号都是红色的: Neovim 中牙套的外观图片

我想知道是否有办法让我摆脱这些红色的括号和分号,这样我就可以把它们变成灰色

0 投票
1 回答
112 浏览

neovim - Nvim-treesitter 颜色不会传递给 :TOhtml

我试图了解如何将 Neovim 中的代码复制为 RTF。到目前为止,我认为最简单的方法是将代码转换为 HTML,然后将 HTML 转换为 RTF,因此使用:TOhtml应该将给定的范围转换为 HTML 并根据 Nvim 编辑器中的颜色对其进行着色,但是在使用树时-保姆颜色不会转换。

当我在没有treesitter的情况下将代码转换为HTML时,我得到:

但是当我使用treesitter时,我得到:

所以我需要帮助:TOhtml来使用treesitter或任何其他方式从Linux上的Neovim复制为RTF。

0 投票
1 回答
38 浏览

typescript - 如何从 tree-sitter 中的函数中提取第一个参数

鉴于我在 JavaScript/Typescript 中有以下代码:

我想使用 tree-sitter 查询匹配每个函数调用的第一个参数。

这是我要去的地方,它匹配所有参数

我如何只匹配第一个参数?

作为奖励挑战,我可以匹配findOne仅调用函数的第一个参数吗?

0 投票
0 回答
18 浏览

treesitter - 如何仅在 tree-sitter 中匹配字符串值

鉴于我在 JavaScript/Typescript 中有以下代码:

我想仅使用 tree-sitter 查询来匹配字符串值。

这是我要去的地方,它匹配整个字符串,包括引号

我可以匹配testing而不匹配'testing'吗?

0 投票
0 回答
30 浏览

treesitter - 遍历所有树节点?

我正在使用py-tree-sitter此代码按顺序遍历整个节点树(代码来自此 github 问题:https ://github.com/tree-sitter/py-tree-sitter/issues/33#issuecomment-864557166 ):

我正在使用此代码进行语法突出显示,并且此方法不会给出空标记,例如whitespacenewline不属于另一个AST标记的部分。

这是获取树中所有节点的正确方法吗?

谢谢