将词法分析器操作从 v3 迁移到 v4



我有一个适用于 v3 的语法,我现在正在尝试迁移到 v4。我已经从18431158和14778570的问题中得到了一些提示,但我还有一个问题:

在我的 v3 代码中,我像这样计算行号(newLine() 只是保留解析的行数并保存它,以便以后当我尝试报告一些语义错误时,我也可以报告相应的行号):

COMMENT : '/*' ( options {greedy=false;} : 
    (
       'n' {newLine();}
     | ~ 'n'
    ) )* '*/' {$channel=HIDDEN;}
;
LINE_COMMENT : '//' ~('n'|'r')* 'r'? 'n' {$channel=HIDDEN; newLine();} ;
WS: (
  ' '
 |'r'
 |'t'
 |'n' {newLine();}
)+     {$channel=HIDDEN;};

v4 中,不允许在内部使用词法分析器操作。如何将此代码迁移到 v4?

ANTLR 4 始终跟踪Token对象中的行号和列号。您可以简单地删除调用 newLine() 方法并使用 Token.getLine() 的操作。

相关内容

  • 没有找到相关文章

最新更新