src/Pure/PIDE/command_span.ML
changeset 68177 6e40f5d43936
parent 59689 7968c57ea240
child 68183 6560324b1e4d
equal deleted inserted replaced
68174:7c4793e39dd5 68177:6e40f5d43936
     8 sig
     8 sig
     9   datatype kind = Command_Span of string * Position.T | Ignored_Span | Malformed_Span
     9   datatype kind = Command_Span of string * Position.T | Ignored_Span | Malformed_Span
    10   datatype span = Span of kind * Token.T list
    10   datatype span = Span of kind * Token.T list
    11   val kind: span -> kind
    11   val kind: span -> kind
    12   val content: span -> Token.T list
    12   val content: span -> Token.T list
       
    13   val position: span -> Position.T
       
    14   val symbol_length: span -> int
    13 end;
    15 end;
    14 
    16 
    15 structure Command_Span: COMMAND_SPAN =
    17 structure Command_Span: COMMAND_SPAN =
    16 struct
    18 struct
    17 
    19 
    19 datatype span = Span of kind * Token.T list;
    21 datatype span = Span of kind * Token.T list;
    20 
    22 
    21 fun kind (Span (k, _)) = k;
    23 fun kind (Span (k, _)) = k;
    22 fun content (Span (_, toks)) = toks;
    24 fun content (Span (_, toks)) = toks;
    23 
    25 
       
    26 fun position (Span (Command_Span (_, pos), _)) = pos
       
    27   | position _ = Position.none;
       
    28 
       
    29 fun symbol_length span =
       
    30   (case Position.distance_of (Token.range_of (content span)) of
       
    31     SOME n => n
       
    32   | NONE => raise Fail ("Undefined length of command span" ^ Position.here (position span)));
       
    33 
    24 end;
    34 end;