%prec({__++__} < {__::__})%
%left_assoc(__+__, __++__, __-__)%
%right_assoc(__::__)%
%string [], __::__
%list <[__]>, []d, __::__d
%list [|__|], []c, __::__c
%list {__}, []a, __::__a
%list {|__|}, []e, __::__e
%list |[__]|, []b, __::__b