如何在 antlr4 lexer g4 文件中为 IF () THEN abc ELSEIF () THEN xyz ElSE yzx ENDIF 创建令牌

How to create token in antlr4 lexer g4 file for IF () THEN abc ELSEIF () THEN xyz ElSE yzx ENDIF

问题是我已经编写了词法分析器文件并创建了像

这样的令牌
IF_EXPR : 'IF';
ELSEIF_EXPR : 'ELSEIF';
THEN_EXPR : 'THEN';
ELSE_EXPR : 'ELSE'

但在某些情况下,我可以在条件块或 THEN 块中包含一些包含 'IF' 的字符串。并将字符串中的 'IF' 视为标记。

示例:

IF abc=1 
THEN 
   xyzIF=3
ELSE 
   abc=2
ENDIF

在上面的示例中,我的词法分析器将 xyzIF 中的 'IF' 视为 IF_EXPR 标记,但它应该将 xyzIF 视为一个不同的标记。

您应该有一个 IDENTIFIER 规则定义来匹配 xyzIF:

// Keywords first!
IF : 'IF';

// After keywords, define something that matches an identifier:
IDENTIFIER : [a-zA-Z_] [a-zA-Z_0-9]*;