首先,我对antlr4、DSL&EBNF,所以可能是这样的情况,我没有以正确的方式使用antlr4,但现在我还不知道我要做什么的替代方法
我想要一个规则,它应该由三个upperCases组成,但不应该允许有一个保留的String作为Result。
示例:
解析:threeUpperCase;
three UpperCase:上部-上部-上部;
鞋面:[A-Z]
我想避免三个UpperCase匹配"ABC"one_answers"DEF(允许BCA、CAB、BAC、FED、EDF等)。有办法做到这一点吗?
您不应该在解析器规则中匹配这些标记。将其作为lexer规则,并将其放在与关键字匹配的规则之后,应该会产生正确的令牌:
KEYWORD : 'ABC' | 'DEF';
THREE_UPPER_CASE : [A-Z] [A-Z] [A-Z];
或:
K_ABC : 'ABC';
K_DEF : 'DEF';
THREE_UPPER_CASE : [A-Z] [A-Z] [A-Z];