2

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

findOne('testing', () => {
});

findLegacy('testing2', () => {
});

findOne('testing3', () => {
});

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

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

(call_expression arguments: (arguments) @arguments)

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

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

4

1 回答 1

0

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

(call_expression
  arguments: (arguments ((string)+ @desc))
)

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

是的。请参阅查询语法文档中的谓词部分:https ://tree-sitter.github.io/tree-sitter/using-parsers#query-syntax

(call_expression
  function: (identifier) @fn
  arguments: (arguments ((string)+ @desc))
  (#eq? @fn "findOne")
)
于 2021-12-08T00:30:42.913 回答