使用 JLexer 支持 q/k/kdb+ 注释的正则表达式语法

Regex syntax for support q/k/kdb+ comment using JLexer

问:

我的词法分析器逻辑需要使用什么?只有正则表达式或词法分析器的特殊功能?

我的q多注释语法哪里错了?

详情:

我正在尝试为 k/q/kdb+ (wiki, q/kdb+), and my plugin based on another k language idea plugin.

编写 intellij idea 插件

一开始我尝试使用 JLexer 编写词法分析器(这是 idea 插件的标准方式)。我需要支持 q lang 评论。我对多行注释有问题。

我的 flex 文件(此语法不稳定):

LINE_WS=[\ \t\f]
WHITE_SPACE={LINE_WS}+
NEWLINE=\r|\n|\r\n
MULTY_COMMENT={NEWLINE} \/ {WHITE_SPACE}* {NEWLINE} (([^\r\n\][^\r\n]* {NEWLINE})|{NEWLINE})* \
// ...
<YYINITIAL> {
   {WHITE_SPACE}                { return com.intellij.psi.TokenType.WHITE_SPACE; }
   {MULTY_COMMENT}              { return COMMENT; }
   // ...

q语言注释的语法(see more):

有效评论:

无效评论:

链接:

在此处下载并试用 xml 文件: http://www.timestored.com/b/kdb-code-highlighting-in-intellij/

此代码描述 q-like multi-line JFlex 注释:

LINE_WS=[\ \t\f]
WHITE_SPACE={LINE_WS}+
NEWLINE=\r|\n|\r\n
MULTY_COMMENT=\/ {WHITE_SPACE}* {NEWLINE} (([^\r\n\][^\r\n]* {NEWLINE})|{NEWLINE})* \
// ...
<YYINITIAL> {
   {WHITE_SPACE}                { return com.intellij.psi.TokenType.WHITE_SPACE; }
   ^{MULTY_COMMENT}             { return COMMENT; }
   // ...