
(* This generated code requires the following version of MenhirLib: *)

let () =
  MenhirLib.StaticVersion.require_20231231

module MenhirBasics = struct
  
  exception Error
  
  let _eRR =
    fun _s ->
      raise Error
  
  type token = 
    | WHILE
    | VOID
    | VECTOR
    | UPPER
    | UNREACHABLE
    | UNITVECTOR
    | TUPLE
    | TRUNCATE
    | TRANSPOSE
    | TRANSFORMEDPARAMETERSBLOCK
    | TRANSFORMEDDATABLOCK
    | TIMESASSIGN
    | TIMES
    | TILDE
    | TARGET
    | SUMTOZERO
    | STRINGLITERAL of (
# 95 "src/frontend/parser.mly"
       (string)
# 36 "src/frontend/parser.ml"
  )
    | STOCHASTICROWMATRIX
    | STOCHASTICCOLUMNMATRIX
    | SIMPLEX
    | SEMICOLON
    | RPAREN
    | ROWVECTOR
    | RETURN
    | REJECT
    | REALNUMERAL of (
# 93 "src/frontend/parser.mly"
       (string)
# 49 "src/frontend/parser.ml"
  )
    | REAL
    | RBRACK
    | RBRACE
    | RABRACK
    | QMARK
    | PROFILE
    | PRINT
    | POSITIVEORDERED
    | PLUSASSIGN
    | PLUS
    | PARAMETERSBLOCK
    | ORDERED
    | OR
    | OFFSET
    | NEQUALS
    | MULTIPLIER
    | MODULO
    | MODELBLOCK
    | MINUSASSIGN
    | MINUS
    | MATRIX
    | LPAREN
    | LOWER
    | LEQ
    | LDIVIDE
    | LBRACK
    | LBRACE
    | LABRACK
    | JACOBIAN
    | INTNUMERAL of (
# 92 "src/frontend/parser.mly"
       (string)
# 83 "src/frontend/parser.ml"
  )
    | INT
    | IN
    | IMAGNUMERAL of (
# 94 "src/frontend/parser.mly"
       (string)
# 90 "src/frontend/parser.ml"
  )
    | IF
    | IDIVIDE
    | IDENTIFIER of (
# 96 "src/frontend/parser.mly"
       (string)
# 97 "src/frontend/parser.ml"
  )
    | HAT
    | GEQ
    | GENERATEDQUANTITIESBLOCK
    | FUNCTIONBLOCK
    | FOR
    | FATAL_ERROR
    | EQUALS
    | EOF
    | ELTTIMESASSIGN
    | ELTTIMES
    | ELTPOW
    | ELTDIVIDEASSIGN
    | ELTDIVIDE
    | ELSE
    | DOTNUMERAL of (
# 93 "src/frontend/parser.mly"
       (string)
# 116 "src/frontend/parser.ml"
  )
    | DIVIDEASSIGN
    | DIVIDE
    | DATABLOCK
    | COVMATRIX
    | CORRMATRIX
    | CONTINUE
    | COMPLEXVECTOR
    | COMPLEXROWVECTOR
    | COMPLEXMATRIX
    | COMPLEX
    | COMMA
    | COLON
    | CHOLESKYFACTORCOV
    | CHOLESKYFACTORCORR
    | BREAK
    | BAR
    | BANG
    | ASSIGN
    | ARRAY
    | AND
  
end

include MenhirBasics

# 3 "src/frontend/parser.mly"
  
open Core
open Middle
open Ast
open Debugging
open Preprocessor

(* Takes a sized_basic_type and a list of sizes and repeatedly applies then
   SArray constructor, taking sizes off the list *)
let reducearray (sbt, l) =
  List.fold_right l ~f:(fun z y -> SizedType.SArray (y, z)) ~init:sbt

let build_id id loc =
  grammar_logger ("identifier " ^ id) ;
  {name= id; id_loc= location_span_of_positions loc}

let reserved (name, loc, _) =
  raise
    (Errors.SyntaxError
       (Errors.Parsing
          ( "Expected a new identifier but found reserved keyword '" ^ name
            ^ "'.\n"
          , location_span_of_positions loc ) ) )

let reserved_decl (name, loc, is_type) =
  if is_type then
    raise
      (Errors.SyntaxError
         (Errors.Parsing
            ( "Found a type ('" ^ name
              ^ "') where an identifier was expected.\n\
                 All variables declared in a comma-separated list must be of \
                 the same type.\n"
            , location_span_of_positions loc ) ) )
  else reserved (name, loc, is_type)

let build_expr expr loc = {expr; emeta= {loc= location_span_of_positions loc}}
let rec iterate_n f x = function 0 -> x | n -> iterate_n f (f x) (n - 1)

let parse_tuple_slot ix_str loc =
  match int_of_string_opt (String.drop_prefix ix_str 1) with
  | None ->
      raise
        (Errors.SyntaxError
           (Errors.Parsing
              ( "Failed to parse integer from string '" ^ ix_str
                ^ "' in tuple index. \nThe index is likely too large.\n"
              , location_span_of_positions loc ) ) )
  | Some ix -> ix

(** Given a parsed expression, try to convert it to
    a valid assignable lvalue. Raises a syntax error on failure *)
let try_convert_to_lvalue expr loc =
  match Ast.lvalue_of_expr_opt expr with
  | Some l -> l
  | None ->
    raise
        (Errors.SyntaxError
           (Errors.Parsing
              ( "Expected an assignable value but found a general expression.\n"
              , location_span_of_positions loc ) ) )

let nest_unsized_array basic_type n =
  iterate_n (fun t -> UnsizedType.UArray t) basic_type n


# 210 "src/frontend/parser.ml"

