Skip to content

Commit 16afefd

Browse files
authored
Some refactorings to the ISLE parser (#5693)
* Use is_ascii_digit and is_ascii_hexdigit in the ISLE lexer * Use range pattern in ISLE lexer * Use a couple of shorthands in the ISLE parser * Use parse_ident instead of symbol + str_to_ident * Introduce token eating api This is a non-fatal version of the take api * Rename take to expect and add expect_ prefixes to several methods * Review comments
1 parent e9c0562 commit 16afefd

File tree

2 files changed

+83
-113
lines changed

2 files changed

+83
-113
lines changed

cranelift/isle/isle/src/lexer.rs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ impl<'a> Lexer<'a> {
232232
debug_assert!(!s.is_empty());
233233
Ok(Some((start_pos, Token::Symbol(s.to_string()))))
234234
}
235-
c if (c >= b'0' && c <= b'9') || c == b'-' => {
235+
c @ (b'0'..=b'9' | b'-') => {
236236
let start_pos = self.pos();
237237
let neg = if c == b'-' {
238238
self.advance_pos();
@@ -258,16 +258,8 @@ impl<'a> Lexer<'a> {
258258
// string-to-integer conversion.
259259
let mut s = vec![];
260260
while self.pos.offset < self.buf.len()
261-
&& ((radix == 10
262-
&& self.buf[self.pos.offset] >= b'0'
263-
&& self.buf[self.pos.offset] <= b'9')
264-
|| (radix == 16
265-
&& ((self.buf[self.pos.offset] >= b'0'
266-
&& self.buf[self.pos.offset] <= b'9')
267-
|| (self.buf[self.pos.offset] >= b'a'
268-
&& self.buf[self.pos.offset] <= b'f')
269-
|| (self.buf[self.pos.offset] >= b'A'
270-
&& self.buf[self.pos.offset] <= b'F')))
261+
&& ((radix == 10 && self.buf[self.pos.offset].is_ascii_digit())
262+
|| (radix == 16 && self.buf[self.pos.offset].is_ascii_hexdigit())
271263
|| self.buf[self.pos.offset] == b'_')
272264
{
273265
if self.buf[self.pos.offset] != b'_' {

0 commit comments

Comments
 (0)