diff options
| author | Graydon Hoare <[email protected]> | 2010-12-09 17:11:05 -0800 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-12-09 17:11:05 -0800 |
| commit | 8383b1c4353df6690b55a70b198ea7e0511e9b3b (patch) | |
| tree | 040872293afc482851c0d0119a21be809ccf3bf1 /src/comp | |
| parent | Un-XFAIL lazy-and-or.rs and operator-associativity.rs. (diff) | |
| download | rust-8383b1c4353df6690b55a70b198ea7e0511e9b3b.tar.xz rust-8383b1c4353df6690b55a70b198ea7e0511e9b3b.zip | |
Fix token span tracking in lexer.
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/front/lexer.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/comp/front/lexer.rs b/src/comp/front/lexer.rs index 42a5e610..07efe212 100644 --- a/src/comp/front/lexer.rs +++ b/src/comp/front/lexer.rs @@ -56,15 +56,18 @@ fn new_reader(stdio_reader rdr, str filename) -> reader } impure fn bump() { + + let char prev = c; + c = n; if (c == (-1) as char) { ret; } - if (c == '\n') { + if (prev == '\n') { line += 1u; - col = 1u; + col = 0u; } else { col += 1u; } @@ -189,7 +192,7 @@ fn new_reader(stdio_reader rdr, str filename) -> reader keywords.insert("f64", token.MACH(common.ty_f64)); ret reader(rdr, filename, rdr.getc() as char, rdr.getc() as char, - 1u, 1u, 1u, 1u, keywords, reserved); + 1u, 0u, 1u, 0u, keywords, reserved); } @@ -403,6 +406,7 @@ impure fn next_token(reader rdr) -> token.token { if (rdr.is_eof()) { ret token.EOF; } + rdr.mark(); auto c = rdr.curr(); if (is_alpha(c) || c == '_') { |