我有以下语法:
SPACE : (' '|'\t'|'\n'|'\r')+ {$channel = HIDDEN;};
NAME_TAG : 'name';
IS_TAG : 'is';
START : 'START';
END : ('END START') => 'END START' ;
WORD : 'A'..'Z'+;
rule : START NAME_TAG IS_TAG WORD END;
并想要解析语言,例如:“START name is END END START”。这里的问题是 END 标记,因为 'END ' (Word + SPACE) 被误解了。我认为这里的正确方法是使用句法谓词(END-token),但也许我错了。