51 val closure: token -> token |
51 val closure: token -> token |
52 val ident_or_symbolic: string -> bool |
52 val ident_or_symbolic: string -> bool |
53 val !!! : string -> (SymbolPos.T list -> 'a) -> SymbolPos.T list -> 'a |
53 val !!! : string -> (SymbolPos.T list -> 'a) -> SymbolPos.T list -> 'a |
54 val scan_quoted: SymbolPos.T list -> SymbolPos.T list * SymbolPos.T list |
54 val scan_quoted: SymbolPos.T list -> SymbolPos.T list * SymbolPos.T list |
55 val source_proper: (token, 'a) Source.source -> (token, (token, 'a) Source.source) Source.source |
55 val source_proper: (token, 'a) Source.source -> (token, (token, 'a) Source.source) Source.source |
56 val source': bool Option.option -> (unit -> Scan.lexicon * Scan.lexicon) -> |
56 val source': {do_recover: bool Option.option} -> (unit -> Scan.lexicon * Scan.lexicon) -> |
57 (SymbolPos.T, 'a) Source.source -> (token, (SymbolPos.T, 'a) Source.source) Source.source |
57 (SymbolPos.T, 'a) Source.source -> (token, (SymbolPos.T, 'a) Source.source) Source.source |
58 val source: bool Option.option -> (unit -> Scan.lexicon * Scan.lexicon) -> |
58 val source: {do_recover: bool Option.option} -> (unit -> Scan.lexicon * Scan.lexicon) -> |
59 Position.T -> (Symbol.symbol, 'a) Source.source -> (token, |
59 Position.T -> (Symbol.symbol, 'a) Source.source -> (token, |
60 (SymbolPos.T, Position.T * (Symbol.symbol, 'a) Source.source) Source.source) Source.source |
60 (SymbolPos.T, Position.T * (Symbol.symbol, 'a) Source.source) Source.source) Source.source |
61 end; |
61 end; |
62 |
62 |
63 structure OuterLex: OUTER_LEX = |
63 structure OuterLex: OUTER_LEX = |
387 Scan.many ((Symbol.is_regular andf (not o Symbol.is_blank)) o symbol) |
387 Scan.many ((Symbol.is_regular andf (not o Symbol.is_blank)) o symbol) |
388 >> (single o token (Error msg)); |
388 >> (single o token (Error msg)); |
389 |
389 |
390 in |
390 in |
391 |
391 |
392 fun source' do_recover get_lex = |
392 fun source' {do_recover} get_lex = |
393 Source.source SymbolPos.stopper (Scan.bulk (fn xs => scan (get_lex ()) xs)) |
393 Source.source SymbolPos.stopper (Scan.bulk (fn xs => scan (get_lex ()) xs)) |
394 (Option.map (rpair recover) do_recover); |
394 (Option.map (rpair recover) do_recover); |
395 |
395 |
396 fun source do_recover get_lex pos src = |
396 fun source do_recover get_lex pos src = |
397 SymbolPos.source pos src |
397 SymbolPos.source pos src |