module Tables = struct
  
  include MenhirBasics
  
  let token2terminal : token -> int =
    fun _tok ->
      match _tok with
      | AND ->
          97
      | ARRAY ->
          96
      | ASSIGN ->
          95
      | BANG ->
          94
      | BAR ->
          93
      | BREAK ->
          92
      | CHOLESKYFACTORCORR ->
          91
      | CHOLESKYFACTORCOV ->
          90
      | COLON ->
          89
      | COMMA ->
          88
      | COMPLEX ->
          87
      | COMPLEXMATRIX ->
          86
      | COMPLEXROWVECTOR ->
          85
      | COMPLEXVECTOR ->
          84
      | CONTINUE ->
          83
      | CORRMATRIX ->
          82
      | COVMATRIX ->
          81
      | DATABLOCK ->
          80
      | DIVIDE ->
          79
      | DIVIDEASSIGN ->
          78
      | DOTNUMERAL _ ->
          77
      | ELSE ->
          76
      | ELTDIVIDE ->
          75
      | ELTDIVIDEASSIGN ->
          74
      | ELTPOW ->
          73
      | ELTTIMES ->
          72
      | ELTTIMESASSIGN ->
          71
      | EOF ->
          70
      | EQUALS ->
          69
      | FATAL_ERROR ->
          68
      | FOR ->
          67
      | FUNCTIONBLOCK ->
          66
      | GENERATEDQUANTITIESBLOCK ->
          65
      | GEQ ->
          64
      | HAT ->
          63
      | IDENTIFIER _ ->
          62
      | IDIVIDE ->
          61
      | IF ->
          60
      | IMAGNUMERAL _ ->
          59
      | IN ->
          58
      | INT ->
          57
      | INTNUMERAL _ ->
          56
      | JACOBIAN ->
          55
      | LABRACK ->
          54
      | LBRACE ->
          53
      | LBRACK ->
          52
      | LDIVIDE ->
          51
      | LEQ ->
          50
      | LOWER ->
          49
      | LPAREN ->
          48
      | MATRIX ->
          47
      | MINUS ->
          46
      | MINUSASSIGN ->
          45
      | MODELBLOCK ->
          44
      | MODULO ->
          43
      | MULTIPLIER ->
          42
      | NEQUALS ->
          41
      | OFFSET ->
          40
      | OR ->
          39
      | ORDERED ->
          38
      | PARAMETERSBLOCK ->
          37
      | PLUS ->
          36
      | PLUSASSIGN ->
          35
      | POSITIVEORDERED ->
          34
      | PRINT ->
          33
      | PROFILE ->
          32
      | QMARK ->
          31
      | RABRACK ->
          30
      | RBRACE ->
          29
      | RBRACK ->
          28
      | REAL ->
          27
      | REALNUMERAL _ ->
          26
      | REJECT ->
          25
      | RETURN ->
          24
      | ROWVECTOR ->
          23
      | RPAREN ->
          22
      | SEMICOLON ->
          21
      | SIMPLEX ->
          20
      | STOCHASTICCOLUMNMATRIX ->
          19
      | STOCHASTICROWMATRIX ->
          18
      | STRINGLITERAL _ ->
          17
      | SUMTOZERO ->
          16
      | TARGET ->
          15
      | TILDE ->
          14
      | TIMES ->
          13
      | TIMESASSIGN ->
          12
      | TRANSFORMEDDATABLOCK ->
          11
      | TRANSFORMEDPARAMETERSBLOCK ->
          10
      | TRANSPOSE ->
          9
      | TRUNCATE ->
          8
      | TUPLE ->
          7
      | UNITVECTOR ->
          6
      | UNREACHABLE ->
          5
      | UPPER ->
          4
      | VECTOR ->
          3
      | VOID ->
          2
      | WHILE ->
          1
  
  and error_terminal =
    0
  
  and token2value : token -> Obj.t =
    fun _tok ->
      match _tok with
      | AND ->
          Obj.repr ()
      | ARRAY ->
          Obj.repr ()
      | ASSIGN ->
          Obj.repr ()
      | BANG ->
          Obj.repr ()
      | BAR ->
          Obj.repr ()
      | BREAK ->
          Obj.repr ()
      | CHOLESKYFACTORCORR ->
          Obj.repr ()
      | CHOLESKYFACTORCOV ->
          Obj.repr ()
      | COLON ->
          Obj.repr ()
      | COMMA ->
          Obj.repr ()
      | COMPLEX ->
          Obj.repr ()
      | COMPLEXMATRIX ->
          Obj.repr ()
      | COMPLEXROWVECTOR ->
          Obj.repr ()
      | COMPLEXVECTOR ->
          Obj.repr ()
      | CONTINUE ->
          Obj.repr ()
      | CORRMATRIX ->
          Obj.repr ()
      | COVMATRIX ->
          Obj.repr ()
      | DATABLOCK ->
          Obj.repr ()
      | DIVIDE ->
          Obj.repr ()
      | DIVIDEASSIGN ->
          Obj.repr ()
      | DOTNUMERAL _v ->
          Obj.repr _v
      | ELSE ->
          Obj.repr ()
      | ELTDIVIDE ->
          Obj.repr ()
      | ELTDIVIDEASSIGN ->
          Obj.repr ()
      | ELTPOW ->
          Obj.repr ()
      | ELTTIMES ->
          Obj.repr ()
      | ELTTIMESASSIGN ->
          Obj.repr ()
      | EOF ->
          Obj.repr ()
      | EQUALS ->
          Obj.repr ()
      | FATAL_ERROR ->
          Obj.repr ()
      | FOR ->
          Obj.repr ()
      | FUNCTIONBLOCK ->
          Obj.repr ()
      | GENERATEDQUANTITIESBLOCK ->
          Obj.repr ()
      | GEQ ->
          Obj.repr ()
      | HAT ->
          Obj.repr ()
      | IDENTIFIER _v ->
          Obj.repr _v
      | IDIVIDE ->
          Obj.repr ()
      | IF ->
          Obj.repr ()
      | IMAGNUMERAL _v ->
          Obj.repr _v
      | IN ->
          Obj.repr ()
      | INT ->
          Obj.repr ()
      | INTNUMERAL _v ->
          Obj.repr _v
      | JACOBIAN ->
          Obj.repr ()
      | LABRACK ->
          Obj.repr ()
      | LBRACE ->
          Obj.repr ()
      | LBRACK ->
          Obj.repr ()
      | LDIVIDE ->
          Obj.repr ()
      | LEQ ->
          Obj.repr ()
      | LOWER ->
          Obj.repr ()
      | LPAREN ->
          Obj.repr ()
      | MATRIX ->
          Obj.repr ()
      | MINUS ->
          Obj.repr ()
      | MINUSASSIGN ->
          Obj.repr ()
      | MODELBLOCK ->
          Obj.repr ()
      | MODULO ->
          Obj.repr ()
      | MULTIPLIER ->
          Obj.repr ()
      | NEQUALS ->
          Obj.repr ()
      | OFFSET ->
          Obj.repr ()
      | OR ->
          Obj.repr ()
      | ORDERED ->
          Obj.repr ()
      | PARAMETERSBLOCK ->
          Obj.repr ()
      | PLUS ->
          Obj.repr ()
      | PLUSASSIGN ->
          Obj.repr ()
      | POSITIVEORDERED ->
          Obj.repr ()
      | PRINT ->
          Obj.repr ()
      | PROFILE ->
          Obj.repr ()
      | QMARK ->
          Obj.repr ()
      | RABRACK ->
          Obj.repr ()
      | RBRACE ->
          Obj.repr ()
      | RBRACK ->
          Obj.repr ()
      | REAL ->
          Obj.repr ()
      | REALNUMERAL _v ->
          Obj.repr _v
      | REJECT ->
          Obj.repr ()
      | RETURN ->
          Obj.repr ()
      | ROWVECTOR ->
          Obj.repr ()
      | RPAREN ->
          Obj.repr ()
      | SEMICOLON ->
          Obj.repr ()
      | SIMPLEX ->
          Obj.repr ()
      | STOCHASTICCOLUMNMATRIX ->
          Obj.repr ()
      | STOCHASTICROWMATRIX ->
          Obj.repr ()
      | STRINGLITERAL _v ->
          Obj.repr _v
      | SUMTOZERO ->
          Obj.repr ()
      | TARGET ->
          Obj.repr ()
      | TILDE ->
          Obj.repr ()
      | TIMES ->
          Obj.repr ()
      | TIMESASSIGN ->
          Obj.repr ()
      | TRANSFORMEDDATABLOCK ->
          Obj.repr ()
      | TRANSFORMEDPARAMETERSBLOCK ->
          Obj.repr ()
      | TRANSPOSE ->
          Obj.repr ()
      | TRUNCATE ->
          Obj.repr ()
      | TUPLE ->
          Obj.repr ()
      | UNITVECTOR ->
          Obj.repr ()
      | UNREACHABLE ->
          Obj.repr ()
      | UPPER ->
          Obj.repr ()
      | VECTOR ->
          Obj.repr ()
      | VOID ->
          Obj.repr ()
      | WHILE ->
          Obj.repr ()
  
  and default_reduction =
    (16, "\000\000\000\242\000\030\000\000\000\000\000\031\000\028\000 \000\027\000!\000\"\000#\000\029\000\000\000\000\000\000\000\127\000\000\001:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\001=\000\000\001<\001;\000\000\000\000\000\000\001?\000\243\000\000\000\205\000\210\000\214\000\240\000\223\000\236\000u\000\234\000\224\000\230\000\229\000\222\000\215\000\202\000\232\000\212\000\235\000\231\000\221\000\200\000\220\000\237\000\238\000\201\000\216\000\239\000v\000\211\000\207\000\203\000t\000\198\000\206\000\233\000\204\000\199\000\228\000\227\000\209\000\217\000\218\000\219\000\213\000\226\000\225\000\208\000\241\000P\000O\000\000\000\000\000\154\000\137\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000,\000&\000\000\000\000\000\000\000\000\000\000\000%\000(\000'\000\000\000\000\000\000\000\139\000\000\000+\000\000\000j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000/\000\000\000\247\000\000\000\000\000\000\000-\000\000\000\000\000)\000\000\000*\000\000\0001\000\000\000\000\000.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\r\000\000\000\000\000\000\000\000\000\000\001\014\001\011\000\000\000\000\000\000\000\000\000\000\001\015\001\n\000\000\000\000\000\000\001\016\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\001\018\001\012\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\253\000\000\000\000\000\251\000\000\000\006\000\005\000\252\000\000\0013\000\000\000\000\000\000\0014\000\000\000\000\000\000\0012\000\000\000\000\000\000\000\018\000\026\000\000\000\025\000\000\000\024\000\000\000\000\001\021\000\187\000\000\000\000\000\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\000\000\000\020\000\000\000\019\000\145\001B\000\000\000\000\000\000\000\196\000R\000Q\000\000\000\000\001\005\000\000\000\000\000\000\000q\000\183\000\174\000\000\000E\000\000\000p\001A\000\000\000\000\000\000\000F\000\000\000\000\000\000\000C\001\020\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0011\000\000\000\182\000\000\000\017\001@\000\000\000\000\000\000\000\012\000\000\000\000\000\n\000\000\000\000\000\011\000\000\000\000\000\014\000\000\000\000\000\015\000\000\000\000\000\r\000\000\000\000\000\t\001\019\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\144\000\000\000\000\000\141\000\000\000\135\000\000\000\147\000\000\000\000\000\146\000\143\000m\000\000\000\000\000\245\000\000\000n\000\001\000\000\000\129\000\000\000\000\000\000\000\000\000l\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\195\000\000\0019\000\000\000\000\000\000\001\028\0018\000\000\000\000\000\000\001%\000\000\000\000\000\000\000\000\000\000\001&\000\000\000\000\000\000\000\000\000\000\001,\000\000\000\000\000\000\000\000\000\000\001+\000\000\000\000\000\000\001$\000\000\000\000\000\000\000\000\001\029\000\000\001\026\000\000\000\000\000\000\001#\000\000\000\000\000\000\001\"\000\000\000\000\000\000\000\000\000\000\000\000\001\030\000\000\000\000\001\025\000\000\000\000\000\000\001*\000\000\000\000\000\000\001)\000\000\000\000\000\000\000\000\001\031\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\001\027\000\000\000\000\000\000\000\000\000\000\000\000\001(\000\000\000\000\000\000\001'\000\000\000\000\000\000\000\000\000\000\000\000\001\003\000\000\000\000\001\001\000\000\000\b\000\007\001\002\000\000\0016\000\000\000\000\000\000\0017\000\000\000\000\000\000\0015\001\024\000\000\000\000\000\000\000\197\000\000\000\000\001\007\000\000\000\000\000\148\000\168\000s\000\184\000\176\000\000\000M\000\000\000r\000\000\000\000\000\000\000N\000\000\000\000\000\000\000K\000\000\000\131\001\023\000\000\000\000\000\000\000L\000\000\000B\000\000\000\000\000\000\000\000\000\000\000\000\000I\000\000\000\000\000\000\000\000\000J\000\000\000\000\000\000\000G\001.\001-\000\133\001\022\000\000\000\000\000\000\000H\000\000\001/\000\178\000\000\000\000\000\000\000\000\000\185\000\172\000\000\000\000\000\000\000\000\0010\000\180\000\000\000\000\000\000\000\000\000\140\000\000\000\000\000\000\000\000\000o\000\000\000\189\000\162\000\164\000\156\000\160")
  
  and error =
    (98, "1\000\001\016\000\001\000@\002\000\015\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\017\000\001\016\000\001\000@\000\000\015\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\b\000\000\000\000 \000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\004@\000\004\001\000\000\000<\000\000\000\000\000\000\000\128\000\000\000\000\000\004@\000D\000\000@\016\000\000\003\192 \000\000\000\000\000\000\000\000\000\000\b\000D\000\004@\000\004\001\000\000\000<\002\000\000\002\000\000\000\000\000\000\000\000\128\004@\000D\000\000@\016\000\000\003\192 \000\000\000\000\000\000\000\000\000\000\000\001\238\006\239C\154\165%\168\224#\254\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\004@\000D\000\000@\016\000\000\003\192 \000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\224nt9\170PZ\142\002?\206 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\017\000\003\016\000\001\000@\000\000\143\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\004@\000\004\001\000\000\000<\002{\129\185\208\230\169Aj8\b\2558\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\001\002\004\019\131 \n6h`\016@(\000\000\000\000\000\000\128\000\000\000\000\000\000 @\b\002\000\163d\128\001\000\000\128\000\000\000\000\000\b\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \002\004\000\128 \n6H\000\016\000\b\000\129\000 \b\002\141\146\000\004\000\002\000 @\n\002\000\163d\128\001\000\000\128\b\016\002\000\128(\217 \000@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\024\024<%J\232\022\019T\003\017\000\129\002 \b\002\141\146\000\004\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000D\002\003\tR2\005\132\209\000\132@\000\000\000\000\000\000\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\004``\240\149#\160XMP\012D\002\004\000\160 \n6H\000\016\003\b\000\129\000(\b\002\141\146\000\004\000\130\000\017\000\002\194T\140\129a4@ \016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\016\000\012%H\200\022\019D\001\001\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\129\000 \b\002\141\146\000\004\000\002\000\017\129\131\194T\140\129a4@1\016\b\016\002\000\128(\217 \000@\000 \001\024\024<%H\200\022\019D\003\017\000\000\000\b\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\002\128\128(\217 \000@\012 \000\000\000 \000\000\000\000\000\000\002\000\000D\000\011\tR2\005\132\209\000\192@ @\n\002\000\163d\128\001\000 \128\004@\000\176\149# XM\016\b\004\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\004@ \240\149# XM\016\b\004\002\004\b\128 \n6H\000\016\000\b\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004``\240\149# XM\016\012D\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\b\012%H\200\022\019D\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000 @\b\002\000\163d\128\001\000\000\128\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000F\006\015\tR2\005\132\209\000\196@\017\129\131\194T\140\129a4@1\016\004@ 0\149# XM\016\000\005F\004\023\195 \0147h`\016|*\000\000\000\000\000\000\b\000\000\000\000\000\000 @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\004@\000D\000\000@\016\000\000\003\192 \000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\011\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\194T\140\129a4@ \016\b\016\002\000\128(\217 \000@\000 \001\016\000,%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\011\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\011\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\003\tR2\005\132\209\000\128@ @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \001\016\000\017\000\000\016\004\000\000\000\240\b\000\000\b\000\000\000\000\000\000\000\002\000\017\000\001\016\000\001\000@\000\000\015\000\128\000\000\128\000\000\000\000\000\000\000 \001\016\000\017\000\000\016\004\000\000\000\240\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\128\004@\000D\000\000@\016\000\000\003\192 \000\000\000\000\000\000\000\000\000\000\000\000D\000\004@\000\004\001\000\000\000<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \001\016\000\017\000\000\016\004\000\000\000\240\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \001\016\000\017\000\000\016\004\000\000\000\240\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000 \000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\016\012%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016B\000\128(\217 \000@\000 \000\000\000\000\000\000\000\000\000\000\000\000\000D\004\003\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\002\005\000\128 \n6H\000\016\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\b\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 P\b\002\000\163d\128\001\000\000\128\000\000 \000\000\000\000\000\000\000\b\000\001\016\b\012%H\200\022\019D\002\001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000Q\129\005\244\200\003\141\218\024\004\031\n\128\000\000\000\000\000 \000\000\000\000\000\000\b\020\002\000\128(\217 \000@\000 \000\000\b\000\000\000\000\000\000\000\002\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\024\016_L\1288\221\161\128A\240\168\000\000\000\000\000\002\000\000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\128\194T\140\129a4@\000\021\024\016_\012\1288\221\161\128A\240\168\000\000\000\000\000\002\000\000\000\000\000\000\000\128\000\000\000\000\001\002\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\b\012%H\200\022\019D\001\001Q\129\005\240\200\003\141\218\024\004\031\n\128\000\000\000\000\000 \000\000\000\000\000\000\b\020\002\000\128(\217 \000@\000 \000\000\b\000\000\000\000\000\000\000\002\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\129\185\208\230\169Aj8\b\2558\128\000\001\000\000\000\000\000\000\000\000 \007\184\027\157\014j\148\022\163\128\143\243\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\b\001\238\006\231C\154\165\005\168\224#\252\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000 @\b\016\002\000\128(\217 \000@\000 \001\016\016\012%H\200\022\019D\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000 @\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000{\129\185\208\230\169Aj8\b\2558\128\000\001\000\000\000\000\000\000\000\000 \000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\b\000\000\000\000\129\000 @\b\002\000\163d\128\001\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\128\001\198U\174\129a}\192 P\b\016\"\000\128(\217 \000@\000 \000\000\b\000\000\000\000\000\000\000\000\000\000N\004\007\025V:\005\133\247\000\129@\000\000\000\000\000\000\000\000\000\000\000\000\004`\0000\149# XM\016\000\004\002\000\000\000\000\000\004\b\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000 @\136\002\000\163d\128\001\000\000\128\000\000 \000\000\000\000\000\000\000\000\000\002\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000 @\b\002\000\163d\128\001\000 \128\000\000\000\000\000\000\000\000\000\000\b\000\002\004\000\160 \n6H\000\016\000\b\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004@\000\176\149# XM\016\b\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0018\000\028eX\232\022\023\220\002\005\000\129\000 \b\002\141\146\000\004\000\002\000\017\001\000\194T\140\129a4@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\004\003\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\016\012%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000 @\b\002\000\163d\128\001\000\000\128\004@@0\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\001\000\194T\140\129a4@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\004\003\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\016\012%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\184\027\157\014j\148\022\163\128\143\243\136\000\000\016\000\000\000\000\000\000\000\002\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\b\012%H\200\022\019D\000\001Q\129\005\240\200\003\141\218\024\004\031\n\128\000\000\000\000\000\000\000\000\000\000\000\0078\027\223N\1608\221\161\160\199\243\169F\004\023\195 \0147h`\016|*\000\000\000\000\000\000\000\000\000\000\000\000\020`A}2\000\227v\134\001\007\194\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\128\001\194T\140\129a4@ \016\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\b\000D\000\004@\000\004\001\000\000\002<\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0001\000\001\020\000\001\000@\002\000\015\000\128\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000@\128\000\006 \b\000\000\000\000\000\000\000\000\016\000\000\000\000\0001\000\001\020\000\001\000@\000\000\015\000\128\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\004\b\000\000B\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000\0010\011\209B \016\004\000\000\006\243\b\000\000\000\000\000\000(\000\000\000\000\000\b\000\000\000\000\160@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\016\002\000\128(\217 \000@\000 \002\004\000\128 \n6H\000\016\000\b\000\129\000 \b\002\141\146\000\004\000\002\000 @\b\002\000\163d\128\001\000\000\128\004@\000 \129!\000P\r\016\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\130\004\132\001@4@ \000\b\016\002\000\128(\217 \000@\000 \001\016\000\b H@\020\003D\002\000\000D\000\002\b\018\024\005\000\213\000\128\000\017\000\000\130\004\132\001@4@ \000\004@\000 \129!\000P\r\016\b\000\001\016\000\b H@\020\003D\002\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\130\004\132\001@4@ \000\b\016\002\000\128(\217 \000@\000 \001\016\000\b H@\020\003D\002\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\130\004\132\001@4@ \000\b\016\002\000\128(\217 \000@\000 \001\016\000\b H@\020\003D\002\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\130\004\132\001@4@ \000\b\016\002\000\128(\217 \000@\000 \001\016\000\b H@\020\003D\002\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\130\004\132\001@4@ \000\b\016\002\000\128(\217 \000@\000 \001\016\000\b H@\020\003D\002\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\130\004\132\001@4@ \000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\000\130\004\132\001@4@\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\004\000\128 \n6H\000\016\000\b\000D\000\002\b\018\016\005\000\209\000\128\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\004\000\128 \n6H\000\016\000\b\000D\000\002\b\018\016\005\000\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\016\002\000\128(\217 \000@\000 \001\016\000\b H@\020\003D\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\b\016\002\000\128(\217 \000@\000 \001\016\000\b H@\020\003D\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000 @\b\002\000\163d\128\001\000\000\128\004@\000 \129!\000P\r\016\b\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000 @\b\002\000\163d\128\001\000\000\128\004@\000 \129!\000P\r\016\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\002\194T\140\129a4@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000 @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\004\192.D\b\128@\016\000\000\027\204 \000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\011\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\003\tR2\005\132\209\000\128@ @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000 @\b\002\000\163d\128\001\000\000\128\004@\0000\149# XM\016\b\004\002\004\000\128 \n6H\000\016\000\b\000D\000\011\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\011\tR2\005\132\209\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\002\194T\140\129a4@\000\016\000\000\000\000\000\000\000\000\000\000\000\001\238\006\239C\154\165\r\168\224#\254\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\000,%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\000,%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\128\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\003\tR2\005\132\209\000\128@ @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000{\129\187\208\230\169Cj8\b\255\184\130\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\002\194T\140\129a4@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\129\000 \b\002\141\146\000\004\000\002\000\017\000\002\194T\140\129a4@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000(\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000 @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\000,%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\128\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\003\tR2\005\132\209\000\128@ @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000\000\000\000\000\000\000\000\000\000{\129\187\208\230\169Cj8\b\255\184\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\002\004\000\128 \n6H\000\016\000\b\000D\000\011\tR2\005\132\209\000\128@ @\b\002\000\163d\128\001\000\000\128\004@\000\176\149# XM\016\000\004\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\016\002\000\128(\217 \000@\000 \001\016\000,%H\200\022\019D\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0010\011\145\002 \016\004\000\000\006\243\b\000\000\b\000\000\000\000\000\000\000\002\000\019\000\185\016\"\001\000@\000\000o0\128\000\000\128\000\000\000\000\000\000\000 \0010\011\145\002 \016\004\000\000\006\243\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\128\004\192.D\b\128@\016\000\000\027\204 \000\000\000\000\000\000\000\000\000\000\000\000L\002\228@\136\004\001\000\000\001\188\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0010\011\145\002 \016\004\000\000\006\243\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \0010\011\145\002 \016\004\000\000\006\243\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\184\027\157\014j\148\022\163\128\143\243\136\000\000\016\000\000\000\000\000\000\000\002\000{\129\185\208\230\169Aj8\b\2558\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\b\001\238\006\231C\154\165\005\168\224#\252\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000 @@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\b\016\000\000\000\000\000\000\000\000\000\000\000\000{\129\185\208\230\169Aj8\b\2558\128\000\001\000\000\000\000\000\000\000\000 \000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\b\000\000\000\000\129\000 @\b\002\000\163d\128\001\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\189\020\"\001\000@\000\000o0\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\006\231C\154\165\005\168\224#\252\226\000\000\004\000\000\000\000\000\000\000\000\128\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\000\001\002\000\000\016\128\000\000\000\000\000\000\000\000\000@\000\000\000\000\001N\006\247\211\168\0147h`\017\252\234{\129\185\208\230\169Aj8\b\2558\128\000\001\000\000\000\000\000\000\000\000 \000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000S\129\189\244\234\003\141\218\024\004\127:\158\224nt9\170PZ\142\002?\206 \000\000@\000\000\000\000\000\000\000\b\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\002\000\000\000\000 @\b\016\002\000\128(\217 \000@\000 \000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\224nt9\170PZ\142\002?\206 \000\000@\000\000\000\000\000\000\000\b\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\004\b\000\000B\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\0010\011\209B \016\004\000\000\006\243\b\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\128\000\004 \000\000\000\000\000\000\000\000\000\016\000\000\000\000\000S\129\189\244\234\003\141\218\024\004\127:\128\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000B\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\005\024\016_L\1288\221\161\128A\240\168\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\128\000\000\000\000\000\000\000\000\000@\000\000\000\000\001N\006\247\211\168\0147h`\017\252\234\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")
  
  and start =
    2
  
  and action =
    ((16, "#\140\000\000\000\000\000O#6\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\000)\000)\000\000\000 \000\000$\146\000\028#6\000/#6\000\021#6\000\000\000\190\000\000\000d\000\000\000\000\000\024#6\000\198\000\000\000\000\002\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\172\021l\000\000\000\000#6\002\250\000\000\000\252\002:\000\248!\152\000'\001D\000\000\000\000!\152!\152!\152\"\230!\152\000\000\000\000\000\000!\152\006\b!\152\000\000\001h\000\000\020:\000\000!\152\007,!\152\007\190!\152\bP!\152\b\226\006\154!\152!\252\021\164!\152\tt!\152\n\006!\152\n\152!\152\011*!\152\011\188!\152\012N!\152\012\224!\152\rr!\152\002\250!\152\014\004!\152\014\150!\152\015(!\152\015\186!\152\016L!\152\016\222!\152\017p!\152\018\002\000#\000\000!\152\000\031\020\164\"R\022\014\000\000!\152\000\000\002\250!\152\001j\000\000\018\148\001^\000\000\001b\000\000\022\144\000\000!\152\001\138\000\000\019&\019\184\023\218\003\178\001R!\152\022\144\000\000\001\\\003\178\001l!\152\023X\000\000\000\000\001~!\152\024\174!\152\024\174\000\000\000\000\001\128!\152\025\024\000\000\001\144!\152\025\130\000\000\001\164!\152\025\024!\152\025\236\000\000\000\000\001\166!\152\001\216\000\000\001d\003\178\000\003\003\178\000&\003\178\000\000\0008\003\178\000\000\003\178\000\000\000\000\000\000\001\236\000\000\001l\003\178\002\024\000\000\001\156\003\178\002&\000\000\000'!\152\002\250\000\000\000\000!\252\000\000\020:\000\000\001\244!\152\000\000\000\000\000L\0022\000\000!\152\000h\022\214\002\006\002P\002J\002\014\003\178\002(!\152\000r\002b\000\000\003\178\002.!\152\026n\003\178\0020\000\004\002 !\152\023X\003\178\002<!\152\000\132\002t\000\000\002v\000\000\002|\000\000\000\000\000\000\002\250\000$\002\250\000\000\000\000\000\000\000T\002\250\000\000\000%!\152\023X\000\000\000\000\000\000\002\132\000\000\000%\000\000\000\000\002\250\000$\002\138\000\000\000%!\152\002\128\000\000\000\000\004^!\152\002\142\004\236\000\000\002\250\000\004\002d!\152\002\156\000,\002b\"\230\002\028#<\002\150\000\000\023\218\000\000\002\166\000\000\000\000\005z!\152\020\164\000\000!\152\022\014\000\000!\152\022\144\000\000!\152\022\214\000\000!\152\023\218\000\000!\152\024D\000\000!\152\024\174\000\000\000\000\002\250\000$\002\168\000\000!\152\026\180\003\178\000\000\000\003\003\178\000\000\003\178\000\000\002\156\000\000\002\250\002\158\000\000\000\000\000\000\000\144\021l\000\000\002^\000\000\000\000#\140\000\000\002:\002\130#\140\002\186\000\000\000\000\003\178\002\142\021$\000\194\000\000\002F#\166#\166#\166#\166#\214\000\000#\166$4#\166$z\"\130$\204%\018%d#\166%\170#\166%\252#\166&B#\166&\148#\166&\218#\166',#\166'r#\166'\196#\166(\n\002\172\002R#\166\000\190\002T#\166(\\\002\200\002p#\166):\002\130#\166(\162\003\004\002\156#\166)\140\002\164#\166(\244\003\\\002\172#\166)\210\0034\000\000\003@\000\000\003\030!\152\026n\000\000\000\000\003 !\152\027&\000\000\003.\002:\003N!\152\027\144\000\000\003V!\152\025\130!\152\027\250\000\000\003\\!\152\025\236!\152\028d\000\000\003d!\152\028\206\000\000\000\194\003f!\152\0298\000\000\001~\000\000\003j!\152\029\162\000\000\003l!\152\030\012\000\000\000\194\003n!\152\026n!\152\030v\000\000\001\130\000\000\000\000\003r!\152\030\224\000\000\003v!\152\031J\000\000\000\194\003\130!\152\031\180\000\000\000\194\003\136!\152 \030\000\000\000\194\003\142!\152\027&!\152 \136\000\000\001~\000\000\003\144!\152\024D!\152 \242\003\198\000\000\003\152!\152!\\\000\000\003T\002:\000\204\002:\001.\002:\000\000\001L\002:\000\000\002:\000\000\000\000\000\000\003\218\000\000\003X\002:\003\232\000\000\003f\002:\003\236\000\000\000\000\002\250\001 \002\250\000\000\001P\002\250\000\000\000\"\004\020\000\000\000\000\000\000\000\000\000\000\003\252\000\000\000\"\000\000\002\250\001 \004\006\000\000\000\142!\152\003\250\000\000\021$\000\000\000\000\002\250\001 \004\012\000\000\004\002\000\000\003\128\003\214\002:\002\250\000$\004\024\000\000\002:\002\250\000$\004\026\000\000\003\196!\152\004\014\000\000\000\000\000\000\000\000\000\000\002\250\000$\004\030\000\000\004\016\000\000\000\000\000\198\003\228\021$\004\022\000\000\000\000\001\254\003\234\002:\004\028\000\000\000\000\000#\003\248\003\178\004*\000\000\001V\003\252\002:\004.\000\000\003\224\000\000\000\000\000\000\000\000\000\000"), (16, "\0025\0025\0025\002\145\006\134\0025\0025\0025\001\245\000\018\000\178\002\150\004\029\001\241\0025\0025\003\250\0025\0025\0025\0025\003\225\0025\0025\0025\0025\0025\n\134\0025\001\142\005b\0025\0025\0025\005&\0025\000:\0025\002\153\002\177\007\026\003\229\0076\002\209\000J\0025\0025\0025\002\137\007R\003\221\0025\0025\002\137\0025\0025\0025\001\002\0025\0025\004.\0025\000V\004\r\001\018\000^\0025\0025\000>\0025\002\145\002\154\000z\002\154\002\237\006\014\0025\004\234\000f\004b\0025\0025\0025\0025\0025\0025\0025\003\162\004\162\0025\0025\0025\002\153\0025\003\205\0025\004\245\004\245\004\245\004\245\000\134\004\245\004\245\004\245\006\158\002\153\004\202\003\170\006\194\002\169\004\245\004\245\tz\004\245\004\245\004\245\003\182\004\245\004\245\004\245\004\245\000\142\004\245\t\182\003\249\002\249\0046\004\245\004\245\004\245\004\222\006\218\004\245\004\245\001b\004\245\nV\004\245\006\226\004\245\0046\007\002\004\245\002\169\004\245\0046\006\202\000:\001~\003\005\004\245\006\130\004\245\004\245\0046\004\245\006\210\004\245\006\162\002\153\006>\004\245\004\245\004\245\002\169\002\185\tz\006\234\006\170\002\169\006\242\004\245\001\134\003\253\006\250\004\245\004\245\004\245\004\245\004\245\004\245\004\245\004\245\004\245\001\146\004\245\004\245\004\245\003\245\004\021\t\002\004\245\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\001\206\002\198\002\210\002\218\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\002\238\003\005\003\006\003\022\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\tb\003\005\003\030\003\005\n\154\003\005\003\005\t\n\003\005\002\129\003\005\0032\003N\006\130\003\005\bV\003\005\003\005\003\005\003\005\003^\003\005\t\022\003\005\tn\003\005\003\005\003\005\003\005\003\005\003n\003\138\003\146\nn\003\154\003\005\003\210\003\005\003\218\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\003\005\001\130\003\005\006~\003\005\003\226\007\146\007\162\000\178\003\234\002y\002y\003\242\004\030\002\201\003\246\007\170\0042\007\186\007\210\007\234\004\006\004F\007\250\004\n\004\026\001\150\b\014\004\"\002\r\004N\004R\004B\004V\b\022\002\201\001\154\002y\b&\004Z\002\201\004f\004r\004\130\002y\004\138\001\158\b6\001\162\004\154\004\166\004\174\001\166\004j\004\182\001\002\001\174\bR\005\002\001\178\004n\005\030\001\018\005.\005B\002y\006^\004~\004\150\005V\002y\005^\005f\005n\005v\005\134\005\246\001\182\006\"\006.\002y\b^\bn\004\170\b~\b\146\b\166\b\194\006K\006b\b\202\b\230\004\178\006j\001\186\006z\003\134\000\154\000\158\000\162\000\166\006\138\000\170\000\174\000\178\001\214\007\014\007\018\007\030\001\218\005N\000\182\000\186\007*\000\190\000\194\000\198\004\002\003\213\000\202\000\206\000\210\007.\000\214\003\213\003\213\002\n\002J\000\218\000\222\000\226\007:\002\018\000\230\000\234\002R\000\238\002Z\000\242\002\026\000\246\007F\002B\000\250\007J\000\254\002b\001\226\007V\007b\002j\001\002\007f\001\006\001\n\007r\001\014\002\"\001\018\001\234\002r\007z\001\022\001\026\001\030\002z\007\130\007\150\002*\001\242\007\166\0022\001\"\002\193\t\234\002:\001&\001*\001.\0012\0016\001:\001>\001B\002\178\002\138\001F\001J\001N\001\130\007\174\003\002\001R\002\130\007\190\003\018\000\178\007\214\002i\002i\002\193\007\238\b\002\003\246\b\026\b*\b>\002\193\bb\004\006\br\003\026\004\n\004\026\001\150\003*\b\134\002\021\002\145\b\154\004B\004V\b\174\b\206\001\154\002i\b\226\b\234\002\193\b\250\t2\t:\002i\002\193\001\158\003.\001\162\tB\tJ\tR\001\166\004j\t~\001\002\001\174\003F\t\150\001\178\004n\n\026\001\018\t\174\t\190\002i\t\218\004~\004\150\t\226\002i\t\238\t\254\n\018\n\"\nB\nJ\001\182\nZ\nb\006v\nr\nz\004\170\003J\003Z\003j\003\130\n\138\n\146\n\158\n\166\004\178\n\175\001\186\000\141\003\134\002\145\000\141\000\141\000\141\000\000\000\000\000\000\004\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\141\000\141\000\000\000\000\000\000\000\141\000\141\000\000\000\000\000\141\000\000\000\141\000\000\000\141\000\000\000\141\000\141\000\000\005:\000\000\000\141\000\141\000\141\000\000\000\141\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\000\000\141\000\141\000\000\000\000\000\000\000\000\000\141\000\000\000\141\000\141\000\141\000\141\000\141\000\000\000\141\000\141\000\141\000\169\000\000\000\000\000\169\000\169\000\169\000\000\000\000\000\141\000\000\000\000\000\000\005F\000\000\000\000\000\141\000\000\000\141\000\000\000\000\000\169\000\169\000\169\000\000\000\000\000\000\000\169\000\169\000\000\000\000\000\169\000\000\000\169\000\000\000\169\000\000\000\169\000\169\000\000\000\000\000\000\000\169\000\169\000\169\000\000\000\169\000\000\000\000\000\000\000\000\000\000\000\000\000\169\000\000\000\169\000\169\000\000\000\000\000\000\000\000\000\169\000\000\000\169\000\169\000\169\000\169\000\169\000\000\000\169\000\169\000\169\001\169\000\000\000\000\005\146\001\169\001\169\000\000\000\000\000\169\000\000\000\000\000\000\000\000\000\000\000\000\000\169\000\000\000\169\000\000\000\000\001\169\001\169\001\169\000\000\000\000\000\000\005\158\001\169\000\000\000\000\001\169\000\000\001\169\000\000\001\169\000\000\005\170\001\169\000\000\000\000\000\000\001\169\001\169\001\254\000\000\001\169\000\000\000\000\000\000\000\000\000\000\000\000\001\169\000\000\001\169\001\169\000\000\000\000\000\000\000\000\001\169\000\000\005\182\001\169\001\169\005\194\001\169\000\000\002\174\005\206\001\169\000\141\000\000\000\000\000\000\000\141\000\141\000\000\000\000\001\169\000\000\000\000\000\000\000\141\000\141\000\000\005\218\000\000\001\169\000\000\000\141\000\141\000\141\000\141\000\000\000\000\000\000\000\000\000\141\000\000\000\000\000\141\000\000\000\141\000\000\000\141\000\000\000\000\000\141\000\000\001\194\000\000\000\141\000\141\000\141\000\000\000\141\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\000\000\141\000\141\000\000\000\000\000\000\000\000\000\141\000\000\000\000\000\141\000\141\000\000\000\141\000\000\000\141\000\000\000\141\000\000\000\000\001\169\000\000\000\000\000\000\001\169\001\169\000\141\000\141\000\000\000\000\000\000\000\141\001\169\001\169\000\000\000\141\000\000\000\000\000\000\001\169\001\169\001\169\001\169\000\000\000\000\000\000\000\000\001\169\000\000\000\000\001\169\000\000\001\169\000\000\001\169\000\000\000\000\001\169\000\000\000\000\000\000\001\169\001\169\001\254\000\000\001\169\000\000\000\000\000\000\000\000\000\000\000\000\001\169\000\000\001\169\001\169\000\000\000\000\000\000\000\000\001\169\000\000\000\000\001\169\001\169\000\000\001\169\000\000\002\174\000\000\001\169\000\000\000\000\001\214\000\000\000\000\000\000\001U\001U\001\169\001\169\000\000\000\000\000\000\001\169\001U\001U\000\000\001\169\000\000\000\000\000\000\001U\001U\001U\001U\000\000\000\000\000\000\000\000\001U\000\000\000\000\001U\000\000\001U\000\000\001U\000\000\000\000\001U\000\000\000\000\000\000\001U\001\226\000\000\000\000\001U\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001U\000\000\000\000\000\000\000\000\001U\000\000\000\000\001U\001\242\000\000\001U\000\000\000\000\000\000\001U\000\000\000\000\001\214\000\000\000\000\000\000\001e\001e\001U\001U\000\000\000\000\000\000\001U\001e\001e\000\000\001U\000\000\000\000\000\000\001e\001e\001e\001e\000\000\000\000\000\000\000\000\001e\000\000\000\000\001e\000\000\001e\000\000\001e\000\000\000\000\001e\000\000\000\000\000\000\001e\001e\000\000\000\000\001e\000\000\000\000\000\000\000\000\000\000\000\000\001e\000\000\001\234\001e\000\000\000\000\000\000\000\000\001e\000\000\000\000\001e\001\242\000\000\001e\000\000\000\000\000\000\001e\000\000\000\000\001\214\000\000\000\000\000\000\001q\001q\001e\001e\000\000\000\000\000\000\001e\001q\001q\000\000\001e\000\000\000\000\000\000\001q\001q\001q\001q\000\000\000\000\000\000\000\000\001q\000\000\000\000\001q\000\000\001q\000\000\001q\000\000\000\000\001q\000\000\000\000\000\000\001q\001q\000\000\000\000\001q\000\000\000\000\000\000\000\000\000\000\000\000\001q\000\000\001\234\001q\000\000\000\000\000\000\000\000\001q\000\000\000\000\001q\001\242\000\000\001q\000\000\000\000\000\000\001q\000\000\000\000\001\214\000\000\000\000\000\000\001u\001u\001q\001q\000\000\000\000\000\000\001q\001u\001u\000\000\001q\000\000\000\000\000\000\001u\001u\001u\001u\000\000\000\000\000\000\000\000\001u\000\000\000\000\001u\000\000\001u\000\000\001u\000\000\000\000\001u\000\000\000\000\000\000\001u\001u\000\000\000\000\001u\000\000\000\000\000\000\000\000\000\000\000\000\001u\000\000\001\234\001u\000\000\000\000\000\000\000\000\001u\000\000\000\000\001u\001\242\000\000\001u\000\000\000\000\000\000\001u\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001\145\001u\001u\000\000\000\000\000\000\001u\001\145\001\145\000\000\001u\000\000\000\000\000\000\001\145\001\145\001\145\001\145\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001\145\000\000\001\145\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\001\145\001\226\000\000\000\000\001\145\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001\145\000\000\000\000\000\000\000\000\001\145\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001M\001\145\001\145\000\000\000\000\000\000\001\145\001M\001M\000\000\001\145\000\000\000\000\000\000\001M\001M\001M\001M\000\000\000\000\000\000\000\000\001M\000\000\000\000\001M\000\000\001M\000\000\002\026\000\000\000\000\001M\000\000\000\000\000\000\001M\001\226\000\000\000\000\001M\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001M\000\000\000\000\000\000\000\000\001M\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001a\001a\001M\001M\000\000\000\000\000\000\001M\001a\001a\000\000\001M\000\000\000\000\000\000\001a\001a\001a\001a\000\000\000\000\000\000\000\000\001a\000\000\000\000\001a\000\000\001a\000\000\001a\000\000\000\000\001a\000\000\000\000\000\000\001a\001\226\000\000\000\000\001a\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001a\000\000\000\000\000\000\000\000\001a\000\000\000\000\001a\001\242\000\000\001a\000\000\000\000\000\000\001a\000\000\000\000\001\214\000\000\000\000\000\000\001]\001]\001a\001a\000\000\000\000\000\000\001a\001]\001]\000\000\001a\000\000\000\000\000\000\001]\001]\001]\001]\000\000\000\000\000\000\000\000\001]\000\000\000\000\001]\000\000\001]\000\000\001]\000\000\000\000\001]\000\000\000\000\000\000\001]\001]\000\000\000\000\001]\000\000\000\000\000\000\000\000\000\000\000\000\001]\000\000\001\234\001]\000\000\000\000\000\000\000\000\001]\000\000\000\000\001]\001\242\000\000\001]\000\000\000\000\000\000\001]\000\000\000\000\001\214\000\000\000\000\000\000\001i\001i\001]\001]\000\000\000\000\000\000\001]\001i\001i\000\000\001]\000\000\000\000\000\000\001i\001i\001i\001i\000\000\000\000\000\000\000\000\001i\000\000\000\000\001i\000\000\001i\000\000\001i\000\000\000\000\001i\000\000\000\000\000\000\001i\001\226\000\000\000\000\001i\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001i\000\000\000\000\000\000\000\000\001i\000\000\000\000\001i\001\242\000\000\001i\000\000\000\000\000\000\001i\000\000\000\000\001\214\000\000\000\000\000\000\001m\001m\001i\001i\000\000\000\000\000\000\001i\001m\001m\000\000\001i\000\000\000\000\000\000\001m\001m\001m\001m\000\000\000\000\000\000\000\000\001m\000\000\000\000\001m\000\000\001m\000\000\001m\000\000\000\000\001m\000\000\000\000\000\000\001m\001\226\000\000\000\000\001m\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001m\000\000\000\000\000\000\000\000\001m\000\000\000\000\001m\001\242\000\000\001m\000\000\000\000\000\000\001m\000\000\000\000\001\214\000\000\000\000\000\000\001Y\001Y\001m\001m\000\000\000\000\000\000\001m\001Y\001Y\000\000\001m\000\000\000\000\000\000\001Y\001Y\001Y\001Y\000\000\000\000\000\000\000\000\001Y\000\000\000\000\001Y\000\000\001Y\000\000\001Y\000\000\000\000\001Y\000\000\000\000\000\000\001Y\001\226\000\000\000\000\001Y\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001Y\000\000\000\000\000\000\000\000\001Y\000\000\000\000\001Y\001\242\000\000\001Y\000\000\000\000\000\000\001Y\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001Q\001Y\001Y\000\000\000\000\000\000\001Y\001Q\001Q\000\000\001Y\000\000\000\000\000\000\001Q\001Q\001Q\001Q\000\000\000\000\000\000\000\000\001Q\000\000\000\000\001Q\000\000\001Q\000\000\002\026\000\000\000\000\001Q\000\000\000\000\000\000\001Q\001\226\000\000\000\000\001Q\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001Q\000\000\000\000\000\000\000\000\001Q\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001y\001Q\001Q\000\000\000\000\000\000\001Q\001y\001y\000\000\001Q\000\000\000\000\000\000\001y\001y\002\n\001y\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001y\000\000\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001\133\001y\001y\000\000\000\000\000\000\001y\001\133\001\133\000\000\002\130\000\000\000\000\000\000\001\133\001\133\002\n\001\133\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001\133\000\000\001\133\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\001\133\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001\141\001\133\001\133\000\000\000\000\000\000\001\133\001\141\001\141\000\000\001\133\000\000\000\000\000\000\001\141\001\141\001\141\001\141\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001\141\000\000\001\141\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\001\141\001\226\000\000\000\000\001\141\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001\141\000\000\000\000\000\000\000\000\001\141\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001\137\001\141\001\141\000\000\000\000\000\000\001\141\001\137\001\137\000\000\001\141\000\000\000\000\000\000\001\137\001\137\001\137\001\137\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001\137\000\000\001\137\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\001\137\001\226\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001\137\000\000\000\000\000\000\000\000\001\137\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001\149\001\137\001\137\000\000\000\000\000\000\001\137\001\149\001\149\000\000\001\137\000\000\000\000\000\000\001\149\001\149\001\149\001\149\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001\149\000\000\001\149\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\001\149\001\226\000\000\000\000\001\149\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\001\149\000\000\000\000\000\000\000\000\001\149\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001\129\001\149\001\149\000\000\000\000\000\000\001\149\001\129\001\129\000\000\001\149\000\000\000\000\000\000\001\129\001\129\002\n\001\129\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001\129\000\000\001\129\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\001\129\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001}\001\129\001\129\000\000\000\000\000\000\001\129\001}\001}\000\000\001\129\000\000\000\000\000\000\001}\001}\002\n\001}\000\000\000\000\000\000\000\000\002\018\000\000\000\000\001}\000\000\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\218\001I\001}\001}\000\000\000\000\000\000\001}\001I\001I\000\000\001}\000\000\000\000\000\000\001I\001I\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\001\214\000\000\000\000\000\000\001\153\001\153\001I\001I\000\000\000\000\000\000\001I\001\153\001\153\000\000\002\130\000\000\000\000\000\000\001\153\001\153\001\153\001\153\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\000\000\001\153\000\000\001\153\000\000\000\000\001\153\000\000\000\000\000\000\001\153\001\153\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\001\234\001\153\000\000\000\000\000\000\000\000\001\153\000\000\000\000\001\153\001\242\000\000\001\153\000\000\000\000\000\000\001\153\000\000\000\000\001\214\000\000\000\000\000\000\001\157\001\157\001\153\001\153\000\000\000\000\000\000\001\153\001\157\001\157\000\000\001\153\000\000\000\000\000\000\001\157\001\157\001\157\001\157\000\000\000\000\000\000\000\000\001\157\000\000\000\000\001\157\000\000\001\157\000\000\001\157\000\000\000\000\001\157\000\000\000\000\000\000\001\157\001\157\000\000\000\000\001\157\000\000\000\000\000\000\000\000\000\000\000\000\001\157\000\000\001\234\001\157\000\000\000\000\000\000\000\000\001\157\000\000\000\000\001\157\001\242\000\000\001\157\000\000\000\000\000\000\001\157\000\000\000\000\001\214\000\000\000\000\000\000\001\161\001\161\001\157\001\157\000\000\000\000\000\000\001\157\001\161\001\161\000\000\001\157\000\000\000\000\000\000\001\161\001\161\001\161\001\161\000\000\000\000\000\000\000\000\001\161\000\000\000\000\001\161\000\000\001\161\000\000\001\161\000\000\000\000\001\161\000\000\000\000\000\000\001\161\001\161\000\000\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\001\234\001\161\000\000\000\000\000\000\000\000\001\161\000\000\000\000\001\161\001\242\001\214\001\161\000\000\000\000\001\218\001\161\000\000\000\000\000\000\000\000\000\000\000\000\004\022\003\213\001\161\001\161\000\000\000\000\000\000\001\161\000\000\002\n\002J\001\161\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\005\154\0022\000\000\000\000\000\000\002:\000\000\001\225\000\000\002\n\002J\000\000\000\000\000\000\002\178\002\018\000\000\000\000\002R\002\190\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\006~\000\000\002z\007\146\007\162\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\007\170\000\000\007\186\007\210\007\234\tV\000\000\007\250\001\225\002\166\000\000\b\014\000\000\002\005\000\000\000\000\000\000\002\130\b\022\000\000\000\000\000\000\b&\002a\000\000\000\000\000\000\002a\000\000\000\000\000\000\b6\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bR\002\029\002a\000\000\000\000\000\000\002a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\001\218\000\000\000\000\000\000\b^\bn\002a\b~\b\146\b\166\b\194\000\000\000\000\b\202\b\230\001\233\002a\002\n\002J\003\134\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\001f\000\000\002j\000\000\002a\002a\002a\002a\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\002a\002z\000\000\000\000\002*\001\242\005\166\0022\000\000\000\000\000\000\002:\000\000\001\237\000\000\002\n\002J\000\000\000\000\000\000\001\233\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\002z\000\000\000\000\002*\001\242\001\214\0022\000\000\000\000\001\218\002:\000\000\000\000\000\000\000\000\000\000\000\000\005\178\002\226\001\237\000\000\000\000\000\000\000\000\003\014\000\000\002\n\002J\002\130\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\001\214\000\000\002B\000\000\001\218\000\000\002b\001\226\000\000\000\000\002j\000\000\005\190\002\229\000\000\000\000\000\000\002\"\000\000\001\234\002r\002\n\002J\000\000\000\000\002z\000\000\002\018\002*\001\242\002R\0022\002Z\000\000\002\026\002:\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\002\230\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\002\130\001\234\002r\000\000\000\000\000\000\000\000\002z\000\000\000\000\002*\001\242\001\214\0022\000\000\000\000\001\218\002:\000\000\000\000\000\000\000\000\000\000\000\000\002\149\004\146\002\229\000\000\000\000\000\000\000\000\003&\000\000\002\n\002J\002\130\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\002z\000\000\000\000\002*\001\242\001\214\0022\000\000\000\000\001\218\002:\000\000\000\000\000\000\000\000\000\000\000\000\005\202\002\254\002\149\005\250\000\000\000\000\000\000\002u\000\000\002\n\002J\002\130\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\005\214\0022\000\000\000\000\000\000\002:\000\000\002\161\000\000\002\n\002J\000\000\000\000\000\000\002u\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\005\226\0022\000\000\000\000\000\000\002:\000\000\003B\000\000\002\n\002J\000\000\000\000\000\000\b\214\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\003V\000\000\002\n\002J\000\000\000\000\000\000\003:\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\003f\000\000\002\n\002J\000\000\000\000\000\000\003v\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\003~\000\000\002\n\002J\000\000\000\000\000\000\007\198\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\000\000\001\234\002r\000\000\000\000\000\000\000\000\002z\000\000\000\000\002*\001\242\001\214\0022\000\000\000\000\001\218\002:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004z\007\222\000\000\000\000\000\000\000\000\007\138\000\000\002\n\002J\002\130\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\001\214\000\000\002B\000\000\001\218\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\006\002\000\000\000\000\000\000\002\"\000\000\001\234\002r\002\n\002J\000\000\000\000\002z\000\000\002\018\002*\001\242\002R\0022\002Z\000\000\002\026\002:\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\bF\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\002\130\001\234\002r\000\000\001\214\000\000\000\000\002z\001\218\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\000\000\000\000\000\000\000\000\007\158\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\002\130\002Z\000\000\002\026\000\000\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\007\182\000\000\002\n\002J\000\000\000\000\000\000\b\182\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\007\206\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\007\230\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\007\246\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\b\n\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\b\"\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\b2\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\bN\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\bj\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\bz\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\b\142\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\b\162\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\b\190\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\002\165\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\000\002R\000\000\002Z\000\000\002\026\002\130\000\000\002B\000\000\000\000\000\000\002b\001\226\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\002\"\001\214\001\234\002r\000\000\001\218\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\000\000\000\000\000\000\002:\000\000\b\242\000\000\002\n\002J\000\000\000\000\000\000\000\000\002\018\000\000\000\178\002R\000\000\002Z\000\000\002\026\002\130\001\138\002B\004\"\000\000\000\000\002b\001\226\002%\000\000\002j\000\000\001\150\000\000\001\217\000\000\000\000\002\"\000\000\001\234\002r\000\000\001\154\000\000\000\000\002z\000\000\000\000\002*\001\242\000\000\0022\001\158\000\000\001\162\002:\000\000\000\000\001\166\001\170\000\000\001\002\001\174\000\000\000\178\001\178\000\000\000\000\001\018\000\000\000\000\001\138\000\000\002\130\000\000\000\000\000\000\004\014\000\000\000\000\000\000\000\000\001\150\001\182\001\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\154\000\000\001\217\002\002\000\000\000\000\000\000\000\000\001\186\000\000\001\158\000\000\001\162\000\000\000\000\000\178\001\166\001\170\000\000\001\002\001\174\000\000\001\138\001\178\000\000\000\000\001\018\000\000\000\000\000\000\000\000\000\000\000\000\001\150\000\000\001\229\000\000\000\000\000\000\000\000\001\001\001\182\000\000\001\154\001\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\221\001\158\000\000\001\162\000\000\000\000\001\186\001\166\001\170\001\001\001\002\001\174\000\000\000\000\001\178\001\001\000\000\001\018\000\000\000\000\000\000\000\000\001\001\000\000\000\000\001\001\000\000\000\000\000\000\000\000\001\001\001\254\001\182\000\000\000\000\000\000\000\000\000\178\000\000\000\000\001\001\000\000\001\001\001\229\001\138\000\000\000\000\000\000\000\000\001\186\000\000\001\001\001\001\000\000\001\001\001\150\002\174\002%\001\001\000\000\000\000\000\000\000\000\000\000\000\000\001\154\000\000\001\001\000\000\000\000\000\000\000\000\000\n\000\000\000\000\001\158\000\014\001\162\000\000\000\000\000\178\001\166\001\170\000\000\001\002\001\174\000\000\001\138\001\178\000\000\000\000\001\018\000\022\000\000\000\000\000\000\000\026\000\000\001\150\000\000\002q\000\000\000\000\000\000\000\000\000\000\001\182\000\000\001\154\000\000\000\000\000\000\000\000\000\000\000\006\000\n\000\030\002q\001\158\000\014\001\162\000\000\000\000\001\186\001\166\001\170\000\"\001\002\001\174\000\000\000\000\001\178\000\000\000\178\001\018\000\022\000\000\000\000\000\000\000\026\001\138\001\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\182\000\000\001\150\000\000\000&\000*\000.\0002\000\000\006\158\000\030\000\000\006\142\000\241\000\000\000\000\0006\001\186\000\000\000\000\000\"\000\000\006\146\000\000\001\162\000\000\000\000\000\000\001\166\001\170\000\241\001\002\001\174\001\253\000\000\001\178\000\241\000\000\001\018\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\241\000&\000*\000.\0002\000\241\000\000\001\182\000\000\000\000\006\158\000\000\000\000\0006\000\233\000\241\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\006\150\000\000\000\241\006\170\000\000\000\241\000\000\000\233\000\000\000\241\000\000\000\000\000\000\000\233\000\000\000\000\000\000\000\000\000\241\000\000\000\233\006\158\000\000\000\233\000\000\000\237\000\000\000\n\000\233\000\000\000\000\000R\000\000\000\000\000\000\000\000\000\000\000\000\000\233\000\000\006\162\000\000\000\237\000\000\000\000\000\000\000\000\000\022\000\237\000\233\006\170\000\026\000\233\000\000\000\000\000\237\000\233\000\000\000\237\000\000\000\000\000\000\006\158\000\237\000\000\000\233\000\245\000\000\000\000\000\000\000\000\000\030\000\000\000\237\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\"\000\000\000\245\000\237\006\170\000\000\000\237\000\000\000\245\000\000\000\237\000\000\000\000\000\000\000\000\000\245\006\158\000\000\000\245\000\237\000\249\000\000\000\000\000\245\000\000\000\000\000\000\000&\000*\000.\0002\000\000\000\000\000\245\000\000\006\162\000\000\000\249\000\000\000\000\000\000\000\000\000\000\000\249\000\245\006\170\000\000\000\245\000\000\000\000\000\249\000\245\000\000\000\249\000\000\000\000\000\000\006\158\000\249\000\000\000\245\006\194\000\000\000\000\000\000\000\000\000\000\000\000\000\249\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\001\000\249\006\170\000\000\000\249\000\000\006\218\000\000\000\249\000\000\000\000\000\000\000\000\006\226\006\158\000\000\007\002\000\249\000\205\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\205\000\000\000\000\000\000\000\000\000\000\000\205\006\234\006\170\000\000\006\242\000\000\000\000\000\205\006\250\000\000\000\205\000\000\000\000\000\000\006\158\006\202\000\000\007\n\000\221\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\205\006\170\000\000\000\205\000\000\000\221\000\000\000\205\000\000\000\000\000\000\000\000\000\221\006\158\000\000\000\221\000\205\000\213\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\000\006\162\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\213\000\221\006\170\000\000\000\221\000\000\000\000\000\213\000\221\000\000\000\213\000\000\000\000\000\000\006\158\000\213\000\000\000\221\006\194\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\000\213\006\170\000\000\000\213\000\000\000\197\000\000\000\213\000\000\000\000\000\000\000\000\006\226\006\158\000\000\000\197\000\213\000\217\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\217\000\000\000\000\000\000\000\000\000\000\000\217\006\234\006\170\000\000\006\242\000\000\000\000\000\217\006\250\000\000\000\217\000\000\000\000\000\000\006\158\006\202\000\000\000\197\000\225\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\217\006\170\000\000\000\217\000\000\000\225\000\000\000\217\000\000\000\000\000\000\000\000\000\225\006\158\000\000\000\225\000\217\000\229\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\229\000\000\000\000\000\000\000\000\000\000\000\229\000\225\006\170\000\000\000\225\000\000\000\000\000\229\000\225\000\000\000\229\000\000\000\000\000\000\006\158\006\202\000\000\000\225\000\209\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\229\006\170\000\000\000\229\000\000\000\209\000\000\000\229\000\000\000\000\000\000\000\000\000\209\006\158\000\000\000\209\000\229\006\194\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\201\000\000\000\000\000\000\000\000\000\000\000\201\000\209\006\170\000\000\000\209\000\000\000\000\006\226\000\209\000\000\000\201\000\000\000\000\000\000\006\158\006\202\000\000\000\209\006\194\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002Y\006\234\006\170\000\000\006\242\000\000\006\218\000\000\006\250\000\000\000\000\000\000\000\000\006\226\006\158\000\000\007\002\000\201\006\194\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\002]\000\000\000\000\000\000\000\000\000\000\006\218\006\234\006\170\000\000\006\242\000\000\000\000\006\226\006\250\000\000\007\002\000\000\000\000\000\000\006\158\006\202\000\000\007&\006\194\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\253\006\234\006\170\000\000\006\242\000\000\006\218\000\000\006\250\000\000\000\000\000\000\000\000\006\226\006\158\000\000\007\002\007B\006\194\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\002Q\000\000\000\000\000\000\000\000\000\000\006\218\006\234\006\170\000\000\006\242\000\000\000\000\006\226\006\250\000\000\007\002\000\000\000\000\000\000\006\158\006\202\000\000\007^\006\194\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002U\006\234\006\170\000\000\006\242\000\000\006\218\000\000\006\250\000\000\000\000\000\000\000\000\006\226\006\158\000\000\007\002\000\000\006\194\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\002\245\000\000\000\000\000\000\000\000\000\000\006\218\006\234\006\170\000\000\006\242\000\000\000\000\006\226\006\250\000\000\007\002\000\000\000\000\000\000\000\000\006\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\210\000\000\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\234\006\170\000\000\006\242\000\000\000\000\000\000\006\250"))
  
  and lhs =
    (8, "\001\000WVUUTTSSSSSSSSSSSSSSSSSSRRRRRRRRRQQQQQQQQQQQQQQPPPPPPPPPPPPPPPPONNNNMMMMLLLLKKJJIIIIIIIIIIIIIIIIIIIIIIIIIHGFEDCBA@@@???????>>==<<;;::9988766666665444433221100//..--,,++**))((''&&%%$#\"!!! \031\031\031\031\030\030\029\028\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\027\026\026\025\025\024\024\023\023\023\023\023\023\022\022\022\022\022\022\021\021\020\020\019\019\018\018\018\018\018\018\018\018\018\017\017\016\015\014\014\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\012\012\011\n\t\b\b\b\007\007\007\006\006\005\004\004\004\004\004\003\002\002")
  
  and goto =
    ((16, "\0008\000\000\000\000\000\000\000\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000o\000M\000\000\000\000\000\000\000s\000\000\001\006\000\000\000\254\000\000\0018\000\000\000\150\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\002&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\001\b\002\180\000\000\000\000\000\031\000\000\000[\000\000\000\000\000\000\000\000\000!\002\\\003\190\000\178\001\160\000\000\000\000\000\000\003\192\000\000\001\028\000\000\000\000\000\000\000\000\000\000\003\234\000\000\003\238\000\000\003\242\000\000\003\246\000\000\000\000\000y\003\248\000\000\004\014\000\000\004\018\000\000\004\022\000\000\004\028\000\000\004*\000\000\0042\000\000\0046\000\000\004@\000\000\004J\000\000\004N\000\000\004V\000\000\004d\000\000\004j\000\000\004n\000\000\004r\000\000\004\136\000\000\004\138\000\000\000\000\000\000\000=\000\000\000\000\004\142\000\000\000\000\003\012\000\000\000\000\001\188\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0032\000\000\000\000\000\000\000\000\000\000\001\190\000\000\004\146\000\000\000\000\000\000\000\200\000\000\004\150\000\000\000\000\000\000\000\000\004\174\000\000\004\178\000\000\000\000\000\000\000\000\004\182\000\000\000\000\000\000\004\186\000\000\000\000\000\000\004\188\000\000\004\210\000\000\000\000\000\000\000\000\003H\000\000\000\000\000\000\000\000\000\000\001\222\000\000\002\140\000\000\000\000\002\154\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\002\180\000\000\000\000\000\000\002\194\000\000\000\000\000\000\004\214\000\000\000\000\000\000\004\218\000\000\000\000\000\000\000\000\002\140\000\000\000\000\000\000\000\000\000\000\002\200\000\000\000\000\000\000\000\212\000\000\000\000\000\018\000\000\002\210\000\000\000\000\000\000\000\005\000\000\004\224\000\000\001\212\000\000\000x\000\000\004\238\000\000\002\012\000\000\002\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003J\0016\000\210\000\000\000\000\000\000\000\000\001@\000\000\000\246\004\246\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\000\000\000\003l\002\016\000\000\000\000\001$\003V\000\000\000\000\000\000\000\000\002d\000\000\000\000\000\000\000\000\000\130\000\000\002\232\000\000\001\170\000\000\003d\000\000\003\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\250\000\000\000\000\005\004\000\000\000\000\005\014\000\000\000\000\005\018\000\000\000\000\005\026\000\000\000\000\005(\000\000\000\000\005.\000\000\000\000\000\000\003\152\002H\000\000\000\000\0052\000\000\0024\000\000\000\000\002\128\000\000\000T\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000d\000\000\000\000\000\000\000\000\001\002\000\000\000\n\000\000\001p\000\000\000\000\000\000\000S\000\000\0008\001\202\002X\000\000\000e\001\166\001\204\001\210\000\000\000\000\0056\000\000\005>\000\000\000\000\000\000\000\000\000\000\005B\000\000\005F\000\000\005L\000\000\005R\000\000\005Z\000\000\005j\000\000\005p\000\000\005v\000\000\005~\000\000\000\000\000\000\005\130\000\000\000\000\005\134\000\000\000\000\000\000\005\142\000\000\000\000\005\148\000\000\000\000\000\000\005\154\000\000\000\000\005\170\000\000\000\000\000\000\005\178\000\000\000\000\000\000\000\000\000\000\000\000\005\172\000\000\000\000\000\000\000\000\005\196\000\000\000\000\000\000\003\138\000\000\005\198\000\000\000\000\000\000\005\200\000\000\005\208\000\000\000\000\000\000\005\220\000\000\005\222\000\000\000\000\000\000\005\228\000\000\000\000\002\134\000\000\005\248\000\000\000\000\002\190\000\000\000\000\005\250\000\000\000\000\000\000\005\252\000\000\000\000\002\236\000\000\006\002\000\000\006\004\000\000\000\000\001\012\001t\000\000\000\000\006\016\000\000\000\000\000\000\006\024\000\000\000\000\003\004\000\000\006,\000\000\000\000\003|\000\000\006.\000\000\000\000\003\240\000\000\0060\000\000\0064\000\000\000\000\004\016\000\000\000\000\0066\001\194\0068\000\000\000\000\000\000\000\000\006L\000\000\000\000\000\000\002\238\000\000\002\244\000\000\003\022\000\000\000\000\003$\000\000\001x\000\000\000\000\000\000\000\000\000\000\000\000\003b\000\000\000\000\000\000\003d\000\000\000\000\000\000\003\176\003\\\003&\000\000\000\000\003\\\000\000\0026\001\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\244\000\000\003\184\003\242\000\000\000\000\002\244\003\132\000\000\000\000\000B\000\000\000\000\003\196\004N\000\000\000\000\000\000\000\000\002\182\000\000\000r\003\222\004h\000\000\000\000\000\180\003\228\004\136\000\000\000\000\001$\003\168\000\000\000\000\000\000\000\000\000\000\000\000\003\232\004\140\000\000\000\000\000\000\000\000\000\000\003l\000\000\001 \000\000\000\000\000\000\004\016\000\000\001\014\000\000\000\000\000\000\003N\000\000\001^\000\000\000\000\000\184\000\000\001|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"), (16, "\001\134\0010\001\142\000\165\000p\000\020\0011\000\018\000\232\002z\000\241\001\134\0010\000\169\000p\001D\001E\0011\000\234\000p\000\242\000\127\000\180\000\244\000\017\000 \001D\001E\000\191\000[\001\176\001\173\000%\000\168\000p\002W\000\127\001\156\002\175\001M\002W\002i\002q\000\169\001\134\0010\002i\002q\000p\001N\0011\000\127\001M\001\157\000&\000\\\001\136\000\190\001S\001D\001E\000_\001N\001M\002}\000\127\001d\001\139\001z\002\129\002\130\001\138\002\138\001N\002\139\001\145\001c\002\176\000!\001d\000\029\001z\001S\001{\000\240\000\237\000\240\001c\002x\001\146\001d\001\143\001z\002r\001{\000\240\001M\002}\001\148\001\149\001\135\000\\\002\129\002\130\002s\002\138\001N\002\139\000\230\002s\000\028\001M\002t\000r\002H\001S\002\146\002t\000\246\002H\001c\001N\001\019\001d\001\"\001z\0014\001{\000\240\001U\001S\000\025\0015\000%\002\141\000\023\000]\001\143\001d\002\171\001z\002\142\002}\002H\001M\000\182\000\030\002\129\002\130\002\140\002\138\002W\002\139\000p\001N\000&\000\028\002i\002q\001=\000\025\002\173\000\175\001S\002\023\000\025\000r\002\141\001>\0016\000\127\001d\0017\001z\002\142\000\027\002H\001\134\0010\001:\000#\0019\001C\0011\001?\000\250\000\240\0015\000%\001M\001\150\001>\001D\001E\002\158\002I\001@\002}\000s\001N\001\149\002J\002\129\002\130\002\152\002\138\000p\002\139\001S\000\028\000&\000\028\002\141\000\028\000\028\000u\001d\001\220\001z\002\142\002s\002H\001`\000\127\0016\001\141\0010\0017\002t\001M\002H\0011\000\180\002\164\001:\001\224\001\131\0010\000\028\001N\001D\001E\0011\000\028\001M\001\154\000r\000\232\001S\002\169\001a\001D\001E\001c\001N\001\149\001d\000\234\001z\001\228\001{\000\240\000\243\001S\001/\0010\000\028\002\141\0028\002a\0011\001d\000p\001z\002\142\000p\002H\001M\000\177\001D\001E\000\175\000\000\000\000\001\130\0010\000p\001N\001M\000\127\0011\001\175\001\173\001?\000p\000\175\001S\000p\001N\001D\001E\001c\000V\000\127\001d\001G\001z\001S\001{\000\240\001\174\001\173\001c\001\167\001\173\001d\001M\001z\002b\001{\000\240\001?\001\133\0010\000\237\000\240\001N\002c\0011\002\000\000r\001\220\000\000\001}\000\232\001S\001M\001D\001E\000W\001c\000\232\001\n\001d\000\234\001z\001N\001{\000\240\000\236\000X\000\234\001\222\001\228\000\232\001S\000\239\002\005\002\148\001\011\001c\000\232\001P\001d\000\234\001z\000p\001{\000\240\000\248\000p\000\234\001\n\000V\001M\000\189\000\252\001\n\001\n\000u\002\015\001\228\002@\000\127\001N\002@\002\149\000\127\002B\001\015\000p\002B\002!\001S\001\024\001(\000r\002L\001c\001\016\002K\001d\002@\001z\001\228\001{\000\240\000\127\002B\002@\000W\000\237\000\240\002h\000\174\002B\001\228\002D\000\237\000\240\000p\000^\002c\002Z\002G\000p\000p\000\000\001W\001\016\0015\000\237\000\240\000\187\001\016\001\016\000p\000\127\000\237\000\240\002@\002@\000\127\000\127\000\228\000\175\002B\002B\000V\000\000\002]\001K\002&\000\127\000p\002P\002T\0015\002d\002E\002>\002H\002E\000\175\002H\000V\002N\0016\002[\002\166\002e\000\127\002\154\000p\002o\000\000\001\228\002^\002\174\002E\002\155\002H\000\175\001[\000p\000W\002E\000V\002H\0012\000\127\000p\002\136\000\175\0016\002[\001B\001]\000p\000V\000\175\000\127\000W\000V\002^\000\000\001F\001_\000\127\000V\002+\000\000\000p\001I\000p\000\127\000\000\002E\002E\002H\002H\001_\000V\000\175\000W\000V\0022\000V\001|\000\127\002\160\000\127\000p\002d\001\228\001B\000W\002R\002X\002H\000W\000\175\002j\000p\000p\002k\000W\002g\002u\000\127\001\228\002m\000\184\000\179\000\000\000\000\000\000\002g\002\161\000W\000\127\000\127\000W\002~\000W\000p\002\131\000p\002\143\000p\001B\000p\000p\002\134\000x\001B\000z\000\000\000|\002d\000~\000\130\000\127\000p\000\127\000p\000\127\000p\000\127\000\127\000p\002v\000\132\001?\000\134\000\000\000\136\000p\000\000\000\138\000\127\000p\000\127\000p\000\127\002\127\000\140\000\127\000p\001?\000\142\001?\000\144\000p\000\127\000p\000\000\000\146\000\127\000p\000\127\002\132\000\148\002\144\000\150\000\127\000p\000\000\000\152\000p\000\127\000p\000\127\000p\000\000\000\154\000\127\000\000\000\156\000\000\000\158\000\000\000\160\000\127\000p\000p\000\127\000p\000\127\000p\000\127\000p\000\000\000\162\000\164\000\000\000\171\000\000\000\195\000\000\000\201\000\127\000\127\000p\000\127\000p\000\127\000p\000\127\000p\000p\000\000\000\206\000\000\000\208\000\000\000\213\000\000\000\217\000\221\000\127\000p\000\127\000p\000\127\000p\000\127\000\127\000p\000\000\000\223\000\000\001\000\000\000\001\005\000p\000\000\001\030\000\127\000p\000\127\000p\000\127\000\000\001$\000\127\000p\000\000\001<\000\000\001f\000p\000\127\000p\000\000\001i\000\127\000p\000\127\000\000\001l\000\000\001o\000\127\000p\000\000\001r\000p\000\127\000p\000\127\000p\000\000\001u\000\127\000p\001x\000p\001\128\000p\000\000\000\127\000p\000\000\000\127\000p\000\127\001\170\001\173\000p\000\000\001\172\001\173\001\178\001\173\001\180\001\173\000p\001\182\001\173\000p\001\184\001\173\000p\000\000\001\186\001\173\000p\000\000\000p\000\000\000p\000\000\001\188\001\173\000p\001\190\001\173\000p\001\192\001\173\000p\000\000\001\194\001\173\001\198\001\173\001\201\001\173\000p\000p\001\205\001\173\000p\001\208\001\173\000\000\001\212\001\173\001\226\000\000\000\000\000p\000p\000p\001\215\001\173\000\127\000p\001\219\001\173\001\231\001\237\001\241\000p\000p\000\000\001\243\000p\000\127\000\127\000\127\000\000\001\247\001\249\000\127\000\000\001\253\000p\000p\000p\000\127\000\127\000p\000p\000\127\000\000\002\002\002\b\002\012\000p\000\000\002\017\002\019\000p\000\127\000\127\000\127\000\000\002\026\000\127\000\127\000\000\002\030\000p\000p\000p\000\127\000p\000p\000p\000\127\000\000\002#\002(\002-\000\000\002/\0025\0027\000p\000\127\000\127\000\127\000\000\000\127\000\127\000\127\000\000\002<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127"))
  
  and semantic_action =
    [|
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = id;
          MenhirLib.EngineTypes.startp = _startpos_id_;
          MenhirLib.EngineTypes.endp = _endpos_id_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = ut;
            MenhirLib.EngineTypes.startp = _startpos_ut_;
            MenhirLib.EngineTypes.endp = _endpos_ut_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = od;
              MenhirLib.EngineTypes.startp = _startpos_od_;
              MenhirLib.EngineTypes.endp = _endpos_od_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let id : (Ast.identifier) = Obj.magic id in
        let ut : (Middle.UnsizedType.t) = Obj.magic ut in
        let od : (unit option) = Obj.magic od in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_od_ in
        let _endpos = _endpos_id_ in
        let _v : (Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier) = 
# 296 "src/frontend/parser.mly"
    (  grammar_logger "arg_decl" ;
       match od with None -> (UnsizedType.AutoDiffable, ut, id) | _ -> (DataOnly, ut, id)  )
# 666 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = l;
            MenhirLib.EngineTypes.startp = _startpos_l_;
            MenhirLib.EngineTypes.endp = _endpos_l_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let l : (Ast.untyped_expression list) = Obj.magic l in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression list) = 
