我的VSCODE扩展中有语法.我想在文本线或文本图表对象中编程识别评论



我正在研究Chuck音乐编程语言的VSCODE扩展程序。我发布了一个版本,该版本只使用.tmLanguage.json文件进行语法突出显示。现在我正在使用语法检查器。

Chuck确定的语法错误位置有点令人困惑,如果我将范围扩展到超过上一个语句或块的末尾,这将更清楚,这意味着向后查看以前的;}字符。<<<<<<<<<<<<<<<<<<

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

有什么方法可以从语法已经产生的语法信息来识别这些评论?扫描文档,看来我可能能够捕获文本颜色之类的视觉属性,但这似乎依赖主题且容易出错。我的代码如何直接通过语法如何识别特定字符或区域?

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

我成功使用了antlr4(通过antlr4ts打字条运行时(来解析和处理自定义语言(在我的情况下,antlr4语法(。

最新更新