diff options
| author | Graydon Hoare <[email protected]> | 2010-09-29 17:22:07 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-09-29 17:22:13 -0700 |
| commit | b970563fe3f36853250f4cef65a8425431789e8b (patch) | |
| tree | c09d7d39a46419c24ea88164ee047c10ebd7da39 /src/comp/front/lexer.rs | |
| parent | Allow tag recursion through vectors as well as boxes (diff) | |
| download | rust-b970563fe3f36853250f4cef65a8425431789e8b.tar.xz rust-b970563fe3f36853250f4cef65a8425431789e8b.zip | |
Patchwork of attempted fixes to effect system and gc system; eventually give up and disable it entirely in the runtime. Will need extensive reworking.
Diffstat (limited to 'src/comp/front/lexer.rs')
| -rw-r--r-- | src/comp/front/lexer.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/comp/front/lexer.rs b/src/comp/front/lexer.rs index d058db4a..f38f5024 100644 --- a/src/comp/front/lexer.rs +++ b/src/comp/front/lexer.rs @@ -9,8 +9,8 @@ state type reader = state obj { fn is_eof() -> bool; fn curr() -> char; fn next() -> char; - state fn bump(); - state fn mark(); + io fn bump(); + fn mark(); fn get_filename() -> str; fn get_mark_pos() -> common.pos; fn get_curr_pos() -> common.pos; @@ -55,7 +55,7 @@ fn new_reader(stdio_reader rdr, str filename) -> reader ret n; } - state fn bump() { + io fn bump() { c = n; if (c == (-1) as char) { @@ -72,7 +72,7 @@ fn new_reader(stdio_reader rdr, str filename) -> reader n = rdr.getc() as char; } - state fn mark() { + fn mark() { mark_line = line; mark_col = col; } @@ -243,14 +243,14 @@ fn is_whitespace(char c) -> bool { ret c == ' ' || c == '\t' || c == '\r' || c == '\n'; } -state fn consume_any_whitespace(reader rdr) { +io fn consume_any_whitespace(reader rdr) { while (is_whitespace(rdr.curr())) { rdr.bump(); } be consume_any_line_comment(rdr); } -state fn consume_any_line_comment(reader rdr) { +io fn consume_any_line_comment(reader rdr) { if (rdr.curr() == '/') { alt (rdr.next()) { case ('/') { @@ -273,7 +273,7 @@ state fn consume_any_line_comment(reader rdr) { } -state fn consume_block_comment(reader rdr) { +io fn consume_block_comment(reader rdr) { let int level = 1; while (level > 0) { if (rdr.curr() == '/' && rdr.next() == '*') { @@ -294,7 +294,7 @@ state fn consume_block_comment(reader rdr) { be consume_any_whitespace(rdr); } -state fn next_token(reader rdr) -> token.token { +io fn next_token(reader rdr) -> token.token { auto accum_str = ""; auto accum_int = 0; @@ -355,7 +355,7 @@ state fn next_token(reader rdr) -> token.token { ret token.LIT_INT(accum_int); } - state fn binop(reader rdr, token.binop op) -> token.token { + io fn binop(reader rdr, token.binop op) -> token.token { rdr.bump(); if (rdr.next() == '=') { rdr.bump(); |