Reformat. Issue #855

This commit is contained in:
Brian Anderson 2011-09-02 15:34:58 -07:00
parent b5f9053423
commit 5c49e4f4e9
194 changed files with 5106 additions and 5789 deletions

View file

@ -19,15 +19,14 @@ tag eval_mode { mode_depend; mode_parse; }
type ctx =
@{p: parser,
mode: eval_mode,
mutable deps: [istr],
mutable deps: [str],
sess: parser::parse_sess,
mutable chpos: uint,
mutable byte_pos: uint,
cfg: ast::crate_cfg};
fn eval_crate_directives(cx: ctx, cdirs: &[@ast::crate_directive],
prefix: &istr,
view_items: &mutable [@ast::view_item],
prefix: &str, view_items: &mutable [@ast::view_item],
items: &mutable [@ast::item]) {
for sub_cdir: @ast::crate_directive in cdirs {
eval_crate_directive(cx, sub_cdir, prefix, view_items, items);
@ -35,34 +34,27 @@ fn eval_crate_directives(cx: ctx, cdirs: &[@ast::crate_directive],
}
fn eval_crate_directives_to_mod(cx: ctx, cdirs: &[@ast::crate_directive],
prefix: &istr) -> ast::_mod {
prefix: &str) -> ast::_mod {
let view_items: [@ast::view_item] = [];
let items: [@ast::item] = [];
eval_crate_directives(cx, cdirs, prefix, view_items, items);
ret {view_items: view_items, items: items};
}
fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &istr,
fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &str,
view_items: &mutable [@ast::view_item],
items: &mutable [@ast::item]) {
alt cdir.node {
ast::cdir_src_mod(id, file_opt, attrs) {
let file_path = id + ~".rs";
alt file_opt {
some(f) {
file_path = f;
}
none. { }
}
let full_path = if std::fs::path_is_absolute(file_path) {
file_path
} else {
prefix + std::fs::path_sep() + file_path
};
let file_path = id + ".rs";
alt file_opt { some(f) { file_path = f; } none. { } }
let full_path =
if std::fs::path_is_absolute(file_path) {
file_path
} else { prefix + std::fs::path_sep() + file_path };
if cx.mode == mode_depend { cx.deps += [full_path]; ret; }
let p0 =
new_parser_from_file(cx.sess, cx.cfg,
full_path, cx.chpos,
new_parser_from_file(cx.sess, cx.cfg, full_path, cx.chpos,
cx.byte_pos, SOURCE_FILE);
let inner_attrs = parse_inner_attrs_and_next(p0);
let mod_attrs = attrs + inner_attrs.inner;
@ -79,18 +71,11 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &istr,
}
ast::cdir_dir_mod(id, dir_opt, cdirs, attrs) {
let path = id;
alt dir_opt {
some(d) {
path = d;
}
none. { }
}
alt dir_opt { some(d) { path = d; } none. { } }
let full_path =
if std::fs::path_is_absolute(path) {
path
} else {
prefix + std::fs::path_sep() + path
};
} else { prefix + std::fs::path_sep() + path };
let m0 = eval_crate_directives_to_mod(cx, cdirs, full_path);
let i =
@{ident: id,

View file

@ -19,29 +19,29 @@ type reader =
fn next() -> char;
fn init();
fn bump();
fn get_str_from(uint) -> istr;
fn get_interner() -> @interner::interner<istr>;
fn get_str_from(uint) -> str;
fn get_interner() -> @interner::interner<str>;
fn get_chpos() -> uint;
fn get_byte_pos() -> uint;
fn get_col() -> uint;
fn get_filemap() -> codemap::filemap;
fn err(&istr);
fn err(&str);
};
fn new_reader(cm: &codemap::codemap, src: &istr, filemap: codemap::filemap,
itr: @interner::interner<istr>) -> reader {
fn new_reader(cm: &codemap::codemap, src: &str, filemap: codemap::filemap,
itr: @interner::interner<str>) -> reader {
obj reader(cm: codemap::codemap,
src: istr,
src: str,
len: uint,
mutable col: uint,
mutable pos: uint,
mutable ch: char,
mutable chpos: uint,
mutable strs: [istr],
mutable strs: [str],
fm: codemap::filemap,
itr: @interner::interner<istr>) {
itr: @interner::interner<str>) {
fn is_eof() -> bool { ret ch == -1 as char; }
fn get_str_from(start: uint) -> istr {
fn get_str_from(start: uint) -> str {
// I'm pretty skeptical about this subtraction. What if there's a
// multi-byte character before the mark?
ret str::slice(src, start - 1u, pos - 1u);
@ -74,16 +74,14 @@ fn new_reader(cm: &codemap::codemap, src: &istr, filemap: codemap::filemap,
ch = next.ch;
} else { ch = -1 as char; }
}
fn get_interner() -> @interner::interner<istr> { ret itr; }
fn get_interner() -> @interner::interner<str> { ret itr; }
fn get_col() -> uint { ret col; }
fn get_filemap() -> codemap::filemap { ret fm; }
fn err(m: &istr) {
codemap::emit_error(
some(ast_util::mk_sp(chpos, chpos)),
m, cm);
fn err(m: &str) {
codemap::emit_error(some(ast_util::mk_sp(chpos, chpos)), m, cm);
}
}
let strs: [istr] = [];
let strs: [str] = [];
let rd =
reader(cm, src, str::byte_len(src), 0u, 0u, -1 as char,
filemap.start_pos.ch, strs, filemap, itr);
@ -148,9 +146,7 @@ fn consume_any_line_comment(rdr: &reader) {
fn consume_block_comment(rdr: &reader) {
let level: int = 1;
while level > 0 {
if rdr.is_eof() {
rdr.err(~"unterminated block comment"); fail;
}
if rdr.is_eof() { rdr.err("unterminated block comment"); fail; }
if rdr.curr() == '/' && rdr.next() == '*' {
rdr.bump();
rdr.bump();
@ -168,15 +164,15 @@ fn consume_block_comment(rdr: &reader) {
be consume_whitespace_and_comments(rdr);
}
fn digits_to_string(s: &istr) -> int {
fn digits_to_string(s: &str) -> int {
let accum_int: int = 0;
for c: u8 in s { accum_int *= 10; accum_int += dec_digit_val(c as char); }
ret accum_int;
}
fn scan_exponent(rdr: &reader) -> option::t<istr> {
fn scan_exponent(rdr: &reader) -> option::t<str> {
let c = rdr.curr();
let rslt = ~"";
let rslt = "";
if c == 'e' || c == 'E' {
rslt += str::unsafe_from_bytes([c as u8]);
rdr.bump();
@ -188,13 +184,13 @@ fn scan_exponent(rdr: &reader) -> option::t<istr> {
let exponent = scan_dec_digits(rdr);
if str::byte_len(exponent) > 0u {
ret some(rslt + exponent);
} else { rdr.err(~"scan_exponent: bad fp literal"); fail; }
} else { ret none::<istr>; }
} else { rdr.err("scan_exponent: bad fp literal"); fail; }
} else { ret none::<str>; }
}
fn scan_dec_digits(rdr: &reader) -> istr {
fn scan_dec_digits(rdr: &reader) -> str {
let c = rdr.curr();
let rslt: istr = ~"";
let rslt: str = "";
while is_dec_digit(c) || c == '_' {
if c != '_' { rslt += str::unsafe_from_bytes([c as u8]); }
rdr.bump();
@ -205,7 +201,7 @@ fn scan_dec_digits(rdr: &reader) -> istr {
fn scan_number(c: char, rdr: &reader) -> token::token {
let accum_int = 0;
let dec_str: istr = ~"";
let dec_str: str = "";
let is_dec_integer: bool = false;
let n = rdr.next();
if c == '0' && n == 'x' {
@ -276,7 +272,7 @@ fn scan_number(c: char, rdr: &reader) -> token::token {
rdr.bump();
let dec_part = scan_dec_digits(rdr);
let float_str = dec_str + ~"." + dec_part;
let float_str = dec_str + "." + dec_part;
c = rdr.curr();
let exponent_str = scan_exponent(rdr);
alt exponent_str { some(s) { float_str += s; } none. { } }
@ -302,17 +298,15 @@ fn scan_number(c: char, rdr: &reader) -> token::token {
}
} else {
ret token::LIT_FLOAT(interner::intern::<istr>(
*rdr.get_interner(),
float_str));
ret token::LIT_FLOAT(interner::intern::<str>(*rdr.get_interner(),
float_str));
}
}
let maybe_exponent = scan_exponent(rdr);
alt maybe_exponent {
some(s) {
ret token::LIT_FLOAT(interner::intern::<istr>(
*rdr.get_interner(),
dec_str + s));
ret token::LIT_FLOAT(interner::intern::<str>(*rdr.get_interner(),
dec_str + s));
}
none. { ret token::LIT_INT(accum_int); }
}
@ -324,8 +318,7 @@ fn scan_numeric_escape(rdr: &reader, n_hex_digits: uint) -> char {
let n = rdr.curr();
rdr.bump();
if !is_hex_digit(n) {
rdr.err(
#fmt["illegal numeric character escape: %d", n as int]);
rdr.err(#fmt["illegal numeric character escape: %d", n as int]);
fail;
}
accum_int *= 16;
@ -344,7 +337,7 @@ fn next_token(rdr: &reader) -> {tok: token::token, chpos: uint, bpos: uint} {
}
fn next_token_inner(rdr: &reader) -> token::token {
let accum_str = ~"";
let accum_str = "";
let c = rdr.curr();
if is_alpha(c) || c == '_' {
while is_alnum(c) || c == '_' {
@ -352,11 +345,10 @@ fn next_token_inner(rdr: &reader) -> token::token {
rdr.bump();
c = rdr.curr();
}
if str::eq(accum_str, ~"_") { ret token::UNDERSCORE; }
if str::eq(accum_str, "_") { ret token::UNDERSCORE; }
let is_mod_name = c == ':' && rdr.next() == ':';
ret token::IDENT(interner::intern::<istr>(
*rdr.get_interner(),
accum_str), is_mod_name);
ret token::IDENT(interner::intern::<str>(*rdr.get_interner(),
accum_str), is_mod_name);
}
if is_dec_digit(c) { ret scan_number(c, rdr); }
fn binop(rdr: &reader, op: token::binop) -> token::token {
@ -369,6 +361,7 @@ fn next_token_inner(rdr: &reader) -> token::token {
alt c {
// One-byte tokens.
'?' {
rdr.bump();
@ -408,6 +401,7 @@ fn next_token_inner(rdr: &reader) -> token::token {
}
// Multi-byte tokens.
'=' {
rdr.bump();
@ -468,15 +462,13 @@ fn next_token_inner(rdr: &reader) -> token::token {
'u' { c2 = scan_numeric_escape(rdr, 4u); }
'U' { c2 = scan_numeric_escape(rdr, 8u); }
c2 {
rdr.err(
#fmt["unknown character escape: %d",
c2 as int]);
rdr.err(#fmt["unknown character escape: %d", c2 as int]);
fail;
}
}
}
if rdr.curr() != '\'' {
rdr.err(~"unterminated character constant");
rdr.err("unterminated character constant");
fail;
}
rdr.bump(); // advance curr past token
@ -509,9 +501,7 @@ fn next_token_inner(rdr: &reader) -> token::token {
str::push_char(accum_str, scan_numeric_escape(rdr, 8u));
}
c2 {
rdr.err(
#fmt["unknown string escape: %d",
c2 as int]);
rdr.err(#fmt["unknown string escape: %d", c2 as int]);
fail;
}
}
@ -520,9 +510,8 @@ fn next_token_inner(rdr: &reader) -> token::token {
}
}
rdr.bump();
ret token::LIT_STR(interner::intern::<istr>(
*rdr.get_interner(),
accum_str));
ret token::LIT_STR(interner::intern::<str>(*rdr.get_interner(),
accum_str));
}
'-' {
if rdr.next() == '>' {
@ -549,11 +538,7 @@ fn next_token_inner(rdr: &reader) -> token::token {
'/' { ret binop(rdr, token::SLASH); }
'^' { ret binop(rdr, token::CARET); }
'%' { ret binop(rdr, token::PERCENT); }
c {
rdr.err(
#fmt["unkown start of token: %d", c as int]);
fail;
}
c { rdr.err(#fmt["unkown start of token: %d", c as int]); fail; }
}
}
@ -564,10 +549,10 @@ tag cmnt_style {
blank_line; // Just a manual blank line "\n\n", for layout
}
type cmnt = {style: cmnt_style, lines: [istr], pos: uint};
type cmnt = {style: cmnt_style, lines: [str], pos: uint};
fn read_to_eol(rdr: &reader) -> istr {
let val = ~"";
fn read_to_eol(rdr: &reader) -> str {
let val = "";
while rdr.curr() != '\n' && !rdr.is_eof() {
str::push_char(val, rdr.curr());
rdr.bump();
@ -576,7 +561,7 @@ fn read_to_eol(rdr: &reader) -> istr {
ret val;
}
fn read_one_line_comment(rdr: &reader) -> istr {
fn read_one_line_comment(rdr: &reader) -> str {
let val = read_to_eol(rdr);
assert (val[0] == '/' as u8 && val[1] == '/' as u8);
ret val;
@ -594,7 +579,7 @@ fn consume_non_eol_whitespace(rdr: &reader) {
fn push_blank_line_comment(rdr: &reader, comments: &mutable [cmnt]) {
log ">>> blank-line comment";
let v: [istr] = [];
let v: [str] = [];
comments += [{style: blank_line, lines: v, pos: rdr.get_chpos()}];
}
@ -611,7 +596,7 @@ fn consume_whitespace_counting_blank_lines(rdr: &reader,
fn read_line_comments(rdr: &reader, code_to_the_left: bool) -> cmnt {
log ">>> line comments";
let p = rdr.get_chpos();
let lines: [istr] = [];
let lines: [str] = [];
while rdr.curr() == '/' && rdr.next() == '/' {
let line = read_one_line_comment(rdr);
log line;
@ -624,52 +609,52 @@ fn read_line_comments(rdr: &reader, code_to_the_left: bool) -> cmnt {
pos: p};
}
fn all_whitespace(s: &istr, begin: uint, end: uint) -> bool {
fn all_whitespace(s: &str, begin: uint, end: uint) -> bool {
let i: uint = begin;
while i != end { if !is_whitespace(s[i] as char) { ret false; } i += 1u; }
ret true;
}
fn trim_whitespace_prefix_and_push_line(lines: &mutable [istr], s: &istr,
fn trim_whitespace_prefix_and_push_line(lines: &mutable [str], s: &str,
col: uint) {
let s1;
if all_whitespace(s, 0u, col) {
if col < str::byte_len(s) {
s1 = str::slice(s, col, str::byte_len(s));
} else { s1 = ~""; }
} else { s1 = ""; }
} else { s1 = s; }
log ~"pushing line: " + s1;
log "pushing line: " + s1;
lines += [s1];
}
fn read_block_comment(rdr: &reader, code_to_the_left: bool) -> cmnt {
log ">>> block comment";
let p = rdr.get_chpos();
let lines: [istr] = [];
let lines: [str] = [];
let col: uint = rdr.get_col();
rdr.bump();
rdr.bump();
let curr_line = ~"/*";
let curr_line = "/*";
let level: int = 1;
while level > 0 {
log #fmt["=== block comment level %d", level];
if rdr.is_eof() { rdr.err(~"unterminated block comment"); fail; }
if rdr.is_eof() { rdr.err("unterminated block comment"); fail; }
if rdr.curr() == '\n' {
trim_whitespace_prefix_and_push_line(lines, curr_line, col);
curr_line = ~"";
curr_line = "";
rdr.bump();
} else {
str::push_char(curr_line, rdr.curr());
if rdr.curr() == '/' && rdr.next() == '*' {
rdr.bump();
rdr.bump();
curr_line += ~"*";
curr_line += "*";
level += 1;
} else {
if rdr.curr() == '*' && rdr.next() == '/' {
rdr.bump();
rdr.bump();
curr_line += ~"/";
curr_line += "/";
level -= 1;
} else { rdr.bump(); }
}
@ -717,16 +702,14 @@ fn is_lit(t: &token::token) -> bool {
}
}
type lit = {lit: istr, pos: uint};
type lit = {lit: str, pos: uint};
fn gather_comments_and_literals(cm: &codemap::codemap, path: &istr,
fn gather_comments_and_literals(cm: &codemap::codemap, path: &str,
srdr: io::reader) ->
{cmnts: [cmnt], lits: [lit]} {
let src = str::unsafe_from_bytes(srdr.read_whole_stream());
let itr = @interner::mk::<istr>(str::hash, str::eq);
let rdr = new_reader(cm, src,
codemap::new_filemap(
path, 0u, 0u), itr);
let itr = @interner::mk::<str>(str::hash, str::eq);
let rdr = new_reader(cm, src, codemap::new_filemap(path, 0u, 0u), itr);
let comments: [cmnt] = [];
let literals: [lit] = [];
let first_read: bool = true;
@ -748,7 +731,7 @@ fn gather_comments_and_literals(cm: &codemap::codemap, path: &istr,
if is_lit(tok.tok) {
literals += [{lit: rdr.get_str_from(tok.bpos), pos: tok.chpos}];
}
log ~"tok: " + token::to_str(rdr, tok.tok);
log "tok: " + token::to_str(rdr, tok.tok);
first_read = false;
}
ret {cmnts: comments, lits: literals};

File diff suppressed because it is too large Load diff

View file

@ -84,62 +84,64 @@ tag token {
EOF;
}
fn binop_to_str(o: binop) -> istr {
fn binop_to_str(o: binop) -> str {
alt o {
PLUS. { ret ~"+"; }
MINUS. { ret ~"-"; }
STAR. { ret ~"*"; }
SLASH. { ret ~"/"; }
PERCENT. { ret ~"%"; }
CARET. { ret ~"^"; }
AND. { ret ~"&"; }
OR. { ret ~"|"; }
LSL. { ret ~"<<"; }
LSR. { ret ~">>"; }
ASR. { ret ~">>>"; }
PLUS. { ret "+"; }
MINUS. { ret "-"; }
STAR. { ret "*"; }
SLASH. { ret "/"; }
PERCENT. { ret "%"; }
CARET. { ret "^"; }
AND. { ret "&"; }
OR. { ret "|"; }
LSL. { ret "<<"; }
LSR. { ret ">>"; }
ASR. { ret ">>>"; }
}
}
fn to_str(r: lexer::reader, t: token) -> istr {
fn to_str(r: lexer::reader, t: token) -> str {
alt t {
EQ. { ret ~"="; }
LT. { ret ~"<"; }
LE. { ret ~"<="; }
EQEQ. { ret ~"=="; }
NE. { ret ~"!="; }
GE. { ret ~">="; }
GT. { ret ~">"; }
NOT. { ret ~"!"; }
TILDE. { ret ~"~"; }
OROR. { ret ~"||"; }
ANDAND. { ret ~"&&"; }
EQ. { ret "="; }
LT. { ret "<"; }
LE. { ret "<="; }
EQEQ. { ret "=="; }
NE. { ret "!="; }
GE. { ret ">="; }
GT. { ret ">"; }
NOT. { ret "!"; }
TILDE. { ret "~"; }
OROR. { ret "||"; }
ANDAND. { ret "&&"; }
BINOP(op) { ret binop_to_str(op); }
BINOPEQ(op) { ret binop_to_str(op) + ~"="; }
BINOPEQ(op) { ret binop_to_str(op) + "="; }
/* Structural symbols */
AT. {
ret ~"@";
ret "@";
}
DOT. { ret ~"."; }
ELLIPSIS. { ret ~"..."; }
COMMA. { ret ~","; }
SEMI. { ret ~";"; }
COLON. { ret ~":"; }
MOD_SEP. { ret ~"::"; }
QUES. { ret ~"?"; }
RARROW. { ret ~"->"; }
LARROW. { ret ~"<-"; }
DARROW. { ret ~"<->"; }
LPAREN. { ret ~"("; }
RPAREN. { ret ~")"; }
LBRACKET. { ret ~"["; }
RBRACKET. { ret ~"]"; }
LBRACE. { ret ~"{"; }
RBRACE. { ret ~"}"; }
POUND. { ret ~"#"; }
POUND_LBRACE. { ret ~"#{"; }
POUND_LT. { ret ~"#<"; }
DOT. { ret "."; }
ELLIPSIS. { ret "..."; }
COMMA. { ret ","; }
SEMI. { ret ";"; }
COLON. { ret ":"; }
MOD_SEP. { ret "::"; }
QUES. { ret "?"; }
RARROW. { ret "->"; }
LARROW. { ret "<-"; }
DARROW. { ret "<->"; }
LPAREN. { ret "("; }
RPAREN. { ret ")"; }
LBRACKET. { ret "["; }
RBRACKET. { ret "]"; }
LBRACE. { ret "{"; }
RBRACE. { ret "}"; }
POUND. { ret "#"; }
POUND_LBRACE. { ret "#{"; }
POUND_LT. { ret "#<"; }
/* Literals */
@ -148,39 +150,35 @@ fn to_str(r: lexer::reader, t: token) -> istr {
}
LIT_UINT(u) { ret uint::to_str(u, 10u); }
LIT_MACH_INT(tm, i) {
ret int::to_str(i, 10u) + ~"_" + ty_mach_to_str(tm);
ret int::to_str(i, 10u) + "_" + ty_mach_to_str(tm);
}
LIT_MACH_FLOAT(tm, s) {
ret interner::get::<istr>(
*r.get_interner(), s) + ~"_" +
ty_mach_to_str(tm);
}
LIT_FLOAT(s) {
ret interner::get::<istr>(*r.get_interner(), s);
ret interner::get::<str>(*r.get_interner(), s) + "_" +
ty_mach_to_str(tm);
}
LIT_FLOAT(s) { ret interner::get::<str>(*r.get_interner(), s); }
LIT_STR(s) { // FIXME: escape.
ret ~"\"" +
interner::get::<istr>(*r.get_interner(), s)
+ ~"\"";
ret "\"" + interner::get::<str>(*r.get_interner(), s) + "\"";
}
LIT_CHAR(c) {
// FIXME: escape.
let tmp = ~"'";
let tmp = "'";
str::push_char(tmp, c);
str::push_byte(tmp, '\'' as u8);
ret tmp;
}
LIT_BOOL(b) { if b { ret ~"true"; } else { ret ~"false"; } }
LIT_BOOL(b) { if b { ret "true"; } else { ret "false"; } }
/* Name components */
IDENT(s, _) {
ret interner::get::<istr>(*r.get_interner(), s);
ret interner::get::<str>(*r.get_interner(), s);
}
IDX(i) { ret ~"_" + int::to_str(i, 10u); }
UNDERSCORE. { ret ~"_"; }
BRACEQUOTE(_) { ret ~"<bracequote>"; }
EOF. { ret ~"<eof>"; }
IDX(i) { ret "_" + int::to_str(i, 10u); }
UNDERSCORE. { ret "_"; }
BRACEQUOTE(_) { ret "<bracequote>"; }
EOF. { ret "<eof>"; }
}
}