module Ast = NotationPt
+type ident_or_var =
+ Ident of string
+ | Var of string
+
type value =
| TermValue of Ast.term
- | StringValue of string
+ | StringValue of ident_or_var
| NumValue of string
| OptValue of value option
| ListValue of value list
| ty, _ -> raise (Type_mismatch (name, ty))
let opt_binding_some (n, (ty, v)) = (n, (OptType ty, OptValue (Some v)))
-let opt_binding_none (n, (ty, v)) = (n, (OptType ty, OptValue None))
+let opt_binding_none (n, (ty, _v)) = (n, (OptType ty, OptValue None))
let opt_binding_of_name (n, ty) = (n, (OptType ty, OptValue None))
let list_binding_of_name (n, ty) = (n, (ListType ty, ListValue []))
let opt_declaration (n, ty) = (n, OptType ty)
let value_of_term = function
| Ast.Num (s, _) -> NumValue s
- | Ast.Ident (s, None) -> StringValue s
+ | Ast.Ident (s, None) -> StringValue (Var s)
| t -> TermValue t
let term_of_value = function
| NumValue s -> Ast.Num (s, 0)
- | StringValue s -> Ast.Ident (s, None)
+ | StringValue (Ident s) -> Ast.Ident (s, None)
| TermValue t -> t
| _ -> assert false (* TO BE UNDERSTOOD *)