more operations;
authorwenzelm
Wed, 30 Mar 2016 14:52:23 +0200
changeset 62759 d16b2ec535ba
parent 62758 c439a7348138
child 62760 aabcc727aa2d
more operations;
src/Pure/General/input.ML
src/Pure/Syntax/mixfix.ML
--- a/src/Pure/General/input.ML	Wed Mar 30 14:35:41 2016 +0200
+++ b/src/Pure/General/input.ML	Wed Mar 30 14:52:23 2016 +0200
@@ -13,6 +13,7 @@
   val range_of: source -> Position.range
   val source: bool -> Symbol_Pos.text -> Position.range -> source
   val string: string -> source
+  val reset_pos: source -> source
   val source_explode: source -> Symbol_Pos.T list
   val source_content: source -> string
   val equal_content: source * source -> bool
@@ -24,6 +25,9 @@
 abstype source = Source of {delimited: bool, text: Symbol_Pos.text, range: Position.range}
 with
 
+
+(* source *)
+
 fun is_delimited (Source {delimited, ...}) = delimited;
 fun text_of (Source {text, ...}) = text;
 fun pos_of (Source {range = (pos, _), ...}) = pos;
@@ -34,6 +38,11 @@
 
 fun string text = source true text Position.no_range;
 
+fun reset_pos (Source {delimited, text, ...}) = source delimited text Position.no_range;
+
+
+(* content *)
+
 fun source_explode (Source {text, range = (pos, _), ...}) =
   Symbol_Pos.explode (text, pos);
 
@@ -44,4 +53,3 @@
 end;
 
 end;
-
--- a/src/Pure/Syntax/mixfix.ML	Wed Mar 30 14:35:41 2016 +0200
+++ b/src/Pure/Syntax/mixfix.ML	Wed Mar 30 14:52:23 2016 +0200
@@ -25,6 +25,7 @@
   val set_range: Position.range -> mixfix -> mixfix
   val range_of: mixfix -> Position.range
   val pos_of: mixfix -> Position.T
+  val reset_pos: mixfix -> mixfix
   val pretty_mixfix: mixfix -> Pretty.T
   val mixfix_args: mixfix -> int
   val mixfixT: mixfix -> typ
@@ -86,6 +87,15 @@
 
 val pos_of = Position.set_range o range_of;
 
+fun reset_pos NoSyn = NoSyn
+  | reset_pos (Mixfix (sy, ps, p, _)) = Mixfix (Input.reset_pos sy, ps, p, Position.no_range)
+  | reset_pos (Delimfix (sy, _)) = Delimfix (Input.reset_pos sy, Position.no_range)
+  | reset_pos (Infix (sy, p, _)) = Infix (Input.reset_pos sy, p, Position.no_range)
+  | reset_pos (Infixl (sy, p, _)) = Infixl (Input.reset_pos sy, p, Position.no_range)
+  | reset_pos (Infixr (sy, p, _)) = Infixr (Input.reset_pos sy, p, Position.no_range)
+  | reset_pos (Binder (sy, p, q, _)) = Binder (Input.reset_pos sy, p, q, Position.no_range)
+  | reset_pos (Structure _) = Structure Position.no_range;
+
 
 (* pretty_mixfix *)