【发布时间】:2020-05-07 07:12:16
【问题描述】:
我试图在一个词法分析器规则上使用多个词法分析器命令。 我的代码看起来像这样:
LEXER_RULE: something->mode(NUMBER);
mode NUMBER;
NU: [0-9]+ ->mode(ANOTHER_MODE); //Going into another mode in case the NU rule is used
//now leaving the NUMBER mode, in case there is no number written
NO_NUM: ~[0-9]->mode(DEFAULT_MODE);
词法分析器规则 NU 只是可选的,所以我必须涵盖不使用它的情况。但是,我也想跳过 NO_NUM 中的所有内容。 像
NO_NUM:~[0-9]->skip ->mode(DEFAULT_MODE);
我知道我不能在一个词法分析器规则上使用多个词法分析器命令。有谁知道任何其他方法?我需要能够以某种方式离开模式。顺便说一句,我不允许使用语义谓词。谢谢!
【问题讨论】: