]> matita.cs.unibo.it Git - helm.git/commitdiff
added basedir and improved let{rec} syntax
authorEnrico Tassi <enrico.tassi@inria.fr>
Mon, 31 Jan 2005 17:17:32 +0000 (17:17 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Mon, 31 Jan 2005 17:17:32 +0000 (17:17 +0000)
helm/ocaml/cic_disambiguation/cicTextualParser2.ml

index 452593005d99f62d8f395001976e424349130025..d062ed109c704de74c3dd7210af22123ed2b11e4 100644 (file)
@@ -156,27 +156,34 @@ EXTEND
   ];
   let_defs:[
     [ defs = LIST1 [
-        var = typed_name;
+        name = IDENT;
         args = LIST1 [
           PAREN "(" ; names = LIST1 IDENT SEP SYMBOL ","; SYMBOL ":";
           ty = term; PAREN ")" ->
             (names, ty)
         ];
         index_name = OPT [ IDENT "on"; idx = IDENT -> idx ];
+        ty = OPT [ SYMBOL ":" ; t = term -> t ];
         SYMBOL <:unicode<def>> (* ≝ *);
         t1 = term ->
-          let rec list_of_lambda ty final_term = function
+          let rec list_of_binder binder ty final_term = function
             | [] -> final_term
             | name::tl -> 
-                CicAst.Binder (`Lambda, (Cic.Name name, Some ty), 
-                  list_of_lambda ty final_term tl)
+                CicAst.Binder (binder, (Cic.Name name, Some ty), 
+                  list_of_binder binder ty final_term tl)
           in
-          let rec lambda_of_arg_list final_term = function
+          let rec binder_of_arg_list binder final_term = function
             | [] -> final_term
             | (l,ty)::tl ->  
-                list_of_lambda ty (lambda_of_arg_list final_term tl) l
+                list_of_binder binder ty 
+                  (binder_of_arg_list binder final_term tl) l
+          in
+          let t1' = binder_of_arg_list `Lambda t1 args in
+          let ty' = 
+            match ty with 
+            | None -> None
+            | Some ty -> Some (binder_of_arg_list `Pi ty args)
           in
-          let t1' = lambda_of_arg_list t1 args in
           let rec get_position_of name n = function 
             | [] -> (None,n)
             | nam::tl -> 
@@ -198,7 +205,7 @@ EXTEND
              | None -> 0 
              | (Some name) -> find_arg name 0 args)
           in
-          (var, t1', index)
+          ((Cic.Name name,ty'), t1', index)
       ] SEP "and" -> defs
     ]];
   constructor: [ [ name = IDENT; SYMBOL ":"; typ = term -> (name, typ) ] ];
@@ -504,6 +511,8 @@ EXTEND
         return_command loc (TacticAst.Redo (int_opt steps))
     | [ IDENT "baseuri"   | IDENT "Baseuri" ]; uri = OPT QSTRING ->
         return_command loc (TacticAst.Baseuri uri)
+    | [ IDENT "basedir"   | IDENT "Basedir" ]; uri = OPT QSTRING ->
+        return_command loc (TacticAst.Basedir uri)
     | [ IDENT "check"   | IDENT "Check" ]; t = term ->
         return_command loc (TacticAst.Check t)
 (*