# 580 "src/frontend/parser.mly"
                 ( grammar_logger "array dims" ; l  )
# 712 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = dims;
            MenhirLib.EngineTypes.startp = _startpos_dims_;
            MenhirLib.EngineTypes.endp = _endpos_dims_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let dims : (Ast.untyped_expression list) = Obj.magic dims in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_dims_ in
        let _endpos = _endpos_ty_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 438 "src/frontend/parser.mly"
  ( grammar_logger "array_type" ;
    let (type_, trans) = ty in
    ((reducearray (type_, dims)), trans)
  )
# 749 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = dims;
            MenhirLib.EngineTypes.startp = _startpos_dims_;
            MenhirLib.EngineTypes.endp = _endpos_dims_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let dims : (Ast.untyped_expression list) = Obj.magic dims in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_dims_ in
        let _endpos = _endpos_ty_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 438 "src/frontend/parser.mly"
  ( grammar_logger "array_type" ;
    let (type_, trans) = ty in
    ((reducearray (type_, dims)), trans)
  )
# 786 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = dims;
            MenhirLib.EngineTypes.startp = _startpos_dims_;
            MenhirLib.EngineTypes.endp = _endpos_dims_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let dims : (Ast.untyped_expression list) = Obj.magic dims in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_dims_ in
        let _endpos = _endpos_ty_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 438 "src/frontend/parser.mly"
  ( grammar_logger "array_type" ;
    let (type_, trans) = ty in
    ((reducearray (type_, dims)), trans)
  )
