diff --git a/asm.js b/asm.js index 55165e2..b58bca9 100644 --- a/asm.js +++ b/asm.js @@ -280,15 +280,14 @@ class Parser { } integer(token) { - let base; + let base, regex; switch (token.slice(-1)) { - case "b": base = 2; break; - case "o": base = 8; break; - case "h": base = 16; break; - default: base = 10; break; + case "b": base = 2; regex = /^-?[01]+b$/; break; + case "o": base = 8; regex = /^-?[0-7]+o$/; break; + case "h": base = 16; regex = /^-?[0-9A-F]+h$/; break; + default: base = 10; regex = /^-?[0-9]+d?$/; break; } - const x = parseInt(token, base); - return Number.isNaN(x) ? null : x; + return regex.test(token) ? parseInt(token, base) : null; } translate_code(token) {