Octal and binary literals are more appropriately converted to hex

This commit is contained in:
Michael Ficarra 2012-03-27 21:31:48 -04:00
parent 6a88ce7d1e
commit 22db7ae85a
2 changed files with 8 additions and 8 deletions

View File

@ -122,11 +122,11 @@
this.error("octal literal '" + number + "' must be prefixed with '0o'"); this.error("octal literal '" + number + "' must be prefixed with '0o'");
} }
lexedLength = number.length; lexedLength = number.length;
if (octalLiteral = /0o([0-7]+)/.exec(number)) { if (octalLiteral = /^0o([0-7]+)/.exec(number)) {
number = (parseInt(octalLiteral[1], 8)).toString(); number = '0x' + (parseInt(octalLiteral[1], 8)).toString(16);
} }
if (binaryLiteral = /0b([01]+)/.exec(number)) { if (binaryLiteral = /^0b([01]+)/.exec(number)) {
number = (parseInt(binaryLiteral[1], 2)).toString(); number = '0x' + (parseInt(binaryLiteral[1], 2)).toString(16);
} }
this.token('NUMBER', number); this.token('NUMBER', number);
return lexedLength; return lexedLength;

View File

@ -142,10 +142,10 @@ exports.Lexer = class Lexer
else if /^0\d+/.test number else if /^0\d+/.test number
@error "octal literal '#{number}' must be prefixed with '0o'" @error "octal literal '#{number}' must be prefixed with '0o'"
lexedLength = number.length lexedLength = number.length
if octalLiteral = /0o([0-7]+)/.exec number if octalLiteral = /^0o([0-7]+)/.exec number
number = (parseInt octalLiteral[1], 8).toString() number = '0x' + (parseInt octalLiteral[1], 8).toString 16
if binaryLiteral = /0b([01]+)/.exec number if binaryLiteral = /^0b([01]+)/.exec number
number = (parseInt binaryLiteral[1], 2).toString() number = '0x' + (parseInt binaryLiteral[1], 2).toString 16
@token 'NUMBER', number @token 'NUMBER', number
lexedLength lexedLength