diff options
| author | Matt Carberry <carberry.matt@gmail.com> | 2013-11-02 21:26:29 -0700 |
|---|---|---|
| committer | Matt Carberry <carberry.matt@gmail.com> | 2013-11-02 21:26:29 -0700 |
| commit | 519b86b8a810e12fe4247c56ffb894579c6b22e7 (patch) | |
| tree | 837c99dc2a3ca5afffe7371fb0059c2aa445bdb3 /src/libsyntax/parse | |
| parent | e0c01ca15383513eb2981b6ee532c33ea546b4a8 (diff) | |
| download | rust-519b86b8a810e12fe4247c56ffb894579c6b22e7.tar.gz rust-519b86b8a810e12fe4247c56ffb894579c6b22e7.zip | |
Added octal literal support.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/lexer.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libsyntax/parse/lexer.rs b/src/libsyntax/parse/lexer.rs index 7ac999c46a4..f75b17adeed 100644 --- a/src/libsyntax/parse/lexer.rs +++ b/src/libsyntax/parse/lexer.rs @@ -276,6 +276,11 @@ fn hex_digit_val(c: char) -> int { fail!(); } +fn oct_digit_val(c: char) -> int { + if in_range(c, '0', '7') { return (c as int) - ('0' as int); } + fail!(); +} + fn bin_digit_value(c: char) -> int { if c == '0' { return 0; } return 1; } pub fn is_whitespace(c: char) -> bool { @@ -293,6 +298,8 @@ fn is_hex_digit(c: char) -> bool { in_range(c, 'A', 'F'); } +fn is_oct_digit(c: char) -> bool { return in_range(c, '0', '7'); } + fn is_bin_digit(c: char) -> bool { return c == '0' || c == '1'; } // EFFECT: eats whitespace and comments. @@ -464,6 +471,10 @@ fn scan_number(c: char, rdr: @mut StringReader) -> token::Token { bump(rdr); bump(rdr); base = 16u; + } else if c == '0' && n == 'o' { + bump(rdr); + bump(rdr); + base = 8u; } else if c == '0' && n == 'b' { bump(rdr); bump(rdr); @@ -529,6 +540,8 @@ fn scan_number(c: char, rdr: @mut StringReader) -> token::Token { match base { 16u => fatal_span(rdr, start_bpos, rdr.last_pos, ~"hexadecimal float literal is not supported"), + 8u => fatal_span(rdr, start_bpos, rdr.last_pos, + ~"octal float literal is not supported"), 2u => fatal_span(rdr, start_bpos, rdr.last_pos, ~"binary float literal is not supported"), _ => () |
