clarified signature;
authorwenzelm
Sat, 28 Sep 2024 20:28:11 +0200
changeset 80991 2d07d2bbd8c6
parent 80990 fd3c0135bfea
child 80992 fc0f2053c4d2
clarified signature;
src/Pure/Syntax/parser.ML
src/Pure/Syntax/syntax.ML
src/Pure/Syntax/syntax_phases.ML
--- a/src/Pure/Syntax/parser.ML	Sat Sep 28 17:11:51 2024 +0200
+++ b/src/Pure/Syntax/parser.ML	Sat Sep 28 20:28:11 2024 +0200
@@ -11,12 +11,12 @@
   val empty_gram: gram
   val make_gram: Syntax_Ext.xprod list -> Syntax_Ext.xprod list -> gram option -> gram
   val pretty_gram: gram -> Pretty.T list
-  datatype parsetree =
-    Node of string * parsetree list |
+  datatype tree =
+    Node of string * tree list |
     Tip of Lexicon.token
-  val parsetree_ord: parsetree ord
-  val pretty_parsetree: parsetree -> Pretty.T list
-  val parse: gram -> string -> Lexicon.token list -> parsetree list
+  val tree_ord: tree ord
+  val pretty_tree: tree -> Pretty.T list
+  val parse: gram -> string -> Lexicon.token list -> tree list
 end;
 
 structure Parser: PARSER =
@@ -516,10 +516,10 @@
 
 (** parser **)
 
-(* parsetree *)
+(* output tree *)
 
-datatype parsetree =
-  Node of string * parsetree list |
+datatype tree =
+  Node of string * tree list |
   Tip of Lexicon.token;
 
 local
@@ -529,26 +529,24 @@
 
 in
 
-fun parsetree_ord pts =
-  if pointer_eq pts then EQUAL
+fun tree_ord trees =
+  if pointer_eq trees then EQUAL
   else
-    (case pts of
+    (case trees of
       (Node (s, ts), Node (s', ts')) =>
         (case fast_string_ord (s, s') of
-          EQUAL => list_ord parsetree_ord (ts, ts')
+          EQUAL => list_ord tree_ord (ts, ts')
         | ord => ord)
     | (Tip t, Tip t') => Lexicon.token_ord (t, t')
-    | _ => int_ord (apply2 cons_nr pts));
+    | _ => int_ord (apply2 cons_nr trees));
 
-structure Parsetrees =
-  Table(type key = parsetree list val ord = pointer_eq_ord (list_ord parsetree_ord));
+structure Trees = Table(type key = tree list val ord = pointer_eq_ord (list_ord tree_ord));
 
 end;
 
-fun pretty_parsetree (Node (c, pts)) =
-      [Pretty.enclose "(" ")"
-        (Pretty.breaks (Pretty.quote (Pretty.str c) :: maps pretty_parsetree pts))]
-  | pretty_parsetree (Tip tok) =
+fun pretty_tree (Node (c, ts)) =
+      [Pretty.enclose "(" ")" (Pretty.breaks (Pretty.quote (Pretty.str c) :: maps pretty_tree ts))]
+  | pretty_tree (Tip tok) =
       if Lexicon.valued_token tok then [Pretty.str (Lexicon.str_of_token tok)] else [];
 
 
@@ -559,7 +557,7 @@
    string *         (*name of production*)
    int) *           (*index for previous state list*)
   symb list *       (*input: rest of rhs*)
-  parsetree list;   (*output (reversed): already parsed nonterminals on rhs*)
+  tree list;        (*output (reversed): already parsed nonterminals on rhs*)
 
 local
 
@@ -568,12 +566,12 @@
     val (i: int, ts) = the (Inttab.lookup used A);
     fun update ts' = Inttab.update (A, (i, ts'));
   in
-    (case Parsetrees.lookup ts t of
-      NONE => (no_prec, update (Parsetrees.make [(t, p)]) used)
-    | SOME q => (q, if p > q then update (Parsetrees.update (t, p) ts) used else used))
+    (case Trees.lookup ts t of
+      NONE => (no_prec, update (Trees.make [(t, p)]) used)
+    | SOME q => (q, if p > q then update (Trees.update (t, p) ts) used else used))
   end;
 
-val init_prec = (no_prec, Parsetrees.empty);
+val init_prec = (no_prec, Trees.empty);
 fun update_prec (A, p) used = Inttab.map_default (A, init_prec) (fn (_, ts) => (p, ts)) used;
 
 fun get_states A min max =
@@ -621,8 +619,8 @@
                       let
                         val used' = update_prec (nt, min_prec) used;
                         val states' = states |> add_prods nt min_prec no_prec;
-                      in (used', states', Parsetrees.empty) end);
-                val states'' = states' |> Parsetrees.fold movedot_lambda used_trees;
+                      in (used', states', Trees.empty) end);
+                val states'' = states' |> Trees.fold movedot_lambda used_trees;
               in process used' states'' (S :: Si, Sii) end
           | Terminal a :: sa => (*scanner operation*)
               let
@@ -692,10 +690,10 @@
     val stateset = Array.array (length input + 1, []);
     val _ = Array.upd stateset 0 [S0];
 
-    val pts =
+    val output =
       produce gram stateset 0 Lexicon.dummy input
-      |> map_filter (fn (_, _, [pt]) => SOME pt | _ => NONE);
-  in if null pts then raise Fail "Inner syntax: no parse trees" else pts end;
+      |> map_filter (fn (_, _, [t]) => SOME t | _ => NONE);
+  in if null output then raise Fail "Inner syntax: no parse trees" else output end;
 
 end;
 
--- a/src/Pure/Syntax/syntax.ML	Sat Sep 28 17:11:51 2024 +0200
+++ b/src/Pure/Syntax/syntax.ML	Sat Sep 28 20:28:11 2024 +0200
@@ -81,7 +81,7 @@
   val is_const: syntax -> string -> bool
   val is_keyword: syntax -> string -> bool
   val tokenize: syntax -> bool -> Symbol_Pos.T list -> Lexicon.token list
-  val parse: syntax -> string -> Lexicon.token list -> Parser.parsetree list
+  val parse: syntax -> string -> Lexicon.token list -> Parser.tree list
   val parse_ast_translation: syntax -> string -> (Proof.context -> Ast.ast list -> Ast.ast) option
   val parse_rules: syntax -> string -> (Ast.ast * Ast.ast) list
   val parse_translation: syntax -> string -> (Proof.context -> term list -> term) option
--- a/src/Pure/Syntax/syntax_phases.ML	Sat Sep 28 17:11:51 2024 +0200
+++ b/src/Pure/Syntax/syntax_phases.ML	Sat Sep 28 20:28:11 2024 +0200
@@ -358,7 +358,7 @@
           (("Ambiguous input" ^ Position.here (Position.no_range_position pos) ^
             " produces " ^ string_of_int len ^ " parse trees" ^
             (if len <= limit then "" else " (" ^ string_of_int limit ^ " displayed)") ^ ":") ::
-            map (Pretty.string_of o Pretty.item o Parser.pretty_parsetree) (take limit pts))];
+            map (Pretty.string_of o Pretty.item o Parser.pretty_tree) (take limit pts))];
 
   in (ambig_msgs, map (parsetree_to_ast ctxt ast_tr) pts) end;