|
|
|
@ -189,8 +189,10 @@ fn integer_rad(rd: &mut PosReader, rad: u32) -> Result<Token, Err> {
|
|
|
|
|
let mut n = 0_i64; |
|
|
|
|
|
|
|
|
|
loop { |
|
|
|
|
match rd.next() { |
|
|
|
|
match rd.peek() { |
|
|
|
|
c if is_delim(c) => break, |
|
|
|
|
Some(c) if c.is_digit(rad) => { |
|
|
|
|
rd.next(); |
|
|
|
|
let cn = unsafe { text::radix(c) }.into(); |
|
|
|
|
n = |
|
|
|
|
n.checked_mul(rad.into()).ok_or_else(|| Err::Numb(rd.pos()))?; |
|
|
|
@ -200,7 +202,6 @@ fn integer_rad(rd: &mut PosReader, rad: u32) -> Result<Token, Err> {
|
|
|
|
|
n.checked_add(cn).ok_or_else(|| Err::Numb(rd.pos()))? |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
c if is_delim(c) => break, |
|
|
|
|
Some(c) => return Err(Err::Delim(rd.pos(), c)), |
|
|
|
|
None => unsafe { std::hint::unreachable_unchecked() }, |
|
|
|
|
} |
|
|
|
@ -232,11 +233,11 @@ fn symbol(rd: &mut PosReader, c: char) -> Result<Token, Err> {
|
|
|
|
|
|
|
|
|
|
loop { |
|
|
|
|
match rd.peek() { |
|
|
|
|
c if is_delim(c) => break, |
|
|
|
|
Some(c) if is_sym_subs(c) => { |
|
|
|
|
rd.next(); |
|
|
|
|
s.push(c); |
|
|
|
|
} |
|
|
|
|
c if is_delim(c) => break, |
|
|
|
|
Some(c) => return Err(Err::Delim(rd.pos(), c)), |
|
|
|
|
None => unsafe { std::hint::unreachable_unchecked() }, |
|
|
|
|
} |
|
|
|
|