Merge branch 'master' into harmony

Conflicts:
	lib/compress.js
This commit is contained in:
Richard van Velzen
2015-10-12 08:52:34 +02:00
15 changed files with 407 additions and 138 deletions

View File

@@ -216,7 +216,7 @@ function is_token(token, type, val) {
var EX_EOF = {};
function tokenizer($TEXT, filename, html5_comments) {
function tokenizer($TEXT, filename, html5_comments, shebang) {
var S = {
text : $TEXT,
@@ -341,7 +341,11 @@ function tokenizer($TEXT, filename, html5_comments) {
if (prefix) num = prefix + num;
var valid = parse_js_number(num);
if (!isNaN(valid)) {
return token("num", valid);
var tok = token("num", valid);
if (num.indexOf('.') >= 0) {
tok.literal = num;
}
return tok;
} else {
parse_error("Invalid syntax: " + num);
}
@@ -592,6 +596,13 @@ function tokenizer($TEXT, filename, html5_comments) {
if (PUNC_CHARS(ch)) return token("punc", next());
if (OPERATOR_CHARS(ch)) return read_operator();
if (code == 92 || is_identifier_start(code)) return read_word();
if (shebang) {
if (S.pos == 0 && looking_at("#!")) {
forward(2);
return skip_line_comment("comment5");
}
}
parse_error("Unexpected character '" + ch + "'");
};
@@ -664,12 +675,13 @@ function parse($TEXT, options) {
expression : false,
html5_comments : true,
bare_returns : false,
shebang : true,
});
var S = {
input : (typeof $TEXT == "string"
? tokenizer($TEXT, options.filename,
options.html5_comments)
options.html5_comments, options.shebang)
: $TEXT),
token : null,
prev : null,
@@ -1300,7 +1312,7 @@ function parse($TEXT, options) {
ret = _make_symbol(AST_SymbolRef);
break;
case "num":
ret = new AST_Number({ start: tok, end: tok, value: tok.value });
ret = new AST_Number({ start: tok, end: tok, value: tok.value, literal: tok.literal });
break;
case "string":
ret = new AST_String({