ANTLRは、$conditional_expression
の意味を決めることができません。ルール自体、または$rhs
とラベル付けされたものです。
conditional_expression
: (logical_or_expression -> logical_or_expression)
('?' expression ':' rhs -> ^('?' $conditional_expression expression rhs))?
;
rhs
: conditional_expression
;
でもないでしょう:
conditional_expression // <--- this one?
: (logical_or_expression -> logical_or_expression)
('?' expression ':' rhs=conditional_expression -> ^('?' $conditional_expression expression $rhs))?
// ^
// |
// +--- or this one?
;
あなたが今しようとしたとして、それが働いて得るために、あなたは何のあいまいな名前付けが存在しない、その場合には、それ自身のルールにrhs=conditional_expression
を移動する必要がありますこれはまた、あなたのためのトリックを行います
conditional_expression
: (e=logical_or_expression -> logical_or_expression)
('?' if_true=expression ':' if_false=expression -> ^('?' $e $if_true $if_false))?
;
か:
conditional_expression
: (e=logical_or_expression -> logical_or_expression)
('?' if_true=conditional_expression ':' if_false=conditional_expression -> ^('?' $e $if_true $if_false))?
;
?