Commit 6b5daea6 authored by POTTIER Francois's avatar POTTIER Francois
Browse files

Re-generated expected output.

parent 90673664
......@@ -183,7 +183,9 @@ definition:
| _1 = NL
{ ( create _1 Nop )}
| _1 = error
{ ( raise (Syntax_error (Location.create
{let _endpos = _endpos__1_ in
let _startpos = _startpos__1_ in
( raise (Syntax_error (Location.create
(Position.of_lexing_pos _startpos)
(Position.of_lexing_pos _endpos), None)) )}
......
......@@ -203,7 +203,8 @@ primary_expression:
| _1 = LPAREN _2 = expression _3 = RPAREN
{ ()}
| _1 = LPAREN _2 = expression _3 = error
{ ( unclosed "(" ")" _startpos__1_ _endpos )}
{let _endpos = _endpos__3_ in
( unclosed "(" ")" _startpos__1_ _endpos )}
postfix_expression:
| _1 = primary_expression
......@@ -225,17 +226,20 @@ in
{let _3 =
( None )
in
let _endpos = _endpos__4_ in
( unclosed "(" ")" _startpos__2_ _endpos )}
| _1 = postfix_expression _2 = LPAREN x0 = argument_expression_list _4 = error
{let _3 =
let x = x0 in
( Some x )
in
let _endpos = _endpos__4_ in
( unclosed "(" ")" _startpos__2_ _endpos )}
| _1 = BUILTIN_VA_ARG _2 = LPAREN _3 = assignment_expression _4 = COMMA _5 = type_name _6 = RPAREN
{ ()}
| _1 = BUILTIN_VA_ARG _2 = LPAREN _3 = assignment_expression _4 = COMMA _5 = type_name _6 = error
{ ( unclosed "(" ")" _startpos__2_ _endpos )}
{let _endpos = _endpos__6_ in
( unclosed "(" ")" _startpos__2_ _endpos )}
| _1 = postfix_expression _2 = DOT i = general_identifier
{ ( set_id_type i OtherId )}
| _1 = postfix_expression _2 = PTR i = general_identifier
......@@ -256,17 +260,20 @@ in
in
()}
| _1 = LPAREN _2 = type_name _3 = error
{ ( unclosed "(" ")" _startpos__1_ _endpos )}
{let _endpos = _endpos__3_ in
( unclosed "(" ")" _startpos__1_ _endpos )}
| _1 = LPAREN _2 = type_name _3 = RPAREN _4 = LBRACE _5 = initializer_list _7 = error
{let _6 =
( None )
in
let _endpos = _endpos__7_ in
( unclosed "{" "}" _startpos__4_ _endpos )}
| _1 = LPAREN _2 = type_name _3 = RPAREN _4 = LBRACE _5 = initializer_list x0 = COMMA _7 = error
{let _6 =
let x = x0 in
( Some x )
in
let _endpos = _endpos__7_ in
( unclosed "{" "}" _startpos__4_ _endpos )}
argument_expression_list:
......@@ -1082,9 +1089,11 @@ struct_or_union_specifier:
| _1 = struct_or_union _2 = attribute_specifier_list i = general_identifier
{ ( set_id_type i OtherId )}
| _1 = struct_or_union _2 = attribute_specifier_list _3 = LBRACE _4 = struct_declaration_list _5 = error
{ ( unclosed "{" "}" _startpos__3_ _endpos )}
{let _endpos = _endpos__5_ in
( unclosed "{" "}" _startpos__3_ _endpos )}
| _1 = struct_or_union _2 = attribute_specifier_list _3 = general_identifier _4 = LBRACE _5 = struct_declaration_list _6 = error
{ ( unclosed "{" "}" _startpos__4_ _endpos )}
{let _endpos = _endpos__6_ in
( unclosed "{" "}" _startpos__4_ _endpos )}
struct_or_union:
| _1 = STRUCT
......@@ -1259,23 +1268,27 @@ in
{let _5 =
( None )
in
let _endpos = _endpos__6_ in
( unclosed "{" "}" _startpos__3_ _endpos )}
| _1 = ENUM _2 = attribute_specifier_list _3 = LBRACE _4 = enumerator_list x0 = COMMA _6 = error
{let _5 =
let x = x0 in
( Some x )
in
let _endpos = _endpos__6_ in
( unclosed "{" "}" _startpos__3_ _endpos )}
| _1 = ENUM _2 = attribute_specifier_list _3 = general_identifier _4 = LBRACE _5 = enumerator_list _7 = error
{let _6 =
( None )
in
let _endpos = _endpos__7_ in
( unclosed "{" "}" _startpos__4_ _endpos )}
| _1 = ENUM _2 = attribute_specifier_list _3 = general_identifier _4 = LBRACE _5 = enumerator_list x0 = COMMA _7 = error
{let _6 =
let x = x0 in
( Some x )
in
let _endpos = _endpos__7_ in
( unclosed "{" "}" _startpos__4_ _endpos )}
enumerator_list:
......@@ -1641,12 +1654,14 @@ in
{let _3 =
( None )
in
let _endpos = _endpos__4_ in
( unclosed "{" "}" _startpos__1_ _endpos )}
| _1 = LBRACE _2 = initializer_list x0 = COMMA _4 = error
{let _3 =
let x = x0 in
( Some x )
in
let _endpos = _endpos__4_ in
( unclosed "{" "}" _startpos__1_ _endpos )}
initializer_list:
......@@ -1748,7 +1763,8 @@ compound_statement:
| _1 = LBRACE _2 = in_context_compcert_pre_parser_option_block_item_list__ _3 = RBRACE
{ ()}
| _1 = LBRACE _2 = in_context_compcert_pre_parser_option_block_item_list__ _3 = error
{ ( unclosed "{" "}" _startpos__1_ _endpos )}
{let _endpos = _endpos__3_ in
( unclosed "{" "}" _startpos__1_ _endpos )}
block_item_list:
| _2 = block_item
......@@ -2157,7 +2173,8 @@ translation_unit_file:
| _1 = EOF
{ ()}
| _1 = error
{ ( syntax_error _endpos )}
{let _endpos = _endpos__1_ in
( syntax_error _endpos )}
translation_unit:
| _1 = external_declaration
......@@ -2261,12 +2278,14 @@ in
{let _3 =
( None )
in
let _endpos = _endpos__5_ in
( unclosed "{" "}" _startpos__2_ _endpos )}
| _1 = function_definition_begin _2 = LBRACE x0 = block_item_list _4 = pop_context _5 = error
{let _3 =
let x = x0 in
( Some x )
in
let _endpos = _endpos__5_ in
( unclosed "{" "}" _startpos__2_ _endpos )}
%%
......
This diff is collapsed.
This diff is collapsed.
......@@ -25,7 +25,8 @@ a1:
in
let _endpos_x_ = _endpos__0_ in
let _startpos_x_ = _endpos__0_ in
let _startpos = _endpos__0_ in
let _endpos = _endpos_x_ in
let _startpos = _startpos_x_ in
(
f _startpos _endpos _startpos_x_ _endpos_x_
)}
......@@ -33,12 +34,15 @@ let _startpos = _endpos__0_ in
a2:
| a = A b = B
{let x =
let _endpos = _endpos_a_ in
let _startpos = _endpos_a_ in
let _endpos__0_ = _endpos_a_ in
let _endpos = _endpos__0_ in
let _startpos = _endpos__0_ in
( g _startpos _endpos _startpos _endpos )
in
let _endpos_x_ = _endpos_a_ in
let _startpos_x_ = _endpos_a_ in
let _endpos = _endpos_b_ in
let _startpos = _startpos_a_ in
(
f _startpos _endpos _startpos_x_ _endpos_x_
)}
......@@ -46,18 +50,21 @@ let _startpos_x_ = _endpos_a_ in
a3:
| a0 = A b0 = B
{let x =
let _endpos_b_ = _endpos_b0_ in
let _endpos_a_ = _endpos_a0_ in
let _startpos_a_ = _startpos_a0_ in
let _endpos = _endpos_b0_ in
let _startpos = _startpos_a0_ in
let b = b0 in
let a = a0 in
let _endpos = _endpos_b_ in
let _startpos = _startpos_a_ in
(
g _startpos _endpos _startpos_a_ _endpos_a_
)
in
let _endpos_x_ = _endpos_b0_ in
let _startpos_x_ = _startpos_a0_ in
let _endpos = _endpos_x_ in
let _startpos = _startpos_x_ in
(
f _startpos _endpos _startpos_x_ _endpos_x_
)}
......@@ -65,18 +72,21 @@ let _startpos_x_ = _startpos_a0_ in
a4:
| a = A a0 = A b0 = B b = B
{let x =
let _endpos_b_ = _endpos_b0_ in
let _endpos_a_ = _endpos_a0_ in
let _startpos_a_ = _startpos_a0_ in
let _endpos = _endpos_b0_ in
let _startpos = _startpos_a0_ in
let b = b0 in
let a = a0 in
let _endpos = _endpos_b_ in
let _startpos = _startpos_a_ in
(
g _startpos _endpos _startpos_a_ _endpos_a_
)
in
let _endpos_x_ = _endpos_b0_ in
let _startpos_x_ = _startpos_a0_ in
let _endpos = _endpos_b_ in
let _startpos = _startpos_a_ in
(
f _startpos _endpos _startpos_x_ _endpos_x_
)}
......@@ -84,12 +94,15 @@ let _startpos_x_ = _startpos_a0_ in
a5:
| _1 = A _3 = C
{let x =
let _endpos = _endpos__1_ in
let _startpos = _endpos__1_ in
let _endpos__0_ = _endpos__1_ in
let _endpos = _endpos__0_ in
let _startpos = _endpos__0_ in
( g _startpos _endpos _startpos _endpos )
in
let _endpos_x_ = _endpos__1_ in
let _startpos_x_ = _endpos__1_ in
let _endpos = _endpos__3_ in
let _startpos = _startpos__1_ in
(
f _startpos _endpos _startpos_x_ _endpos_x_
)}
......@@ -97,16 +110,20 @@ let _startpos_x_ = _endpos__1_ in
a6:
| _10 = A _20 = B
{let x =
let _endpos = _endpos__20_ in
let _startpos = _startpos__10_ in
let _endpos__2_ = _endpos__20_ in
let _startpos__1_ = _startpos__10_ in
let _2 = _20 in
let _1 = _10 in
let _endpos = _endpos__2_ in
let _startpos = _startpos__1_ in
(
g _startpos _endpos _startpos _endpos
)
in
let _endpos_x_ = _endpos__20_ in
let _startpos_x_ = _startpos__10_ in
let _endpos = _endpos_x_ in
let _startpos = _startpos_x_ in
(
f _startpos _endpos _startpos_x_ _endpos_x_
)}
......@@ -114,12 +131,14 @@ let _startpos_x_ = _startpos__10_ in
a7:
| _1 = A _3 = B
{let x =
let _endpos = _endpos__1_ in
let _endpos__0_ = _endpos__1_ in
let _endpos = _endpos__0_ in
(
g _endpos _endpos _endpos _endpos
)
in
let _endpos_x_ = _endpos__1_ in
let _endpos = _endpos__3_ in
(
f _endpos _endpos _endpos_x_ _endpos_x_
)}
......@@ -127,12 +146,14 @@ let _endpos_x_ = _endpos__1_ in
a8:
| _1 = A _3 = B
{let x =
let _startpos = _endpos__1_ in
let _endpos__0_ = _endpos__1_ in
let _startpos = _endpos__0_ in
(
g _startpos _startpos _startpos _startpos
)
in
let _startpos_x_ = _endpos__1_ in
let _startpos = _startpos__1_ in
(
f _startpos _startpos _startpos_x_ _startpos_x_
)}
......
......@@ -14,13 +14,15 @@ main:
| _1 = A _10 = B _20 = C a0 = D e = E
{let a =
let _startpos_a_ = _startpos_a0_ in
let _startpos = _startpos__10_ in
let _startpos__1_ = _startpos__10_ in
let a = a0 in
let _2 = _20 in
let _1 = _10 in
let _startpos = _startpos__1_ in
( _startpos_a_, _startpos )
in
let _startpos_a_ = _startpos__10_ in
let _startpos = _startpos__1_ in
( a, _startpos_a_, _startpos, _startpos_e_ )}
%%
......
......@@ -102,19 +102,24 @@ main:
decl:
| d = const_decl
{ ( List.map
{let _startpos = _startpos_d_ in
( List.map
(function e -> A.ConstDecl (mk_pos _startpos, e))
d )}
| d = type_decl
{ ( List.map
{let _startpos = _startpos_d_ in
( List.map
(function e -> A.TypeDecl (mk_pos _startpos, e))
d )}
| d = node_decl
{ ( [A.NodeDecl (mk_pos _startpos, d)] )}
{let _startpos = _startpos_d_ in
( [A.NodeDecl (mk_pos _startpos, d)] )}
| d = func_decl
{ ( [A.FuncDecl (mk_pos _startpos, d)] )}
{let _startpos = _startpos_d_ in
( [A.FuncDecl (mk_pos _startpos, d)] )}
| d = node_param_inst
{ ( [A.NodeParamInst (mk_pos _startpos, d)] )}
{let _startpos = _startpos_d_ in
( [A.NodeParamInst (mk_pos _startpos, d)] )}
const_decl:
| _1 = CONST l = nonempty_list_const_decl_body_
......@@ -122,13 +127,17 @@ const_decl:
const_decl_body:
| h = ident _2 = COLON t = lustre_type _4 = SEMICOLON
{ ( [A.FreeConst (mk_pos _startpos, h, t)] )}
{let _startpos = _startpos_h_ in
( [A.FreeConst (mk_pos _startpos, h, t)] )}
| h = ident _2 = COMMA l = ident_list _4 = COLON t = lustre_type _6 = SEMICOLON
{ ( List.map (function e -> A.FreeConst (mk_pos _startpos, e, t)) (h :: l) )}
{let _startpos = _startpos_h_ in
( List.map (function e -> A.FreeConst (mk_pos _startpos, e, t)) (h :: l) )}
| s = ident _2 = EQUALS e = expr _4 = SEMICOLON
{ ( [A.UntypedConst (mk_pos _startpos, s, e)] )}
{let _startpos = _startpos_s_ in
( [A.UntypedConst (mk_pos _startpos, s, e)] )}
| c = typed_ident _2 = EQUALS e = expr _4 = SEMICOLON
{ ( let (s, t) = c in [A.TypedConst (mk_pos _startpos, s, e, t)] )}
{let _startpos = _startpos_c_ in
( let (s, t) = c in [A.TypedConst (mk_pos _startpos, s, e, t)] )}
array_type:
| t = lustre_type _2 = CARET s = expr
......@@ -210,11 +219,14 @@ nonempty_list_const_decl_body_:
type_decl:
| _1 = TYPE l = ident_list _3 = SEMICOLON
{ ( List.map (function e -> A.FreeType (mk_pos _startpos, e)) l )}
{let _startpos = _startpos__1_ in
( List.map (function e -> A.FreeType (mk_pos _startpos, e)) l )}
| _1 = TYPE l = ident_list _3 = EQUALS t = lustre_type _5 = SEMICOLON
{ ( List.map (function e -> A.AliasType (mk_pos _startpos, e, t)) l )}
{let _startpos = _startpos__1_ in
( List.map (function e -> A.AliasType (mk_pos _startpos, e, t)) l )}
| _1 = TYPE l = ident_list _3 = EQUALS t = record_type _5 = SEMICOLON
{ ( List.map
{let _startpos = _startpos__1_ in
( List.map
(function e ->
A.AliasType (mk_pos _startpos,
e,
......@@ -223,21 +235,29 @@ type_decl:
lustre_type:
| _1 = BOOL
{ ( A.Bool (mk_pos _startpos) )}
{let _startpos = _startpos__1_ in
( A.Bool (mk_pos _startpos) )}
| _1 = INT
{ ( A.Int (mk_pos _startpos))}
{let _startpos = _startpos__1_ in
( A.Int (mk_pos _startpos))}
| _1 = REAL
{ ( A.Real (mk_pos _startpos))}
{let _startpos = _startpos__1_ in
( A.Real (mk_pos _startpos))}
| _1 = SUBRANGE _2 = LSQBRACKET l = expr _4 = COMMA u = expr _6 = RSQBRACKET _7 = OF _8 = INT
{ ( A.IntRange (mk_pos _startpos, l, u))}
{let _startpos = _startpos__1_ in
( A.IntRange (mk_pos _startpos, l, u))}
| s = ident
{ ( A.UserType (mk_pos _startpos, s) )}
{let _startpos = _startpos_s_ in
( A.UserType (mk_pos _startpos, s) )}
| t = tuple_type
{ ( A.TupleType (mk_pos _startpos, t) )}
{let _startpos = _startpos_t_ in
( A.TupleType (mk_pos _startpos, t) )}
| t = array_type
{ ( A.ArrayType (mk_pos _startpos, t) )}
{let _startpos = _startpos_t_ in
( A.ArrayType (mk_pos _startpos, t) )}
| t = enum_type
{ ( A.EnumType (mk_pos _startpos, t) )}
{let _startpos = _startpos_t_ in
( A.EnumType (mk_pos _startpos, t) )}
tuple_type:
| _1 = LSQBRACKET l = lustre_type_list _3 = RSQBRACKET
......@@ -255,9 +275,11 @@ node_sep:
contract_clause:
| _1 = REQUIRES e = expr _3 = SEMICOLON
{ ( A.Requires (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.Requires (mk_pos _startpos, e) )}
| _1 = ENSURES e = expr _3 = SEMICOLON
{ ( A.Ensures (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.Ensures (mk_pos _startpos, e) )}
static_param:
| _1 = TYPE t = ident
......@@ -269,11 +291,13 @@ static_params:
node_local_decl:
| c = const_decl
{ ( List.map
{let _startpos = _startpos_c_ in
( List.map
(function e -> A.NodeConstDecl (mk_pos _startpos, e))
c )}
| v = var_decls
{ ( List.map
{let _startpos = _startpos_v_ in
( List.map
(function e -> A.NodeVarDecl (mk_pos _startpos, e))
v )}
......@@ -287,13 +311,16 @@ var_decl:
node_equation:
| _1 = ASSERT e = expr _3 = SEMICOLON
{ ( A.Assert (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.Assert (mk_pos _startpos, e) )}
| l = left_side _2 = EQUALS e = expr _4 = SEMICOLON
{ ( A.Equation (mk_pos _startpos, l, e) )}
{let _startpos = _startpos_l_ in
( A.Equation (mk_pos _startpos, l, e) )}
| _1 = MAIN
{ ( A.AnnotMain )}
| _1 = PROPERTY e = expr _3 = SEMICOLON
{ ( A.AnnotProperty (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.AnnotProperty (mk_pos _startpos, e) )}
left_side:
| l = struct_item_list
......@@ -305,9 +332,11 @@ left_side:
struct_item:
| s = ident
{ ( A.SingleIdent (mk_pos _startpos, s) )}
{let _startpos = _startpos_s_ in
( A.SingleIdent (mk_pos _startpos, s) )}
| s = ident l = nonempty_list_one_index_
{ ( A.IndexedIdent (mk_pos _startpos, s, l))}
{let _startpos = _startpos_s_ in
( A.IndexedIdent (mk_pos _startpos, s, l))}
struct_item_list:
| l = separated_nonempty_list_COMMA_struct_item_
......@@ -315,95 +344,137 @@ struct_item_list:
expr:
| s = ident
{ ( A.Ident (mk_pos _startpos, s) )}
{let _startpos = _startpos_s_ in
( A.Ident (mk_pos _startpos, s) )}
| _1 = TRUE
{ ( A.True (mk_pos _startpos) )}
{let _startpos = _startpos__1_ in
( A.True (mk_pos _startpos) )}
| _1 = FALSE
{ ( A.False (mk_pos _startpos) )}
{let _startpos = _startpos__1_ in
( A.False (mk_pos _startpos) )}
| s = NUMERAL
{ ( A.Num (mk_pos _startpos, s) )}
{let _startpos = _startpos_s_ in
( A.Num (mk_pos _startpos, s) )}
| s = DECIMAL
{ ( A.Dec (mk_pos _startpos, s) )}
{let _startpos = _startpos_s_ in
( A.Dec (mk_pos _startpos, s) )}
| _1 = INT e = expr
{ ( A.ToInt (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.ToInt (mk_pos _startpos, e) )}
| _1 = REAL e = expr
{ ( A.ToReal (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.ToReal (mk_pos _startpos, e) )}
| _1 = LPAREN e = expr _3 = RPAREN
{ ( e )}
| _1 = LPAREN h = expr _3 = COMMA l = expr_list _5 = RPAREN
{ ( A.ExprList (mk_pos _startpos, h :: l) )}
{let _startpos = _startpos__1_ in
( A.ExprList (mk_pos _startpos, h :: l) )}
| _1 = LSQBRACKET l = expr_list _3 = RSQBRACKET
{ ( A.TupleExpr (mk_pos _startpos, l) )}
{let _startpos = _startpos__1_ in
( A.TupleExpr (mk_pos _startpos, l) )}
| e1 = expr _2 = CARET e2 = expr
{ ( A.ArrayConstr (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.ArrayConstr (mk_pos _startpos, e1, e2) )}
| e = ident _2 = LSQBRACKET i = expr _4 = RSQBRACKET
{ ( A.TupleProject (mk_pos _startpos, e, i) )}
{let _startpos = _startpos_e_ in
( A.TupleProject (mk_pos _startpos, e, i) )}
| e = ident _2 = LSQBRACKET l = array_slice_list _4 = RSQBRACKET
{ ( A.ArraySlice (mk_pos _startpos, e, l) )}
{let _startpos = _startpos_e_ in
( A.ArraySlice (mk_pos _startpos, e, l) )}
| s = ident _2 = DOT t = ident
{ ( A.RecordProject (mk_pos _startpos, s, I.index_of_ident t) )}
{let _startpos = _startpos_s_ in
( A.RecordProject (mk_pos _startpos, s, I.index_of_ident t) )}
| t = ident f = tlist_LCURLYBRACKET_SEMICOLON_RCURLYBRACKET_record_field_assign_
{ ( A.RecordConstruct (mk_pos _startpos, t, f) )}
{let _startpos = _startpos_t_ in
( A.RecordConstruct (mk_pos _startpos, t, f) )}
| e1 = expr _2 = PIPE e2 = expr
{ ( A.ArrayConcat (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.ArrayConcat (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = MINUS e2 = expr
{ ( A.Minus (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Minus (mk_pos _startpos, e1, e2) )}
| _1 = MINUS e = expr
{ ( A.Uminus (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.Uminus (mk_pos _startpos, e) )}
| e1 = expr _2 = PLUS e2 = expr
{ ( A.Plus (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Plus (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = MULT e2 = expr
{ ( A.Times (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Times (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = DIV e2 = expr
{ ( A.Div (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Div (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = INTDIV e2 = expr
{ ( A.IntDiv (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.IntDiv (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = MOD e2 = expr
{ ( A.Mod (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Mod (mk_pos _startpos, e1, e2) )}
| _1 = NOT e = expr
{ ( A.Not (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.Not (mk_pos _startpos, e) )}
| e1 = expr _2 = AND e2 = expr
{ ( A.And (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.And (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = OR e2 = expr
{ ( A.Or (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Or (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = XOR e2 = expr
{ ( A.Xor (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Xor (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = IMPL e2 = expr
{ ( A.Impl (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Impl (mk_pos _startpos, e1, e2) )}
| _1 = HASH _2 = LPAREN e = expr_list _4 = RPAREN
{ ( A.OneHot (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.OneHot (mk_pos _startpos, e) )}
| e1 = expr _2 = LT e2 = expr
{ ( A.Lt (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Lt (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = GT e2 = expr
{ ( A.Gt (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Gt (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = LTE e2 = expr
{ ( A.Lte (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Lte (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = GTE e2 = expr
{ ( A.Gte (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Gte (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = EQUALS e2 = expr
{ ( A.Eq (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Eq (mk_pos _startpos, e1, e2) )}
| e1 = expr _2 = NEQ e2 = expr
{ ( A.Neq (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.Neq (mk_pos _startpos, e1, e2) )}
| _1 = IF e1 = expr _3 = THEN e2 = expr _5 = ELSE e3 = expr
{ ( A.Ite (mk_pos _startpos, e1, e2, e3) )}
{let _startpos = _startpos__1_ in
( A.Ite (mk_pos _startpos, e1, e2, e3) )}
| _1 = WITH e1 = expr _3 = THEN e2 = expr _5 = ELSE e3 = expr
{ ( A.With (mk_pos _startpos, e1, e2, e3) )}
{let _startpos = _startpos__1_ in
( A.With (mk_pos _startpos, e1, e2, e3) )}
| e1 = expr _2 = WHEN e2 = expr
{ ( A.When (mk_pos _startpos, e1, e2) )}
{let _startpos = _startpos_e1_ in
( A.When (mk_pos _startpos, e1, e2) )}
| _1 = CURRENT e = expr
{ ( A.Current (mk_pos _startpos, e) )}
{let _startpos = _startpos__1_ in
( A.Current (mk_pos _startpos, e) )}
| _1 = CONDACT _2 = LPAREN e1 = expr _4 = COMMA s = ident _6 = LPAREN xs0 = loption_separated_nonempty_list_COMMA_expr__ _8 = RPAREN _9 = COMMA v = expr_list _11 = RPAREN
{let a =
let xs = xs0 in
( xs )
in