|
|
|
@ -277,8 +277,13 @@ impl Lexer {
|
|
|
|
|
Some('x') => self.read_int_literal(16),
|
|
|
|
|
Some('o') => self.read_int_literal(8),
|
|
|
|
|
Some('b') => self.read_int_literal(2),
|
|
|
|
|
Some(c) => self.syntax_error(format!("Unexpected character '{}'", c)),
|
|
|
|
|
None => self.syntax_error(String::from("Unexpected end-of-file")),
|
|
|
|
|
Some(c @ '0'..='9') => self.syntax_error(String::from("Decimal literals must not start with a 0")),
|
|
|
|
|
Some(c) if c.is_ident_part() => self.syntax_error(format!("Unexpected character '{}'", c)),
|
|
|
|
|
_ => {
|
|
|
|
|
// it wasn't a prefixed int literal at all, just a single 0
|
|
|
|
|
self.cursor.prev();
|
|
|
|
|
self.token_ok(token::Kind::IntLiteral)
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|