繁体   English   中英

我的vscode扩展名中有语法。 我想以编程方式标识TextLine或TextDocument对象中的注释

[英]I have a grammar in my vscode extension. I want to programmatically identify comments in a TextLine or TextDocument object

我正在为ChucK音乐编程语言开发VSCode扩展。 我发布了一个仅使用.tmLanguage.json文件进行语法高亮显示的版本。 现在,我正在研究语法检查器。

ChucK标识的语法错误位置有些混乱,如果我将范围扩展到前一个语句或块的末尾,这将更清楚,这意味着向后看前一个; }字符。

这很简单,除了我需要跳过评论的事实。 ChucK具有C ++样式的注释,并带有//行注释和/* */块注释。 这些由我的语法文件正确突出显示。

我有什么办法可以获取语法所产生的语法信息来识别这些注释? 扫描文档后,看来我也许能够抓住诸如文字颜色之类的视觉属性,但这似乎与主题相关且容易出错。 我的代码如何直接了解语法如何识别特定字符或区域?

如果要对自定义语言进行错误检查,则必须为此编写一个完整的解析器。 许多扩展作者已经做到了这一点(或者使用外部解析器,例如C ++的clang)。 一旦获得了语法结构,就很容易找到一定范围的语法元素,并且解析器将为您提供错误位置(如果有错误)。

我成功地使用了ANTLR4(通过antlr4ts打字稿运行时)来解析和处理自定义语言(以我的情况为ANTLR4语法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM