Make tt lexers duplicatible.
This commit is contained in:
parent
2f8be7dcbb
commit
d03c04b6ea
@ -4,7 +4,7 @@ import diagnostic;
|
||||
import ast::{tt_delim,tt_flat};
|
||||
|
||||
export reader, string_reader, new_string_reader, is_whitespace;
|
||||
export tt_reader, new_tt_reader;
|
||||
export tt_reader, new_tt_reader, dup_tt_reader;
|
||||
export nextch, is_eof, bump, get_str_from;
|
||||
export string_reader_as_reader, tt_reader_as_reader;
|
||||
|
||||
@ -49,6 +49,22 @@ fn new_tt_reader(span_diagnostic: diagnostic::span_handler,
|
||||
ret r;
|
||||
}
|
||||
|
||||
pure fn dup_tt_frame(&&f: tt_frame) -> tt_frame {
|
||||
@{readme: f.readme, mut idx: f.idx,
|
||||
up: alt f.up {
|
||||
tt_frame_up(o_f) {
|
||||
tt_frame_up(option::map(o_f, dup_tt_frame))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pure fn dup_tt_reader(&&r: tt_reader) -> tt_reader {
|
||||
@{span_diagnostic: r.span_diagnostic, interner: r.interner,
|
||||
mut cur: dup_tt_frame(r.cur),
|
||||
mut cur_tok: r.cur_tok, mut cur_chpos: r.cur_chpos}
|
||||
}
|
||||
|
||||
type string_reader = @{
|
||||
span_diagnostic: diagnostic::span_handler,
|
||||
src: @str,
|
||||
|
Loading…
x
Reference in New Issue
Block a user