AntlrV4中,嵌套的三元运算符(例如A ? B : C ? D : E)按照从右向左的顺序进行解析。对于上述示例,AntlrV4将先解析C ? D : E,然后再解析A ? B : (C ? D : E)。为了确保优先级,可以将括号添加到表达式中,以便清楚地表示操作的顺序。
示例代码:
grammar MyGrammar;
expr : ID ternary ;
ternary : INT ('>' INT '?' ternary ':' ternary)? ;
ID : [a-z]+ ;
INT : [0-9]+ ;
WS : [ \t\n\r]+ -> skip ;
此例中,A ? B : C ? D : E会被解析为(ID '?' INT ':' ternary),然后被解析为(INT '>' INT '?' ternary ':' ternary)。