aboutsummaryrefslogtreecommitdiff
path: root/src/comp
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-12-09 17:11:05 -0800
committerGraydon Hoare <[email protected]>2010-12-09 17:11:05 -0800
commit8383b1c4353df6690b55a70b198ea7e0511e9b3b (patch)
tree040872293afc482851c0d0119a21be809ccf3bf1 /src/comp
parentUn-XFAIL lazy-and-or.rs and operator-associativity.rs. (diff)
downloadrust-8383b1c4353df6690b55a70b198ea7e0511e9b3b.tar.xz
rust-8383b1c4353df6690b55a70b198ea7e0511e9b3b.zip
Fix token span tracking in lexer.
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/front/lexer.rs10
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 == '_') {