首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义语言vscode扩展语法突出显示变量和函数调用

自定义语言vscode扩展语法突出显示变量和函数调用
EN

Stack Overflow用户
提问于 2022-10-15 05:21:33
回答 1查看 61关注 0票数 0

我正在为自定义语言做vscode扩展。我开发了用于语法突出显示关键字和操作符的tmlangauge.json。

我发现很难为变量和函数调用添加语法高亮显示。

变量声明如下所示:

代码语言:javascript
复制
let var1(integer)
let var2(string)

变量的tmlanguage.json如下:

代码语言:javascript
复制
"identifier": {
        "name": "variable.other.cl",
        "match": "(?i:(let)\\s*(?:(\\b[a-zA-Z][a-zA-Z0-9]*?\\b)\\s*(,?)))"
    }    

函数调用如下所示:

代码语言:javascript
复制
var1 = className.Func1()
var2 = className.Func2(arg1,arg2,...)
var3 = className->Func3()
var4 = className->Func4(arg1)

类函数可以由点或箭头运算符访问。我想在这里强调一下Funcx。

函数调用的tmlanguage.json如下所示:

代码语言:javascript
复制
"function-call":{
        "name": "entity.name.function.ekl",
        "match": "([A-Za-z@!?][A-Za-z0-9@!?]*)\\s*\\(",
        "captures": {
            "1": {
                "name": "support.function.cl"
            }
        }
    }

函数调用语法也与变量声明相匹配。它无法区分变量和函数调用。

我在比赛模式上犯了个错误。你的帮助是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-15 09:40:34

下面是函数调用的正则表达式,解决了这个问题。它能够区分变量和函数调用。

代码语言:javascript
复制
(?i:(?<=(\.|\>|=))\s*(\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\b)(?=\(\)?))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74076898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档