diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-07-25 16:23:32 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-07-25 16:46:08 +0200 |
| commit | dca67f95cb98fa54192ba6a136c32d4fab51807b (patch) | |
| tree | 6bba0f8131a885d1b0fd2f46baa283d6ee1a5831 /src/comp/syntax/parse/parser.rs | |
| parent | e949aab10ae69d671fe1fc315c12f04b2674d969 (diff) | |
| download | rust-dca67f95cb98fa54192ba6a136c32d4fab51807b.tar.gz rust-dca67f95cb98fa54192ba6a136c32d4fab51807b.zip | |
Make the lexer slightly less stateful
Diffstat (limited to 'src/comp/syntax/parse/parser.rs')
| -rw-r--r-- | src/comp/syntax/parse/parser.rs | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index fc1f40c3017..5e2e89a3dce 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -90,8 +90,9 @@ fn new_parser(parse_sess sess, ast::crate_cfg cfg, lexer::reader rdr, // + ":" + common::istr(lo.line as int); last_lo = lo; - tok = lexer::next_token(rdr); - lo = rdr.get_mark_chpos(); + auto next = lexer::next_token(rdr); + tok = next._0; + lo = next._1; hi = rdr.get_chpos(); } fn fatal(str m) -> ! { @@ -122,11 +123,9 @@ fn new_parser(parse_sess sess, ast::crate_cfg cfg, lexer::reader rdr, fn get_sess() -> parse_sess { ret sess; } } - // Make sure npos points at first actual token: - lexer::consume_whitespace_and_comments(rdr); - auto npos = rdr.get_chpos(); - ret stdio_parser(sess, cfg, ftype, lexer::next_token(rdr), - npos, npos, npos, UNRESTRICTED, rdr, + auto tok0 = lexer::next_token(rdr); + ret stdio_parser(sess, cfg, ftype, tok0._0, + tok0._1, tok0._1, tok0._1, UNRESTRICTED, rdr, prec_table(), bad_expr_word_table()); } @@ -693,13 +692,13 @@ fn parse_path(&parser p) -> ast::path { case (token::IDENT(?i, _)) { hi = p.get_hi_pos(); ids += ~[p.get_str(i)]; + hi = p.get_hi_pos(); p.bump(); if (p.peek() == token::MOD_SEP) { p.bump(); } else { break; } } case (_) { break; } } } - hi = p.get_hi_pos(); ret spanned(lo, hi, rec(global=global, idents=ids, types=~[])); } |