# 823 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = dims;
            MenhirLib.EngineTypes.startp = _startpos_dims_;
            MenhirLib.EngineTypes.endp = _endpos_dims_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let dims : (Ast.untyped_expression list) = Obj.magic dims in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_dims_ in
        let _endpos = _endpos_ty_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 438 "src/frontend/parser.mly"
  ( grammar_logger "array_type" ;
    let (type_, trans) = ty in
    ((reducearray (type_, dims)), trans)
  )
# 860 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = l;
                MenhirLib.EngineTypes.startp = _startpos_l_;
                MenhirLib.EngineTypes.endp = _endpos_l_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let l : (Ast.untyped_expression) = Obj.magic l in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_l_ in
        let _endpos = _endpos__4_ in
        let _v =
          let op = 
# 803 "src/frontend/parser.mly"
    (  grammar_logger "assign_plain" ; Assign )
# 907 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_l_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 766 "src/frontend/parser.mly"
    (  grammar_logger "assignment_statement" ;
       Assignment {assign_lhs=try_convert_to_lvalue l _sloc;
                   assign_op=op;
                   assign_rhs=e} )
# 918 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = l;
                MenhirLib.EngineTypes.startp = _startpos_l_;
                MenhirLib.EngineTypes.endp = _endpos_l_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let l : (Ast.untyped_expression) = Obj.magic l in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_l_ in
        let _endpos = _endpos__4_ in
        let _v =
          let op = 
# 805 "src/frontend/parser.mly"
    ( grammar_logger "assign_plus" ; OperatorAssign Plus )
# 969 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_l_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 766 "src/frontend/parser.mly"
    (  grammar_logger "assignment_statement" ;
       Assignment {assign_lhs=try_convert_to_lvalue l _sloc;
                   assign_op=op;
                   assign_rhs=e} )
# 980 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = l;
                MenhirLib.EngineTypes.startp = _startpos_l_;
                MenhirLib.EngineTypes.endp = _endpos_l_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let l : (Ast.untyped_expression) = Obj.magic l in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_l_ in
        let _endpos = _endpos__4_ in
        let _v =
          let op = 
# 807 "src/frontend/parser.mly"
    ( grammar_logger "assign_minus" ; OperatorAssign Minus )
# 1031 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_l_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 766 "src/frontend/parser.mly"
    (  grammar_logger "assignment_statement" ;
       Assignment {assign_lhs=try_convert_to_lvalue l _sloc;
                   assign_op=op;
                   assign_rhs=e} )
# 1042 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = l;
                MenhirLib.EngineTypes.startp = _startpos_l_;
                MenhirLib.EngineTypes.endp = _endpos_l_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let l : (Ast.untyped_expression) = Obj.magic l in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_l_ in
        let _endpos = _endpos__4_ in
        let _v =
          let op = 
# 809 "src/frontend/parser.mly"
    ( grammar_logger "assign_times"  ; OperatorAssign Times )
# 1093 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_l_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 766 "src/frontend/parser.mly"
    (  grammar_logger "assignment_statement" ;
       Assignment {assign_lhs=try_convert_to_lvalue l _sloc;
                   assign_op=op;
                   assign_rhs=e} )
# 1104 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = l;
                MenhirLib.EngineTypes.startp = _startpos_l_;
                MenhirLib.EngineTypes.endp = _endpos_l_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let l : (Ast.untyped_expression) = Obj.magic l in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_l_ in
        let _endpos = _endpos__4_ in
        let _v =
          let op = 
# 811 "src/frontend/parser.mly"
    ( grammar_logger "assign_divide" ; OperatorAssign Divide )
# 1155 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_l_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 766 "src/frontend/parser.mly"
    (  grammar_logger "assignment_statement" ;
       Assignment {assign_lhs=try_convert_to_lvalue l _sloc;
                   assign_op=op;
                   assign_rhs=e} )
# 1166 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = l;
                MenhirLib.EngineTypes.startp = _startpos_l_;
                MenhirLib.EngineTypes.endp = _endpos_l_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let l : (Ast.untyped_expression) = Obj.magic l in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_l_ in
        let _endpos = _endpos__4_ in
        let _v =
          let op = 
# 813 "src/frontend/parser.mly"
    ( grammar_logger "assign_elttimes"  ; OperatorAssign EltTimes )
# 1217 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_l_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 766 "src/frontend/parser.mly"
    (  grammar_logger "assignment_statement" ;
       Assignment {assign_lhs=try_convert_to_lvalue l _sloc;
                   assign_op=op;
                   assign_rhs=e} )
# 1228 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = l;
                MenhirLib.EngineTypes.startp = _startpos_l_;
                MenhirLib.EngineTypes.endp = _endpos_l_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let l : (Ast.untyped_expression) = Obj.magic l in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_l_ in
        let _endpos = _endpos__4_ in
        let _v =
          let op = 
# 815 "src/frontend/parser.mly"
    ( grammar_logger "assign_eltdivide" ; OperatorAssign EltDivide  )
# 1279 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_l_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 766 "src/frontend/parser.mly"
    (  grammar_logger "assignment_statement" ;
       Assignment {assign_lhs=try_convert_to_lvalue l _sloc;
                   assign_op=op;
                   assign_rhs=e} )
# 1290 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _4;
            MenhirLib.EngineTypes.startp = _startpos__4_;
            MenhirLib.EngineTypes.endp = _endpos__4_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = xs;
              MenhirLib.EngineTypes.startp = _startpos_xs_;
              MenhirLib.EngineTypes.endp = _endpos_xs_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = id;
                  MenhirLib.EngineTypes.startp = _startpos_id_;
                  MenhirLib.EngineTypes.endp = _endpos_id_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let id : (Ast.identifier) = Obj.magic id in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_id_ in
        let _endpos = _endpos__5_ in
        let _v =
          let args = 
# 241 "<standard.mly>"
    ( xs )
