self-compiling the arguments test
This commit is contained in:
parent
4deabf5e01
commit
19c44c9b62
|
@ -65,8 +65,6 @@
|
|||
return new LiteralNode(yytext);
|
||||
}), o("CONTINUE", function() {
|
||||
return new LiteralNode(yytext);
|
||||
}), o("ARGUMENTS", function() {
|
||||
return new LiteralNode(yytext);
|
||||
}), o("TRUE", function() {
|
||||
return new LiteralNode(true);
|
||||
}), o("FALSE", function() {
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
exports.Lexer = (lex = function lex() { });
|
||||
// Constants ============================================================
|
||||
// The list of keywords passed verbatim to the parser.
|
||||
KEYWORDS = ["if", "else", "then", "unless", "true", "false", "yes", "no", "on", "off", "and", "or", "is", "isnt", "not", "new", "return", "arguments", "try", "catch", "finally", "throw", "break", "continue", "for", "in", "of", "by", "where", "while", "delete", "instanceof", "typeof", "switch", "when", "super", "extends"];
|
||||
KEYWORDS = ["if", "else", "then", "unless", "true", "false", "yes", "no", "on", "off", "and", "or", "is", "isnt", "not", "new", "return", "try", "catch", "finally", "throw", "break", "continue", "for", "in", "of", "by", "where", "while", "delete", "instanceof", "typeof", "switch", "when", "super", "extends"];
|
||||
// Token matching regexes. (keep the IDENTIFIER regex in sync with AssignNode.)
|
||||
IDENTIFIER = /^([a-zA-Z$_](\w|\$)*)/;
|
||||
NUMBER = /^(\b((0(x|X)[0-9a-fA-F]+)|([0-9]+(\.[0-9]+)?(e[+\-]?[0-9]+)?)))\b/i;
|
||||
|
|
|
@ -385,7 +385,7 @@
|
|||
return this.has_properties() && this.properties[this.properties.length - 1] instanceof SliceNode;
|
||||
},
|
||||
is_arguments: function is_arguments() {
|
||||
return this.base === 'arguments';
|
||||
return this.base.value === 'arguments';
|
||||
},
|
||||
unwrap: function unwrap() {
|
||||
return this.properties.length ? this : this.base;
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
// Tokens pairs that, in immediate succession, indicate an implicit call.
|
||||
IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END'];
|
||||
IMPLICIT_END = ['IF', 'UNLESS', 'FOR', 'WHILE', 'TERMINATOR', 'OUTDENT'];
|
||||
IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'TRY', 'DELETE', 'TYPEOF', 'SWITCH', 'ARGUMENTS', 'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '!', '!!', 'NOT', '->', '=>', '[', '(', '{'];
|
||||
IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'TRY', 'DELETE', 'TYPEOF', 'SWITCH', 'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '!', '!!', 'NOT', '@', '->', '=>', '[', '(', '{'];
|
||||
// The inverse mappings of token pairs we're trying to fix up.
|
||||
INVERSES = {
|
||||
};
|
||||
|
|
|
@ -100,7 +100,6 @@ grammar: {
|
|||
o "REGEX", -> new LiteralNode(yytext)
|
||||
o "BREAK", -> new LiteralNode(yytext)
|
||||
o "CONTINUE", -> new LiteralNode(yytext)
|
||||
o "ARGUMENTS", -> new LiteralNode(yytext)
|
||||
o "TRUE", -> new LiteralNode(true)
|
||||
o "FALSE", -> new LiteralNode(false)
|
||||
o "YES", -> new LiteralNode(true)
|
||||
|
|
|
@ -12,7 +12,7 @@ KEYWORDS: [
|
|||
"if", "else", "then", "unless",
|
||||
"true", "false", "yes", "no", "on", "off",
|
||||
"and", "or", "is", "isnt", "not",
|
||||
"new", "return", "arguments",
|
||||
"new", "return",
|
||||
"try", "catch", "finally", "throw",
|
||||
"break", "continue",
|
||||
"for", "in", "of", "by", "where", "while",
|
||||
|
|
|
@ -263,7 +263,7 @@ ValueNode: exports.ValueNode: inherit Node, {
|
|||
@has_properties() and @properties[@properties.length - 1] instanceof SliceNode
|
||||
|
||||
is_arguments: ->
|
||||
@base is 'arguments'
|
||||
@base.value is 'arguments'
|
||||
|
||||
unwrap: ->
|
||||
if @properties.length then this else @base
|
||||
|
|
|
@ -20,9 +20,9 @@ EXPRESSION_CLOSE: ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_TAIL)
|
|||
IMPLICIT_FUNC: ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END']
|
||||
IMPLICIT_END: ['IF', 'UNLESS', 'FOR', 'WHILE', 'TERMINATOR', 'OUTDENT']
|
||||
IMPLICIT_CALL: ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START',
|
||||
'TRY', 'DELETE', 'TYPEOF', 'SWITCH', 'ARGUMENTS',
|
||||
'TRY', 'DELETE', 'TYPEOF', 'SWITCH',
|
||||
'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '!', '!!', 'NOT',
|
||||
'->', '=>', '[', '(', '{']
|
||||
'@', '->', '=>', '[', '(', '{']
|
||||
|
||||
# The inverse mappings of token pairs we're trying to fix up.
|
||||
INVERSES: {}
|
||||
|
|
Loading…
Reference in New Issue