equal
deleted
inserted
replaced
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; |