# 1348 "src/frontend/parser.ml"
           in
          (
# 771 "src/frontend/parser.mly"
    (  grammar_logger "funapp_statement" ; NRFunApp ((),id, args)  )
# 1353 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _8;
          MenhirLib.EngineTypes.startp = _startpos__8_;
          MenhirLib.EngineTypes.endp = _endpos__8_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = ot;
            MenhirLib.EngineTypes.startp = _startpos_ot_;
            MenhirLib.EngineTypes.endp = _endpos_ot_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _6;
              MenhirLib.EngineTypes.startp = _startpos__6_;
              MenhirLib.EngineTypes.endp = _endpos__6_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = xs;
                MenhirLib.EngineTypes.startp = _startpos_xs_;
                MenhirLib.EngineTypes.endp = _endpos_xs_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _4;
                  MenhirLib.EngineTypes.startp = _startpos__4_;
                  MenhirLib.EngineTypes.endp = _endpos__4_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = id;
                    MenhirLib.EngineTypes.startp = _startpos_id_;
                    MenhirLib.EngineTypes.endp = _endpos_id_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _;
                      MenhirLib.EngineTypes.semv = _2;
                      MenhirLib.EngineTypes.startp = _startpos__2_;
                      MenhirLib.EngineTypes.endp = _endpos__2_;
                      MenhirLib.EngineTypes.next = {
                        MenhirLib.EngineTypes.state = _menhir_s;
                        MenhirLib.EngineTypes.semv = e;
                        MenhirLib.EngineTypes.startp = _startpos_e_;
                        MenhirLib.EngineTypes.endp = _endpos_e_;
                        MenhirLib.EngineTypes.next = _menhir_stack;
                      };
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _8 : unit = Obj.magic _8 in
        let ot : (Ast.untyped_expression Ast.truncation option) = Obj.magic ot in
        let _6 : unit = Obj.magic _6 in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _4 : unit = Obj.magic _4 in
        let id : (Ast.identifier) = Obj.magic id in
        let _2 : unit = Obj.magic _2 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos__8_ in
        let _v =
          let es = 
# 241 "<standard.mly>"
    ( xs )
# 1432 "src/frontend/parser.ml"
           in
          (
# 774 "src/frontend/parser.mly"
    (  grammar_logger "tilde_statement" ;
       let t = match ot with Some tt -> tt | None -> NoTruncate in
       Tilde {arg= e; distribution= id; args= es; truncation= t; kind=() }
    )
# 1440 "src/frontend/parser.ml"
           : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 779 "src/frontend/parser.mly"
    (   grammar_logger "targetpe_statement" ; TargetPE e )
# 1493 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _2;
          MenhirLib.EngineTypes.startp = _startpos__2_;
          MenhirLib.EngineTypes.endp = _endpos__2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__2_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 785 "src/frontend/parser.mly"
    (  grammar_logger "break_statement" ; Break )
# 1528 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _2;
          MenhirLib.EngineTypes.startp = _startpos__2_;
          MenhirLib.EngineTypes.endp = _endpos__2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__2_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 787 "src/frontend/parser.mly"
    (  grammar_logger "continue_statement" ; Continue )
# 1563 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _4;
            MenhirLib.EngineTypes.startp = _startpos__4_;
            MenhirLib.EngineTypes.endp = _endpos__4_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = l;
              MenhirLib.EngineTypes.startp = _startpos_l_;
              MenhirLib.EngineTypes.endp = _endpos_l_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let l : (Ast.untyped_expression Ast.printable list) = Obj.magic l in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 789 "src/frontend/parser.mly"
    (  grammar_logger "print_statement" ; Print l )
# 1619 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _4;
            MenhirLib.EngineTypes.startp = _startpos__4_;
            MenhirLib.EngineTypes.endp = _endpos__4_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = l;
              MenhirLib.EngineTypes.startp = _startpos_l_;
              MenhirLib.EngineTypes.endp = _endpos_l_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let l : (Ast.untyped_expression Ast.printable list) = Obj.magic l in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 791 "src/frontend/parser.mly"
    (  grammar_logger "reject_statement" ; Reject l  )
# 1675 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _4;
            MenhirLib.EngineTypes.startp = _startpos__4_;
            MenhirLib.EngineTypes.endp = _endpos__4_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = l;
              MenhirLib.EngineTypes.startp = _startpos_l_;
              MenhirLib.EngineTypes.endp = _endpos_l_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let l : (Ast.untyped_expression Ast.printable list) = Obj.magic l in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 793 "src/frontend/parser.mly"
    (  grammar_logger "exit_statement" ; FatalError l  )
# 1731 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 795 "src/frontend/parser.mly"
    (  grammar_logger "return_statement" ; Return e )
# 1773 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _2;
          MenhirLib.EngineTypes.startp = _startpos__2_;
          MenhirLib.EngineTypes.endp = _endpos__2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__2_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 797 "src/frontend/parser.mly"
    (  grammar_logger "return_nothing_statement" ; ReturnVoid )
# 1808 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 799 "src/frontend/parser.mly"
    (  grammar_logger "skip" ; Skip )
# 1836 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 334 "src/frontend/parser.mly"
    (  grammar_logger "basic_type INT" ; UnsizedType.UInt  )
# 1861 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 336 "src/frontend/parser.mly"
    (  grammar_logger "basic_type REAL"  ; UnsizedType.UReal )
# 1886 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 338 "src/frontend/parser.mly"
    ( grammar_logger "basic_type COMPLEX" ; UnsizedType.UComplex )
# 1911 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 340 "src/frontend/parser.mly"
    (  grammar_logger "basic_type VECTOR" ; UnsizedType.UVector )
# 1936 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 342 "src/frontend/parser.mly"
    (  grammar_logger "basic_type ROWVECTOR" ; UnsizedType.URowVector )
# 1961 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 344 "src/frontend/parser.mly"
    (  grammar_logger "basic_type MATRIX" ; UnsizedType.UMatrix )
# 1986 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 346 "src/frontend/parser.mly"
    (  grammar_logger "basic_type COMPLEXVECTOR" ; UnsizedType.UComplexVector )
# 2011 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 348 "src/frontend/parser.mly"
    (  grammar_logger "basic_type COMPLEXROWVECTOR" ; UnsizedType.UComplexRowVector )
# 2036 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.t) = 
# 350 "src/frontend/parser.mly"
    (  grammar_logger "basic_type COMPLEXMATRIX" ; UnsizedType.UComplexMatrix )
# 2061 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = id;
          MenhirLib.EngineTypes.startp = _startpos_id_;
          MenhirLib.EngineTypes.endp = _endpos_id_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let id : (Ast.identifier) = Obj.magic id in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_id_ in
        let _endpos = _endpos_id_ in
        let _v =
          let _endpos = _endpos_id_ in
          let _startpos = _startpos_id_ in
          let _loc = (_startpos, _endpos) in
          (
# 619 "src/frontend/parser.mly"
    ( grammar_logger "identifier_expr" ;
      build_expr (Variable id) _loc )
# 2091 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = i;
          MenhirLib.EngineTypes.startp = _startpos_i_;
          MenhirLib.EngineTypes.endp = _endpos_i_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let i : (
# 92 "src/frontend/parser.mly"
       (string)
# 2113 "src/frontend/parser.ml"
        ) = Obj.magic i in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_i_ in
        let _endpos = _endpos_i_ in
        let _v =
          let _endpos = _endpos_i_ in
          let _startpos = _startpos_i_ in
          let _loc = (_startpos, _endpos) in
          (
# 622 "src/frontend/parser.mly"
    ( grammar_logger ("intnumeral " ^ i) ;
      build_expr (IntNumeral i) _loc )
# 2126 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = r;
          MenhirLib.EngineTypes.startp = _startpos_r_;
          MenhirLib.EngineTypes.endp = _endpos_r_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let r : (
# 93 "src/frontend/parser.mly"
       (string)
# 2148 "src/frontend/parser.ml"
        ) = Obj.magic r in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_r_ in
        let _endpos = _endpos_r_ in
        let _v =
          let _endpos = _endpos_r_ in
          let _startpos = _startpos_r_ in
          let _loc = (_startpos, _endpos) in
          (
# 626 "src/frontend/parser.mly"
    ( grammar_logger ("realnumeral " ^ r) ;
      build_expr (RealNumeral r) _loc )
# 2161 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = r;
          MenhirLib.EngineTypes.startp = _startpos_r_;
          MenhirLib.EngineTypes.endp = _endpos_r_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let r : (
# 93 "src/frontend/parser.mly"
       (string)
# 2183 "src/frontend/parser.ml"
        ) = Obj.magic r in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_r_ in
        let _endpos = _endpos_r_ in
        let _v =
          let _endpos = _endpos_r_ in
          let _startpos = _startpos_r_ in
          let _loc = (_startpos, _endpos) in
          (
# 626 "src/frontend/parser.mly"
    ( grammar_logger ("realnumeral " ^ r) ;
      build_expr (RealNumeral r) _loc )
# 2196 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = z;
          MenhirLib.EngineTypes.startp = _startpos_z_;
          MenhirLib.EngineTypes.endp = _endpos_z_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let z : (
# 94 "src/frontend/parser.mly"
       (string)
# 2218 "src/frontend/parser.ml"
        ) = Obj.magic z in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_z_ in
        let _endpos = _endpos_z_ in
        let _v =
          let _endpos = _endpos_z_ in
          let _startpos = _startpos_z_ in
          let _loc = (_startpos, _endpos) in
          (
# 629 "src/frontend/parser.mly"
    ( grammar_logger ("imagnumeral " ^ z) ;
      build_expr (ImagNumeral (String.drop_suffix z 1)) _loc )
# 2231 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = xs;
            MenhirLib.EngineTypes.startp = _startpos_xs_;
            MenhirLib.EngineTypes.endp = _endpos_xs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v =
          let _endpos = _endpos__3_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 632 "src/frontend/parser.mly"
    ( grammar_logger "array_expression" ;
      build_expr (ArrayExpr xs) _loc )
# 2276 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = xs;
            MenhirLib.EngineTypes.startp = _startpos_xs_;
            MenhirLib.EngineTypes.endp = _endpos_xs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v =
          let xs = 
# 241 "<standard.mly>"
    ( xs )
# 2317 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__3_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 635 "src/frontend/parser.mly"
    ( grammar_logger "row_vector_expression" ;
      build_expr (RowVectorExpr xs) _loc )
# 2326 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = xs;
            MenhirLib.EngineTypes.startp = _startpos_xs_;
            MenhirLib.EngineTypes.endp = _endpos_xs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = id;
                MenhirLib.EngineTypes.startp = _startpos_id_;
                MenhirLib.EngineTypes.endp = _endpos_id_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let id : (Ast.identifier) = Obj.magic id in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_id_ in
        let _endpos = _endpos__4_ in
        let _v =
          let args = 
# 241 "<standard.mly>"
    ( xs )
# 2374 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _startpos = _startpos_id_ in
          let _loc = (_startpos, _endpos) in
          (
# 638 "src/frontend/parser.mly"
    ( grammar_logger "fun_app" ;
      let app =
       if
         List.length args = 1
         && List.exists ~f:(fun x -> String.is_suffix ~suffix:x id.name) Utils.conditioning_suffices
       then CondDistApp ((), id, args)
       else FunApp ((), id, args)
       in build_expr app _loc )
# 2389 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v =
          let _endpos = _endpos__3_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 647 "src/frontend/parser.mly"
    ( grammar_logger "target_read" ;
      build_expr GetTarget _loc )
# 2434 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = xs;
            MenhirLib.EngineTypes.startp = _startpos_xs_;
            MenhirLib.EngineTypes.endp = _endpos_xs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e;
                MenhirLib.EngineTypes.startp = _startpos_e_;
                MenhirLib.EngineTypes.endp = _endpos_e_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = id;
                    MenhirLib.EngineTypes.startp = _startpos_id_;
                    MenhirLib.EngineTypes.endp = _endpos_id_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let id : (Ast.identifier) = Obj.magic id in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_id_ in
        let _endpos = _endpos__6_ in
        let _v =
          let args = 
# 241 "<standard.mly>"
    ( xs )
# 2496 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__6_ in
          let _startpos = _startpos_id_ in
          let _loc = (_startpos, _endpos) in
          (
# 651 "src/frontend/parser.mly"
    ( grammar_logger "conditional_dist_app" ;
      build_expr (CondDistApp ((), id, e :: args)) _loc )
# 2505 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = xs;
            MenhirLib.EngineTypes.startp = _startpos_xs_;
            MenhirLib.EngineTypes.endp = _endpos_xs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = x_head;
                MenhirLib.EngineTypes.startp = _startpos_x_head_;
                MenhirLib.EngineTypes.endp = _endpos_x_head_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _3 : unit = Obj.magic _3 in
        let x_head : (Ast.untyped_expression) = Obj.magic x_head in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v =
          let _endpos = _endpos__5_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 654 "src/frontend/parser.mly"
    ( grammar_logger "tuple_expression" ;
      build_expr (TupleExpr (x_head::xs)) _loc  )
# 2564 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = ix_str;
          MenhirLib.EngineTypes.startp = _startpos_ix_str_;
          MenhirLib.EngineTypes.endp = _endpos_ix_str_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let ix_str : (
# 93 "src/frontend/parser.mly"
       (string)
# 2592 "src/frontend/parser.ml"
        ) = Obj.magic ix_str in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos_ix_str_ in
        let _v =
          let _endpos = _endpos_ix_str_ in
          let _startpos = _startpos_e_ in
          let _loc = (_startpos, _endpos) in
          (
# 657 "src/frontend/parser.mly"
    ( grammar_logger "common_expression_tuple_index" ;
      build_expr (TupleProjection (e, parse_tuple_slot ix_str _loc)) _loc
    )
# 2607 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = indices;
            MenhirLib.EngineTypes.startp = _startpos_indices_;
            MenhirLib.EngineTypes.endp = _endpos_indices_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = e;
                MenhirLib.EngineTypes.startp = _startpos_e_;
                MenhirLib.EngineTypes.endp = _endpos_e_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let indices : (Ast.untyped_expression Ast.index list) = Obj.magic indices in
        let _2 : unit = Obj.magic _2 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos_e_ in
          let _loc = (_startpos, _endpos) in
          (
# 661 "src/frontend/parser.mly"
    ( grammar_logger "common_expression_indexed";
      build_expr (Indexed (e, indices)) _loc )
# 2659 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v =
          let _endpos = _endpos__3_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 664 "src/frontend/parser.mly"
    ( grammar_logger "extra_paren" ;
      build_expr (Paren e) _loc )
# 2704 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 687 "src/frontend/parser.mly"
    (  grammar_logger "infix_plus" ; Operator.Plus )
# 2745 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 2756 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 689 "src/frontend/parser.mly"
    (   grammar_logger "infix_minus" ;Operator.Minus )
# 2797 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 2808 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 691 "src/frontend/parser.mly"
    (  grammar_logger "infix_times" ; Operator.Times )
# 2849 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 2860 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 693 "src/frontend/parser.mly"
    (  grammar_logger "infix_divide" ; Operator.Divide )
# 2901 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 2912 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 695 "src/frontend/parser.mly"
    (  grammar_logger "infix_intdivide" ; Operator.IntDivide )
# 2953 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 2964 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 697 "src/frontend/parser.mly"
    (  grammar_logger "infix_modulo" ; Operator.Modulo )
# 3005 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 3016 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 699 "src/frontend/parser.mly"
    (  grammar_logger "infix_ldivide" ; Operator.LDivide )
# 3057 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 3068 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 701 "src/frontend/parser.mly"
    (  grammar_logger "infix_elttimes" ; Operator.EltTimes )
# 3109 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 3120 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 703 "src/frontend/parser.mly"
    (   grammar_logger "infix_eltdivide" ; Operator.EltDivide )
# 3161 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 3172 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 705 "src/frontend/parser.mly"
    (  grammar_logger "infix_hat" ; Operator.Pow )
# 3213 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 3224 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op = 
# 707 "src/frontend/parser.mly"
    (  grammar_logger "infix_eltpow" ; Operator.EltPow )
# 3265 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 599 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_arithmetic" ;
      build_expr (BinOp (e1, op, e2)) _loc
    )
# 3276 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v =
          let op = 
# 669 "src/frontend/parser.mly"
    (   grammar_logger "prefix_bang" ; Operator.PNot )
# 3310 "src/frontend/parser.ml"
           in
          let _startpos_op_ = _startpos__1_ in
          let _endpos = _endpos_e_ in
          let _startpos = _startpos_op_ in
          let _loc = (_startpos, _endpos) in
          (
# 604 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_prefixOp" ;
      build_expr (PrefixOp (op, e)) _loc
    )
# 3322 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v =
          let op = 
# 671 "src/frontend/parser.mly"
    (  grammar_logger "prefix_minus" ; Operator.PMinus )
# 3356 "src/frontend/parser.ml"
           in
          let _startpos_op_ = _startpos__1_ in
          let _endpos = _endpos_e_ in
          let _startpos = _startpos_op_ in
          let _loc = (_startpos, _endpos) in
          (
# 604 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_prefixOp" ;
      build_expr (PrefixOp (op, e)) _loc
    )
# 3368 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v =
          let op = 
# 673 "src/frontend/parser.mly"
    (   grammar_logger "prefix_plus" ; Operator.PPlus )
# 3402 "src/frontend/parser.ml"
           in
          let _startpos_op_ = _startpos__1_ in
          let _endpos = _endpos_e_ in
          let _startpos = _startpos_op_ in
          let _loc = (_startpos, _endpos) in
          (
# 604 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_prefixOp" ;
      build_expr (PrefixOp (op, e)) _loc
    )
# 3414 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos__1_ in
        let _v =
          let op = 
# 677 "src/frontend/parser.mly"
    (  grammar_logger "postfix_transpose" ; Operator.Transpose )
# 3448 "src/frontend/parser.ml"
           in
          let _endpos_op_ = _endpos__1_ in
          let _endpos = _endpos_op_ in
          let _startpos = _startpos_e_ in
          let _loc = (_startpos, _endpos) in
          (
# 609 "src/frontend/parser.mly"
    (
      grammar_logger "constr_expression_postfix" ;
      build_expr (PostfixOp (e, op)) _loc
    )
# 3460 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression) = 
# 614 "src/frontend/parser.mly"
    ( grammar_logger "constr_expression_common_expr" ; e )
# 3486 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = tvd;
            MenhirLib.EngineTypes.startp = _startpos_tvd_;
            MenhirLib.EngineTypes.endp = _endpos_tvd_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let tvd : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic tvd in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 186 "src/frontend/parser.mly"
    ( grammar_logger "data_block" ;
      {stmts= tvd; xloc= location_span_of_positions _loc} )
# 3538 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = dims;
            MenhirLib.EngineTypes.startp = _startpos_dims_;
            MenhirLib.EngineTypes.endp = _endpos_dims_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = id;
                MenhirLib.EngineTypes.startp = _startpos_id_;
                MenhirLib.EngineTypes.endp = _endpos_id_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = ty;
                  MenhirLib.EngineTypes.startp = _startpos_ty_;
                  MenhirLib.EngineTypes.endp = _endpos_ty_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let dims : (Ast.untyped_expression list) = Obj.magic dims in
        let _3 : unit = Obj.magic _3 in
        let id : (Ast.identifier) = Obj.magic id in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__5_ in
        let _v =
          let _loc_dims_ = (_startpos_dims_, _endpos_dims_) in
          (
# 392 "src/frontend/parser.mly"
                                                                                                  (
    let (ty, trans) = ty in
    let ty = List.fold_right ~f:(fun e ty -> SizedType.SArray (ty, e)) ~init:ty dims in
    let ty = (ty, trans) in
    raise
    (Errors.SyntaxError
       (Errors.Parsing
          ( Fmt.str
              "\";\" expected after variable declaration.@ It looks like you \
               are trying to use the old array syntax.@ Please use the new \
               syntax:@ @[<h>%a %s;@]@\n"
              Pretty_printing.pp_transformed_type ty id.name
          , location_span_of_positions _loc_dims_ )))
    )
# 3609 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 3662 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 3684 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 3737 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 3759 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 3812 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 3834 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = dims;
            MenhirLib.EngineTypes.startp = _startpos_dims_;
            MenhirLib.EngineTypes.endp = _endpos_dims_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = id;
                MenhirLib.EngineTypes.startp = _startpos_id_;
                MenhirLib.EngineTypes.endp = _endpos_id_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = ty;
                  MenhirLib.EngineTypes.startp = _startpos_ty_;
                  MenhirLib.EngineTypes.endp = _endpos_ty_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let dims : (Ast.untyped_expression list) = Obj.magic dims in
        let _3 : unit = Obj.magic _3 in
        let id : (Ast.identifier) = Obj.magic id in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__5_ in
        let _v =
          let _loc_dims_ = (_startpos_dims_, _endpos_dims_) in
          (
# 392 "src/frontend/parser.mly"
                                                                                                  (
    let (ty, trans) = ty in
    let ty = List.fold_right ~f:(fun e ty -> SizedType.SArray (ty, e)) ~init:ty dims in
    let ty = (ty, trans) in
    raise
    (Errors.SyntaxError
       (Errors.Parsing
          ( Fmt.str
              "\";\" expected after variable declaration.@ It looks like you \
               are trying to use the old array syntax.@ Please use the new \
               syntax:@ @[<h>%a %s;@]@\n"
              Pretty_printing.pp_transformed_type ty id.name
          , location_span_of_positions _loc_dims_ )))
    )
# 3906 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 3959 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 3981 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 4034 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 4056 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 4109 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 4131 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = dims;
            MenhirLib.EngineTypes.startp = _startpos_dims_;
            MenhirLib.EngineTypes.endp = _endpos_dims_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = id;
                MenhirLib.EngineTypes.startp = _startpos_id_;
                MenhirLib.EngineTypes.endp = _endpos_id_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = ty;
                  MenhirLib.EngineTypes.startp = _startpos_ty_;
                  MenhirLib.EngineTypes.endp = _endpos_ty_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let dims : (Ast.untyped_expression list) = Obj.magic dims in
        let _3 : unit = Obj.magic _3 in
        let id : (Ast.identifier) = Obj.magic id in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__5_ in
        let _v =
          let _loc_dims_ = (_startpos_dims_, _endpos_dims_) in
          (
# 392 "src/frontend/parser.mly"
                                                                                                  (
    let (ty, trans) = ty in
    let ty = List.fold_right ~f:(fun e ty -> SizedType.SArray (ty, e)) ~init:ty dims in
    let ty = (ty, trans) in
    raise
    (Errors.SyntaxError
       (Errors.Parsing
          ( Fmt.str
              "\";\" expected after variable declaration.@ It looks like you \
               are trying to use the old array syntax.@ Please use the new \
               syntax:@ @[<h>%a %s;@]@\n"
              Pretty_printing.pp_transformed_type ty id.name
          , location_span_of_positions _loc_dims_ )))
    )
# 4203 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 4256 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 4278 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 4331 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 4353 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vs;
            MenhirLib.EngineTypes.startp = _startpos_vs_;
            MenhirLib.EngineTypes.endp = _endpos_vs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = v;
              MenhirLib.EngineTypes.startp = _startpos_v_;
              MenhirLib.EngineTypes.endp = _endpos_v_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vs : (Ast.untyped_expression Ast.variable list option) = Obj.magic vs in
        let v : (Ast.untyped_expression Ast.variable) = Obj.magic v in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos__4_ in
        let _v =
          let ty = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 4406 "src/frontend/parser.ml"
           in
          let _endpos = _endpos__4_ in
          let _symbolstartpos = _startpos_ty_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 409 "src/frontend/parser.mly"
    ( (fun ~is_global ->
      let vs = v :: Option.value vs ~default:[]
      in
      { stmt=
          VarDecl {
              decl_type= fst ty
            ; transformation= snd ty
            ; variables=vs
            ; is_global
            }
      ; smeta= {
          loc= location_span_of_positions _sloc
        }
      })
    )
# 4428 "src/frontend/parser.ml"
           : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = id;
          MenhirLib.EngineTypes.startp = _startpos_id_;
          MenhirLib.EngineTypes.endp = _endpos_id_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let id : (Ast.identifier) = Obj.magic id in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_id_ in
        let _endpos = _endpos_id_ in
        let _v : (Ast.identifier) = 
# 222 "src/frontend/parser.mly"
                  ( id )
# 4456 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = err;
          MenhirLib.EngineTypes.startp = _startpos_err_;
          MenhirLib.EngineTypes.endp = _endpos_err_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let err : (string * (Lexing.position * Lexing.position) * bool) = Obj.magic err in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_err_ in
        let _endpos = _endpos_err_ in
        let _v : (Ast.identifier) = 
# 223 "src/frontend/parser.mly"
                      ( reserved err )
# 4481 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = id;
          MenhirLib.EngineTypes.startp = _startpos_id_;
          MenhirLib.EngineTypes.endp = _endpos_id_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let id : (Ast.identifier) = Obj.magic id in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_id_ in
        let _endpos = _endpos_id_ in
        let _v : (Ast.identifier) = 
# 226 "src/frontend/parser.mly"
                  ( id )
# 4506 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = err;
          MenhirLib.EngineTypes.startp = _startpos_err_;
          MenhirLib.EngineTypes.endp = _endpos_err_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let err : (string * (Lexing.position * Lexing.position) * bool) = Obj.magic err in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_err_ in
        let _endpos = _endpos_err_ in
        let _v : (Ast.identifier) = 
# 227 "src/frontend/parser.mly"
                      ( reserved_decl err )
# 4531 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e3;
          MenhirLib.EngineTypes.startp = _startpos_e3_;
          MenhirLib.EngineTypes.endp = _endpos_e3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _4;
            MenhirLib.EngineTypes.startp = _startpos__4_;
            MenhirLib.EngineTypes.endp = _endpos__4_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = e2;
              MenhirLib.EngineTypes.startp = _startpos_e2_;
              MenhirLib.EngineTypes.endp = _endpos_e2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = e1;
                  MenhirLib.EngineTypes.startp = _startpos_e1_;
                  MenhirLib.EngineTypes.endp = _endpos_e1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let e3 : (Ast.untyped_expression) = Obj.magic e3 in
        let _4 : unit = Obj.magic _4 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _2 : unit = Obj.magic _2 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e3_ in
        let _v =
          let _endpos = _endpos_e3_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 585 "src/frontend/parser.mly"
    ( grammar_logger "ifthenelse_expr" ; build_expr (TernaryIf (e1, e2, e3)) _loc )
# 4588 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 687 "src/frontend/parser.mly"
    (  grammar_logger "infix_plus" ; Operator.Plus )
# 4630 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 4635 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 4644 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 689 "src/frontend/parser.mly"
    (   grammar_logger "infix_minus" ;Operator.Minus )
# 4686 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 4691 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 4700 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 691 "src/frontend/parser.mly"
    (  grammar_logger "infix_times" ; Operator.Times )
# 4742 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 4747 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 4756 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 693 "src/frontend/parser.mly"
    (  grammar_logger "infix_divide" ; Operator.Divide )
# 4798 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 4803 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 4812 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 695 "src/frontend/parser.mly"
    (  grammar_logger "infix_intdivide" ; Operator.IntDivide )
# 4854 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 4859 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 4868 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 697 "src/frontend/parser.mly"
    (  grammar_logger "infix_modulo" ; Operator.Modulo )
# 4910 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 4915 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 4924 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 699 "src/frontend/parser.mly"
    (  grammar_logger "infix_ldivide" ; Operator.LDivide )
# 4966 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 4971 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 4980 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 701 "src/frontend/parser.mly"
    (  grammar_logger "infix_elttimes" ; Operator.EltTimes )
# 5022 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 5027 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5036 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 703 "src/frontend/parser.mly"
    (   grammar_logger "infix_eltdivide" ; Operator.EltDivide )
# 5078 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 5083 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5092 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 705 "src/frontend/parser.mly"
    (  grammar_logger "infix_hat" ; Operator.Pow )
# 5134 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 5139 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5148 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let a = 
# 707 "src/frontend/parser.mly"
    (  grammar_logger "infix_eltpow" ; Operator.EltPow )
# 5190 "src/frontend/parser.ml"
             in
            
# 681 "src/frontend/parser.mly"
    (   grammar_logger "infix_arithmetic" ; a )
# 5195 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5204 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 711 "src/frontend/parser.mly"
    (   grammar_logger "infix_or" ; Operator.Or )
# 5246 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5251 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5260 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 713 "src/frontend/parser.mly"
    (   grammar_logger "infix_and" ; Operator.And )
# 5302 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5307 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5316 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 715 "src/frontend/parser.mly"
    (   grammar_logger "infix_equals" ; Operator.Equals )
# 5358 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5363 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5372 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 717 "src/frontend/parser.mly"
    (   grammar_logger "infix_nequals" ; Operator.NEquals)
# 5414 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5419 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5428 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 719 "src/frontend/parser.mly"
    (   grammar_logger "infix_less" ; Operator.Less )
# 5470 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5475 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5484 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 721 "src/frontend/parser.mly"
    (   grammar_logger "infix_leq" ; Operator.Leq )
# 5526 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5531 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5540 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 723 "src/frontend/parser.mly"
    (   grammar_logger "infix_greater" ; Operator.Greater )
# 5582 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5587 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5596 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _1 : unit = Obj.magic _1 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v =
          let op =
            let l = 
# 725 "src/frontend/parser.mly"
    (   grammar_logger "infix_geq" ; Operator.Geq )
# 5638 "src/frontend/parser.ml"
             in
            
# 683 "src/frontend/parser.mly"
    (  grammar_logger "infix_logical" ; l )
# 5643 "src/frontend/parser.ml"
            
          in
          let _endpos = _endpos_e2_ in
          let _startpos = _startpos_e1_ in
          let _loc = (_startpos, _endpos) in
          (
# 587 "src/frontend/parser.mly"
    ( grammar_logger "infix_expr" ; build_expr (BinOp (e1, op, e2)) _loc  )
# 5652 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v =
          let op = 
# 669 "src/frontend/parser.mly"
    (   grammar_logger "prefix_bang" ; Operator.PNot )
# 5686 "src/frontend/parser.ml"
           in
          let _startpos_op_ = _startpos__1_ in
          let _endpos = _endpos_e_ in
          let _startpos = _startpos_op_ in
          let _loc = (_startpos, _endpos) in
          (
# 589 "src/frontend/parser.mly"
    ( grammar_logger "prefix_expr" ; build_expr (PrefixOp (op, e)) _loc )
# 5695 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v =
          let op = 
# 671 "src/frontend/parser.mly"
    (  grammar_logger "prefix_minus" ; Operator.PMinus )
# 5729 "src/frontend/parser.ml"
           in
          let _startpos_op_ = _startpos__1_ in
          let _endpos = _endpos_e_ in
          let _startpos = _startpos_op_ in
          let _loc = (_startpos, _endpos) in
          (
# 589 "src/frontend/parser.mly"
    ( grammar_logger "prefix_expr" ; build_expr (PrefixOp (op, e)) _loc )
# 5738 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v =
          let op = 
# 673 "src/frontend/parser.mly"
    (   grammar_logger "prefix_plus" ; Operator.PPlus )
# 5772 "src/frontend/parser.ml"
           in
          let _startpos_op_ = _startpos__1_ in
          let _endpos = _endpos_e_ in
          let _startpos = _startpos_op_ in
          let _loc = (_startpos, _endpos) in
          (
# 589 "src/frontend/parser.mly"
    ( grammar_logger "prefix_expr" ; build_expr (PrefixOp (op, e)) _loc )
# 5781 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos__1_ in
        let _v =
          let op = 
# 677 "src/frontend/parser.mly"
    (  grammar_logger "postfix_transpose" ; Operator.Transpose )
# 5815 "src/frontend/parser.ml"
           in
          let _endpos_op_ = _endpos__1_ in
          let _endpos = _endpos_op_ in
          let _startpos = _startpos_e_ in
          let _loc = (_startpos, _endpos) in
          (
# 591 "src/frontend/parser.mly"
    ( grammar_logger "postfix_expr" ; build_expr (PostfixOp (e, op)) _loc)
# 5824 "src/frontend/parser.ml"
           : (Ast.untyped_expression))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression) = 
# 593 "src/frontend/parser.mly"
    ( grammar_logger "common_expr" ; e )
# 5850 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = fd;
            MenhirLib.EngineTypes.startp = _startpos_fd_;
            MenhirLib.EngineTypes.endp = _endpos_fd_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let fd : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic fd in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 181 "src/frontend/parser.mly"
    ( grammar_logger "function_block" ;
      {stmts= fd; xloc= location_span_of_positions _loc} )
# 5902 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = b;
          MenhirLib.EngineTypes.startp = _startpos_b_;
          MenhirLib.EngineTypes.endp = _endpos_b_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _5;
            MenhirLib.EngineTypes.startp = _startpos__5_;
            MenhirLib.EngineTypes.endp = _endpos__5_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = xs;
              MenhirLib.EngineTypes.startp = _startpos_xs_;
              MenhirLib.EngineTypes.endp = _endpos_xs_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _3;
                MenhirLib.EngineTypes.startp = _startpos__3_;
                MenhirLib.EngineTypes.endp = _endpos__3_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = name;
                  MenhirLib.EngineTypes.startp = _startpos_name_;
                  MenhirLib.EngineTypes.endp = _endpos_name_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = rt;
                    MenhirLib.EngineTypes.startp = _startpos_rt_;
                    MenhirLib.EngineTypes.endp = _endpos_rt_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let b : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic b in
        let _5 : unit = Obj.magic _5 in
        let xs : ((Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier)
  list) = Obj.magic xs in
        let _3 : unit = Obj.magic _3 in
        let name : (Ast.identifier) = Obj.magic name in
        let rt : (Middle.UnsizedType.returntype) = Obj.magic rt in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_rt_ in
        let _endpos = _endpos_b_ in
        let _v =
          let args = 
# 241 "<standard.mly>"
    ( xs )
# 5967 "src/frontend/parser.ml"
           in
          let _endpos = _endpos_b_ in
          let _startpos = _startpos_rt_ in
          let _loc = (_startpos, _endpos) in
          (
# 280 "src/frontend/parser.mly"
    (
      grammar_logger "function_def" ;
      {stmt=FunDef {returntype = rt; funname = name;
                           arguments = args; body=b;};
       smeta={loc=location_span_of_positions _loc}
      }
    )
# 5981 "src/frontend/parser.ml"
           : (Ast.untyped_statement))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _2;
          MenhirLib.EngineTypes.startp = _startpos__2_;
          MenhirLib.EngineTypes.endp = _endpos__2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = fd;
            MenhirLib.EngineTypes.startp = _startpos_fd_;
            MenhirLib.EngineTypes.endp = _endpos_fd_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let _2 : unit = Obj.magic _2 in
        let fd : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic fd in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_fd_ in
        let _endpos = _endpos__2_ in
        let _v =
          let _endpos = _endpos__2_ in
          let _startpos = _startpos_fd_ in
          let _loc = (_startpos, _endpos) in
          (
# 167 "src/frontend/parser.mly"
    ( grammar_logger "functions_only";
      { functionblock= Some {stmts= fd; xloc= location_span_of_positions _loc}
      ; datablock= None
      ; transformeddatablock= None
      ; parametersblock= None
      ; transformedparametersblock= None
      ; modelblock= None
      ; generatedquantitiesblock= None
      ; comments= [] }
    )
# 6028 "src/frontend/parser.ml"
           : (Ast.untyped_statement Ast.program))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = tvds;
            MenhirLib.EngineTypes.startp = _startpos_tvds_;
            MenhirLib.EngineTypes.endp = _endpos_tvds_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let tvds : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic tvds in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 211 "src/frontend/parser.mly"
    ( grammar_logger "generated_quantities_block" ;
      {stmts= tvds; xloc= location_span_of_positions _loc} )
# 6081 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = initial_value;
          MenhirLib.EngineTypes.startp = _startpos_initial_value_;
          MenhirLib.EngineTypes.endp = _endpos_initial_value_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = identifier;
            MenhirLib.EngineTypes.startp = _startpos_identifier_;
            MenhirLib.EngineTypes.endp = _endpos_identifier_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let initial_value : (Ast.untyped_expression option) = Obj.magic initial_value in
        let identifier : (Ast.identifier) = Obj.magic identifier in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_identifier_ in
        let _endpos = _endpos_initial_value_ in
        let _v : (Ast.untyped_expression Ast.variable) = 
# 370 "src/frontend/parser.mly"
    ( Ast.{identifier; initial_value} )
# 6115 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = initial_value;
          MenhirLib.EngineTypes.startp = _startpos_initial_value_;
          MenhirLib.EngineTypes.endp = _endpos_initial_value_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = identifier;
            MenhirLib.EngineTypes.startp = _startpos_identifier_;
            MenhirLib.EngineTypes.endp = _endpos_identifier_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let initial_value : (Ast.untyped_expression option) = Obj.magic initial_value in
        let identifier : (Ast.identifier) = Obj.magic identifier in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_identifier_ in
        let _endpos = _endpos_initial_value_ in
        let _v : (Ast.untyped_expression Ast.variable) = 
# 370 "src/frontend/parser.mly"
    ( Ast.{identifier; initial_value} )
# 6147 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = initial_value;
          MenhirLib.EngineTypes.startp = _startpos_initial_value_;
          MenhirLib.EngineTypes.endp = _endpos_initial_value_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = identifier;
            MenhirLib.EngineTypes.startp = _startpos_identifier_;
            MenhirLib.EngineTypes.endp = _endpos_identifier_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let initial_value : (Ast.untyped_expression option) = Obj.magic initial_value in
        let identifier : (Ast.identifier) = Obj.magic identifier in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_identifier_ in
        let _endpos = _endpos_initial_value_ in
        let _v : (Ast.untyped_expression Ast.variable) = 
# 370 "src/frontend/parser.mly"
    ( Ast.{identifier; initial_value} )
# 6179 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = initial_value;
          MenhirLib.EngineTypes.startp = _startpos_initial_value_;
          MenhirLib.EngineTypes.endp = _endpos_initial_value_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = identifier;
            MenhirLib.EngineTypes.startp = _startpos_identifier_;
            MenhirLib.EngineTypes.endp = _endpos_identifier_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let initial_value : (Ast.untyped_expression option) = Obj.magic initial_value in
        let identifier : (Ast.identifier) = Obj.magic identifier in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_identifier_ in
        let _endpos = _endpos_initial_value_ in
        let _v : (Ast.untyped_expression Ast.variable) = 
# 370 "src/frontend/parser.mly"
    ( Ast.{identifier; initial_value} )
# 6211 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = id;
          MenhirLib.EngineTypes.startp = _startpos_id_;
          MenhirLib.EngineTypes.endp = _endpos_id_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let id : (
# 96 "src/frontend/parser.mly"
       (string)
# 6232 "src/frontend/parser.ml"
        ) = Obj.magic id in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_id_ in
        let _endpos = _endpos_id_ in
        let _v =
          let _endpos = _endpos_id_ in
          let _startpos = _startpos_id_ in
          let _loc = (_startpos, _endpos) in
          (
# 216 "src/frontend/parser.mly"
                  ( build_id id _loc )
# 6244 "src/frontend/parser.ml"
           : (Ast.identifier))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 217 "src/frontend/parser.mly"
             ( build_id "T" _loc)
# 6274 "src/frontend/parser.ml"
           : (Ast.identifier))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 219 "src/frontend/parser.mly"
             ( build_id "jacobian" _loc )
# 6304 "src/frontend/parser.ml"
           : (Ast.identifier))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (Ast.untyped_expression Ast.index list) = 
# 729 "src/frontend/parser.mly"
    (   grammar_logger "index_nothing" ; [All] )
# 6323 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Ast.untyped_expression Ast.index list) = 
# 731 "src/frontend/parser.mly"
    (   grammar_logger "index_all" ; [All] )
# 6348 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression Ast.index list) = 
# 733 "src/frontend/parser.mly"
    (  grammar_logger "index_single" ; [Single e] )
# 6373 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _2;
          MenhirLib.EngineTypes.startp = _startpos__2_;
          MenhirLib.EngineTypes.endp = _endpos__2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let _2 : unit = Obj.magic _2 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos__2_ in
        let _v : (Ast.untyped_expression Ast.index list) = 
# 735 "src/frontend/parser.mly"
    (  grammar_logger "index_upper" ; [Upfrom e] )
# 6405 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression Ast.index list) = 
# 737 "src/frontend/parser.mly"
    (   grammar_logger "index_lower" ; [Downfrom e] )
# 6437 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _2 : unit = Obj.magic _2 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e1_ in
        let _endpos = _endpos_e2_ in
        let _v : (Ast.untyped_expression Ast.index list) = 
# 739 "src/frontend/parser.mly"
    (  grammar_logger "index_twosided" ; [Between (e1, e2)] )
# 6476 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = i2;
          MenhirLib.EngineTypes.startp = _startpos_i2_;
          MenhirLib.EngineTypes.endp = _endpos_i2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = i1;
              MenhirLib.EngineTypes.startp = _startpos_i1_;
              MenhirLib.EngineTypes.endp = _endpos_i1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let i2 : (Ast.untyped_expression Ast.index list) = Obj.magic i2 in
        let _2 : unit = Obj.magic _2 in
        let i1 : (Ast.untyped_expression Ast.index list) = Obj.magic i1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_i1_ in
        let _endpos = _endpos_i2_ in
        let _v : (Ast.untyped_expression Ast.index list) = 
# 741 "src/frontend/parser.mly"
    (  grammar_logger "indexes" ; i1 @ i2 )
# 6515 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (unit list) = 
# 216 "<standard.mly>"
    ( [] )
# 6533 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let xs : (unit list) = Obj.magic xs in
        let x : unit = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : (unit list) = 
# 219 "<standard.mly>"
    ( x :: xs )
# 6565 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 216 "<standard.mly>"
    ( [] )
# 6584 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic xs in
        let x : (Ast.untyped_statement) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 219 "<standard.mly>"
    ( x :: xs )
# 6618 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 216 "<standard.mly>"
    ( [] )
# 6637 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic xs in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 219 "<standard.mly>"
    ( x :: xs )
# 6672 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 216 "<standard.mly>"
    ( [] )
# 6691 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic xs in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 219 "<standard.mly>"
    ( x :: xs )
# 6726 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 216 "<standard.mly>"
    ( [] )
# 6745 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic xs in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = 
# 219 "<standard.mly>"
    ( x :: xs )
# 6780 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier)
  list) = 
# 145 "<standard.mly>"
    ( [] )
# 6799 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier)
  list) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier)
  list) = 
# 148 "<standard.mly>"
    ( x )
# 6826 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (Ast.untyped_expression list) = 
# 145 "<standard.mly>"
    ( [] )
# 6844 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression list) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression list) = 
# 148 "<standard.mly>"
    ( x )
# 6869 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = vds;
            MenhirLib.EngineTypes.startp = _startpos_vds_;
            MenhirLib.EngineTypes.endp = _endpos_vds_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let vds : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic vds in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 206 "src/frontend/parser.mly"
    ( grammar_logger "model_block" ;
      {stmts= vds; xloc= location_span_of_positions _loc} )
# 6921 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = s2;
          MenhirLib.EngineTypes.startp = _startpos_s2_;
          MenhirLib.EngineTypes.endp = _endpos_s2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _6;
            MenhirLib.EngineTypes.startp = _startpos__6_;
            MenhirLib.EngineTypes.endp = _endpos__6_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = s1;
              MenhirLib.EngineTypes.startp = _startpos_s1_;
              MenhirLib.EngineTypes.endp = _endpos_s1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _4;
                MenhirLib.EngineTypes.startp = _startpos__4_;
                MenhirLib.EngineTypes.endp = _endpos__4_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = e;
                  MenhirLib.EngineTypes.startp = _startpos_e_;
                  MenhirLib.EngineTypes.endp = _endpos_e_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _2;
                    MenhirLib.EngineTypes.startp = _startpos__2_;
                    MenhirLib.EngineTypes.endp = _endpos__2_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let s2 : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s2 in
        let _6 : unit = Obj.magic _6 in
        let s1 : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s1 in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_s2_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 833 "src/frontend/parser.mly"
    (  grammar_logger "ifelse_statement" ; IfThenElse (e, s1, Some s2) )
# 6995 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _4;
            MenhirLib.EngineTypes.startp = _startpos__4_;
            MenhirLib.EngineTypes.endp = _endpos__4_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = e;
              MenhirLib.EngineTypes.startp = _startpos_e_;
              MenhirLib.EngineTypes.endp = _endpos_e_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let s : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_s_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 835 "src/frontend/parser.mly"
    (  grammar_logger "if_statement" ; IfThenElse (e, s, None) )
# 7052 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _4;
            MenhirLib.EngineTypes.startp = _startpos__4_;
            MenhirLib.EngineTypes.endp = _endpos__4_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = e;
              MenhirLib.EngineTypes.startp = _startpos_e_;
              MenhirLib.EngineTypes.endp = _endpos_e_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let s : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_s_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 837 "src/frontend/parser.mly"
    (  grammar_logger "while_statement" ; While (e, s) )
# 7109 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _8;
            MenhirLib.EngineTypes.startp = _startpos__8_;
            MenhirLib.EngineTypes.endp = _endpos__8_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = e2;
              MenhirLib.EngineTypes.startp = _startpos_e2_;
              MenhirLib.EngineTypes.endp = _endpos_e2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _6;
                MenhirLib.EngineTypes.startp = _startpos__6_;
                MenhirLib.EngineTypes.endp = _endpos__6_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = e1;
                  MenhirLib.EngineTypes.startp = _startpos_e1_;
                  MenhirLib.EngineTypes.endp = _endpos_e1_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _4;
                    MenhirLib.EngineTypes.startp = _startpos__4_;
                    MenhirLib.EngineTypes.endp = _endpos__4_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _;
                      MenhirLib.EngineTypes.semv = id;
                      MenhirLib.EngineTypes.startp = _startpos_id_;
                      MenhirLib.EngineTypes.endp = _endpos_id_;
                      MenhirLib.EngineTypes.next = {
                        MenhirLib.EngineTypes.state = _;
                        MenhirLib.EngineTypes.semv = _2;
                        MenhirLib.EngineTypes.startp = _startpos__2_;
                        MenhirLib.EngineTypes.endp = _endpos__2_;
                        MenhirLib.EngineTypes.next = {
                          MenhirLib.EngineTypes.state = _menhir_s;
                          MenhirLib.EngineTypes.semv = _1;
                          MenhirLib.EngineTypes.startp = _startpos__1_;
                          MenhirLib.EngineTypes.endp = _endpos__1_;
                          MenhirLib.EngineTypes.next = _menhir_stack;
                        };
                      };
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let s : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s in
        let _8 : unit = Obj.magic _8 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _6 : unit = Obj.magic _6 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _4 : unit = Obj.magic _4 in
        let id : (Ast.identifier) = Obj.magic id in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_s_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 840 "src/frontend/parser.mly"
    (
      grammar_logger "for_statement" ;
      For {loop_variable= id;
           lower_bound= e1;
           upper_bound= e2;
           loop_body= s;}
    )
# 7200 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _6;
            MenhirLib.EngineTypes.startp = _startpos__6_;
            MenhirLib.EngineTypes.endp = _endpos__6_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = e;
              MenhirLib.EngineTypes.startp = _startpos_e_;
              MenhirLib.EngineTypes.endp = _endpos_e_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _4;
                MenhirLib.EngineTypes.startp = _startpos__4_;
                MenhirLib.EngineTypes.endp = _endpos__4_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = id;
                  MenhirLib.EngineTypes.startp = _startpos_id_;
                  MenhirLib.EngineTypes.endp = _endpos_id_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _2;
                    MenhirLib.EngineTypes.startp = _startpos__2_;
                    MenhirLib.EngineTypes.endp = _endpos__2_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let s : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s in
        let _6 : unit = Obj.magic _6 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _4 : unit = Obj.magic _4 in
        let id : (Ast.identifier) = Obj.magic id in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_s_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 848 "src/frontend/parser.mly"
    (  grammar_logger "foreach_statement" ; ForEach (id, e, s) )
# 7271 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _7;
          MenhirLib.EngineTypes.startp = _startpos__7_;
          MenhirLib.EngineTypes.endp = _endpos__7_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = l;
            MenhirLib.EngineTypes.startp = _startpos_l_;
            MenhirLib.EngineTypes.endp = _endpos_l_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _5;
              MenhirLib.EngineTypes.startp = _startpos__5_;
              MenhirLib.EngineTypes.endp = _endpos__5_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _4;
                MenhirLib.EngineTypes.startp = _startpos__4_;
                MenhirLib.EngineTypes.endp = _endpos__4_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = st;
                  MenhirLib.EngineTypes.startp = _startpos_st_;
                  MenhirLib.EngineTypes.endp = _endpos_st_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _2;
                    MenhirLib.EngineTypes.startp = _startpos__2_;
                    MenhirLib.EngineTypes.endp = _endpos__2_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _7 : unit = Obj.magic _7 in
        let l : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic l in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let st : (string) = Obj.magic st in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__7_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 850 "src/frontend/parser.mly"
    (  grammar_logger "profile_statement" ; Profile (st, l) )
# 7342 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = l;
            MenhirLib.EngineTypes.startp = _startpos_l_;
            MenhirLib.EngineTypes.endp = _endpos_l_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let l : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic l in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = 
# 852 "src/frontend/parser.mly"
    (  grammar_logger "block_statement" ; Block l )
# 7385 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Ast.untyped_expression) = 
# 359 "src/frontend/parser.mly"
    ( (* This code will never be reached *)
       Common.ICE.internal_compiler_error
          [%message "the UNREACHABLE token should never be produced"]
    )
# 7413 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _6;
            MenhirLib.EngineTypes.startp = _startpos__6_;
            MenhirLib.EngineTypes.endp = _endpos__6_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _5;
              MenhirLib.EngineTypes.startp = _startpos__5_;
              MenhirLib.EngineTypes.endp = _endpos__5_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _4;
                MenhirLib.EngineTypes.startp = _startpos__4_;
                MenhirLib.EngineTypes.endp = _endpos__4_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = e1;
                  MenhirLib.EngineTypes.startp = _startpos_e1_;
                  MenhirLib.EngineTypes.endp = _endpos_e1_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _2;
                    MenhirLib.EngineTypes.startp = _startpos__2_;
                    MenhirLib.EngineTypes.endp = _endpos__2_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _6 : unit = Obj.magic _6 in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e2_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 572 "src/frontend/parser.mly"
    ( grammar_logger "offset_mult" ; Transformation.OffsetMultiplier (e1, e2) )
# 7480 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e1;
          MenhirLib.EngineTypes.startp = _startpos_e1_;
          MenhirLib.EngineTypes.endp = _endpos_e1_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _6;
            MenhirLib.EngineTypes.startp = _startpos__6_;
            MenhirLib.EngineTypes.endp = _endpos__6_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _5;
              MenhirLib.EngineTypes.startp = _startpos__5_;
              MenhirLib.EngineTypes.endp = _endpos__5_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _4;
                MenhirLib.EngineTypes.startp = _startpos__4_;
                MenhirLib.EngineTypes.endp = _endpos__4_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = e2;
                  MenhirLib.EngineTypes.startp = _startpos_e2_;
                  MenhirLib.EngineTypes.endp = _endpos_e2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _2;
                    MenhirLib.EngineTypes.startp = _startpos__2_;
                    MenhirLib.EngineTypes.endp = _endpos__2_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _6 : unit = Obj.magic _6 in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e1_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 572 "src/frontend/parser.mly"
    ( grammar_logger "offset_mult" ; Transformation.OffsetMultiplier (e1, e2) )
# 7547 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 574 "src/frontend/parser.mly"
    ( grammar_logger "offset" ; Offset e )
# 7586 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 576 "src/frontend/parser.mly"
    ( grammar_logger "multiplier" ; Multiplier e )
# 7625 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (unit option) = 
# 111 "<standard.mly>"
    ( None )
# 7643 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : unit = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (unit option) = 
# 114 "<standard.mly>"
    ( Some x )
# 7668 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 111 "<standard.mly>"
    ( None )
# 7687 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 114 "<standard.mly>"
    ( Some x )
# 7714 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (Ast.untyped_expression option) = 
# 111 "<standard.mly>"
    ( None )
# 7732 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression option) = 
# 114 "<standard.mly>"
    ( Some x )
# 7757 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 111 "<standard.mly>"
    ( None )
# 7776 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 114 "<standard.mly>"
    ( Some x )
# 7803 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 111 "<standard.mly>"
    ( None )
# 7822 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 114 "<standard.mly>"
    ( Some x )
# 7849 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 111 "<standard.mly>"
    ( None )
# 7868 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 114 "<standard.mly>"
    ( Some x )
# 7895 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((unit * Ast.untyped_expression) option) = 
# 111 "<standard.mly>"
    ( None )
# 7913 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = y;
          MenhirLib.EngineTypes.startp = _startpos_y_;
          MenhirLib.EngineTypes.endp = _endpos_y_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let y : (Ast.untyped_expression) = Obj.magic y in
        let x : unit = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_y_ in
        let _v =
          let x = 
# 172 "<standard.mly>"
    ( (x, y) )
# 7946 "src/frontend/parser.ml"
           in
          (
# 114 "<standard.mly>"
    ( Some x )
# 7951 "src/frontend/parser.ml"
           : ((unit * Ast.untyped_expression) option))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((unit * Ast.untyped_expression) option) = 
# 111 "<standard.mly>"
    ( None )
# 7970 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = y;
          MenhirLib.EngineTypes.startp = _startpos_y_;
          MenhirLib.EngineTypes.endp = _endpos_y_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let y : (Ast.untyped_expression) = Obj.magic y in
        let x : unit = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_y_ in
        let _v =
          let x = 
# 172 "<standard.mly>"
    ( (x, y) )
# 8003 "src/frontend/parser.ml"
           in
          (
# 114 "<standard.mly>"
    ( Some x )
# 8008 "src/frontend/parser.ml"
           : ((unit * Ast.untyped_expression) option))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((unit * Ast.untyped_expression) option) = 
# 111 "<standard.mly>"
    ( None )
# 8027 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = y;
          MenhirLib.EngineTypes.startp = _startpos_y_;
          MenhirLib.EngineTypes.endp = _endpos_y_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = x;
            MenhirLib.EngineTypes.startp = _startpos_x_;
            MenhirLib.EngineTypes.endp = _endpos_x_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let y : (Ast.untyped_expression) = Obj.magic y in
        let x : unit = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_y_ in
        let _v =
          let x = 
# 172 "<standard.mly>"
    ( (x, y) )
# 8060 "src/frontend/parser.ml"
           in
          (
# 114 "<standard.mly>"
    ( Some x )
# 8065 "src/frontend/parser.ml"
           : ((unit * Ast.untyped_expression) option))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 111 "<standard.mly>"
    ( None )
# 8085 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 114 "<standard.mly>"
    ( Some x )
# 8112 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (Ast.untyped_expression Ast.variable list option) = 
# 111 "<standard.mly>"
    ( None )
# 8130 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression Ast.variable list) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression Ast.variable list option) = 
# 114 "<standard.mly>"
    ( Some x )
# 8155 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (Ast.untyped_expression Ast.variable list option) = 
# 111 "<standard.mly>"
    ( None )
# 8173 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression Ast.variable list) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression Ast.variable list option) = 
# 114 "<standard.mly>"
    ( Some x )
# 8198 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 111 "<standard.mly>"
    ( None )
# 8217 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 114 "<standard.mly>"
    ( Some x )
# 8244 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 111 "<standard.mly>"
    ( None )
# 8263 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = 
# 114 "<standard.mly>"
    ( Some x )
# 8290 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (Ast.untyped_expression Ast.truncation option) = 
# 111 "<standard.mly>"
    ( None )
# 8308 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression Ast.truncation) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression Ast.truncation option) = 
# 114 "<standard.mly>"
    ( Some x )
# 8333 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = rhs_opt;
          MenhirLib.EngineTypes.startp = _startpos_rhs_opt_;
          MenhirLib.EngineTypes.endp = _endpos_rhs_opt_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let rhs_opt : ((unit * Ast.untyped_expression) option) = Obj.magic rhs_opt in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_rhs_opt_ in
        let _endpos = _endpos_rhs_opt_ in
        let _v : (Ast.untyped_expression option) = 
# 366 "src/frontend/parser.mly"
    ( Option.map ~f:snd rhs_opt )
# 8358 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = rhs_opt;
          MenhirLib.EngineTypes.startp = _startpos_rhs_opt_;
          MenhirLib.EngineTypes.endp = _endpos_rhs_opt_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let rhs_opt : ((unit * Ast.untyped_expression) option) = Obj.magic rhs_opt in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_rhs_opt_ in
        let _endpos = _endpos_rhs_opt_ in
        let _v : (Ast.untyped_expression option) = 
# 366 "src/frontend/parser.mly"
    ( Option.map ~f:snd rhs_opt )
# 8383 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = tvd;
            MenhirLib.EngineTypes.startp = _startpos_tvd_;
            MenhirLib.EngineTypes.endp = _endpos_tvd_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let tvd : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic tvd in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 196 "src/frontend/parser.mly"
    ( grammar_logger "parameters_block" ;
      {stmts= tvd; xloc= location_span_of_positions _loc} )
# 8435 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_e_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression Ast.printable list) = 
# 745 "src/frontend/parser.mly"
    (  grammar_logger "printable expression" ; [PExpr e] )
# 8462 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let s : (string) = Obj.magic s in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_s_ in
        let _endpos = _endpos_s_ in
        let _v : (Ast.untyped_expression Ast.printable list) = 
# 747 "src/frontend/parser.mly"
    (  grammar_logger "printable string" ; [PString s] )
# 8487 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = p2;
          MenhirLib.EngineTypes.startp = _startpos_p2_;
          MenhirLib.EngineTypes.endp = _endpos_p2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = p1;
              MenhirLib.EngineTypes.startp = _startpos_p1_;
              MenhirLib.EngineTypes.endp = _endpos_p1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let p2 : (Ast.untyped_expression Ast.printable list) = Obj.magic p2 in
        let _2 : unit = Obj.magic _2 in
        let p1 : (Ast.untyped_expression Ast.printable list) = Obj.magic p1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_p1_ in
        let _endpos = _endpos_p2_ in
        let _v : (Ast.untyped_expression Ast.printable list) = 
# 749 "src/frontend/parser.mly"
    ( grammar_logger "printables" ; p1 @ p2 )
# 8526 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _8;
          MenhirLib.EngineTypes.startp = _startpos__8_;
          MenhirLib.EngineTypes.endp = _endpos__8_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = ogb;
            MenhirLib.EngineTypes.startp = _startpos_ogb_;
            MenhirLib.EngineTypes.endp = _endpos_ogb_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = omb;
              MenhirLib.EngineTypes.startp = _startpos_omb_;
              MenhirLib.EngineTypes.endp = _endpos_omb_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = otpb;
                MenhirLib.EngineTypes.startp = _startpos_otpb_;
                MenhirLib.EngineTypes.endp = _endpos_otpb_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = opb;
                  MenhirLib.EngineTypes.startp = _startpos_opb_;
                  MenhirLib.EngineTypes.endp = _endpos_opb_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = otdb;
                    MenhirLib.EngineTypes.startp = _startpos_otdb_;
                    MenhirLib.EngineTypes.endp = _endpos_otdb_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _;
                      MenhirLib.EngineTypes.semv = odb;
                      MenhirLib.EngineTypes.startp = _startpos_odb_;
                      MenhirLib.EngineTypes.endp = _endpos_odb_;
                      MenhirLib.EngineTypes.next = {
                        MenhirLib.EngineTypes.state = _menhir_s;
                        MenhirLib.EngineTypes.semv = ofb;
                        MenhirLib.EngineTypes.startp = _startpos_ofb_;
                        MenhirLib.EngineTypes.endp = _endpos_ofb_;
                        MenhirLib.EngineTypes.next = _menhir_stack;
                      };
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _8 : unit = Obj.magic _8 in
        let ogb : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = Obj.magic ogb in
        let omb : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = Obj.magic omb in
        let otpb : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = Obj.magic otpb in
        let opb : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = Obj.magic opb in
        let otdb : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = Obj.magic otdb in
        let odb : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = Obj.magic odb in
        let ofb : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block option) = Obj.magic ofb in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ofb_ in
        let _endpos = _endpos__8_ in
        let _v =
          let _startpos = _startpos_ofb_ in
          (
# 146 "src/frontend/parser.mly"
    (
      grammar_logger "program" ;
      (* check for empty programs*)
      let () =
        match (ofb, odb, otdb, opb, otpb, omb, ogb) with
        | None, None, None, None, None, None, None ->
            Input_warnings.empty (location_of_position _startpos).filename
        | _ -> ()
      in
      { functionblock= ofb
      ; datablock= odb
      ; transformeddatablock= otdb
      ; parametersblock= opb
      ; transformedparametersblock= otpb
      ; modelblock= omb
      ; generatedquantitiesblock= ogb
      ; comments= [] }
    )
# 8626 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.program))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e2;
          MenhirLib.EngineTypes.startp = _startpos_e2_;
          MenhirLib.EngineTypes.endp = _endpos_e2_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _6;
            MenhirLib.EngineTypes.startp = _startpos__6_;
            MenhirLib.EngineTypes.endp = _endpos__6_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _5;
              MenhirLib.EngineTypes.startp = _startpos__5_;
              MenhirLib.EngineTypes.endp = _endpos__5_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _4;
                MenhirLib.EngineTypes.startp = _startpos__4_;
                MenhirLib.EngineTypes.endp = _endpos__4_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = e1;
                  MenhirLib.EngineTypes.startp = _startpos_e1_;
                  MenhirLib.EngineTypes.endp = _endpos_e1_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _2;
                    MenhirLib.EngineTypes.startp = _startpos__2_;
                    MenhirLib.EngineTypes.endp = _endpos__2_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _6 : unit = Obj.magic _6 in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e2_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 563 "src/frontend/parser.mly"
    ( grammar_logger "lower_upper_range" ; Transformation.LowerUpper (e1, e2) )
# 8695 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e1;
          MenhirLib.EngineTypes.startp = _startpos_e1_;
          MenhirLib.EngineTypes.endp = _endpos_e1_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _6;
            MenhirLib.EngineTypes.startp = _startpos__6_;
            MenhirLib.EngineTypes.endp = _endpos__6_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _5;
              MenhirLib.EngineTypes.startp = _startpos__5_;
              MenhirLib.EngineTypes.endp = _endpos__5_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _4;
                MenhirLib.EngineTypes.startp = _startpos__4_;
                MenhirLib.EngineTypes.endp = _endpos__4_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = e2;
                  MenhirLib.EngineTypes.startp = _startpos_e2_;
                  MenhirLib.EngineTypes.endp = _endpos_e2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _2;
                    MenhirLib.EngineTypes.startp = _startpos__2_;
                    MenhirLib.EngineTypes.endp = _endpos__2_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _6 : unit = Obj.magic _6 in
        let _5 : unit = Obj.magic _5 in
        let _4 : unit = Obj.magic _4 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e1_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 563 "src/frontend/parser.mly"
    ( grammar_logger "lower_upper_range" ; Transformation.LowerUpper (e1, e2) )
# 8762 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 565 "src/frontend/parser.mly"
    (  grammar_logger "lower_range" ; Lower e )
# 8801 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = e;
          MenhirLib.EngineTypes.startp = _startpos_e_;
          MenhirLib.EngineTypes.endp = _endpos_e_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_e_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 567 "src/frontend/parser.mly"
    ( grammar_logger "upper_range" ; Upper e )
# 8840 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _endpos = _startpos in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 556 "src/frontend/parser.mly"
    ( grammar_logger "empty_constraint" ; Transformation.Identity )
# 8858 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = r;
            MenhirLib.EngineTypes.startp = _startpos_r_;
            MenhirLib.EngineTypes.endp = _endpos_r_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let r : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic r in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 558 "src/frontend/parser.mly"
    (  grammar_logger "range_constraint" ; r )
# 8897 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = decls;
          MenhirLib.EngineTypes.startp = _startpos_decls_;
          MenhirLib.EngineTypes.endp = _endpos_decls_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let decls : (Ast.untyped_expression Ast.variable list) = Obj.magic decls in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_decls_ in
        let _v : (Ast.untyped_expression Ast.variable list) = 
# 374 "src/frontend/parser.mly"
    ( decls )
# 8929 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = decls;
          MenhirLib.EngineTypes.startp = _startpos_decls_;
          MenhirLib.EngineTypes.endp = _endpos_decls_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let decls : (Ast.untyped_expression Ast.variable list) = Obj.magic decls in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_decls_ in
        let _v : (Ast.untyped_expression Ast.variable list) = 
# 374 "src/frontend/parser.mly"
    ( decls )
# 8961 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 232 "src/frontend/parser.mly"
                  ( "functions", _loc, false )
# 8990 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 233 "src/frontend/parser.mly"
              ( "data", _loc, false )
# 9020 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 234 "src/frontend/parser.mly"
                    ( "parameters", _loc, false )
# 9050 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 235 "src/frontend/parser.mly"
               ( "model", _loc, false )
# 9080 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 236 "src/frontend/parser.mly"
           ( "return", _loc, false )
# 9110 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 237 "src/frontend/parser.mly"
       ( "if", _loc, false )
# 9140 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 238 "src/frontend/parser.mly"
         ( "else", _loc, false )
# 9170 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 239 "src/frontend/parser.mly"
          ( "while", _loc, false )
# 9200 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 240 "src/frontend/parser.mly"
        ( "for", _loc, false )
# 9230 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 241 "src/frontend/parser.mly"
       ( "in", _loc, false )
# 9260 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 242 "src/frontend/parser.mly"
          ( "break", _loc, false )
# 9290 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 243 "src/frontend/parser.mly"
             ( "continue", _loc, false )
# 9320 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 244 "src/frontend/parser.mly"
         ( "void", _loc, false )
# 9350 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 245 "src/frontend/parser.mly"
        ( "int", _loc, true )
# 9380 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 246 "src/frontend/parser.mly"
         ( "real", _loc, true )
# 9410 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 247 "src/frontend/parser.mly"
            ( "complex", _loc, true )
# 9440 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 248 "src/frontend/parser.mly"
           ( "vector", _loc, true )
# 9470 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 249 "src/frontend/parser.mly"
              ( "row_vector", _loc, true )
# 9500 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 250 "src/frontend/parser.mly"
           ( "matrix", _loc, true )
# 9530 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 251 "src/frontend/parser.mly"
                  ( "complex_vector", _loc, true )
# 9560 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 252 "src/frontend/parser.mly"
                     ( "complex_row_vector", _loc, true )
# 9590 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 253 "src/frontend/parser.mly"
                  ( "complex_matrix", _loc, true )
# 9620 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 254 "src/frontend/parser.mly"
            ( "ordered", _loc, true )
# 9650 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 255 "src/frontend/parser.mly"
                    ( "positive_ordered", _loc, true )
# 9680 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 256 "src/frontend/parser.mly"
            ( "simplex", _loc, true )
# 9710 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 257 "src/frontend/parser.mly"
               ( "unit_vector", _loc, true )
# 9740 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 258 "src/frontend/parser.mly"
               ( "sum_to_zero_vector", _loc, true )
# 9770 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 259 "src/frontend/parser.mly"
                       ( "cholesky_factor_corr", _loc, true )
# 9800 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 260 "src/frontend/parser.mly"
                      ( "cholesky_factor_cov", _loc, true )
# 9830 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 261 "src/frontend/parser.mly"
               ( "corr_matrix", _loc, true )
# 9860 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 262 "src/frontend/parser.mly"
              ( "cov_matrix", _loc, true  )
# 9890 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 263 "src/frontend/parser.mly"
                           ( "column_stochastic_matrix", _loc, true )
# 9920 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 264 "src/frontend/parser.mly"
                        ( "row_stochastic_matrix", _loc, true )
# 9950 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 265 "src/frontend/parser.mly"
          ( "print", _loc, false )
# 9980 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 266 "src/frontend/parser.mly"
           ( "reject", _loc, false )
# 10010 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 267 "src/frontend/parser.mly"
                ( "fatal_error", _loc, false )
# 10040 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 268 "src/frontend/parser.mly"
           ( "target", _loc, false )
# 10070 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 269 "src/frontend/parser.mly"
            ( "profile", _loc, false )
# 10100 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 270 "src/frontend/parser.mly"
          ( "tuple", _loc, true )
# 10130 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 271 "src/frontend/parser.mly"
           ( "offset", _loc, false )
# 10160 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 272 "src/frontend/parser.mly"
               ( "multiplier", _loc, false )
# 10190 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 273 "src/frontend/parser.mly"
          ( "lower", _loc, false )
# 10220 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 274 "src/frontend/parser.mly"
          ( "upper", _loc, false )
# 10250 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 275 "src/frontend/parser.mly"
          ( "array", _loc, true )
# 10280 "src/frontend/parser.ml"
           : (string * (Lexing.position * Lexing.position) * bool))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Middle.UnsizedType.returntype) = 
# 290 "src/frontend/parser.mly"
    ( grammar_logger "return_type VOID" ; Void )
# 10306 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = ut;
          MenhirLib.EngineTypes.startp = _startpos_ut_;
          MenhirLib.EngineTypes.endp = _endpos_ut_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let ut : (Middle.UnsizedType.t) = Obj.magic ut in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ut_ in
        let _endpos = _endpos_ut_ in
        let _v : (Middle.UnsizedType.returntype) = 
# 292 "src/frontend/parser.mly"
    (  grammar_logger "return_type unsized_type" ; UnsizedType.ReturnType ut )
# 10331 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : ((Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier)
  list) = 
# 250 "<standard.mly>"
    ( [ x ] )
# 10357 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = x;
              MenhirLib.EngineTypes.startp = _startpos_x_;
              MenhirLib.EngineTypes.endp = _endpos_x_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : ((Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier)
  list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let x : (Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : ((Middle.UnsizedType.autodifftype * Middle.UnsizedType.t * Ast.identifier)
  list) = 
# 253 "<standard.mly>"
    ( x :: xs )
# 10398 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression list) = 
# 250 "<standard.mly>"
    ( [ x ] )
# 10423 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = x;
              MenhirLib.EngineTypes.startp = _startpos_x_;
              MenhirLib.EngineTypes.endp = _endpos_x_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : (Ast.untyped_expression list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let x : (Ast.untyped_expression) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : (Ast.untyped_expression list) = 
# 253 "<standard.mly>"
    ( x :: xs )
# 10462 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_ty_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10491 "src/frontend/parser.ml"
           in
          (
# 250 "<standard.mly>"
    ( [ x ] )
# 10496 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_ty_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10528 "src/frontend/parser.ml"
           in
          (
# 250 "<standard.mly>"
    ( [ x ] )
# 10533 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_ty_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10565 "src/frontend/parser.ml"
           in
          (
# 250 "<standard.mly>"
    ( [ x ] )
# 10570 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = ty;
              MenhirLib.EngineTypes.startp = _startpos_ty_;
              MenhirLib.EngineTypes.endp = _endpos_ty_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_xs_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10618 "src/frontend/parser.ml"
           in
          (
# 253 "<standard.mly>"
    ( x :: xs )
# 10623 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = ty;
              MenhirLib.EngineTypes.startp = _startpos_ty_;
              MenhirLib.EngineTypes.endp = _endpos_ty_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_xs_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10671 "src/frontend/parser.ml"
           in
          (
# 253 "<standard.mly>"
    ( x :: xs )
# 10676 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = ty;
              MenhirLib.EngineTypes.startp = _startpos_ty_;
              MenhirLib.EngineTypes.endp = _endpos_ty_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_xs_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10724 "src/frontend/parser.ml"
           in
          (
# 253 "<standard.mly>"
    ( x :: xs )
# 10729 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_ty_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10761 "src/frontend/parser.ml"
           in
          (
# 250 "<standard.mly>"
    ( [ x ] )
# 10766 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_ty_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10798 "src/frontend/parser.ml"
           in
          (
# 250 "<standard.mly>"
    ( [ x ] )
# 10803 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = ty;
          MenhirLib.EngineTypes.startp = _startpos_ty_;
          MenhirLib.EngineTypes.endp = _endpos_ty_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_ty_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10835 "src/frontend/parser.ml"
           in
          (
# 250 "<standard.mly>"
    ( [ x ] )
# 10840 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = ty;
              MenhirLib.EngineTypes.startp = _startpos_ty_;
              MenhirLib.EngineTypes.endp = _endpos_ty_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_xs_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10888 "src/frontend/parser.ml"
           in
          (
# 253 "<standard.mly>"
    ( x :: xs )
# 10893 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = ty;
              MenhirLib.EngineTypes.startp = _startpos_ty_;
              MenhirLib.EngineTypes.endp = _endpos_ty_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_xs_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10941 "src/frontend/parser.ml"
           in
          (
# 253 "<standard.mly>"
    ( x :: xs )
# 10946 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = ty;
              MenhirLib.EngineTypes.startp = _startpos_ty_;
              MenhirLib.EngineTypes.endp = _endpos_ty_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_ty_ in
        let _endpos = _endpos_xs_ in
        let _v =
          let x = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 10994 "src/frontend/parser.ml"
           in
          (
# 253 "<standard.mly>"
    ( x :: xs )
# 10999 "src/frontend/parser.ml"
           : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression Ast.variable) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression Ast.variable list) = 
# 250 "<standard.mly>"
    ( [ x ] )
# 11027 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = x;
              MenhirLib.EngineTypes.startp = _startpos_x_;
              MenhirLib.EngineTypes.endp = _endpos_x_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : (Ast.untyped_expression Ast.variable list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let x : (Ast.untyped_expression Ast.variable) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : (Ast.untyped_expression Ast.variable list) = 
# 253 "<standard.mly>"
    ( x :: xs )
# 11066 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Ast.untyped_expression Ast.variable) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Ast.untyped_expression Ast.variable list) = 
# 250 "<standard.mly>"
    ( [ x ] )
# 11091 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = x;
              MenhirLib.EngineTypes.startp = _startpos_x_;
              MenhirLib.EngineTypes.endp = _endpos_x_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : (Ast.untyped_expression Ast.variable list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let x : (Ast.untyped_expression Ast.variable) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : (Ast.untyped_expression Ast.variable list) = 
# 253 "<standard.mly>"
    ( x :: xs )
# 11130 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = x;
          MenhirLib.EngineTypes.startp = _startpos_x_;
          MenhirLib.EngineTypes.endp = _endpos_x_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let x : (Middle.UnsizedType.t) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_x_ in
        let _v : (Middle.UnsizedType.t list) = 
# 250 "<standard.mly>"
    ( [ x ] )
# 11155 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = xs;
          MenhirLib.EngineTypes.startp = _startpos_xs_;
          MenhirLib.EngineTypes.endp = _endpos_xs_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = _2;
            MenhirLib.EngineTypes.startp = _startpos__2_;
            MenhirLib.EngineTypes.endp = _endpos__2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = x;
              MenhirLib.EngineTypes.startp = _startpos_x_;
              MenhirLib.EngineTypes.endp = _endpos_x_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let xs : (Middle.UnsizedType.t list) = Obj.magic xs in
        let _2 : unit = Obj.magic _2 in
        let x : (Middle.UnsizedType.t) = Obj.magic x in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_x_ in
        let _endpos = _endpos_xs_ in
        let _v : (Middle.UnsizedType.t list) = 
# 253 "<standard.mly>"
    ( x :: xs )
# 11194 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 477 "src/frontend/parser.mly"
    ( grammar_logger "INT_var_type" ; (SizedType.SInt, Identity) )
# 11220 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 479 "src/frontend/parser.mly"
    ( grammar_logger "REAL_var_type" ; (SizedType.SReal, Identity) )
# 11246 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 481 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEX_var_type" ; (SizedType.SComplex, Identity) )
# 11272 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 483 "src/frontend/parser.mly"
    ( grammar_logger "VECTOR_var_type" ; (SizedType.SVector (Mem_pattern.AoS, e), Identity) )
# 11319 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 485 "src/frontend/parser.mly"
    ( grammar_logger "ROWVECTOR_var_type" ; (SizedType.SRowVector (AoS, e) , Identity) )
# 11366 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e2;
            MenhirLib.EngineTypes.startp = _startpos_e2_;
            MenhirLib.EngineTypes.endp = _endpos_e2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e1;
                MenhirLib.EngineTypes.startp = _startpos_e1_;
                MenhirLib.EngineTypes.endp = _endpos_e1_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _4 : unit = Obj.magic _4 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 487 "src/frontend/parser.mly"
    ( grammar_logger "MATRIX_var_type" ; (SizedType.SMatrix (AoS, e1, e2), Identity) )
# 11427 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 489 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEXVECTOR_var_type" ; (SizedType.SComplexVector e, Identity) )
# 11474 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 491 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEXROWVECTOR_var_type" ; (SizedType.SComplexRowVector e , Identity) )
# 11521 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e2;
            MenhirLib.EngineTypes.startp = _startpos_e2_;
            MenhirLib.EngineTypes.endp = _endpos_e2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e1;
                MenhirLib.EngineTypes.startp = _startpos_e1_;
                MenhirLib.EngineTypes.endp = _endpos_e1_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _4 : unit = Obj.magic _4 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 493 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEXMATRIX_var_type" ; (SizedType.SComplexMatrix (e1, e2), Transformation.Identity) )
# 11582 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let s : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = Obj.magic s in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_s_ in
        let _endpos = _endpos_s_ in
        let _v =
          let _endpos = _endpos_s_ in
          let _symbolstartpos = _startpos_s_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 754 "src/frontend/parser.mly"
    (  grammar_logger "atomic_statement" ;
       {stmt= s;
        smeta= { loc=location_span_of_positions _sloc} }
    )
# 11617 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let s : ((Ast.untyped_expression,
   (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
   Ast.statement_with, Ast.untyped_lval, unit)
  Ast.statement) = Obj.magic s in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_s_ in
        let _endpos = _endpos_s_ in
        let _v =
          let _endpos = _endpos_s_ in
          let _symbolstartpos = _startpos_s_ in
          let _sloc = (_symbolstartpos, _endpos) in
          (
# 759 "src/frontend/parser.mly"
    (  grammar_logger "nested_statement" ;
       {stmt= s;
        smeta={loc = location_span_of_positions _sloc} }
    )
# 11654 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let s : (
# 95 "src/frontend/parser.mly"
       (string)
# 11677 "src/frontend/parser.ml"
        ) = Obj.magic s in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_s_ in
        let _endpos = _endpos_s_ in
        let _v : (string) = 
# 819 "src/frontend/parser.mly"
    (  grammar_logger ("string_literal " ^ s) ; s )
# 11685 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = d_fn;
          MenhirLib.EngineTypes.startp = _startpos_d_fn_;
          MenhirLib.EngineTypes.endp = _endpos_d_fn_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let d_fn : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic d_fn in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_d_fn_ in
        let _endpos = _endpos_d_fn_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = 
# 459 "src/frontend/parser.mly"
    ( grammar_logger "top_var_decl" ;
      d_fn ~is_global:true
    )
# 11715 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = d_fn;
          MenhirLib.EngineTypes.startp = _startpos_d_fn_;
          MenhirLib.EngineTypes.endp = _endpos_d_fn_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let d_fn : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic d_fn in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_d_fn_ in
        let _endpos = _endpos_d_fn_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = 
# 465 "src/frontend/parser.mly"
    ( grammar_logger "top_var_decl_no_assign" ;
      d_fn ~is_global:true
    )
# 11745 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = _1;
          MenhirLib.EngineTypes.startp = _startpos__1_;
          MenhirLib.EngineTypes.endp = _endpos__1_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__1_ in
        let _v =
          let _endpos = _endpos__1_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 469 "src/frontend/parser.mly"
    ( grammar_logger "top_var_decl_no_assign_skip";
      { stmt= Skip
      ; smeta= { loc= location_span_of_positions _loc }
      }
    )
# 11778 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = r;
          MenhirLib.EngineTypes.startp = _startpos_r_;
          MenhirLib.EngineTypes.endp = _endpos_r_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let r : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic r in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_r_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 497 "src/frontend/parser.mly"
    ( grammar_logger "INT_top_var_type" ; (SInt, r) )
# 11813 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = c;
          MenhirLib.EngineTypes.startp = _startpos_c_;
          MenhirLib.EngineTypes.endp = _endpos_c_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_c_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 499 "src/frontend/parser.mly"
    ( grammar_logger "REAL_top_var_type" ; (SReal, c) )
# 11846 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = c;
          MenhirLib.EngineTypes.startp = _startpos_c_;
          MenhirLib.EngineTypes.endp = _endpos_c_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = _1;
            MenhirLib.EngineTypes.startp = _startpos__1_;
            MenhirLib.EngineTypes.endp = _endpos__1_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_c_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 501 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEX_var_type" ; (SComplex, c) )
# 11879 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = c;
                MenhirLib.EngineTypes.startp = _startpos_c_;
                MenhirLib.EngineTypes.endp = _endpos_c_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _3 : unit = Obj.magic _3 in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 503 "src/frontend/parser.mly"
    ( grammar_logger "VECTOR_top_var_type" ; (SVector (AoS, e), c) )
# 11933 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = c;
                MenhirLib.EngineTypes.startp = _startpos_c_;
                MenhirLib.EngineTypes.endp = _endpos_c_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _3 : unit = Obj.magic _3 in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 505 "src/frontend/parser.mly"
    ( grammar_logger "ROWVECTOR_top_var_type" ; (SRowVector (AoS, e), c) )
# 11987 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _7;
          MenhirLib.EngineTypes.startp = _startpos__7_;
          MenhirLib.EngineTypes.endp = _endpos__7_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e2;
            MenhirLib.EngineTypes.startp = _startpos_e2_;
            MenhirLib.EngineTypes.endp = _endpos_e2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _5;
              MenhirLib.EngineTypes.startp = _startpos__5_;
              MenhirLib.EngineTypes.endp = _endpos__5_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e1;
                MenhirLib.EngineTypes.startp = _startpos_e1_;
                MenhirLib.EngineTypes.endp = _endpos_e1_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _3;
                  MenhirLib.EngineTypes.startp = _startpos__3_;
                  MenhirLib.EngineTypes.endp = _endpos__3_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = c;
                    MenhirLib.EngineTypes.startp = _startpos_c_;
                    MenhirLib.EngineTypes.endp = _endpos_c_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _7 : unit = Obj.magic _7 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _5 : unit = Obj.magic _5 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _3 : unit = Obj.magic _3 in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__7_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 507 "src/frontend/parser.mly"
    ( grammar_logger "MATRIX_top_var_type" ; (SMatrix (AoS, e1, e2), c) )
# 12055 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = c;
                MenhirLib.EngineTypes.startp = _startpos_c_;
                MenhirLib.EngineTypes.endp = _endpos_c_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _3 : unit = Obj.magic _3 in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 509 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEXVECTOR_top_var_type" ; (SComplexVector e, c) )
# 12109 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _3;
              MenhirLib.EngineTypes.startp = _startpos__3_;
              MenhirLib.EngineTypes.endp = _endpos__3_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = c;
                MenhirLib.EngineTypes.startp = _startpos_c_;
                MenhirLib.EngineTypes.endp = _endpos_c_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _3 : unit = Obj.magic _3 in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 511 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEXROWVECTOR_top_var_type" ; (SComplexRowVector e, c) )
# 12163 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _7;
          MenhirLib.EngineTypes.startp = _startpos__7_;
          MenhirLib.EngineTypes.endp = _endpos__7_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e2;
            MenhirLib.EngineTypes.startp = _startpos_e2_;
            MenhirLib.EngineTypes.endp = _endpos_e2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _5;
              MenhirLib.EngineTypes.startp = _startpos__5_;
              MenhirLib.EngineTypes.endp = _endpos__5_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e1;
                MenhirLib.EngineTypes.startp = _startpos_e1_;
                MenhirLib.EngineTypes.endp = _endpos_e1_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _3;
                  MenhirLib.EngineTypes.startp = _startpos__3_;
                  MenhirLib.EngineTypes.endp = _endpos__3_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = c;
                    MenhirLib.EngineTypes.startp = _startpos_c_;
                    MenhirLib.EngineTypes.endp = _endpos_c_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _menhir_s;
                      MenhirLib.EngineTypes.semv = _1;
                      MenhirLib.EngineTypes.startp = _startpos__1_;
                      MenhirLib.EngineTypes.endp = _endpos__1_;
                      MenhirLib.EngineTypes.next = _menhir_stack;
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _7 : unit = Obj.magic _7 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _5 : unit = Obj.magic _5 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _3 : unit = Obj.magic _3 in
        let c : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic c in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__7_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 513 "src/frontend/parser.mly"
    ( grammar_logger "COMPLEXMATRIX_top_var_type" ; (SComplexMatrix (e1, e2), c) )
# 12231 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 515 "src/frontend/parser.mly"
    ( grammar_logger "ORDERED_top_var_type" ; (SVector (AoS, e), Ordered) )
# 12278 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 517 "src/frontend/parser.mly"
    (
      grammar_logger "POSITIVEORDERED_top_var_type" ;
      (SVector (AoS, e), PositiveOrdered)
    )
# 12328 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 522 "src/frontend/parser.mly"
    ( grammar_logger "SIMPLEX_top_var_type" ; (SVector (AoS, e), Simplex) )
# 12375 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 524 "src/frontend/parser.mly"
    ( grammar_logger "UNITVECTOR_top_var_type" ; (SVector (AoS, e), UnitVector) )
# 12422 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 526 "src/frontend/parser.mly"
    ( grammar_logger "SUMTOZERO_top_var_type" ; (SVector (AoS, e), SumToZero) )
# 12469 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 528 "src/frontend/parser.mly"
    (
      grammar_logger "CHOLESKYFACTORCORR_top_var_type" ;
      (SMatrix (AoS, e, e), CholeskyCorr)
    )
# 12519 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _5;
          MenhirLib.EngineTypes.startp = _startpos__5_;
          MenhirLib.EngineTypes.endp = _endpos__5_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = oe2;
            MenhirLib.EngineTypes.startp = _startpos_oe2_;
            MenhirLib.EngineTypes.endp = _endpos_oe2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = e1;
              MenhirLib.EngineTypes.startp = _startpos_e1_;
              MenhirLib.EngineTypes.endp = _endpos_e1_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = _2;
                MenhirLib.EngineTypes.startp = _startpos__2_;
                MenhirLib.EngineTypes.endp = _endpos__2_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _menhir_s;
                  MenhirLib.EngineTypes.semv = _1;
                  MenhirLib.EngineTypes.startp = _startpos__1_;
                  MenhirLib.EngineTypes.endp = _endpos__1_;
                  MenhirLib.EngineTypes.next = _menhir_stack;
                };
              };
            };
          };
        } = _menhir_stack in
        let _5 : unit = Obj.magic _5 in
        let oe2 : ((unit * Ast.untyped_expression) option) = Obj.magic oe2 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__5_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 534 "src/frontend/parser.mly"
    (
      grammar_logger "CHOLESKYFACTORCOV_top_var_type" ;
      match oe2 with Some (_,e2) -> ( SMatrix (AoS, e1, e2), CholeskyCov)
                   | _           ->  (SMatrix (AoS, e1, e1),  CholeskyCov)
    )
# 12577 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 540 "src/frontend/parser.mly"
    ( grammar_logger "CORRMATRIX_top_var_type" ; (SMatrix (AoS, e, e), Correlation) )
# 12624 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e;
            MenhirLib.EngineTypes.startp = _startpos_e_;
            MenhirLib.EngineTypes.endp = _endpos_e_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let e : (Ast.untyped_expression) = Obj.magic e in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 542 "src/frontend/parser.mly"
    ( grammar_logger "COVMATRIX_top_var_type" ; (SizedType.SMatrix (AoS, e, e), Transformation.Covariance) )
# 12671 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e2;
            MenhirLib.EngineTypes.startp = _startpos_e2_;
            MenhirLib.EngineTypes.endp = _endpos_e2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e1;
                MenhirLib.EngineTypes.startp = _startpos_e1_;
                MenhirLib.EngineTypes.endp = _endpos_e1_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _4 : unit = Obj.magic _4 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 544 "src/frontend/parser.mly"
    ( grammar_logger "STOCHASTICCOLUMNMATRIX_top_var_type" ; (SizedType.SMatrix (AoS, e1, e2), Transformation.StochasticColumn) )
# 12732 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e2;
            MenhirLib.EngineTypes.startp = _startpos_e2_;
            MenhirLib.EngineTypes.endp = _endpos_e2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e1;
                MenhirLib.EngineTypes.startp = _startpos_e1_;
                MenhirLib.EngineTypes.endp = _endpos_e1_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let e2 : (Ast.untyped_expression) = Obj.magic e2 in
        let _4 : unit = Obj.magic _4 in
        let e1 : (Ast.untyped_expression) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = 
# 546 "src/frontend/parser.mly"
    ( grammar_logger "STOCHASTICROWMATRIX_top_var_type" ; (SizedType.SMatrix (AoS, e1, e2), Transformation.StochasticRow) )
# 12793 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let s : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_s_ in
        let _endpos = _endpos_s_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = 
# 863 "src/frontend/parser.mly"
    ( grammar_logger "top_vardecl_or_statement_statement" ; s )
# 12820 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = v;
          MenhirLib.EngineTypes.startp = _startpos_v_;
          MenhirLib.EngineTypes.endp = _endpos_v_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic v in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_v_ in
        let _endpos = _endpos_v_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = 
# 865 "src/frontend/parser.mly"
    ( grammar_logger "top_vardecl_or_statement_top_vardecl" ; v )
# 12847 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = tvds;
            MenhirLib.EngineTypes.startp = _startpos_tvds_;
            MenhirLib.EngineTypes.endp = _endpos_tvds_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let tvds : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic tvds in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 191 "src/frontend/parser.mly"
    ( grammar_logger "transformed_data_block" ;
      {stmts= tvds; xloc= location_span_of_positions _loc} )
# 12899 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _4;
          MenhirLib.EngineTypes.startp = _startpos__4_;
          MenhirLib.EngineTypes.endp = _endpos__4_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = tvds;
            MenhirLib.EngineTypes.startp = _startpos_tvds_;
            MenhirLib.EngineTypes.endp = _endpos_tvds_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _2;
              MenhirLib.EngineTypes.startp = _startpos__2_;
              MenhirLib.EngineTypes.endp = _endpos__2_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _menhir_s;
                MenhirLib.EngineTypes.semv = _1;
                MenhirLib.EngineTypes.startp = _startpos__1_;
                MenhirLib.EngineTypes.endp = _endpos__1_;
                MenhirLib.EngineTypes.next = _menhir_stack;
              };
            };
          };
        } = _menhir_stack in
        let _4 : unit = Obj.magic _4 in
        let tvds : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with list) = Obj.magic tvds in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__4_ in
        let _v =
          let _endpos = _endpos__4_ in
          let _startpos = _startpos__1_ in
          let _loc = (_startpos, _endpos) in
          (
# 201 "src/frontend/parser.mly"
    ( grammar_logger "transformed_parameters_block" ;
      {stmts= tvds; xloc= location_span_of_positions _loc} )
# 12953 "src/frontend/parser.ml"
           : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.block))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = e2;
            MenhirLib.EngineTypes.startp = _startpos_e2_;
            MenhirLib.EngineTypes.endp = _endpos_e2_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = e1;
                MenhirLib.EngineTypes.startp = _startpos_e1_;
                MenhirLib.EngineTypes.endp = _endpos_e1_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let e2 : (Ast.untyped_expression option) = Obj.magic e2 in
        let _4 : unit = Obj.magic _4 in
        let e1 : (Ast.untyped_expression option) = Obj.magic e1 in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v : (Ast.untyped_expression Ast.truncation) = 
# 824 "src/frontend/parser.mly"
    (  grammar_logger "truncation" ;
       match (e1, e2) with
       | Some tt1, Some tt2 -> TruncateBetween (tt1, tt2)
       | Some tt1, None -> TruncateUpFrom tt1
       | None, Some tt2 -> TruncateDownFrom tt2
       | None, None -> NoTruncate  )
# 13020 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = rest;
            MenhirLib.EngineTypes.startp = _startpos_rest_;
            MenhirLib.EngineTypes.endp = _endpos_rest_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let rest : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic rest in
        let _4 : unit = Obj.magic _4 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let head = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 13086 "src/frontend/parser.ml"
           in
          (
# 445 "src/frontend/parser.mly"
  ( grammar_logger "tuple_type" ;
    let ts = head::rest in
    let types, trans = List.unzip ts in
    (SizedType.STuple types, Transformation.TupleTransformation trans)
  )
# 13095 "src/frontend/parser.ml"
           : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = rest;
            MenhirLib.EngineTypes.startp = _startpos_rest_;
            MenhirLib.EngineTypes.endp = _endpos_rest_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let rest : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic rest in
        let _4 : unit = Obj.magic _4 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let head = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 13163 "src/frontend/parser.ml"
           in
          (
# 445 "src/frontend/parser.mly"
  ( grammar_logger "tuple_type" ;
    let ts = head::rest in
    let types, trans = List.unzip ts in
    (SizedType.STuple types, Transformation.TupleTransformation trans)
  )
# 13172 "src/frontend/parser.ml"
           : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = rest;
            MenhirLib.EngineTypes.startp = _startpos_rest_;
            MenhirLib.EngineTypes.endp = _endpos_rest_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let rest : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic rest in
        let _4 : unit = Obj.magic _4 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let head = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 13240 "src/frontend/parser.ml"
           in
          (
# 445 "src/frontend/parser.mly"
  ( grammar_logger "tuple_type" ;
    let ts = head::rest in
    let types, trans = List.unzip ts in
    (SizedType.STuple types, Transformation.TupleTransformation trans)
  )
# 13249 "src/frontend/parser.ml"
           : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = rest;
            MenhirLib.EngineTypes.startp = _startpos_rest_;
            MenhirLib.EngineTypes.endp = _endpos_rest_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let rest : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic rest in
        let _4 : unit = Obj.magic _4 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let head = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 13317 "src/frontend/parser.ml"
           in
          (
# 445 "src/frontend/parser.mly"
  ( grammar_logger "tuple_type" ;
    let ts = head::rest in
    let types, trans = List.unzip ts in
    (SizedType.STuple types, Transformation.TupleTransformation trans)
  )
# 13326 "src/frontend/parser.ml"
           : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = rest;
            MenhirLib.EngineTypes.startp = _startpos_rest_;
            MenhirLib.EngineTypes.endp = _endpos_rest_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let rest : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic rest in
        let _4 : unit = Obj.magic _4 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let head = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 13394 "src/frontend/parser.ml"
           in
          (
# 445 "src/frontend/parser.mly"
  ( grammar_logger "tuple_type" ;
    let ts = head::rest in
    let types, trans = List.unzip ts in
    (SizedType.STuple types, Transformation.TupleTransformation trans)
  )
# 13403 "src/frontend/parser.ml"
           : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = rest;
            MenhirLib.EngineTypes.startp = _startpos_rest_;
            MenhirLib.EngineTypes.endp = _endpos_rest_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = ty;
                MenhirLib.EngineTypes.startp = _startpos_ty_;
                MenhirLib.EngineTypes.endp = _endpos_ty_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let rest : ((Ast.untyped_expression Middle.SizedType.t *
   Ast.untyped_expression Middle.Transformation.t)
  list) = Obj.magic rest in
        let _4 : unit = Obj.magic _4 in
        let ty : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t) = Obj.magic ty in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let head = 
# 431 "src/frontend/parser.mly"
  ( grammar_logger "higher_type" ;
    ty
  )
# 13471 "src/frontend/parser.ml"
           in
          (
# 445 "src/frontend/parser.mly"
  ( grammar_logger "tuple_type" ;
    let ts = head::rest in
    let types, trans = List.unzip ts in
    (SizedType.STuple types, Transformation.TupleTransformation trans)
  )
# 13480 "src/frontend/parser.ml"
           : (Ast.untyped_expression Middle.SizedType.t *
  Ast.untyped_expression Middle.Transformation.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = r;
          MenhirLib.EngineTypes.startp = _startpos_r_;
          MenhirLib.EngineTypes.endp = _endpos_r_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let r : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic r in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_r_ in
        let _endpos = _endpos_r_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 550 "src/frontend/parser.mly"
    (  grammar_logger "type_constraint_range" ; r )
# 13507 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = l;
            MenhirLib.EngineTypes.startp = _startpos_l_;
            MenhirLib.EngineTypes.endp = _endpos_l_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let l : (Ast.untyped_expression Middle.Transformation.t) = Obj.magic l in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v : (Ast.untyped_expression Middle.Transformation.t) = 
# 552 "src/frontend/parser.mly"
    (  grammar_logger "type_constraint_offset_mult" ; l )
# 13546 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _3;
          MenhirLib.EngineTypes.startp = _startpos__3_;
          MenhirLib.EngineTypes.endp = _endpos__3_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = cs;
            MenhirLib.EngineTypes.startp = _startpos_cs_;
            MenhirLib.EngineTypes.endp = _endpos_cs_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let _3 : unit = Obj.magic _3 in
        let cs : (unit list) = Obj.magic cs in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__3_ in
        let _v : (int) = 
# 354 "src/frontend/parser.mly"
    ( grammar_logger "unsized_dims" ; List.length(cs) + 1 )
# 13585 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = t;
          MenhirLib.EngineTypes.startp = _startpos_t_;
          MenhirLib.EngineTypes.endp = _endpos_t_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = n;
            MenhirLib.EngineTypes.startp = _startpos_n_;
            MenhirLib.EngineTypes.endp = _endpos_n_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _menhir_s;
              MenhirLib.EngineTypes.semv = _1;
              MenhirLib.EngineTypes.startp = _startpos__1_;
              MenhirLib.EngineTypes.endp = _endpos__1_;
              MenhirLib.EngineTypes.next = _menhir_stack;
            };
          };
        } = _menhir_stack in
        let t : (Middle.UnsizedType.t) = Obj.magic t in
        let n : (int) = Obj.magic n in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos_t_ in
        let _v : (Middle.UnsizedType.t) = 
# 302 "src/frontend/parser.mly"
    (  grammar_logger "unsized_type";
        nest_unsized_array t n
    )
# 13626 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = ts;
            MenhirLib.EngineTypes.startp = _startpos_ts_;
            MenhirLib.EngineTypes.endp = _endpos_ts_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = hd;
                MenhirLib.EngineTypes.startp = _startpos_hd_;
                MenhirLib.EngineTypes.endp = _endpos_hd_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _;
                    MenhirLib.EngineTypes.semv = _1_inlined1;
                    MenhirLib.EngineTypes.startp = _startpos__1_inlined1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_inlined1_;
                    MenhirLib.EngineTypes.next = {
                      MenhirLib.EngineTypes.state = _;
                      MenhirLib.EngineTypes.semv = n;
                      MenhirLib.EngineTypes.startp = _startpos_n_;
                      MenhirLib.EngineTypes.endp = _endpos_n_;
                      MenhirLib.EngineTypes.next = {
                        MenhirLib.EngineTypes.state = _menhir_s;
                        MenhirLib.EngineTypes.semv = _1;
                        MenhirLib.EngineTypes.startp = _startpos__1_;
                        MenhirLib.EngineTypes.endp = _endpos__1_;
                        MenhirLib.EngineTypes.next = _menhir_stack;
                      };
                    };
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let ts : (Middle.UnsizedType.t list) = Obj.magic ts in
        let _4 : unit = Obj.magic _4 in
        let hd : (Middle.UnsizedType.t) = Obj.magic hd in
        let _2 : unit = Obj.magic _2 in
        let _1_inlined1 : unit = Obj.magic _1_inlined1 in
        let n : (int) = Obj.magic n in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let t = 
# 329 "src/frontend/parser.mly"
    (  UnsizedType.UTuple (hd::ts)
    )
# 13702 "src/frontend/parser.ml"
           in
          (
# 302 "src/frontend/parser.mly"
    (  grammar_logger "unsized_type";
        nest_unsized_array t n
    )
# 13709 "src/frontend/parser.ml"
           : (Middle.UnsizedType.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = dims;
          MenhirLib.EngineTypes.startp = _startpos_dims_;
          MenhirLib.EngineTypes.endp = _endpos_dims_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _menhir_s;
            MenhirLib.EngineTypes.semv = bt;
            MenhirLib.EngineTypes.startp = _startpos_bt_;
            MenhirLib.EngineTypes.endp = _endpos_bt_;
            MenhirLib.EngineTypes.next = _menhir_stack;
          };
        } = _menhir_stack in
        let dims : (int) = Obj.magic dims in
        let bt : (Middle.UnsizedType.t) = Obj.magic bt in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_bt_ in
        let _endpos = _endpos_dims_ in
        let _v =
          let _loc_dims_ = (_startpos_dims_, _endpos_dims_) in
          (
# 308 "src/frontend/parser.mly"
                                    (
    raise
    (Errors.SyntaxError
       (Errors.Parsing
          (Fmt.str
              "An identifier is expected after the type as a function argument \
               name.@ It looks like you are trying to use the old array \
               syntax.@ Please use the new syntax: @ @[<h>array[%s] %a@]@\n"
              (String.make (dims-1) ',')
              UnsizedType.pp bt
          , location_span_of_positions _loc_dims_ )))
  )
# 13755 "src/frontend/parser.ml"
           : (Middle.UnsizedType.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = bt;
          MenhirLib.EngineTypes.startp = _startpos_bt_;
          MenhirLib.EngineTypes.endp = _endpos_bt_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let bt : (Middle.UnsizedType.t) = Obj.magic bt in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_bt_ in
        let _endpos = _endpos_bt_ in
        let _v : (Middle.UnsizedType.t) = 
# 321 "src/frontend/parser.mly"
    (  grammar_logger "unsized_type";
       bt
    )
# 13783 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _;
          MenhirLib.EngineTypes.semv = _6;
          MenhirLib.EngineTypes.startp = _startpos__6_;
          MenhirLib.EngineTypes.endp = _endpos__6_;
          MenhirLib.EngineTypes.next = {
            MenhirLib.EngineTypes.state = _;
            MenhirLib.EngineTypes.semv = ts;
            MenhirLib.EngineTypes.startp = _startpos_ts_;
            MenhirLib.EngineTypes.endp = _endpos_ts_;
            MenhirLib.EngineTypes.next = {
              MenhirLib.EngineTypes.state = _;
              MenhirLib.EngineTypes.semv = _4;
              MenhirLib.EngineTypes.startp = _startpos__4_;
              MenhirLib.EngineTypes.endp = _endpos__4_;
              MenhirLib.EngineTypes.next = {
                MenhirLib.EngineTypes.state = _;
                MenhirLib.EngineTypes.semv = hd;
                MenhirLib.EngineTypes.startp = _startpos_hd_;
                MenhirLib.EngineTypes.endp = _endpos_hd_;
                MenhirLib.EngineTypes.next = {
                  MenhirLib.EngineTypes.state = _;
                  MenhirLib.EngineTypes.semv = _2;
                  MenhirLib.EngineTypes.startp = _startpos__2_;
                  MenhirLib.EngineTypes.endp = _endpos__2_;
                  MenhirLib.EngineTypes.next = {
                    MenhirLib.EngineTypes.state = _menhir_s;
                    MenhirLib.EngineTypes.semv = _1;
                    MenhirLib.EngineTypes.startp = _startpos__1_;
                    MenhirLib.EngineTypes.endp = _endpos__1_;
                    MenhirLib.EngineTypes.next = _menhir_stack;
                  };
                };
              };
            };
          };
        } = _menhir_stack in
        let _6 : unit = Obj.magic _6 in
        let ts : (Middle.UnsizedType.t list) = Obj.magic ts in
        let _4 : unit = Obj.magic _4 in
        let hd : (Middle.UnsizedType.t) = Obj.magic hd in
        let _2 : unit = Obj.magic _2 in
        let _1 : unit = Obj.magic _1 in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos__1_ in
        let _endpos = _endpos__6_ in
        let _v =
          let t = 
# 329 "src/frontend/parser.mly"
    (  UnsizedType.UTuple (hd::ts)
    )
# 13845 "src/frontend/parser.ml"
           in
          (
# 325 "src/frontend/parser.mly"
    ( t )
# 13850 "src/frontend/parser.ml"
           : (Middle.UnsizedType.t))
        in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = d_fn;
          MenhirLib.EngineTypes.startp = _startpos_d_fn_;
          MenhirLib.EngineTypes.endp = _endpos_d_fn_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let d_fn : (is_global:bool ->
  (Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic d_fn in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_d_fn_ in
        let _endpos = _endpos_d_fn_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = 
# 453 "src/frontend/parser.mly"
    ( grammar_logger "var_decl" ;
      d_fn ~is_global:false
    )
# 13881 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = s;
          MenhirLib.EngineTypes.startp = _startpos_s_;
          MenhirLib.EngineTypes.endp = _endpos_s_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let s : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic s in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_s_ in
        let _endpos = _endpos_s_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = 
# 857 "src/frontend/parser.mly"
    ( grammar_logger "vardecl_or_statement_statement" ; s )
# 13908 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
      (fun _menhir_env ->
        let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in
        let {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = v;
          MenhirLib.EngineTypes.startp = _startpos_v_;
          MenhirLib.EngineTypes.endp = _endpos_v_;
          MenhirLib.EngineTypes.next = _menhir_stack;
        } = _menhir_stack in
        let v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = Obj.magic v in
        let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in
        let _startpos = _startpos_v_ in
        let _endpos = _endpos_v_ in
        let _v : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with) = 
# 859 "src/frontend/parser.mly"
    ( grammar_logger "vardecl_or_statement_vardecl" ; v )
# 13935 "src/frontend/parser.ml"
         in
        {
          MenhirLib.EngineTypes.state = _menhir_s;
          MenhirLib.EngineTypes.semv = Obj.repr _v;
          MenhirLib.EngineTypes.startp = _startpos;
          MenhirLib.EngineTypes.endp = _endpos;
          MenhirLib.EngineTypes.next = _menhir_stack;
        });
    |]
  
  and trace =
    None
  
end

module MenhirInterpreter = struct
  
  module ET = MenhirLib.TableInterpreter.MakeEngineTable (Tables)
  
  module TI = MenhirLib.Engine.Make (ET)
  
  include TI
  
end

let program =
  fun lexer lexbuf : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.program) ->
    Obj.magic (MenhirInterpreter.entry `Legacy 406 lexer lexbuf)

and functions_only =
  fun lexer lexbuf : (Ast.untyped_statement Ast.program) ->
    Obj.magic (MenhirInterpreter.entry `Legacy 0 lexer lexbuf)

module Incremental = struct
  
  let program =
    fun initial_position : ((Ast.untyped_expression, Ast.located_meta, Ast.untyped_lval, unit)
  Ast.statement_with Ast.program) MenhirInterpreter.checkpoint ->
      Obj.magic (MenhirInterpreter.start 406 initial_position)
  
  and functions_only =
    fun initial_position : (Ast.untyped_statement Ast.program) MenhirInterpreter.checkpoint ->
      Obj.magic (MenhirInterpreter.start 0 initial_position)
  
end
