Warning: you are using the standard library and/or the %inline keyword. We
recommend switching on --infer in order to avoid obscure type error messages.
%{ type ('a, 'b) either = Left of 'a | Right of 'b %}
%start other
%start phrase
%token A
%token B
%token C
%token D
%token EOF
%type other
%type <(int, int) either> phrase
%%
embedded___anonymous_1_:
_10 = C
{let x =
let _1 = _10 in
()
in
( x )}
| _10 = D
{let x =
let _1 = _10 in
()
in
( x )}
list___anonymous_0_A_B__:
{ ( [] )}
| x0 = A xs = list___anonymous_0_A_B__
{let x =
let x = x0 in
( Left x )
in
( x :: xs )}
| y0 = B xs = list___anonymous_0_A_B__
{let x =
let y = y0 in
( Right y )
in
( x :: xs )}
phrase:
_10 = C _20 = list___anonymous_0_A_B__ _11 = D _21 = list___anonymous_0_A_B__ _3 = EOF
{let ys =
let _2 = _21 in
let _1 = _11 in
( _1 )
in
let xs =
let _2 = _20 in
let _1 = _10 in
( _1 )
in
( xs @ ys )}
other:
_1 = seplist_A_ _2 = EOF
{ ()}
seplist_A_:
_1 = A
{ ()}
| _1 = A _2 = embedded___anonymous_1_ _3 = seplist_A_
{ ()}
%%