【发布时间】:2014-06-09 21:50:09
【问题描述】:
是否可以在 ANTLR4 中定义一个语法来识别文本中允许使用空格的关键字,例如:
First goal refinedInto Goal two, Goal three
Another goal refinedInto ...
这里的“refinedInto”是一个关键字。到目前为止,我已经提出了以下解析器和词法分析器,但不认为这是解决我的问题的正确方法。即因为我的 REF_LEFT 令牌在上面的示例中评估为“第一个目标提炼的目标”,我想将“第一个目标”与“提炼的目标”关键字分开。
这是我的解析器:
parser grammar GParse;
parse
: REF_LEFT ( STRING COMMA )* STRING EOF
;
这里是词法分析器:
lexer grammar GLex;
REF_LEFT: [a-zA-Z ]+? 'refinedInto ' -> pushMode(RDef);
mode RDef;
STRING : [a-zA-Z ]+;
COMMA : ',' ' '*;
NL : ('\n' | EOF) -> popMode;
解决这个问题的正确方法是什么?
【问题讨论】: