]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_disambiguation/cicTextualParser2.ml
...
[helm.git] / helm / ocaml / cic_disambiguation / cicTextualParser2.ml
index 7b0360b9cef2c7f4b4410ddbe568defb3ed167a3..451d772925d8b5a50b63bdb1772af4e96c002357 100644 (file)
@@ -585,12 +585,9 @@ EXTEND
       let ident = "\\("^alpha^ident_cont^"*\\|_"^ident_cont^"+\\)" in
       let rex = Str.regexp ("^"^ident^"$") in
       if Str.string_match rex id 0 then
-        let rex = Str.regexp 
-          ("^\\(cic:/\\|theory:/\\)"^ident^
-           "\\(/"^ident^"+\\)*\\(\\."^ident^"\\)+"^
-           "\\(#xpointer("^ num^"\\(/"^num^"\\)+)\\)?$") 
-        in
-        if Str.string_match rex uri 0 then
+        if (try ignore (UriManager.uri_of_string uri); true
+            with UriManager.IllFormedUri _ -> false)
+        then
           TacticAst.Ident_alias (id, uri)
         else 
           raise (Parse_error (loc,sprintf "Not a valid uri: %s" uri))
@@ -618,6 +615,11 @@ EXTEND
         TacticAst.Set (loc, n, v)
     |  [ IDENT "drop" ] -> TacticAst.Drop loc
     | [ IDENT "qed"   ] -> TacticAst.Qed loc
+    | IDENT "variant" ; name = IDENT; SYMBOL ":"; 
+      typ = term; SYMBOL <:unicode<def>> ; newname = IDENT ->
+        TacticAst.Obj (loc, 
+          TacticAst.Theorem 
+            (`Variant,name,typ,Some (CicAst.Ident (newname, None))))
     | flavour = theorem_flavour; name = IDENT; SYMBOL ":"; typ = term;
       body = OPT [ SYMBOL <:unicode<def>> (* ≝ *); body = term -> body ] ->
         TacticAst.Obj (loc,TacticAst.Theorem (flavour, name, typ, body))