Implement shebang support

This commit is contained in:
Anthony Van de Gejuchte
2015-02-20 16:08:01 +01:00
parent 2a06c7758e
commit c69294c449
2 changed files with 69 additions and 54 deletions

View File

@@ -210,7 +210,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,
@@ -568,6 +568,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 + "'");
};
@@ -637,12 +644,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,