我正在为自定义语言做vscode扩展。我开发了用于语法突出显示关键字和操作符的tmlangauge.json。
我发现很难为变量和函数调用添加语法高亮显示。
变量声明如下所示:
let var1(integer)
let var2(string)变量的tmlanguage.json如下:
"identifier": {
"name": "variable.other.cl",
"match": "(?i:(let)\\s*(?:(\\b[a-zA-Z][a-zA-Z0-9]*?\\b)\\s*(,?)))"
} 函数调用如下所示:
var1 = className.Func1()
var2 = className.Func2(arg1,arg2,...)
var3 = className->Func3()
var4 = className->Func4(arg1)类函数可以由点或箭头运算符访问。我想在这里强调一下Funcx。
函数调用的tmlanguage.json如下所示:
"function-call":{
"name": "entity.name.function.ekl",
"match": "([A-Za-z@!?][A-Za-z0-9@!?]*)\\s*\\(",
"captures": {
"1": {
"name": "support.function.cl"
}
}
}函数调用语法也与变量声明相匹配。它无法区分变量和函数调用。
我在比赛模式上犯了个错误。你的帮助是非常感谢的。
发布于 2022-11-15 09:40:34
下面是函数调用的正则表达式,解决了这个问题。它能够区分变量和函数调用。
(?i:(?<=(\.|\>|=))\s*(\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\b)(?=\(\)?))https://stackoverflow.com/questions/74076898
复制相似问题