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

parsing - 用于区分标识符和隐式赋值的 tree-sitter 语法

我正在尝试创建一种可以区分赋值表达式和显式赋值运算符的语法,例如

和一个隐式赋值,比如

其中,显式赋值的变量名可以有尾随数字,而隐式赋值的变量名不能,即前者应将 1 分配给 T1,后者应将 1 分配给 T。

我想出了以下简单的语法:

这适用于这些测试用例

但不适合

或者

这是我正在使用的测试文件:

我试图修补优先级,fe 给 $.ia 更高的数字,但到目前为止没有任何帮助。我不认为语法是模棱两可的,但也许我只是看不清楚?

是否可以用 tree-sitter 来表达这样的语法?

我也在GH 上发布了这个。

0 投票
0 回答
13 浏览

treesitter - tree-sitter 中的字段访问和方法调用

我想为表达式编写一个解析器,它有

  • 文字,例如5
  • 绝对键路径,以 开头$d,然后使用 访问字段.,例如$d.field1.field2
  • 方法调用表达式,例如5.toString()$d.field1.toLowerCase()

我想出了以下语法:

我的问题是我没有设法提出可以解析上述示例的解决方案。我认为它应该可以通过在 and 之间设置优先级和关联性来解决field_accessmethod_call但我觉得到目前为止我已经尝试了所有可能的组合但没有成功。有人可以帮我想出一个语法吗?

0 投票
0 回答
148 浏览

neovim - Neovim Treesitter 在 PHP 文件中突出显示 HTML、JS、PHP

我最近切换到 Neovim,并尝试使用 Treesitter 配置本机 LSP。

我在使用 PHP 和 HTML 时遇到了一些错误的突出显示。每次我在 html 元素中编写 php 时,都不会突出显示结束标记。

在此处输入图像描述

保姆cfg:

我发现了一些关于语言注入的一种文件类型的多语言支持,但我不知道如何实现它。

0 投票
0 回答
11 浏览

treesitter - 在树保姆查询中否定子节点

给定一些 HTML 元素的 tree-sitter 树:

损坏的查询

在 neovim 的 tree-sitter html 语法中使用此查询失败injections.scm,返回invalid field错误

我将如何查询<script>没有任何属性的元素?语法是否有必要为子项分配一个字段名称以便查询否定它?