我对 ANTLR4 语法有疑问。我需要解析包含 6 个 AN 字符的文本。根据文本的上下文,它可以表示: - 6-AN 标识符(航班预订号 - PNR - 看起来像 7B22MS 或 JPN92Y 或类似), - 航空公司代码(两个字母)+ 航班号(四个数字),例如 LH1856。
问题是,如果我创建解析航空公司、号码和 PNR 标识符的词法分析器规则,如下所示:
航空公司:'A'..'Z''A'..'Z';
FlNum : ('0'..'9')('0'..'9')('0'..'9')('0'..'9');
PNR : ('A'..'Z'|'0'..'9')('A'..'Z'|'0'..'9')('A'..'Z'| '0'..'9')('A'..'Z'|'0'..'9')('A'..'Z'|'0'..'9')('A '..'Z'|'0'..'9');
那么 PNR 规则总是获胜并吃掉与其模式匹配的所有令牌。
如果语法的上下文需要它们,我该如何更改它以便解析 Airline 和 FlNum?