1
Fork 0

field renaming

This commit is contained in:
John Clements 2013-03-12 11:37:31 -07:00
parent 706ed6dd53
commit 2b07f0fb00

View file

@ -26,7 +26,7 @@ use core::vec;
`~` */
///an unzipping of `token_tree`s
struct TtFrame {
readme: @mut ~[ast::token_tree],
forest: @mut ~[ast::token_tree],
idx: uint,
dotdotdoted: bool,
sep: Option<Token>,
@ -37,7 +37,7 @@ pub struct TtReader {
sp_diag: @span_handler,
interner: @ident_interner,
// the unzipped tree:
cur: @mut TtFrame,
stack: @mut TtFrame,
/* for MBE-style macro transcription */
interpolations: LinearMap<ident, @named_match>,
repeat_idx: ~[uint],
@ -58,8 +58,8 @@ pub fn new_tt_reader(sp_diag: @span_handler,
let r = @mut TtReader {
sp_diag: sp_diag,
interner: itr,
cur: @mut TtFrame {
readme: @mut src,
stack: @mut TtFrame {
forest: @mut src,
idx: 0u,
dotdotdoted: false,
sep: None,
@ -81,7 +81,7 @@ pub fn new_tt_reader(sp_diag: @span_handler,
fn dup_tt_frame(f: @mut TtFrame) -> @mut TtFrame {
@mut TtFrame {
readme: @mut (copy *f.readme),
forest: @mut (copy *f.forest),
idx: f.idx,
dotdotdoted: f.dotdotdoted,
sep: copy f.sep,
@ -96,7 +96,7 @@ pub fn dup_tt_reader(r: @mut TtReader) -> @mut TtReader {
@mut TtReader {
sp_diag: r.sp_diag,
interner: r.interner,
cur: dup_tt_frame(r.cur),
stack: dup_tt_frame(r.stack),
interpolations: r.interpolations,
repeat_idx: copy r.repeat_idx,
repeat_len: copy r.repeat_len,
@ -167,7 +167,8 @@ fn lockstep_iter_size(t: token_tree, r: &mut TtReader) -> lis {
}
}
// return the next token from the TtReader.
// EFFECT: advances the reader's token field
pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
let ret_val = TokenAndSpan {
tok: copy r.cur_tok,
@ -175,37 +176,37 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
};
loop {
{
let cur = &mut *r.cur;
let readme = &mut *cur.readme;
if cur.idx < readme.len() {
let stack = &mut *r.stack;
let forest = &mut *stack.forest;
if stack.idx < forest.len() {
break;
}
}
/* done with this set; pop or repeat? */
if ! r.cur.dotdotdoted
if ! r.stack.dotdotdoted
|| { *r.repeat_idx.last() == *r.repeat_len.last() - 1 } {
match r.cur.up {
match r.stack.up {
None => {
r.cur_tok = EOF;
return ret_val;
}
Some(tt_f) => {
if r.cur.dotdotdoted {
if r.stack.dotdotdoted {
r.repeat_idx.pop();
r.repeat_len.pop();
}
r.cur = tt_f;
r.cur.idx += 1u;
r.stack = tt_f;
r.stack.idx += 1u;
}
}
} else { /* repeat */
r.cur.idx = 0u;
r.stack.idx = 0u;
r.repeat_idx[r.repeat_idx.len() - 1u] += 1u;
match r.cur.sep {
match r.stack.sep {
Some(copy tk) => {
r.cur_tok = tk; /* repeat same span, I guess */
return ret_val;
@ -216,21 +217,21 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
}
loop { /* because it's easiest, this handles `tt_delim` not starting
with a `tt_tok`, even though it won't happen */
match r.cur.readme[r.cur.idx] {
match r.stack.forest[r.stack.idx] {
tt_delim(copy tts) => {
r.cur = @mut TtFrame {
readme: @mut tts,
r.stack = @mut TtFrame {
forest: @mut tts,
idx: 0u,
dotdotdoted: false,
sep: None,
up: option::Some(r.cur)
up: option::Some(r.stack)
};
// if this could be 0-length, we'd need to potentially recur here
}
tt_tok(sp, copy tok) => {
r.cur_span = sp;
r.cur_tok = tok;
r.cur.idx += 1u;
r.stack.idx += 1u;
return ret_val;
}
tt_seq(sp, copy tts, copy sep, zerok) => {
@ -256,17 +257,17 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
once");
}
r.cur.idx += 1u;
r.stack.idx += 1u;
return tt_next_token(r);
} else {
r.repeat_len.push(len);
r.repeat_idx.push(0u);
r.cur = @mut TtFrame {
readme: @mut tts,
r.stack = @mut TtFrame {
forest: @mut tts,
idx: 0u,
dotdotdoted: true,
sep: sep,
up: Some(r.cur)
up: Some(r.stack)
};
}
}
@ -280,13 +281,13 @@ pub fn tt_next_token(r: &mut TtReader) -> TokenAndSpan {
(b) we actually can, since it's a token. */
matched_nonterminal(nt_ident(sn,b)) => {
r.cur_span = sp; r.cur_tok = IDENT(sn,b);
r.cur.idx += 1u;
r.stack.idx += 1u;
return ret_val;
}
matched_nonterminal(ref other_whole_nt) => {
r.cur_span = sp;
r.cur_tok = INTERPOLATED(copy *other_whole_nt);
r.cur.idx += 1u;
r.stack.idx += 1u;
return ret_val;
}
matched_seq(*) => {