]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/grafite_parser/print_grammar.ml
Huge commit with several changes:
[helm.git] / helm / software / components / grafite_parser / print_grammar.ml
index d2eb817adce30991523ee61908d9180cf51764b3..893a3f53c9ef2a72e93f57d7ed9187e7901ad18a 100644 (file)
@@ -108,17 +108,19 @@ let visit_description desc fmt self =
   let skip s = true in
   let inline s = List.mem s [ "int" ] in
   
-  let rec visit_entry e todo is_son  =
+  let rec visit_entry e ?level todo is_son  =
     let { ename = ename; edesc = desc } = e in 
     if inline ename then 
       visit_desc desc todo is_son 
     else
       begin
-        Format.fprintf fmt "%s " ename;
-        if skip ename then
-          todo
-        else
-          todo @ [e]
+       (match level with
+       | None -> Format.fprintf fmt "%s " ename;
+       | Some _ -> Format.fprintf fmt "%s " ename;);
+          if skip ename then
+            todo
+          else
+            todo @ [e]
       end
       
   and visit_desc d todo is_son  =
@@ -178,7 +180,7 @@ let visit_description desc fmt self =
             todo) 
         todo sl
     | Snterm entry -> visit_entry entry todo is_son  
-    | Snterml (entry,_) -> visit_entry entry todo is_son 
+    | Snterml (entry,level) -> visit_entry entry ~level todo is_son 
     | Slist0 symbol -> 
         Format.fprintf fmt "{@[<hov2> ";
         let todo = visit_symbol symbol todo is_son in
@@ -263,7 +265,7 @@ let rec visit_entries fmt todo pped =
 ;;
 
 let ebnf_of_term () =
-  let g_entry = Grammar.Entry.obj CicNotationParser.term in
+  let g_entry = Grammar.Entry.obj (CicNotationParser.term ()) in
   let buff = Buffer.create 100 in
   let fmt = Format.formatter_of_buffer buff in
   visit_entries fmt [g_entry] [];