+ ident: [
+ [ name = IDENT -> Env.Ident name
+ | blob = UNPARSED_META ->
+ let meta = parse_level2_meta grammars (Ulexing.from_utf8_string blob) in
+ match meta with
+ | Ast.Variable (Ast.FreshVar _) ->
+ (* it makes sense: extend Env.ident_or_var *)
+ assert false
+ | Ast.Variable (Ast.IdentVar name) -> Env.Var name
+ | Ast.Variable (Ast.TermVar ("_",_)) -> Env.Var "_"
+ | _ -> failwith ("Invalid index name: " ^ blob)
+ ]
+ ];