mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-09 03:19:56 +00:00
f6338d9109
It preserves comments and text positions, enabling us to do syntax highlighting. Hopefully.
19019 lines
604 KiB
JavaScript
19019 lines
604 KiB
JavaScript
/*
|
|
Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
|
|
Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
|
|
Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
|
|
Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
|
|
Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
|
|
Copyright (C) 2011 Yusuke Suzuki <utatane.tea@gmail.com>
|
|
Copyright (C) 2011 Arpad Borsos <arpad.borsos@googlemail.com>
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
/*jslint browser:true node:true */
|
|
/*global esprima:true */
|
|
|
|
var runTests, data;
|
|
|
|
data = {
|
|
|
|
'Primary Expression': {
|
|
|
|
'this\n': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'ThisExpression',
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 0 }
|
|
}
|
|
}],
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 0 }
|
|
},
|
|
tokens: [{
|
|
type: 'Keyword',
|
|
value: 'this',
|
|
range: [0, 3]
|
|
}]
|
|
},
|
|
|
|
'\n 42\n\n': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 2, column: 4 },
|
|
end: { line: 2, column: 6 }
|
|
}
|
|
},
|
|
range: [5, 8],
|
|
loc: {
|
|
start: { line: 2, column: 4 },
|
|
end: { line: 4, column: 0 }
|
|
}
|
|
}],
|
|
range: [5, 8],
|
|
loc: {
|
|
start: { line: 2, column: 4 },
|
|
end: { line: 4, column: 0 }
|
|
},
|
|
tokens: [{
|
|
type: 'Numeric',
|
|
value: '42',
|
|
range: [5, 6]
|
|
}]
|
|
},
|
|
|
|
'(1 + 2 ) * 3': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '1',
|
|
range: [1, 1],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 2,
|
|
raw: '2',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [11, 11],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Array Initializer': {
|
|
|
|
'x = []': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [],
|
|
range: [4, 5],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
},
|
|
tokens: [{
|
|
type: 'Identifier',
|
|
value: 'x',
|
|
range: [0, 0]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '=',
|
|
range: [2, 2]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '[',
|
|
range: [4, 4]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: ']',
|
|
range: [5, 5]
|
|
}]
|
|
},
|
|
|
|
'x = [ ]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [],
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x = [ 42 ]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [6, 7],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}],
|
|
range: [4, 9],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
|
|
'x = [ 42, ]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [6, 7],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}],
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'x = [ ,, 42 ]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [
|
|
null,
|
|
null,
|
|
{
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
}],
|
|
range: [4, 12],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'x = [ 1, 2, 3, ]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '1',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}, {
|
|
type: 'Literal',
|
|
value: 2,
|
|
raw: '2',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}, {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [12, 12],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}],
|
|
range: [4, 15],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'x = [ 1, 2,, 3, ]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '1',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}, {
|
|
type: 'Literal',
|
|
value: 2,
|
|
raw: '2',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}, null, {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [13, 13],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
range: [4, 16],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
|
|
'日本語 = []': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: '日本語',
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [],
|
|
range: [6, 7],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'T\u203F = []': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'T\u203F',
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [],
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Object Initializer': {
|
|
|
|
'x = {}': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [],
|
|
range: [4, 5],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x = { }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [],
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x = { answer: 42 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'answer',
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [14, 15],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 15],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}],
|
|
range: [4, 17],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
|
|
'x = { if: 42 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'if',
|
|
range: [6, 7],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}],
|
|
range: [4, 13],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
|
|
'x = { true: 42 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'true',
|
|
range: [6, 9],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [12, 13],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 13],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
range: [4, 15],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'x = { false: 42 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'false',
|
|
range: [6, 10],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [13, 14],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 14],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
}],
|
|
range: [4, 16],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
|
|
'x = { null: 42 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'null',
|
|
range: [6, 9],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [12, 13],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 13],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
range: [4, 15],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'x = { "answer": 42 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 'answer',
|
|
raw: '"answer"',
|
|
range: [6, 13],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [16, 17],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 17],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
}],
|
|
range: [4, 19],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [0, 19],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [0, 19],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
|
|
'x = { get width() { return m_width } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'width',
|
|
range: [10, 14],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'm_width',
|
|
range: [27, 33],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [20, 34],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
}],
|
|
range: [18, 35],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [18, 35],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 35],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
}],
|
|
range: [4, 37],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
range: [0, 37],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
range: [0, 37],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
|
|
'x = { get undef() {} }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'undef',
|
|
range: [10, 14],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [18, 19],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [18, 19],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 19],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
}],
|
|
range: [4, 21],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
|
|
'x = { get if() {} }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'if',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 16],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
}],
|
|
range: [4, 18],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [0, 18],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [0, 18],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
|
|
'x = { get true() {} }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'true',
|
|
range: [10, 13],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [17, 18],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [17, 18],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 18],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
}],
|
|
range: [4, 20],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
|
|
'x = { get false() {} }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'false',
|
|
range: [10, 14],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [18, 19],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [18, 19],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 19],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
}],
|
|
range: [4, 21],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
|
|
'x = { get null() {} }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'null',
|
|
range: [10, 13],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [17, 18],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [17, 18],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 18],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
}],
|
|
range: [4, 20],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
|
|
'x = { get "undef"() {} }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 'undef',
|
|
raw: '"undef"',
|
|
range: [10, 16],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [20, 21],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [20, 21],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 21],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
}],
|
|
range: [4, 23],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
range: [0, 23],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
range: [0, 23],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
|
|
'x = { get 10() {} }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
kind: 'get',
|
|
range: [6, 16],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
}],
|
|
range: [4, 18],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [0, 18],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [0, 18],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
|
|
'x = { set width(w) { m_width = w } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'width',
|
|
range: [10, 14],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [16, 16],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_width',
|
|
range: [21, 27],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [31, 31],
|
|
loc: {
|
|
start: { line: 1, column: 31 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [21, 31],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [21, 32],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
}],
|
|
range: [19, 33],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [19, 33],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
kind: 'set',
|
|
range: [6, 33],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
}],
|
|
range: [4, 35],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
|
|
'x = { set if(w) { m_if = w } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'if',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [13, 13],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_if',
|
|
range: [18, 21],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [25, 25],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [18, 25],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [18, 26],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
}],
|
|
range: [16, 27],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
range: [16, 27],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
kind: 'set',
|
|
range: [6, 27],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
}],
|
|
range: [4, 29],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [0, 29],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [0, 29],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
|
|
'x = { set true(w) { m_true = w } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'true',
|
|
range: [10, 13],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [15, 15],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_true',
|
|
range: [20, 25],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [29, 29],
|
|
loc: {
|
|
start: { line: 1, column: 29 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [20, 29],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [20, 30],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}],
|
|
range: [18, 31],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [18, 31],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
kind: 'set',
|
|
range: [6, 31],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
}],
|
|
range: [4, 33],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [0, 33],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [0, 33],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
|
|
'x = { set false(w) { m_false = w } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'false',
|
|
range: [10, 14],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [16, 16],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_false',
|
|
range: [21, 27],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [31, 31],
|
|
loc: {
|
|
start: { line: 1, column: 31 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [21, 31],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [21, 32],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
}],
|
|
range: [19, 33],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [19, 33],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
kind: 'set',
|
|
range: [6, 33],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
}],
|
|
range: [4, 35],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
|
|
'x = { set null(w) { m_null = w } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'null',
|
|
range: [10, 13],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [15, 15],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_null',
|
|
range: [20, 25],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [29, 29],
|
|
loc: {
|
|
start: { line: 1, column: 29 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [20, 29],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [20, 30],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}],
|
|
range: [18, 31],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [18, 31],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
kind: 'set',
|
|
range: [6, 31],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
}],
|
|
range: [4, 33],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [0, 33],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [0, 33],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
|
|
'x = { set "null"(w) { m_null = w } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 'null',
|
|
raw: '"null"',
|
|
range: [10, 15],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [17, 17],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_null',
|
|
range: [22, 27],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [31, 31],
|
|
loc: {
|
|
start: { line: 1, column: 31 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [22, 31],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [22, 32],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
}],
|
|
range: [20, 33],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [20, 33],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
kind: 'set',
|
|
range: [6, 33],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
}],
|
|
range: [4, 35],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
|
|
'x = { set 10(w) { m_null = w } }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [13, 13],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_null',
|
|
range: [18, 23],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w',
|
|
range: [27, 27],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
range: [18, 27],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
range: [18, 28],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
}],
|
|
range: [16, 29],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [16, 29],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
kind: 'set',
|
|
range: [6, 29],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
}],
|
|
range: [4, 31],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [0, 31],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [0, 31],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
|
|
'x = { get: 42 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'get',
|
|
range: [6, 8],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [11, 12],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 12],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}],
|
|
range: [4, 14],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
|
|
'x = { set: 43 }': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'set',
|
|
range: [6, 8],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 43,
|
|
raw: '43',
|
|
range: [11, 12],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [6, 12],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}],
|
|
range: [4, 14],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Comments': {
|
|
|
|
'/* block comment */ 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [20, 21],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [20, 21],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
|
|
'42 /*The*/ /*Answer*/': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}],
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
},
|
|
comments: [{
|
|
range: [3, 9],
|
|
type: 'Block',
|
|
value: 'The'
|
|
}, {
|
|
range: [11, 20],
|
|
type: 'Block',
|
|
value: 'Answer'
|
|
}]
|
|
},
|
|
|
|
'/* multiline\ncomment\nshould\nbe\nignored */ 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [42, 43],
|
|
loc: {
|
|
start: { line: 5, column: 11 },
|
|
end: { line: 5, column: 13 }
|
|
}
|
|
},
|
|
range: [42, 43],
|
|
loc: {
|
|
start: { line: 5, column: 11 },
|
|
end: { line: 5, column: 13 }
|
|
}
|
|
},
|
|
|
|
'// line comment\n42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [16, 17],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 2 }
|
|
}
|
|
},
|
|
range: [16, 17],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 2 }
|
|
}
|
|
},
|
|
|
|
'// Hello, world!\n42': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [17, 18],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 1 }
|
|
}
|
|
},
|
|
range: [17, 18],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 1 }
|
|
}
|
|
}],
|
|
range: [17, 18],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 1 }
|
|
},
|
|
comments: [{
|
|
range: [0, 16],
|
|
type: 'Line',
|
|
value: ' Hello, world!'
|
|
}]
|
|
},
|
|
|
|
'//\n42': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [3, 4],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 1 }
|
|
}
|
|
},
|
|
range: [3, 4],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 1 }
|
|
}
|
|
}],
|
|
range: [3, 4],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 1 }
|
|
},
|
|
comments: [{
|
|
range: [0, 2],
|
|
type: 'Line',
|
|
value: ''
|
|
}]
|
|
},
|
|
|
|
'/**/42': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [4, 5],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [4, 5],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
}],
|
|
range: [4, 5],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 6 }
|
|
},
|
|
comments: [{
|
|
range: [0, 3],
|
|
type: 'Block',
|
|
value: ''
|
|
}]
|
|
},
|
|
|
|
'// Hello, world!\n\n// Another hello\n42': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [37, 38],
|
|
loc: {
|
|
start: { line: 4, column: -1 },
|
|
end: { line: 4, column: 1 }
|
|
}
|
|
},
|
|
range: [37, 38],
|
|
loc: {
|
|
start: { line: 4, column: -1 },
|
|
end: { line: 4, column: 1 }
|
|
}
|
|
}],
|
|
range: [37, 38],
|
|
loc: {
|
|
start: { line: 4, column: -1 },
|
|
end: { line: 4, column: 1 }
|
|
},
|
|
comments: [{
|
|
range: [0, 16],
|
|
type: 'Line',
|
|
value: ' Hello, world!'
|
|
}, {
|
|
range: [18, 36],
|
|
type: 'Line',
|
|
value: ' Another hello'
|
|
}]
|
|
},
|
|
|
|
'if (x) { // Some comment\ndoThat(); }': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThat',
|
|
range: [25, 30],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [25, 32],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 7 }
|
|
}
|
|
},
|
|
range: [25, 33],
|
|
loc: {
|
|
start: { line: 2, column: -1 },
|
|
end: { line: 2, column: 8 }
|
|
}
|
|
}],
|
|
range: [7, 35],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 2, column: 10 }
|
|
}
|
|
},
|
|
alternate: null,
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 10 }
|
|
}
|
|
}],
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 10 }
|
|
},
|
|
comments: [{
|
|
range: [9, 24],
|
|
type: 'Line',
|
|
value: ' Some comment'
|
|
}]
|
|
},
|
|
|
|
'switch (answer) { case 42: /* perfect */ bingo() }': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'answer',
|
|
range: [8, 13],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
cases: [{
|
|
type: 'SwitchCase',
|
|
test: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [23, 24],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
consequent: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'bingo',
|
|
range: [41, 45],
|
|
loc: {
|
|
start: { line: 1, column: 41 },
|
|
end: { line: 1, column: 46 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [41, 47],
|
|
loc: {
|
|
start: { line: 1, column: 41 },
|
|
end: { line: 1, column: 48 }
|
|
}
|
|
},
|
|
range: [41, 48],
|
|
loc: {
|
|
start: { line: 1, column: 41 },
|
|
end: { line: 1, column: 49 }
|
|
}
|
|
}],
|
|
range: [41, 48],
|
|
loc: {
|
|
start: { line: 1, column: 41 },
|
|
end: { line: 1, column: 49 }
|
|
}
|
|
}],
|
|
range: [0, 49],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 50 }
|
|
}
|
|
}],
|
|
range: [0, 49],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 50 }
|
|
},
|
|
comments: [{
|
|
range: [27, 39],
|
|
type: 'Block',
|
|
value: ' perfect '
|
|
}]
|
|
}
|
|
|
|
},
|
|
|
|
'Numeric Literals': {
|
|
|
|
'0': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
|
|
'42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
|
|
'.14': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0.14,
|
|
raw: '.14',
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
|
|
'3.14159': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 3.14159,
|
|
raw: '3.14159',
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'6.02214179e+23': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 6.02214179e+23,
|
|
raw: '6.02214179e+23',
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
|
|
'1.492417830e-10': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 1.49241783e-10,
|
|
raw: '1.492417830e-10',
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
|
|
'0x0': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0x0',
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
|
|
'0e+100': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0e+100',
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'0xabc': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0xabc,
|
|
raw: '0xabc',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'0xdef': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0xdef,
|
|
raw: '0xdef',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'0X1A': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0x1A,
|
|
raw: '0X1A',
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
|
|
'0x10': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0x10,
|
|
raw: '0x10',
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
|
|
'0x100': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0x100,
|
|
raw: '0x100',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'0X04': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 0X04,
|
|
raw: '0X04',
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
|
|
'02': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 2,
|
|
raw: '02',
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
|
|
'012': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '012',
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
|
|
'0012': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '0012',
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'String Literals': {
|
|
|
|
'"Hello"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello',
|
|
raw: '"Hello"',
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'"\\n\\r\\b\\f\\\\\\\'\\"\\0"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: '\n\r\b\f\\\'"\x00',
|
|
raw: '"\\n\\r\\b\\f\\\\\\\'\\"\\0"',
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
|
|
'"\\u0061"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'a',
|
|
raw: '"\\u0061"',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'"\\x61"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'a',
|
|
raw: '"\\x61"',
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'"\\u00"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'u00',
|
|
raw: '"\\u00"',
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'"\\xt"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'xt',
|
|
raw: '"\\xt"',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\nworld"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\nworld',
|
|
raw: '"Hello\\nworld"',
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\\nworld"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Helloworld',
|
|
raw: '"Hello\\\nworld"',
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 14 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\02World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\u0002World',
|
|
raw: '"Hello\\02World"',
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\012World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\u000AWorld',
|
|
raw: '"Hello\\012World"',
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\122World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\122World',
|
|
raw: '"Hello\\122World"',
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\0122World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\u000A2World',
|
|
raw: '"Hello\\0122World"',
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\312World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\u00CAWorld',
|
|
raw: '"Hello\\312World"',
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\412World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\412World',
|
|
raw: '"Hello\\412World"',
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\812World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello812World',
|
|
raw: '"Hello\\812World"',
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\712World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\712World',
|
|
raw: '"Hello\\712World"',
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\0World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\u0000World',
|
|
raw: '"Hello\\0World"',
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\\r\nworld"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Helloworld',
|
|
raw: '"Hello\\\r\nworld"',
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 15 }
|
|
}
|
|
},
|
|
|
|
'"Hello\\1World"': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: 'Hello\u0001World',
|
|
raw: '"Hello\\1World"',
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}
|
|
},
|
|
|
|
'Regular Expression Literals': {
|
|
|
|
'var x = /[a-z]/i': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: '/[a-z]/i',
|
|
raw: '/[a-z]/i',
|
|
range: [8, 15],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
range: [4, 15],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}],
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
},
|
|
tokens: [{
|
|
type: 'Keyword',
|
|
value: 'var',
|
|
range: [0, 2]
|
|
}, {
|
|
type: 'Identifier',
|
|
value: 'x',
|
|
range: [4, 4]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '=',
|
|
range: [6, 6]
|
|
}, {
|
|
type: 'RegularExpression',
|
|
value: '/[a-z]/i',
|
|
range: [8, 15]
|
|
}]
|
|
},
|
|
|
|
'var x = /[P QR]/i': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: '/[P QR]/i',
|
|
raw: '/[P QR]/i',
|
|
range: [8, 16],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [4, 16],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
}],
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
},
|
|
tokens: [{
|
|
type: 'Keyword',
|
|
value: 'var',
|
|
range: [0, 2]
|
|
}, {
|
|
type: 'Identifier',
|
|
value: 'x',
|
|
range: [4, 4]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '=',
|
|
range: [6, 6]
|
|
}, {
|
|
type: 'RegularExpression',
|
|
value: '/[P QR]/i',
|
|
range: [8, 16]
|
|
}]
|
|
},
|
|
|
|
'var x = /foo\\/bar/': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: '/foo\\/bar/',
|
|
raw: '/foo\\/bar/',
|
|
range: [8, 17],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [4, 17],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
}],
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
},
|
|
tokens: [{
|
|
type: 'Keyword',
|
|
value: 'var',
|
|
range: [0, 2]
|
|
}, {
|
|
type: 'Identifier',
|
|
value: 'x',
|
|
range: [4, 4]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '=',
|
|
range: [6, 6]
|
|
}, {
|
|
type: 'RegularExpression',
|
|
value: '/foo\\/bar/',
|
|
range: [8, 17]
|
|
}]
|
|
},
|
|
|
|
'var x = /=([^=\\s])+/g': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: '/=([^=\\s])+/g',
|
|
raw: '/=([^=\\s])+/g',
|
|
range: [8, 20],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [4, 20],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}],
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
},
|
|
tokens: [{
|
|
type: 'Keyword',
|
|
value: 'var',
|
|
range: [0, 2]
|
|
}, {
|
|
type: 'Identifier',
|
|
value: 'x',
|
|
range: [4, 4]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '=',
|
|
range: [6, 6]
|
|
}, {
|
|
type: 'RegularExpression',
|
|
value: '/=([^=\\s])+/g',
|
|
range: [8, 20]
|
|
}]
|
|
},
|
|
|
|
'var x = /[P QR]/\\u0067': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: '/[P QR]/g',
|
|
raw: '/[P QR]/\\u0067',
|
|
range: [8, 21],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [4, 21],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
}],
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 22 }
|
|
},
|
|
tokens: [{
|
|
type: 'Keyword',
|
|
value: 'var',
|
|
range: [0, 2]
|
|
}, {
|
|
type: 'Identifier',
|
|
value: 'x',
|
|
range: [4, 4]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '=',
|
|
range: [6, 6]
|
|
}, {
|
|
type: 'RegularExpression',
|
|
value: '/[P QR]/\\u0067',
|
|
range: [8, 21]
|
|
}]
|
|
},
|
|
|
|
'var x = /[P QR]/\\g': {
|
|
type: 'Program',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: '/[P QR]/g',
|
|
raw: '/[P QR]/\\g',
|
|
range: [8, 17],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [4, 17],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
}],
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
},
|
|
tokens: [{
|
|
type: 'Keyword',
|
|
value: 'var',
|
|
range: [0, 2]
|
|
}, {
|
|
type: 'Identifier',
|
|
value: 'x',
|
|
range: [4, 4]
|
|
}, {
|
|
type: 'Punctuator',
|
|
value: '=',
|
|
range: [6, 6]
|
|
}, {
|
|
type: 'RegularExpression',
|
|
value: '/[P QR]/\\g',
|
|
range: [8, 17]
|
|
}]
|
|
}
|
|
|
|
},
|
|
|
|
'Left-Hand-Side Expression': {
|
|
|
|
'new Button': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'Button',
|
|
range: [4, 9],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
|
|
'new Button()': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'Button',
|
|
range: [4, 9],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
|
|
'new new foo': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [8, 10],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'new new foo()': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [8, 10],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [4, 12],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'new foo().bar()': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'bar',
|
|
range: [10, 12],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
|
|
'new foo.bar()': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'bar',
|
|
range: [8, 10],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'foo(bar, baz)': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'bar',
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'baz',
|
|
range: [9, 11],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}],
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'universe.milkyway': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway',
|
|
range: [9, 16],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
|
|
'universe.milkyway.solarsystem': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway',
|
|
range: [9, 16],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'solarsystem',
|
|
range: [18, 28],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
range: [0, 28],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
range: [0, 28],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
|
|
'universe.milkyway.solarsystem.Earth': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway',
|
|
range: [9, 16],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'solarsystem',
|
|
range: [18, 28],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
range: [0, 28],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'Earth',
|
|
range: [30, 34],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
range: [0, 34],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
range: [0, 34],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
|
|
'universe[galaxyName, otherUselessName]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: true,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'SequenceExpression',
|
|
expressions: [{
|
|
type: 'Identifier',
|
|
name: 'galaxyName',
|
|
range: [9, 18],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'otherUselessName',
|
|
range: [21, 36],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 37 }
|
|
}
|
|
}],
|
|
range: [9, 36],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 37 }
|
|
}
|
|
},
|
|
range: [0, 37],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
range: [0, 37],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
|
|
'universe[galaxyName]': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: true,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxyName',
|
|
range: [9, 18],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [0, 19],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [0, 19],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
|
|
'universe[42].galaxies': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: true,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxies',
|
|
range: [13, 20],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
|
|
'universe(42).galaxies': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
}],
|
|
range: [8, 11],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxies',
|
|
range: [13, 20],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [8, 20],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
|
|
'universe(42).galaxies(14, 3, 77).milkyway': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
}],
|
|
range: [8, 11],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxies',
|
|
range: [13, 20],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [8, 20],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14',
|
|
range: [22, 23],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
}, {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [26, 26],
|
|
loc: {
|
|
start: { line: 1, column: 26 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
}, {
|
|
type: 'Literal',
|
|
value: 77,
|
|
raw: '77',
|
|
range: [29, 30],
|
|
loc: {
|
|
start: { line: 1, column: 29 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}],
|
|
range: [21, 31],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway',
|
|
range: [33, 40],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 41 }
|
|
}
|
|
},
|
|
range: [21, 40],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 41 }
|
|
}
|
|
},
|
|
range: [0, 40],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 41 }
|
|
}
|
|
},
|
|
|
|
'earth.asia.Indonesia.prepareForElection(2014)': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'earth',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'asia',
|
|
range: [6, 9],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'Indonesia',
|
|
range: [11, 19],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [0, 19],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'prepareForElection',
|
|
range: [21, 38],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 39 }
|
|
}
|
|
},
|
|
range: [0, 38],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 39 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 2014,
|
|
raw: '2014',
|
|
range: [40, 43],
|
|
loc: {
|
|
start: { line: 1, column: 40 },
|
|
end: { line: 1, column: 44 }
|
|
}
|
|
}],
|
|
range: [0, 44],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 45 }
|
|
}
|
|
},
|
|
range: [0, 44],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 45 }
|
|
}
|
|
},
|
|
|
|
'universe.if': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'if',
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'universe.true': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'true',
|
|
range: [9, 12],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'universe.false': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'false',
|
|
range: [9, 13],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
|
|
'universe.null': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe',
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'null',
|
|
range: [9, 12],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Postfix Expressions': {
|
|
|
|
'x++': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
|
|
'x--': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Unary Operators': {
|
|
|
|
'++x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [2, 2],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
prefix: true,
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
|
|
'--x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [2, 2],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
prefix: true,
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
|
|
'+x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UnaryExpression',
|
|
operator: '+',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [1, 1],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
|
|
'-x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UnaryExpression',
|
|
operator: '-',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [1, 1],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
|
|
'~x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UnaryExpression',
|
|
operator: '~',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [1, 1],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
|
|
'!x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UnaryExpression',
|
|
operator: '!',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [1, 1],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
|
|
'void x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UnaryExpression',
|
|
operator: 'void',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'delete x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UnaryExpression',
|
|
operator: 'delete',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'typeof x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UnaryExpression',
|
|
operator: 'typeof',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Multiplicative Operators': {
|
|
|
|
'x * y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'x / y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '/',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'x % y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Additive Operators': {
|
|
|
|
'x + y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'x - y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Bitwise Shift Operator': {
|
|
|
|
'x << y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '<<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x >> y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '>>',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x >>> y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '>>>',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Relational Operators': {
|
|
|
|
'x < y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'x > y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '>',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'x <= y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '<=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x >= y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '>=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x in y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: 'in',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x instanceof y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: 'instanceof',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [13, 13],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Equality Operators': {
|
|
|
|
'x == y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '==',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x != y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '!=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x === y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '===',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x !== y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '!==',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Binary Bitwise Operators': {
|
|
|
|
'x & y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'x ^ y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'x | y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Binary Expressions': {
|
|
|
|
'x + y + z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x - y + z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x + y - z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x - y - z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x + y * z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x + y / z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '/',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x - y % z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x * y * z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x * y / z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '/',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x * y % z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x % y * z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x << y << z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '<<',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '<<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [10, 10],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'x | y | z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x & y & z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x ^ y ^ z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x & y | z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x | y ^ z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x | y & z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Binary Logical Operators': {
|
|
|
|
'x || y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x && y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x || y || z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [10, 10],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'x && y && z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [10, 10],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'x || y && z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [10, 10],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [5, 10],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'x || y ^ z': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [5, 9],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Conditional Operator': {
|
|
|
|
'y ? 1 : 2': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'ConditionalExpression',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '1',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
alternate: {
|
|
type: 'Literal',
|
|
value: 2,
|
|
raw: '2',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x && y ? 1 : 2': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'ConditionalExpression',
|
|
test: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '1',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
alternate: {
|
|
type: 'Literal',
|
|
value: 2,
|
|
raw: '2',
|
|
range: [13, 13],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Assignment Operators': {
|
|
|
|
'x = 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [4, 5],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'x *= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '*=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x /= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '/=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x %= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '%=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x += 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '+=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x -= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '-=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x <<= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '<<=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [6, 7],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'x >>= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '>>=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [6, 7],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'x >>>= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '>>>=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [7, 8],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'x &= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '&=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x ^= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '^=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'x |= 42': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '|=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Block': {
|
|
|
|
'{ foo }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [2, 4],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [2, 5],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'{ doThis(); doThat(); }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThis',
|
|
range: [2, 7],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [2, 9],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [2, 10],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThat',
|
|
range: [12, 17],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [12, 19],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [12, 20],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}],
|
|
range: [0, 22],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
|
|
'{}': {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [0, 1],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Variable Statement': {
|
|
|
|
'var x': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: null,
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'var x, y;': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: null,
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
init: null,
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'var x = 42': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [8, 9],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [4, 9],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
|
|
'var x = 14, y = 3, z = 1977': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14',
|
|
range: [8, 9],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [4, 9],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [12, 12],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [16, 16],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [12, 16],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [19, 19],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1977,
|
|
raw: '1977',
|
|
range: [23, 26],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [19, 26],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 26],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Let Statement': {
|
|
|
|
'let x': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
init: null,
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
}],
|
|
kind: 'let',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'{ let x }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
init: null,
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}],
|
|
kind: 'let',
|
|
range: [2, 7],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}],
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'{ let x = 42 }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}],
|
|
kind: 'let',
|
|
range: [2, 12],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}],
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
|
|
'{ let x = 14, y = 3, z = 1977 }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [14, 14],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [18, 18],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [14, 18],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [21, 21],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1977,
|
|
raw: '1977',
|
|
range: [25, 28],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
range: [21, 28],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
}],
|
|
kind: 'let',
|
|
range: [2, 29],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
}],
|
|
range: [0, 30],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Const Statement': {
|
|
|
|
'const x = 42': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}],
|
|
kind: 'const',
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
|
|
'{ const x = 42 }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [12, 13],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [8, 13],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
kind: 'const',
|
|
range: [2, 14],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
}],
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
|
|
'{ const x = 14, y = 3, z = 1977 }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14',
|
|
range: [12, 13],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [8, 13],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [16, 16],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [20, 20],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [16, 20],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [23, 23],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1977,
|
|
raw: '1977',
|
|
range: [27, 30],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [23, 30],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}],
|
|
kind: 'const',
|
|
range: [2, 31],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
}],
|
|
range: [0, 32],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Empty Statement': {
|
|
|
|
';': {
|
|
type: 'EmptyStatement',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Expression Statement': {
|
|
|
|
'x': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
},
|
|
|
|
'x, y': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'SequenceExpression',
|
|
expressions: [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 1 }
|
|
}
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [3, 3],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
}],
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
|
|
'\\u0061': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'a',
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'a\\u0061': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'aa',
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'\\ua': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'ua',
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
|
|
'a\\u': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'au',
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [0, 2],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'If Statement': {
|
|
|
|
'if (morning) goodMorning()': {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning',
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodMorning',
|
|
range: [13, 23],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [13, 25],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [13, 25],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
alternate: null,
|
|
range: [0, 25],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
|
|
'if (morning) (function(){})': {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning',
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [24, 25],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [13, 26],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [13, 26],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
alternate: null,
|
|
range: [0, 26],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
|
|
'if (morning) var x = 0;': {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning',
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [17, 17],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [21, 21],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [17, 21],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [13, 22],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
alternate: null,
|
|
range: [0, 22],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
|
|
'if (morning) function a(){}': {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning',
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'FunctionDeclaration',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'a',
|
|
range: [22, 22],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [25, 26],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [13, 26],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
alternate: null,
|
|
range: [0, 26],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
|
|
'if (morning) goodMorning(); else goodDay()': {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning',
|
|
range: [4, 10],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodMorning',
|
|
range: [13, 23],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [13, 25],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [13, 26],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
alternate: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodDay',
|
|
range: [33, 39],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 40 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [33, 41],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 42 }
|
|
}
|
|
},
|
|
range: [33, 41],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 42 }
|
|
}
|
|
},
|
|
range: [0, 41],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 42 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Iteration Statements': {
|
|
|
|
'do keep(); while (true)': {
|
|
type: 'DoWhileStatement',
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'keep',
|
|
range: [3, 6],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [3, 8],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [3, 9],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
test: {
|
|
type: 'Literal',
|
|
value: true,
|
|
raw: 'true',
|
|
range: [18, 21],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [0, 22],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
|
|
'do { x++; y--; } while (x < 10)': {
|
|
type: 'DoWhileStatement',
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [5, 5],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [5, 7],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [5, 8],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [10, 10],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [10, 12],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [10, 13],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
range: [3, 15],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [24, 24],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10',
|
|
range: [28, 29],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [24, 29],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [0, 30],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
|
|
'{ do { } while (false) false }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'DoWhileStatement',
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [5, 7],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
test: {
|
|
type: 'Literal',
|
|
value: false,
|
|
raw: 'false',
|
|
range: [16, 20],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [2, 21],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: false,
|
|
raw: 'false',
|
|
range: [23, 27],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
range: [23, 28],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
}],
|
|
range: [0, 29],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
|
|
'while (true) doSomething()': {
|
|
type: 'WhileStatement',
|
|
test: {
|
|
type: 'Literal',
|
|
value: true,
|
|
raw: 'true',
|
|
range: [7, 10],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doSomething',
|
|
range: [13, 23],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [13, 25],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [13, 25],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [0, 25],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
|
|
'while (x < 10) { x++; y--; }': {
|
|
type: 'WhileStatement',
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10',
|
|
range: [11, 12],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [7, 12],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [17, 17],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [17, 19],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [17, 20],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [22, 22],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [22, 24],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
range: [22, 25],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
}],
|
|
range: [15, 27],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
range: [0, 27],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
|
|
'for(;;);': {
|
|
type: 'ForStatement',
|
|
init: null,
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement',
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'for(;;){}': {
|
|
type: 'ForStatement',
|
|
init: null,
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [7, 8],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'for(x = 0;;);': {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement',
|
|
range: [12, 12],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'for(var x = 0;;);': {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [12, 12],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [8, 12],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [4, 12],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement',
|
|
range: [16, 16],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
|
|
'for(let x = 0;;);': {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [12, 12],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [8, 12],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}],
|
|
kind: 'let',
|
|
range: [4, 12],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement',
|
|
range: [16, 16],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [0, 16],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
|
|
'for(var x = 0, y = 1;;);': {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [12, 12],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [8, 12],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [15, 15],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '1',
|
|
range: [19, 19],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [15, 19],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [4, 19],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement',
|
|
range: [23, 23],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
range: [0, 23],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
|
|
'for(x = 0; x < 42;);': {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [11, 11],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [11, 16],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement',
|
|
range: [19, 19],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [0, 19],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
|
|
'for(x = 0; x < 42; x++);': {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [11, 11],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [11, 16],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
update: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [19, 19],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [19, 21],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'EmptyStatement',
|
|
range: [23, 23],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
range: [0, 23],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
|
|
'for(x = 0; x < 42; x++) process(x);': {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [11, 11],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
range: [11, 16],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
update: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [19, 19],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
prefix: false,
|
|
range: [19, 21],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process',
|
|
range: [24, 30],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [32, 32],
|
|
loc: {
|
|
start: { line: 1, column: 32 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
}],
|
|
range: [24, 33],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [24, 34],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
range: [0, 34],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
|
|
'for(x in list) process(x);': {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list',
|
|
range: [9, 12],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process',
|
|
range: [15, 21],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [23, 23],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
}],
|
|
range: [15, 24],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
range: [15, 25],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
each: false,
|
|
range: [0, 25],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
|
|
'for (var x in list) process(x);': {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
init: null,
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [5, 9],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list',
|
|
range: [14, 17],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process',
|
|
range: [20, 26],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [28, 28],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
}],
|
|
range: [20, 29],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [20, 30],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
each: false,
|
|
range: [0, 30],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
|
|
'for (var x = 42 in list) process(x);': {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [13, 14],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [9, 14],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [5, 14],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list',
|
|
range: [19, 22],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process',
|
|
range: [25, 31],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [33, 33],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
}],
|
|
range: [25, 34],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
range: [25, 35],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
each: false,
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
|
|
'for (let x in list) process(x);': {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
init: null,
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}],
|
|
kind: 'let',
|
|
range: [5, 9],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list',
|
|
range: [14, 17],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process',
|
|
range: [20, 26],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [28, 28],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
}],
|
|
range: [20, 29],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [20, 30],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
each: false,
|
|
range: [0, 30],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
|
|
'for (let x = 42 in list) process(x);': {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [13, 14],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [9, 14],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
}],
|
|
kind: 'let',
|
|
range: [5, 14],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list',
|
|
range: [19, 22],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process',
|
|
range: [25, 31],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [33, 33],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
}],
|
|
range: [25, 34],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
range: [25, 35],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
each: false,
|
|
range: [0, 35],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
|
|
'for (var i = function() { return 10 in [] } in list) process(x);': {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'i',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'BinaryExpression',
|
|
operator: 'in',
|
|
left: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10',
|
|
range: [33, 34],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [],
|
|
range: [39, 40],
|
|
loc: {
|
|
start: { line: 1, column: 39 },
|
|
end: { line: 1, column: 41 }
|
|
}
|
|
},
|
|
range: [33, 40],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 41 }
|
|
}
|
|
},
|
|
range: [26, 41],
|
|
loc: {
|
|
start: { line: 1, column: 26 },
|
|
end: { line: 1, column: 42 }
|
|
}
|
|
}],
|
|
range: [24, 42],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 43 }
|
|
}
|
|
},
|
|
range: [13, 42],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 43 }
|
|
}
|
|
},
|
|
range: [9, 42],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 43 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [5, 42],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 43 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list',
|
|
range: [47, 50],
|
|
loc: {
|
|
start: { line: 1, column: 47 },
|
|
end: { line: 1, column: 51 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process',
|
|
range: [53, 59],
|
|
loc: {
|
|
start: { line: 1, column: 53 },
|
|
end: { line: 1, column: 60 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [61, 61],
|
|
loc: {
|
|
start: { line: 1, column: 61 },
|
|
end: { line: 1, column: 62 }
|
|
}
|
|
}],
|
|
range: [53, 62],
|
|
loc: {
|
|
start: { line: 1, column: 53 },
|
|
end: { line: 1, column: 63 }
|
|
}
|
|
},
|
|
range: [53, 63],
|
|
loc: {
|
|
start: { line: 1, column: 53 },
|
|
end: { line: 1, column: 64 }
|
|
}
|
|
},
|
|
each: false,
|
|
range: [0, 63],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 64 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'continue statement': {
|
|
|
|
'continue': {
|
|
type: 'ContinueStatement',
|
|
label: null,
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'continue done': {
|
|
type: 'ContinueStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'done',
|
|
range: [9, 12],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'continue done;': {
|
|
type: 'ContinueStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'done',
|
|
range: [9, 12],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'break statement': {
|
|
|
|
'break': {
|
|
type: 'BreakStatement',
|
|
label: null,
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
'break done': {
|
|
type: 'BreakStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'done',
|
|
range: [6, 9],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
|
|
'break done;': {
|
|
type: 'BreakStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'done',
|
|
range: [6, 9],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'return statement': {
|
|
|
|
'return': {
|
|
type: 'ReturnStatement',
|
|
argument: null,
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
|
|
'return;': {
|
|
type: 'ReturnStatement',
|
|
argument: null,
|
|
range: [0, 6],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
|
|
'return x;': {
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
'return x * y': {
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [7, 7],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [11, 11],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [7, 11],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'with statement': {
|
|
|
|
'with (x) foo = bar': {
|
|
type: 'WithStatement',
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [9, 11],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'bar',
|
|
range: [15, 17],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [9, 17],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [9, 17],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [0, 17],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
|
|
'with (x) foo = bar;': {
|
|
type: 'WithStatement',
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [9, 11],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'bar',
|
|
range: [15, 17],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [9, 17],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
range: [9, 18],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [0, 18],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
|
|
'with (x) { foo = bar }': {
|
|
type: 'WithStatement',
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'foo',
|
|
range: [11, 13],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'bar',
|
|
range: [17, 19],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [11, 19],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 20 }
|
|
}
|
|
},
|
|
range: [11, 20],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}],
|
|
range: [9, 21],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'switch statement': {
|
|
|
|
'switch (x) {}': {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [8, 8],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
|
|
'switch (answer) { case 42: hi(); break; }': {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'answer',
|
|
range: [8, 13],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
cases: [{
|
|
type: 'SwitchCase',
|
|
test: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [23, 24],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
consequent: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'hi',
|
|
range: [27, 28],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [27, 30],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [27, 31],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
}, {
|
|
type: 'BreakStatement',
|
|
label: null,
|
|
range: [33, 38],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 39 }
|
|
}
|
|
}],
|
|
range: [27, 38],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 39 }
|
|
}
|
|
}],
|
|
range: [0, 40],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 41 }
|
|
}
|
|
},
|
|
|
|
'switch (answer) { case 42: hi(); break; default: break }': {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'answer',
|
|
range: [8, 13],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
cases: [{
|
|
type: 'SwitchCase',
|
|
test: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42',
|
|
range: [23, 24],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
consequent: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'hi',
|
|
range: [27, 28],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [27, 30],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [27, 31],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
}, {
|
|
type: 'BreakStatement',
|
|
label: null,
|
|
range: [33, 38],
|
|
loc: {
|
|
start: { line: 1, column: 33 },
|
|
end: { line: 1, column: 39 }
|
|
}
|
|
}],
|
|
range: [27, 38],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 39 }
|
|
}
|
|
}, {
|
|
type: 'SwitchCase',
|
|
test: null,
|
|
consequent: [{
|
|
type: 'BreakStatement',
|
|
label: null,
|
|
range: [49, 54],
|
|
loc: {
|
|
start: { line: 1, column: 49 },
|
|
end: { line: 1, column: 55 }
|
|
}
|
|
}],
|
|
range: [49, 54],
|
|
loc: {
|
|
start: { line: 1, column: 49 },
|
|
end: { line: 1, column: 55 }
|
|
}
|
|
}],
|
|
range: [0, 55],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 56 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Labelled Statements': {
|
|
|
|
'start: for (;;) break start': {
|
|
type: 'LabeledStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ForStatement',
|
|
init: null,
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'BreakStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start',
|
|
range: [22, 26],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [16, 26],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [7, 26],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [0, 26],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
|
|
'start: while (true) break start': {
|
|
type: 'LabeledStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start',
|
|
range: [0, 4],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'WhileStatement',
|
|
test: {
|
|
type: 'Literal',
|
|
value: true,
|
|
raw: 'true',
|
|
range: [14, 17],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
},
|
|
body: {
|
|
type: 'BreakStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start',
|
|
range: [26, 30],
|
|
loc: {
|
|
start: { line: 1, column: 26 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [20, 30],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [7, 30],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [0, 30],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'throw statement': {
|
|
|
|
'throw x;': {
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
|
|
'throw x * y': {
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [10, 10],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [6, 10],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 10],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
'throw { message: "Error" }': {
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'message',
|
|
range: [8, 14],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 'Error',
|
|
raw: '"Error"',
|
|
range: [17, 23],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
kind: 'init',
|
|
range: [8, 23],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
}],
|
|
range: [6, 25],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [0, 25],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'try statement': {
|
|
|
|
'try { } catch (e) { }': {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e',
|
|
range: [15, 15],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [18, 20],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
range: [8, 20],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
}],
|
|
finalizer: null,
|
|
range: [0, 20],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 21 }
|
|
}
|
|
},
|
|
|
|
'try { } catch (e) { say(e) }': {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e',
|
|
range: [15, 15],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'say',
|
|
range: [20, 22],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'e',
|
|
range: [24, 24],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
}],
|
|
range: [20, 25],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [20, 26],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
}],
|
|
range: [18, 27],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
range: [8, 27],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
}],
|
|
finalizer: null,
|
|
range: [0, 27],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
|
|
'try { } finally { cleanup(stuff) }': {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
handlers: [],
|
|
finalizer: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'cleanup',
|
|
range: [18, 24],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'stuff',
|
|
range: [26, 30],
|
|
loc: {
|
|
start: { line: 1, column: 26 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}],
|
|
range: [18, 31],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [18, 32],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
}],
|
|
range: [16, 33],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
range: [0, 33],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 34 }
|
|
}
|
|
},
|
|
|
|
'try { doThat(); } catch (e) { say(e) }': {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThat',
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [6, 13],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [6, 14],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
}],
|
|
range: [4, 16],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e',
|
|
range: [25, 25],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'say',
|
|
range: [30, 32],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'e',
|
|
range: [34, 34],
|
|
loc: {
|
|
start: { line: 1, column: 34 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
}],
|
|
range: [30, 35],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [30, 36],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 37 }
|
|
}
|
|
}],
|
|
range: [28, 37],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
range: [18, 37],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
}],
|
|
finalizer: null,
|
|
range: [0, 37],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
|
|
'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThat',
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [6, 13],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [6, 14],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
}],
|
|
range: [4, 16],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 17 }
|
|
}
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e',
|
|
range: [25, 25],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'say',
|
|
range: [30, 32],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'e',
|
|
range: [34, 34],
|
|
loc: {
|
|
start: { line: 1, column: 34 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
}],
|
|
range: [30, 35],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
range: [30, 36],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 37 }
|
|
}
|
|
}],
|
|
range: [28, 37],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
range: [18, 37],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
}],
|
|
finalizer: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'cleanup',
|
|
range: [49, 55],
|
|
loc: {
|
|
start: { line: 1, column: 49 },
|
|
end: { line: 1, column: 56 }
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'stuff',
|
|
range: [57, 61],
|
|
loc: {
|
|
start: { line: 1, column: 57 },
|
|
end: { line: 1, column: 62 }
|
|
}
|
|
}],
|
|
range: [49, 62],
|
|
loc: {
|
|
start: { line: 1, column: 49 },
|
|
end: { line: 1, column: 63 }
|
|
}
|
|
},
|
|
range: [49, 63],
|
|
loc: {
|
|
start: { line: 1, column: 49 },
|
|
end: { line: 1, column: 64 }
|
|
}
|
|
}],
|
|
range: [47, 64],
|
|
loc: {
|
|
start: { line: 1, column: 47 },
|
|
end: { line: 1, column: 65 }
|
|
}
|
|
},
|
|
range: [0, 64],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 65 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'debugger statement': {
|
|
|
|
'debugger;': {
|
|
type: 'DebuggerStatement',
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Function Definition': {
|
|
|
|
'function hello() { sayHi(); }': {
|
|
type: 'FunctionDeclaration',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello',
|
|
range: [9, 13],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi',
|
|
range: [19, 23],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [19, 25],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
range: [19, 26],
|
|
loc: {
|
|
start: { line: 1, column: 19 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
}],
|
|
range: [17, 28],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
range: [0, 28],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
|
|
'function hello(a) { sayHi(); }': {
|
|
type: 'FunctionDeclaration',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello',
|
|
range: [9, 13],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'a',
|
|
range: [15, 15],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi',
|
|
range: [20, 24],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 25 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [20, 26],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [20, 27],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
}],
|
|
range: [18, 29],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [0, 29],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
|
|
'function hello(a, b) { sayHi(); }': {
|
|
type: 'FunctionDeclaration',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello',
|
|
range: [9, 13],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'a',
|
|
range: [15, 15],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'b',
|
|
range: [18, 18],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi',
|
|
range: [23, 27],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [23, 29],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
},
|
|
range: [23, 30],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}],
|
|
range: [21, 32],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
},
|
|
range: [0, 32],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
},
|
|
|
|
'var hi = function() { sayHi() };': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hi',
|
|
range: [4, 5],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi',
|
|
range: [22, 26],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [22, 28],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
range: [22, 29],
|
|
loc: {
|
|
start: { line: 1, column: 22 },
|
|
end: { line: 1, column: 30 }
|
|
}
|
|
}],
|
|
range: [20, 30],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [9, 30],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [4, 30],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 31],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
|
|
'var hello = function hi() { sayHi() };': {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello',
|
|
range: [4, 8],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'FunctionExpression',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hi',
|
|
range: [21, 22],
|
|
loc: {
|
|
start: { line: 1, column: 21 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi',
|
|
range: [28, 32],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 33 }
|
|
}
|
|
},
|
|
'arguments': [],
|
|
range: [28, 34],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
range: [28, 35],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
}],
|
|
range: [26, 36],
|
|
loc: {
|
|
start: { line: 1, column: 26 },
|
|
end: { line: 1, column: 37 }
|
|
}
|
|
},
|
|
range: [12, 36],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 37 }
|
|
}
|
|
},
|
|
range: [4, 36],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 37 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [0, 37],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 38 }
|
|
}
|
|
},
|
|
|
|
'(function(){})': {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [],
|
|
range: [11, 12],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Automatic semicolon insertion': {
|
|
|
|
'{ x\n++y }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [2, 2],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [2, 3],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 2, column: 0 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 2, column: 2 },
|
|
end: { line: 2, column: 3 }
|
|
}
|
|
},
|
|
prefix: true,
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 3 }
|
|
}
|
|
},
|
|
range: [4, 7],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 4 }
|
|
}
|
|
}],
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
|
|
'{ x\n--y }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [2, 2],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
range: [2, 3],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 2, column: 0 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 2, column: 2 },
|
|
end: { line: 2, column: 3 }
|
|
}
|
|
},
|
|
prefix: true,
|
|
range: [4, 6],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 3 }
|
|
}
|
|
},
|
|
range: [4, 7],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 4 }
|
|
}
|
|
}],
|
|
range: [0, 8],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
|
|
'{ var x = 14, y = 3\nz; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [6, 6],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14',
|
|
range: [10, 11],
|
|
loc: {
|
|
start: { line: 1, column: 10 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [6, 11],
|
|
loc: {
|
|
start: { line: 1, column: 6 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y',
|
|
range: [14, 14],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3',
|
|
range: [18, 18],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
},
|
|
range: [14, 18],
|
|
loc: {
|
|
start: { line: 1, column: 14 },
|
|
end: { line: 1, column: 19 }
|
|
}
|
|
}],
|
|
kind: 'var',
|
|
range: [2, 19],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 2, column: 0 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'z',
|
|
range: [20, 20],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 1 }
|
|
}
|
|
},
|
|
range: [20, 21],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 2 }
|
|
}
|
|
}],
|
|
range: [0, 23],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 4 }
|
|
}
|
|
},
|
|
|
|
'{ continue\nthere; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ContinueStatement',
|
|
label: null,
|
|
range: [2, 9],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'there',
|
|
range: [11, 15],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
range: [11, 16],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 18],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 8 }
|
|
}
|
|
},
|
|
|
|
'{ continue // Comment\nthere; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ContinueStatement',
|
|
label: null,
|
|
range: [2, 9],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'there',
|
|
range: [22, 26],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
range: [22, 27],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 29],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 8 }
|
|
}
|
|
},
|
|
|
|
'{ continue /* Multiline\nComment */there; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ContinueStatement',
|
|
label: null,
|
|
range: [2, 9],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'there',
|
|
range: [34, 38],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 15 }
|
|
}
|
|
},
|
|
range: [34, 39],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 16 }
|
|
}
|
|
}],
|
|
range: [0, 41],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 18 }
|
|
}
|
|
},
|
|
|
|
'{ break\nthere; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'BreakStatement',
|
|
label: null,
|
|
range: [2, 6],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'there',
|
|
range: [8, 12],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
range: [8, 13],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 8 }
|
|
}
|
|
},
|
|
|
|
'{ break // Comment\nthere; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'BreakStatement',
|
|
label: null,
|
|
range: [2, 6],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'there',
|
|
range: [19, 23],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
range: [19, 24],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 26],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 8 }
|
|
}
|
|
},
|
|
|
|
'{ break /* Multiline\nComment */there; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'BreakStatement',
|
|
label: null,
|
|
range: [2, 6],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'there',
|
|
range: [31, 35],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 15 }
|
|
}
|
|
},
|
|
range: [31, 36],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 16 }
|
|
}
|
|
}],
|
|
range: [0, 38],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 18 }
|
|
}
|
|
},
|
|
|
|
'{ return\nx; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ReturnStatement',
|
|
argument: null,
|
|
range: [2, 7],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [9, 9],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 1 }
|
|
}
|
|
},
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 2 }
|
|
}
|
|
}],
|
|
range: [0, 12],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 4 }
|
|
}
|
|
},
|
|
|
|
'{ return // Comment\nx; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ReturnStatement',
|
|
argument: null,
|
|
range: [2, 7],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [20, 20],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 1 }
|
|
}
|
|
},
|
|
range: [20, 21],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 2 }
|
|
}
|
|
}],
|
|
range: [0, 23],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 4 }
|
|
}
|
|
},
|
|
|
|
'{ return/* Multiline\nComment */x; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ReturnStatement',
|
|
argument: null,
|
|
range: [2, 7],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [31, 31],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 11 }
|
|
}
|
|
},
|
|
range: [31, 32],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 12 }
|
|
}
|
|
}],
|
|
range: [0, 34],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 14 }
|
|
}
|
|
},
|
|
|
|
'{ throw error\nerror; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'error',
|
|
range: [8, 12],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [2, 13],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 2, column: 0 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'error',
|
|
range: [14, 18],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
range: [14, 19],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 21],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 8 }
|
|
}
|
|
},
|
|
|
|
'{ throw error// Comment\nerror; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'error',
|
|
range: [8, 12],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [2, 23],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 2, column: 0 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'error',
|
|
range: [24, 28],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 5 }
|
|
}
|
|
},
|
|
range: [24, 29],
|
|
loc: {
|
|
start: { line: 2, column: 0 },
|
|
end: { line: 2, column: 6 }
|
|
}
|
|
}],
|
|
range: [0, 31],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 8 }
|
|
}
|
|
},
|
|
|
|
'{ throw error/* Multiline\nComment */error; }': {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'error',
|
|
range: [8, 12],
|
|
loc: {
|
|
start: { line: 1, column: 8 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [2, 35],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 2, column: 10 }
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'error',
|
|
range: [36, 40],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 15 }
|
|
}
|
|
},
|
|
range: [36, 41],
|
|
loc: {
|
|
start: { line: 2, column: 10 },
|
|
end: { line: 2, column: 16 }
|
|
}
|
|
}],
|
|
range: [0, 43],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 2, column: 18 }
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Trace Function Entrance': {
|
|
|
|
'function hello() {}': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'EnterFunction'
|
|
},
|
|
result: 'function hello() {\nEnterFunction({ name: \'hello\', lineNumber: 1, range: [0, 18] });}'
|
|
},
|
|
|
|
'hello = function() {}': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'Enter'
|
|
},
|
|
result: 'hello = function() {\nEnter({ name: \'hello\', lineNumber: 1, range: [8, 20] });}'
|
|
},
|
|
|
|
'hi = function() {}': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'customTracer'
|
|
},
|
|
result: 'hi = function() {\n// function "hi" at line 1\n}'
|
|
},
|
|
|
|
'var hello = function() {}': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'TRACE'
|
|
},
|
|
result: 'var hello = function() {\nTRACE({ name: \'hello\', lineNumber: 1, range: [12, 24] });}'
|
|
},
|
|
|
|
'var hello = function say() {}': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'TRACE'
|
|
},
|
|
result: 'var hello = function say() {\nTRACE({ name: \'hello\', lineNumber: 1, range: [12, 28] });}'
|
|
},
|
|
|
|
'hello = function () {}': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'EnterFunction'
|
|
},
|
|
result: 'hello = function () {\nEnterFunction({ name: \'hello\', lineNumber: 1, range: [8, 21] });}'
|
|
},
|
|
|
|
'\n\nfunction say(name) { print(name);}': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'EnterFunction'
|
|
},
|
|
result: '\n\nfunction say(name) {\nEnterFunction({ name: \'say\', lineNumber: 3, range: [2, 35] }); print(name);}'
|
|
},
|
|
|
|
'(function(){}())': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'EnterFunction'
|
|
},
|
|
result: '(function(){\nEnterFunction({ name: \'[Anonymous]\', lineNumber: 1, range: [1, 12] });}())'
|
|
},
|
|
|
|
'(function(){})()': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'EnterFunction'
|
|
},
|
|
result: '(function(){\nEnterFunction({ name: \'[Anonymous]\', lineNumber: 1, range: [0, 13] });})()'
|
|
},
|
|
|
|
'[14, 3].forEach(function(x) { alert(x) })': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'TR'
|
|
},
|
|
result: '[14, 3].forEach(function(x) {\nTR({ name: \'[Anonymous]\', lineNumber: 1, range: [16, 39] }); alert(x) })'
|
|
},
|
|
|
|
'var x = { y: function(z) {} }': {
|
|
modifiers: {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'TR'
|
|
},
|
|
result: 'var x = { y: function(z) {\nTR({ name: \'y\', lineNumber: 1, range: [13, 26] });} }'
|
|
},
|
|
|
|
'p = function() {\n}': {
|
|
modifiers: [{
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'X'
|
|
}, {
|
|
name: 'Tracer.FunctionEntrance',
|
|
config: 'Y'
|
|
}],
|
|
result: 'p = function() {\n' +
|
|
'Y({ name: \'p\', lineNumber: 1, range: [4, 66] });\n' +
|
|
'X({ name: \'p\', lineNumber: 1, range: [4, 17] });\n}'
|
|
}
|
|
|
|
},
|
|
|
|
'Generate Expression': {
|
|
'this': {
|
|
from: {
|
|
type: 'ThisExpression'
|
|
}
|
|
},
|
|
|
|
'42': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
},
|
|
|
|
'(1 + 2) * 3': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Literal',
|
|
value: 1
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 2
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 3
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = []': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: []
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = [\n 42\n]': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 42
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = [\n ,\n ,\n 42\n]': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0]
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [
|
|
null,
|
|
null,
|
|
{
|
|
type: 'Literal',
|
|
value: 42
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = [\n 1,\n 2,\n 3\n]': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 1
|
|
}, {
|
|
type: 'Literal',
|
|
value: 2
|
|
}, {
|
|
type: 'Literal',
|
|
value: 3
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = [\n 1,\n 2,\n ,\n 3\n]': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 1
|
|
}, {
|
|
type: 'Literal',
|
|
value: 2
|
|
}, null, {
|
|
type: 'Literal',
|
|
value: 3
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = [\n ,\n]': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [ null ]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = [\n 20,\n ,\n]': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: [{
|
|
type: 'Literal',
|
|
value: 20
|
|
}, null ]
|
|
}
|
|
}
|
|
},
|
|
|
|
'日本語 = []': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: '日本語'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: []
|
|
}
|
|
}
|
|
},
|
|
|
|
'T\u203F = []': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'T\u203F'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: []
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: []
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n answer: 42\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'answer'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n if: 42\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'if'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n true: 42\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'true'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n false: 42\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'false'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n null: 42\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'null'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n \'answer\': 42\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 'answer'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get width() {\n return m_width;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x',
|
|
range: [0, 0]
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'width'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'm_width'
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get undef() {\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'undef'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get if() {\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'if'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get true() {\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'true'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get false() {\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'false'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get null() {\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'null'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get "undef"() {\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 'undef',
|
|
raw: '"undef"'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get 10() {\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
kind: 'get'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set width(w) {\n m_width = w;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'width'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_width'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'set'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set if(w) {\n m_if = w;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'if'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_if'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'set'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set true(w) {\n m_true = w;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'true'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_true'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'set'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set false(w) {\n m_false = w;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'false'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_false'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'set'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set null(w) {\n m_null = w;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'null'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_null'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'set'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set "null"(w) {\n m_null = w;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 'null',
|
|
raw: '"null"'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_null'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'set'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set 10(w) {\n m_null = w;\n }\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10'
|
|
},
|
|
value: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'm_null'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'w'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
kind: 'set'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n get: 42\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'get'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = {\n set: 43\n}': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'set'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 43
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'0': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: 0
|
|
}
|
|
},
|
|
|
|
'0.14': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: 0.14
|
|
}
|
|
},
|
|
|
|
'\'Hello\'': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: 'Hello'
|
|
}
|
|
},
|
|
|
|
'\'\\n\\r\\b\\f\\\\\\\'"\\u0000\'': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: '\n\r\b\f\\\'"\x00'
|
|
}
|
|
},
|
|
|
|
'\'0\'': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: '0'
|
|
}
|
|
},
|
|
|
|
'\'Hello\\nworld\'': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: 'Hello\nworld'
|
|
}
|
|
},
|
|
|
|
'/a/': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: /a/
|
|
}
|
|
},
|
|
|
|
'new Button()': {
|
|
from: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'Button'
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
|
|
'new new foo(0)()': {
|
|
from: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 0
|
|
}]
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
|
|
'new new foo()(0)': {
|
|
from: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
'arguments': []
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 0
|
|
}]
|
|
}
|
|
},
|
|
|
|
'new foo().bar()': {
|
|
from: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
'arguments': []
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'bar'
|
|
}
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
|
|
'new foo.bar()': {
|
|
from: {
|
|
type: 'NewExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'bar'
|
|
}
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
|
|
'foo(bar, baz)': {
|
|
from: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'bar'
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'baz'
|
|
}]
|
|
}
|
|
},
|
|
|
|
'universe.milkyway': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe.milkyway.solarsystem': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway'
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'solarsystem'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe.milkyway.solarsystem.Earth': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway'
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'solarsystem'
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'Earth'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe[galaxyName, otherUselessName]': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: true,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'SequenceExpression',
|
|
expressions: [{
|
|
type: 'Identifier',
|
|
name: 'galaxyName'
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'otherUselessName'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe[galaxyName]': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: true,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxyName'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe[42].galaxies': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: true,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxies'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe(42).galaxies': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 42
|
|
}]
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxies'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe(42).galaxies(14, 3, 77).milkyway': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 42
|
|
}]
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'galaxies'
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 14
|
|
}, {
|
|
type: 'Literal',
|
|
value: 3
|
|
}, {
|
|
type: 'Literal',
|
|
value: 77
|
|
}]
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'milkyway'
|
|
}
|
|
}
|
|
},
|
|
|
|
'earth.asia.Indonesia.prepareForElection(2014)': {
|
|
from: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'earth'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'asia'
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'Indonesia'
|
|
}
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'prepareForElection'
|
|
}
|
|
},
|
|
'arguments': [{
|
|
type: 'Literal',
|
|
value: 2014
|
|
}]
|
|
}
|
|
},
|
|
|
|
'universe.if': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'if'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe.true': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'true'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe.false': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'false'
|
|
}
|
|
}
|
|
},
|
|
|
|
'universe.null': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'universe'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'null'
|
|
}
|
|
}
|
|
},
|
|
|
|
'\'string\'.toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 'string'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'42..toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 42
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'1e+1000.toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: Infinity
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'1e+100.toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 1e100
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x++': {
|
|
from: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: false
|
|
}
|
|
},
|
|
|
|
'x--': {
|
|
from: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: false
|
|
}
|
|
},
|
|
|
|
'++x': {
|
|
from: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: true
|
|
}
|
|
},
|
|
|
|
'--x': {
|
|
from: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: true
|
|
}
|
|
},
|
|
|
|
'+x': {
|
|
from: {
|
|
type: 'UnaryExpression',
|
|
operator: '+',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'-x': {
|
|
from: {
|
|
type: 'UnaryExpression',
|
|
operator: '-',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'~x': {
|
|
from: {
|
|
type: 'UnaryExpression',
|
|
operator: '~',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'!x': {
|
|
from: {
|
|
type: 'UnaryExpression',
|
|
operator: '!',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'void x': {
|
|
from: {
|
|
type: 'UnaryExpression',
|
|
operator: 'void',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'delete x': {
|
|
from: {
|
|
type: 'UnaryExpression',
|
|
operator: 'delete',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'typeof x': {
|
|
from: {
|
|
type: 'UnaryExpression',
|
|
operator: 'typeof',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x * y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x / y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '/',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x % y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x + y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x - y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x << y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '<<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x >> y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '>>',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x >>> y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '>>>',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x < y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x > y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '>',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x <= y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '<=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x >= y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '>=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'(x in y)': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: 'in',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x instanceof y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: 'instanceof',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x == y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '==',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x != y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '!=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x === y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '===',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x !== y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '!==',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x & y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x ^ y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x | y': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x + y + z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x - y + z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x + y - z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x - y - z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x + y * z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'x + y / z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '+',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '/',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'x - y % z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '-',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'x * y * z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x * y / z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '/',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x * y % z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x % y * z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '%',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x << y << z': {
|
|
type: 'ExpressionStatement',
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '<<',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '<<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x | y | z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x & y & z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x ^ y ^ z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x & y | z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x | y ^ z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x | y & z': {
|
|
from: {
|
|
type: 'BinaryExpression',
|
|
operator: '|',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'x || y': {
|
|
from: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x && y': {
|
|
from: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x || y || z': {
|
|
from: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x && y && z': {
|
|
from: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x || y && z': {
|
|
from: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'x || y ^ z': {
|
|
from: {
|
|
type: 'LogicalExpression',
|
|
operator: '||',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: '^',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'y ? 1 : 2': {
|
|
from: {
|
|
type: 'ConditionalExpression',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
consequent: {
|
|
type: 'Literal',
|
|
value: 1
|
|
},
|
|
alternate: {
|
|
type: 'Literal',
|
|
value: 2
|
|
}
|
|
}
|
|
},
|
|
|
|
'x && y ? 1 : 2': {
|
|
from: {
|
|
type: 'ConditionalExpression',
|
|
test: {
|
|
type: 'LogicalExpression',
|
|
operator: '&&',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
},
|
|
consequent: {
|
|
type: 'Literal',
|
|
value: 1
|
|
},
|
|
alternate: {
|
|
type: 'Literal',
|
|
value: 2
|
|
}
|
|
}
|
|
},
|
|
|
|
'x = 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x *= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '*=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x /= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '/=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x %= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '%=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x += 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '+=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x -= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '-=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x <<= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '<<=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x >>= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '>>=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x >>>= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '>>>=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x &= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '&=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x ^= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '^=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'x |= 42': {
|
|
from: {
|
|
type: 'AssignmentExpression',
|
|
operator: '|=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42
|
|
}
|
|
}
|
|
},
|
|
|
|
'0x20.toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 0x20,
|
|
raw: '0x20'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'0..toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0.'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'1e2.toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 100,
|
|
raw: '1e2'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'"TEST"': {
|
|
from: {
|
|
type: 'Literal',
|
|
value: 'TEST',
|
|
raw: '"TEST"'
|
|
}
|
|
},
|
|
|
|
'1..toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '20'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'2..toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 2,
|
|
raw: '"TEST"'
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
},
|
|
|
|
'3..toString': {
|
|
from: {
|
|
type: 'MemberExpression',
|
|
computed: false,
|
|
object: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: null
|
|
},
|
|
property: {
|
|
type: 'Identifier',
|
|
name: 'toString'
|
|
}
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Generate Statement': {
|
|
|
|
'{\n foo;\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
|
|
'{\n doThis();\n doThat();\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThis'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThat'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
|
|
'{\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
},
|
|
|
|
'var x;': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: null
|
|
}],
|
|
kind: 'var'
|
|
}
|
|
},
|
|
|
|
'var x, y;': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: null
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
init: null
|
|
}],
|
|
kind: 'var'
|
|
}
|
|
},
|
|
|
|
'var x = 42;': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
}
|
|
},
|
|
|
|
'var x = 14, y = 3, z = 1977;': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14'
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3'
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1977,
|
|
raw: '1977'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
}
|
|
},
|
|
|
|
'var x = function () {\n};': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
}
|
|
},
|
|
|
|
'let x;': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: null
|
|
}],
|
|
kind: 'let'
|
|
}
|
|
},
|
|
|
|
'{\n let x;\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: null
|
|
}],
|
|
kind: 'let'
|
|
}]
|
|
}
|
|
},
|
|
|
|
'{\n let x = 42;\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
}],
|
|
kind: 'let'
|
|
}]
|
|
}
|
|
},
|
|
|
|
'{\n let x = 14, y = 3, z = 1977;\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14'
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3'
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1977,
|
|
raw: '1977'
|
|
}
|
|
}],
|
|
kind: 'let'
|
|
}]
|
|
}
|
|
},
|
|
|
|
'const x = 42;': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
}],
|
|
kind: 'const'
|
|
}
|
|
},
|
|
|
|
'{\n const x = 42;\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
}],
|
|
kind: 'const'
|
|
}]
|
|
}
|
|
},
|
|
|
|
'{\n const x = 14, y = 3, z = 1977;\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 14,
|
|
raw: '14'
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 3,
|
|
raw: '3'
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'z'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1977,
|
|
raw: '1977'
|
|
}
|
|
}],
|
|
kind: 'const'
|
|
}]
|
|
}
|
|
},
|
|
|
|
';': {
|
|
from: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
},
|
|
|
|
'x;': {
|
|
from: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'x, y;': {
|
|
from: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'SequenceExpression',
|
|
expressions: [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'a;': {
|
|
from: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'a'
|
|
}
|
|
}
|
|
},
|
|
|
|
'aa;': {
|
|
from: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Identifier',
|
|
name: 'aa'
|
|
}
|
|
}
|
|
},
|
|
|
|
'if (morning)\n goodMorning();': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
consequent: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodMorning'
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
alternate: null
|
|
}
|
|
},
|
|
|
|
'if ({\n morning: true\n })\n goodMorning();': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
consequent: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodMorning'
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
alternate: null
|
|
}
|
|
},
|
|
|
|
'if (morning)\n (function () {\n });': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
consequent: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
}
|
|
},
|
|
alternate: null
|
|
}
|
|
},
|
|
|
|
'if (morning)\n var x = 0;': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
consequent: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
alternate: null
|
|
}
|
|
},
|
|
|
|
'if (morning) {\n var x = 0;\n}': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
consequent: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
}]
|
|
},
|
|
alternate: null
|
|
}
|
|
},
|
|
|
|
'if (morning)\n goodMorning();\nelse\n goodDay();': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
consequent: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodMorning'
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
alternate: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodDay'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'if (morning) {\n goodMorning();\n} else {\n goodDay();\n}': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
consequent: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodMorning'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
},
|
|
alternate: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodDay'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'if (morning) {\n goodMorning();\n} else if (afternoon) {\n goodDay();\n} else {\n goodEvening();\n}': {
|
|
from: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
consequent: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodMorning'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
},
|
|
alternate: {
|
|
type: 'IfStatement',
|
|
test: {
|
|
type: 'Identifier',
|
|
name: 'afternoon'
|
|
},
|
|
consequent: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodDay'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
},
|
|
alternate: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'goodEvening'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'do\n keep();\nwhile (true);': {
|
|
from: {
|
|
type: 'DoWhileStatement',
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'keep'
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
test: {
|
|
type: 'Literal',
|
|
value: true,
|
|
raw: 'true'
|
|
}
|
|
}
|
|
},
|
|
|
|
|
|
'do\n keep();\nwhile ({\n morning: true\n});': {
|
|
from: {
|
|
type: 'DoWhileStatement',
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'keep'
|
|
},
|
|
'arguments': []
|
|
}
|
|
},
|
|
test: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'do {\n x++;\n y--;\n} while (x < 10);': {
|
|
from: {
|
|
type: 'DoWhileStatement',
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: false
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
prefix: false
|
|
}
|
|
}]
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'{\n do {\n } while (false);\n false;\n}': {
|
|
from: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'DoWhileStatement',
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
},
|
|
test: {
|
|
type: 'Literal',
|
|
value: false,
|
|
raw: 'false'
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'Literal',
|
|
value: false,
|
|
raw: 'false'
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
|
|
'while (true)\n doSomething();': {
|
|
from: {
|
|
type: 'WhileStatement',
|
|
test: {
|
|
type: 'Literal',
|
|
value: true,
|
|
raw: 'true'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doSomething'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
|
|
'while ({\n morning: true\n })\n doSomething();': {
|
|
from: {
|
|
type: 'WhileStatement',
|
|
test: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doSomething'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'while (x < 10) {\n x++;\n y--;\n}': {
|
|
from: {
|
|
type: 'WhileStatement',
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10'
|
|
}
|
|
},
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: false
|
|
}
|
|
}, {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'UpdateExpression',
|
|
operator: '--',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
prefix: false
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (;;);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: null,
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (;;) {\n}': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: null,
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (x = 0;;);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
|
|
'for (x = {\n morning: true\n }; {\n afternoon: true\n }; {\n evening: true\n });': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
},
|
|
test: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'afternoon'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
update: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'evening'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (var x = 0;;);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (var x = {\n morning: true\n };;);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (let x = 0;;);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
}],
|
|
kind: 'let'
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (var x = 0, y = 1;;);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
}, {
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 1,
|
|
raw: '1'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (x = 0; x < 42;);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
},
|
|
update: null,
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (x = 0; x < 42; x++);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
},
|
|
update: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: false
|
|
},
|
|
body: {
|
|
type: 'EmptyStatement'
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (x = 0; x < 42; x++)\n process(x);': {
|
|
from: {
|
|
type: 'ForStatement',
|
|
init: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 0,
|
|
raw: '0'
|
|
}
|
|
},
|
|
test: {
|
|
type: 'BinaryExpression',
|
|
operator: '<',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
},
|
|
update: {
|
|
type: 'UpdateExpression',
|
|
operator: '++',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
prefix: false
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'for (x in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (x in {\n morning: true\n })\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (var x in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: null
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (var x in {\n morning: true\n })\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: null
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
right: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (var x = 42 in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (var x = {\n morning: true\n } in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (let x in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: null
|
|
}],
|
|
kind: 'let'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (let x = 42 in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
}],
|
|
kind: 'let'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (var i = function () {\n return (10 in []);\n } in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'i'
|
|
},
|
|
init: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'BinaryExpression',
|
|
operator: 'in',
|
|
left: {
|
|
type: 'Literal',
|
|
value: 10,
|
|
raw: '10'
|
|
},
|
|
right: {
|
|
type: 'ArrayExpression',
|
|
elements: []
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (var x = (42 in arr) in list)\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'BinaryExpression',
|
|
operator: 'in',
|
|
left: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'arr'
|
|
}
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'for (var x = 42 in (arr in list))\n process(x);': {
|
|
from: {
|
|
type: 'ForInStatement',
|
|
left: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
init: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
},
|
|
right: {
|
|
type: 'BinaryExpression',
|
|
operator: 'in',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'arr'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'list'
|
|
}
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'process'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}]
|
|
}
|
|
},
|
|
each: false
|
|
}
|
|
},
|
|
|
|
'continue;': {
|
|
from: {
|
|
type: 'ContinueStatement',
|
|
label: null
|
|
}
|
|
},
|
|
|
|
'continue done;': {
|
|
from: {
|
|
type: 'ContinueStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'done'
|
|
}
|
|
}
|
|
},
|
|
|
|
'break;': {
|
|
from: {
|
|
type: 'BreakStatement',
|
|
label: null
|
|
}
|
|
},
|
|
|
|
'break done;': {
|
|
from: {
|
|
type: 'BreakStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'done'
|
|
}
|
|
}
|
|
},
|
|
|
|
'return;': {
|
|
from: {
|
|
type: 'ReturnStatement',
|
|
argument: null
|
|
}
|
|
},
|
|
|
|
'return x;': {
|
|
from: {
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'return x * y;': {
|
|
from: {
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'return {\n morning: true\n};': {
|
|
from: {
|
|
type: 'ReturnStatement',
|
|
argument: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'with (x)\n foo = bar;': {
|
|
from: {
|
|
type: 'WithStatement',
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'bar'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'with ({\n morning: true\n })\n foo = bar;': {
|
|
from: {
|
|
type: 'WithStatement',
|
|
object: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
body: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'bar'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'with (x) {\n foo = bar;\n}': {
|
|
from: {
|
|
type: 'WithStatement',
|
|
object: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'AssignmentExpression',
|
|
operator: '=',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'foo'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'bar'
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'switch (x) {\n}': {
|
|
from: {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'switch ({\n morning: true\n }) {\n}': {
|
|
from: {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'switch (answer) {\ncase 42:\n hi();\n break;\n}': {
|
|
from: {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'answer'
|
|
},
|
|
cases: [{
|
|
type: 'SwitchCase',
|
|
test: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
},
|
|
consequent: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'hi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}, {
|
|
type: 'BreakStatement',
|
|
label: null
|
|
}]
|
|
}]
|
|
}
|
|
},
|
|
|
|
'switch (answer) {\ncase {\n morning: true\n }:\n hi();\n break;\n}': {
|
|
from: {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'answer'
|
|
},
|
|
cases: [{
|
|
type: 'SwitchCase',
|
|
test: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
},
|
|
consequent: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'hi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}, {
|
|
type: 'BreakStatement',
|
|
label: null
|
|
}]
|
|
}]
|
|
}
|
|
},
|
|
|
|
'switch (answer) {\ncase 42: {\n hi();\n break;\n }\n}': {
|
|
from: {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'answer'
|
|
},
|
|
cases: [{
|
|
type: 'SwitchCase',
|
|
test: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
},
|
|
consequent: [{
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'hi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}, {
|
|
type: 'BreakStatement',
|
|
label: null
|
|
}]
|
|
}]
|
|
}]
|
|
}
|
|
},
|
|
|
|
'switch (answer) {\ncase 42:\n hi();\n break;\ndefault:\n break;\n}': {
|
|
from: {
|
|
type: 'SwitchStatement',
|
|
discriminant: {
|
|
type: 'Identifier',
|
|
name: 'answer'
|
|
},
|
|
cases: [{
|
|
type: 'SwitchCase',
|
|
test: {
|
|
type: 'Literal',
|
|
value: 42,
|
|
raw: '42'
|
|
},
|
|
consequent: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'hi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}, {
|
|
type: 'BreakStatement',
|
|
label: null
|
|
}]
|
|
}, {
|
|
type: 'SwitchCase',
|
|
test: null,
|
|
consequent: [{
|
|
type: 'BreakStatement',
|
|
label: null
|
|
}]
|
|
}]
|
|
}
|
|
},
|
|
|
|
'start:\n for (;;)\n break start;': {
|
|
from: {
|
|
type: 'LabeledStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start'
|
|
},
|
|
body: {
|
|
type: 'ForStatement',
|
|
init: null,
|
|
test: null,
|
|
update: null,
|
|
body: {
|
|
type: 'BreakStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'start:\n while (true)\n break start;': {
|
|
from: {
|
|
type: 'LabeledStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start'
|
|
},
|
|
body: {
|
|
type: 'WhileStatement',
|
|
test: {
|
|
type: 'Literal',
|
|
value: true,
|
|
raw: 'true'
|
|
},
|
|
body: {
|
|
type: 'BreakStatement',
|
|
label: {
|
|
type: 'Identifier',
|
|
name: 'start'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'throw x;': {
|
|
from: {
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
}
|
|
}
|
|
},
|
|
|
|
'throw x * y;': {
|
|
from: {
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'BinaryExpression',
|
|
operator: '*',
|
|
left: {
|
|
type: 'Identifier',
|
|
name: 'x'
|
|
},
|
|
right: {
|
|
type: 'Identifier',
|
|
name: 'y'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
'throw {\n morning: true\n};': {
|
|
from: {
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'morning'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: true
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'throw {\n message: "Error"\n};': {
|
|
from: {
|
|
type: 'ThrowStatement',
|
|
argument: {
|
|
type: 'ObjectExpression',
|
|
properties: [{
|
|
type: 'Property',
|
|
key: {
|
|
type: 'Identifier',
|
|
name: 'message'
|
|
},
|
|
value: {
|
|
type: 'Literal',
|
|
value: 'Error',
|
|
raw: '"Error"'
|
|
},
|
|
kind: 'init'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'try {\n} catch (e) {\n}': {
|
|
from: {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e'
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
}],
|
|
finalizer: null
|
|
}
|
|
},
|
|
|
|
'try {\n} catch (e) {\n say(e);\n}': {
|
|
from: {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e'
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'say'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'e'
|
|
}]
|
|
}
|
|
}]
|
|
}
|
|
}],
|
|
finalizer: null
|
|
}
|
|
},
|
|
|
|
'try {\n} finally {\n cleanup(stuff);\n}': {
|
|
from: {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
},
|
|
handlers: [],
|
|
finalizer: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'cleanup'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'stuff'
|
|
}]
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'try {\n doThat();\n} catch (e) {\n say(e);\n}': {
|
|
from: {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThat'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e'
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'say'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'e'
|
|
}]
|
|
}
|
|
}]
|
|
}
|
|
}],
|
|
finalizer: null
|
|
}
|
|
},
|
|
|
|
'try {\n doThat();\n} catch (e) {\n say(e);\n} finally {\n cleanup(stuff);\n}': {
|
|
from: {
|
|
type: 'TryStatement',
|
|
block: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'doThat'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
},
|
|
handlers: [{
|
|
type: 'CatchClause',
|
|
param: {
|
|
type: 'Identifier',
|
|
name: 'e'
|
|
},
|
|
guard: null,
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'say'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'e'
|
|
}]
|
|
}
|
|
}]
|
|
}
|
|
}],
|
|
finalizer: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'cleanup'
|
|
},
|
|
'arguments': [{
|
|
type: 'Identifier',
|
|
name: 'stuff'
|
|
}]
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'debugger;': {
|
|
from: {
|
|
type: 'DebuggerStatement'
|
|
}
|
|
},
|
|
|
|
'function hello() {\n sayHi();\n}': {
|
|
from: {
|
|
type: 'FunctionDeclaration',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello'
|
|
},
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'function hello(a) {\n sayHi();\n}': {
|
|
from: {
|
|
type: 'FunctionDeclaration',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello'
|
|
},
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'a'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'function hello(a, b) {\n sayHi();\n}': {
|
|
from: {
|
|
type: 'FunctionDeclaration',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello'
|
|
},
|
|
params: [{
|
|
type: 'Identifier',
|
|
name: 'a'
|
|
}, {
|
|
type: 'Identifier',
|
|
name: 'b'
|
|
}],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
'var hi = function () {\n sayHi();\n};': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hi'
|
|
},
|
|
init: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
}
|
|
},
|
|
|
|
'var hello = function hi() {\n sayHi();\n};': {
|
|
from: {
|
|
type: 'VariableDeclaration',
|
|
declarations: [{
|
|
type: 'VariableDeclarator',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hello'
|
|
},
|
|
init: {
|
|
type: 'FunctionExpression',
|
|
id: {
|
|
type: 'Identifier',
|
|
name: 'hi'
|
|
},
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: [{
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'CallExpression',
|
|
callee: {
|
|
type: 'Identifier',
|
|
name: 'sayHi'
|
|
},
|
|
'arguments': []
|
|
}
|
|
}]
|
|
}
|
|
}
|
|
}],
|
|
kind: 'var'
|
|
}
|
|
},
|
|
|
|
'(function () {\n});': {
|
|
from: {
|
|
type: 'ExpressionStatement',
|
|
expression: {
|
|
type: 'FunctionExpression',
|
|
id: null,
|
|
params: [],
|
|
body: {
|
|
type: 'BlockStatement',
|
|
body: []
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
'Invalid syntax': {
|
|
|
|
'{': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Unexpected end of input'
|
|
},
|
|
|
|
'}': {
|
|
index: 0,
|
|
lineNumber: 1,
|
|
column: 1,
|
|
message: 'Error: Line 1: Unexpected token }'
|
|
},
|
|
|
|
'3ea': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'3x': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'3x0': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'0x': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'09': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'3in[]': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'0x3in[]': {
|
|
index: 3,
|
|
lineNumber: 1,
|
|
column: 4,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'"Hello\nWorld"': {
|
|
index: 7,
|
|
lineNumber: 1,
|
|
column: 8,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'var x = /(s/g': {
|
|
index: 13,
|
|
lineNumber: 1,
|
|
column: 14,
|
|
message: 'Error: Line 1: Invalid regular expression'
|
|
},
|
|
|
|
'/': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Invalid regular expression: missing /'
|
|
},
|
|
|
|
'var x = /\n/': {
|
|
index: 10,
|
|
lineNumber: 1,
|
|
column: 11,
|
|
message: 'Error: Line 1: Invalid regular expression: missing /'
|
|
},
|
|
|
|
'var x = "\n': {
|
|
index: 10,
|
|
lineNumber: 1,
|
|
column: 11,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'var if = 42': {
|
|
index: 4,
|
|
lineNumber: 1,
|
|
column: 5,
|
|
message: 'Error: Line 1: Unexpected token if'
|
|
},
|
|
|
|
'1 + (': {
|
|
index: 5,
|
|
lineNumber: 1,
|
|
column: 6,
|
|
message: 'Error: Line 1: Unexpected end of input'
|
|
},
|
|
|
|
'\n\n\n{': {
|
|
index: 4,
|
|
lineNumber: 4,
|
|
column: 2,
|
|
message: 'Error: Line 4: Unexpected end of input'
|
|
},
|
|
|
|
'\n/* Some multiline\ncomment */\n)': {
|
|
index: 30,
|
|
lineNumber: 4,
|
|
column: 1,
|
|
message: 'Error: Line 4: Unexpected token )'
|
|
},
|
|
|
|
'{ set 1 }': {
|
|
index: 6,
|
|
lineNumber: 1,
|
|
column: 7,
|
|
message: 'Error: Line 1: Unexpected number'
|
|
},
|
|
|
|
'{ get 2 }': {
|
|
index: 6,
|
|
lineNumber: 1,
|
|
column: 7,
|
|
message: 'Error: Line 1: Unexpected number'
|
|
},
|
|
|
|
'({ set: s(if) { } })': {
|
|
index: 10,
|
|
lineNumber: 1,
|
|
column: 11,
|
|
message: 'Error: Line 1: Unexpected token if'
|
|
},
|
|
|
|
'({ set: s() { } })': {
|
|
index: 12,
|
|
lineNumber: 1,
|
|
column: 13,
|
|
message: 'Error: Line 1: Unexpected token {'
|
|
},
|
|
|
|
'({ set: s(a, b) { } })': {
|
|
index: 16,
|
|
lineNumber: 1,
|
|
column: 17,
|
|
message: 'Error: Line 1: Unexpected token {'
|
|
},
|
|
|
|
'({ get: g(d) { } })': {
|
|
index: 13,
|
|
lineNumber: 1,
|
|
column: 14,
|
|
message: 'Error: Line 1: Unexpected token {'
|
|
},
|
|
|
|
'function t(if) { }': {
|
|
index: 11,
|
|
lineNumber: 1,
|
|
column: 12,
|
|
message: 'Error: Line 1: Unexpected token if'
|
|
},
|
|
|
|
'function t(true) { }': {
|
|
index: 11,
|
|
lineNumber: 1,
|
|
column: 12,
|
|
message: 'Error: Line 1: Unexpected token true'
|
|
},
|
|
|
|
'function t(false) { }': {
|
|
index: 11,
|
|
lineNumber: 1,
|
|
column: 12,
|
|
message: 'Error: Line 1: Unexpected token false'
|
|
},
|
|
|
|
'function t(null) { }': {
|
|
index: 11,
|
|
lineNumber: 1,
|
|
column: 12,
|
|
message: 'Error: Line 1: Unexpected token null'
|
|
},
|
|
|
|
'function null() { }': {
|
|
index: 9,
|
|
lineNumber: 1,
|
|
column: 10,
|
|
message: 'Error: Line 1: Unexpected token null'
|
|
},
|
|
|
|
'function true() { }': {
|
|
index: 9,
|
|
lineNumber: 1,
|
|
column: 10,
|
|
message: 'Error: Line 1: Unexpected token true'
|
|
},
|
|
|
|
'function false() { }': {
|
|
index: 9,
|
|
lineNumber: 1,
|
|
column: 10,
|
|
message: 'Error: Line 1: Unexpected token false'
|
|
},
|
|
|
|
'function if() { }': {
|
|
index: 9,
|
|
lineNumber: 1,
|
|
column: 10,
|
|
message: 'Error: Line 1: Unexpected token if'
|
|
},
|
|
|
|
'a b;': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Unexpected identifier'
|
|
},
|
|
|
|
'if.a;': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Unexpected token .'
|
|
},
|
|
|
|
'a if;': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Unexpected token if'
|
|
},
|
|
|
|
'a class;': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Unexpected reserved word'
|
|
},
|
|
|
|
'break 1;': {
|
|
index: 6,
|
|
lineNumber: 1,
|
|
column: 7,
|
|
message: 'Error: Line 1: Unexpected number'
|
|
},
|
|
|
|
'continue 2;': {
|
|
index: 9,
|
|
lineNumber: 1,
|
|
column: 10,
|
|
message: 'Error: Line 1: Unexpected number'
|
|
},
|
|
|
|
'throw': {
|
|
index: 5,
|
|
lineNumber: 1,
|
|
column: 6,
|
|
message: 'Error: Line 1: Unexpected end of input'
|
|
},
|
|
|
|
'throw;': {
|
|
index: 5,
|
|
lineNumber: 1,
|
|
column: 6,
|
|
message: 'Error: Line 1: Unexpected token ;'
|
|
},
|
|
|
|
'throw\n': {
|
|
index: 5,
|
|
lineNumber: 1,
|
|
column: 6,
|
|
message: 'Error: Line 1: Illegal newline after throw'
|
|
},
|
|
|
|
'10 = 20': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Invalid left-hand side in assignment'
|
|
},
|
|
|
|
'10++': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Invalid left-hand side expression in postfix operation'
|
|
},
|
|
|
|
'++10': {
|
|
index: 4,
|
|
lineNumber: 1,
|
|
column: 5,
|
|
message: 'Error: Line 1: Invalid left-hand side expression in prefix operation'
|
|
},
|
|
|
|
'for (10 in []);': {
|
|
index: 13,
|
|
lineNumber: 1,
|
|
column: 14,
|
|
message: 'Error: Line 1: Invalid left-hand side in for-in'
|
|
},
|
|
|
|
'for (var i, i2 in {});': {
|
|
index: 15,
|
|
lineNumber: 1,
|
|
column: 16,
|
|
message: 'Error: Line 1: Unexpected token in'
|
|
},
|
|
|
|
'for ((i in {}));': {
|
|
index: 14,
|
|
lineNumber: 1,
|
|
column: 15,
|
|
message: 'Error: Line 1: Unexpected token )'
|
|
},
|
|
|
|
'try { }': {
|
|
index: 7,
|
|
lineNumber: 1,
|
|
column: 8,
|
|
message: 'Error: Line 1: Missing catch or finally after try'
|
|
},
|
|
|
|
'\u203F = 10': {
|
|
index: 0,
|
|
lineNumber: 1,
|
|
column: 1,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'const x = 12, y;': {
|
|
index: 15,
|
|
lineNumber: 1,
|
|
column: 16,
|
|
message: 'Error: Line 1: Unexpected token ;'
|
|
},
|
|
|
|
'const x, y = 12;': {
|
|
index: 7,
|
|
lineNumber: 1,
|
|
column: 8,
|
|
message: 'Error: Line 1: Unexpected token ,'
|
|
},
|
|
|
|
'const x;': {
|
|
index: 7,
|
|
lineNumber: 1,
|
|
column: 8,
|
|
message: 'Error: Line 1: Unexpected token ;'
|
|
},
|
|
|
|
'if(true) let a = 1;': {
|
|
index: 9,
|
|
lineNumber: 1,
|
|
column: 10,
|
|
message: 'Error: Line 1: Unexpected token let'
|
|
},
|
|
|
|
'if(true) const a = 1;': {
|
|
index: 9,
|
|
lineNumber: 1,
|
|
column: 10,
|
|
message: 'Error: Line 1: Unexpected token const'
|
|
},
|
|
|
|
'\n]': {
|
|
index: 1,
|
|
lineNumber: 2,
|
|
column: 1,
|
|
message: 'Error: Line 2: Unexpected token ]'
|
|
},
|
|
|
|
'\r]': {
|
|
index: 1,
|
|
lineNumber: 2,
|
|
column: 1,
|
|
message: 'Error: Line 2: Unexpected token ]'
|
|
},
|
|
|
|
'\r\n]': {
|
|
index: 2,
|
|
lineNumber: 2,
|
|
column: 1,
|
|
message: 'Error: Line 2: Unexpected token ]'
|
|
},
|
|
|
|
'\n\r]': {
|
|
index: 2,
|
|
lineNumber: 3,
|
|
column: 1,
|
|
message: 'Error: Line 3: Unexpected token ]'
|
|
},
|
|
|
|
'//\r\n]': {
|
|
index: 4,
|
|
lineNumber: 2,
|
|
column: 1,
|
|
message: 'Error: Line 2: Unexpected token ]'
|
|
},
|
|
|
|
'//\n\r]': {
|
|
index: 4,
|
|
lineNumber: 3,
|
|
column: 1,
|
|
message: 'Error: Line 3: Unexpected token ]'
|
|
},
|
|
|
|
'//\r \n]': {
|
|
index: 5,
|
|
lineNumber: 3,
|
|
column: 1,
|
|
message: 'Error: Line 3: Unexpected token ]'
|
|
},
|
|
|
|
'/*\r\n*/]': {
|
|
index: 6,
|
|
lineNumber: 2,
|
|
column: 3,
|
|
message: 'Error: Line 2: Unexpected token ]'
|
|
},
|
|
|
|
'/*\n\r*/]': {
|
|
index: 6,
|
|
lineNumber: 3,
|
|
column: 3,
|
|
message: 'Error: Line 3: Unexpected token ]'
|
|
},
|
|
|
|
'/*\r \n*/]': {
|
|
index: 7,
|
|
lineNumber: 3,
|
|
column: 3,
|
|
message: 'Error: Line 3: Unexpected token ]'
|
|
},
|
|
|
|
'\\\\': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'\\u005c': {
|
|
index: 6,
|
|
lineNumber: 1,
|
|
column: 7,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'\\x': {
|
|
index: 1,
|
|
lineNumber: 1,
|
|
column: 2,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'\\u0000': {
|
|
index: 6,
|
|
lineNumber: 1,
|
|
column: 7,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'"\\': {
|
|
index: 2,
|
|
lineNumber: 1,
|
|
column: 3,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'"\\u': {
|
|
index: 3,
|
|
lineNumber: 1,
|
|
column: 4,
|
|
message: 'Error: Line 1: Unexpected token ILLEGAL'
|
|
},
|
|
|
|
'(function () { \'use strict\'; delete i; }())': {
|
|
index: 37,
|
|
lineNumber: 1,
|
|
column: 38,
|
|
message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
|
|
},
|
|
|
|
'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': {
|
|
index: 47,
|
|
lineNumber: 1,
|
|
column: 48,
|
|
message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
|
|
},
|
|
|
|
'function hello() {\'use strict\'; ({ get i() { }, i: 42 }) }': {
|
|
index: 53,
|
|
lineNumber: 1,
|
|
column: 54,
|
|
message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
|
|
},
|
|
|
|
'function hello() {\'use strict\'; ({ i: 42, get i() { } }) }': {
|
|
index: 53,
|
|
lineNumber: 1,
|
|
column: 54,
|
|
message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
|
|
},
|
|
|
|
'function hello() {\'use strict\'; ({ set i(x) { }, i: 42 }) }': {
|
|
index: 54,
|
|
lineNumber: 1,
|
|
column: 55,
|
|
message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
|
|
},
|
|
|
|
'function hello() {\'use strict\'; ({ i: 42, set i(x) { } }) }': {
|
|
index: 54,
|
|
lineNumber: 1,
|
|
column: 55,
|
|
message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
|
|
},
|
|
|
|
'function hello() {\'use strict\'; ({ get i() { }, get i() { } }) }': {
|
|
index: 59,
|
|
lineNumber: 1,
|
|
column: 60,
|
|
message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
|
|
},
|
|
|
|
'function hello() {\'use strict\'; ({ set i(x) { }, set i(x) { } }) }': {
|
|
index: 61,
|
|
lineNumber: 1,
|
|
column: 62,
|
|
message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
|
|
}
|
|
|
|
}
|
|
};
|
|
|
|
// Special handling for regular expression literal since we need to
|
|
// convert it to a string literal, otherwise it will be decoded
|
|
// as object "{}" and the regular expression would be lost.
|
|
function adjustRegexLiteral(key, value) {
|
|
'use strict';
|
|
if (key === 'value' && value instanceof RegExp) {
|
|
value = value.toString();
|
|
}
|
|
return value;
|
|
}
|
|
|
|
if (typeof window === 'undefined') {
|
|
var esprima = require('../esprima');
|
|
}
|
|
|
|
function NotMatchingError(expected, actual) {
|
|
'use strict';
|
|
Error.call(this, 'Expected ');
|
|
this.expected = expected;
|
|
this.actual = actual;
|
|
}
|
|
NotMatchingError.prototype = new Error();
|
|
|
|
function testParse(code, syntax) {
|
|
'use strict';
|
|
var expected, tree, actual, options, StringObject;
|
|
|
|
// alias, so that JSLint does not complain.
|
|
StringObject = String;
|
|
|
|
options = {
|
|
comment: (typeof syntax.comments !== 'undefined'),
|
|
range: true,
|
|
loc: true,
|
|
tokens: (typeof syntax.tokens !== 'undefined'),
|
|
raw: true
|
|
};
|
|
|
|
expected = JSON.stringify(syntax, null, 4);
|
|
try {
|
|
tree = esprima.parse(code, options);
|
|
tree = (options.comment || options.tokens) ? tree : tree.body[0];
|
|
actual = JSON.stringify(tree, adjustRegexLiteral, 4);
|
|
|
|
// Only to ensure that there is no error when using string object.
|
|
esprima.parse(new StringObject(code), options);
|
|
|
|
} catch (e) {
|
|
throw new NotMatchingError(expected, e.toString());
|
|
}
|
|
if (expected !== actual) {
|
|
throw new NotMatchingError(expected, actual);
|
|
}
|
|
}
|
|
|
|
function testError(code, exception) {
|
|
'use strict';
|
|
var expected, msg, actual;
|
|
|
|
expected = JSON.stringify(exception);
|
|
|
|
try {
|
|
esprima.parse(code);
|
|
} catch (e) {
|
|
msg = e.toString();
|
|
|
|
// Opera 9.64 produces an non-standard string in toString().
|
|
if (msg.substr(0, 6) !== 'Error:') {
|
|
if (typeof e.message === 'string') {
|
|
msg = 'Error: ' + e.message;
|
|
}
|
|
}
|
|
|
|
actual = JSON.stringify({
|
|
index: e.index,
|
|
lineNumber: e.lineNumber,
|
|
column: e.column,
|
|
message: msg
|
|
});
|
|
|
|
}
|
|
|
|
if (expected !== actual) {
|
|
throw new NotMatchingError(expected, actual);
|
|
}
|
|
}
|
|
|
|
function testModify(code, result) {
|
|
'use strict';
|
|
var actual, expected, i, modifier, config, modifiers;
|
|
|
|
function findModifier(name) {
|
|
var properties = name.split('.'),
|
|
object = esprima,
|
|
i;
|
|
for (i = 0; i < properties.length; i += 1) {
|
|
object = object[properties[i]];
|
|
}
|
|
return object;
|
|
}
|
|
|
|
function customTracerFunction(functionInfo) {
|
|
var name = functionInfo.name,
|
|
lineNumber = functionInfo.loc.start.line;
|
|
return '// function "' + name + '" at line ' + lineNumber + '\n';
|
|
}
|
|
|
|
if (Object.prototype.toString.call(result.modifiers) === '[object Array]') {
|
|
modifiers = [];
|
|
for (i = 0; i < result.modifiers.length; i += 1) {
|
|
modifier = result.modifiers[i];
|
|
config = modifier.config;
|
|
if (config === 'customTracer') {
|
|
config = customTracerFunction;
|
|
}
|
|
modifiers.push(findModifier(modifier.name).call(null, config));
|
|
}
|
|
} else {
|
|
modifier = result.modifiers;
|
|
config = modifier.config;
|
|
if (config === 'customTracer') {
|
|
config = customTracerFunction;
|
|
}
|
|
modifiers = findModifier(modifier.name).call(null, config);
|
|
}
|
|
|
|
expected = result.result;
|
|
try {
|
|
actual = esprima.modify(code, modifiers);
|
|
} catch (e) {
|
|
throw new NotMatchingError(expected, e.toString());
|
|
}
|
|
if (expected !== actual) {
|
|
throw new NotMatchingError(expected, actual);
|
|
}
|
|
}
|
|
|
|
function testGenerate(expected, result) {
|
|
'use strict';
|
|
var actual;
|
|
|
|
try {
|
|
actual = esprima.generate(result.from, { indent: ' ' });
|
|
} catch (e) {
|
|
console.log(e.stack);
|
|
throw new NotMatchingError(expected, e.toString());
|
|
}
|
|
if (expected !== actual) {
|
|
throw new NotMatchingError(expected, actual);
|
|
}
|
|
}
|
|
|
|
function runTest(code, result) {
|
|
'use strict';
|
|
if (result.hasOwnProperty('lineNumber')) {
|
|
testError(code, result);
|
|
} else if (result.hasOwnProperty('modifiers')) {
|
|
testModify(code, result);
|
|
} else if (result.hasOwnProperty('from')) {
|
|
testGenerate(code, result);
|
|
} else {
|
|
testParse(code, result);
|
|
}
|
|
}
|
|
|
|
if (typeof window !== 'undefined') {
|
|
// Run all tests in a browser environment.
|
|
runTests = function () {
|
|
'use strict';
|
|
var total = 0,
|
|
failures = 0,
|
|
category,
|
|
fixture,
|
|
source,
|
|
tick,
|
|
expected;
|
|
|
|
function setText(el, str) {
|
|
if (typeof el.innerText === 'string') {
|
|
el.innerText = str;
|
|
} else {
|
|
el.textContent = str;
|
|
}
|
|
}
|
|
|
|
function startCategory(category) {
|
|
var report, e;
|
|
report = document.getElementById('report');
|
|
e = document.createElement('h4');
|
|
setText(e, category);
|
|
report.appendChild(e);
|
|
}
|
|
|
|
function reportSuccess(code) {
|
|
var report, e;
|
|
report = document.getElementById('report');
|
|
e = document.createElement('pre');
|
|
e.setAttribute('class', 'code');
|
|
setText(e, code);
|
|
report.appendChild(e);
|
|
}
|
|
|
|
function reportFailure(code, expected, actual) {
|
|
var report, e;
|
|
|
|
report = document.getElementById('report');
|
|
|
|
e = document.createElement('p');
|
|
setText(e, 'Code:');
|
|
report.appendChild(e);
|
|
|
|
e = document.createElement('pre');
|
|
e.setAttribute('class', 'code');
|
|
setText(e, code);
|
|
report.appendChild(e);
|
|
|
|
e = document.createElement('p');
|
|
setText(e, 'Expected');
|
|
report.appendChild(e);
|
|
|
|
e = document.createElement('pre');
|
|
e.setAttribute('class', 'expected');
|
|
setText(e, expected);
|
|
report.appendChild(e);
|
|
|
|
e = document.createElement('p');
|
|
setText(e, 'Actual');
|
|
report.appendChild(e);
|
|
|
|
e = document.createElement('pre');
|
|
e.setAttribute('class', 'actual');
|
|
setText(e, actual);
|
|
report.appendChild(e);
|
|
}
|
|
|
|
setText(document.getElementById('version'), esprima.version);
|
|
|
|
tick = new Date();
|
|
for (category in data) {
|
|
if (data.hasOwnProperty(category)) {
|
|
startCategory(category);
|
|
fixture = data[category];
|
|
for (source in fixture) {
|
|
if (fixture.hasOwnProperty(source)) {
|
|
expected = fixture[source];
|
|
total += 1;
|
|
try {
|
|
runTest(source, expected);
|
|
reportSuccess(source, JSON.stringify(expected, null, 4));
|
|
} catch (e) {
|
|
failures += 1;
|
|
reportFailure(source, e.expected, e.actual);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
tick = (new Date()) - tick;
|
|
|
|
if (failures > 0) {
|
|
setText(document.getElementById('status'), total + ' tests. ' +
|
|
'Failures: ' + failures + '. ' + tick + ' ms');
|
|
} else {
|
|
setText(document.getElementById('status'), total + ' tests. ' +
|
|
'No failure. ' + tick + ' ms');
|
|
}
|
|
};
|
|
} else {
|
|
(function () {
|
|
'use strict';
|
|
|
|
var total = 0,
|
|
failures = [],
|
|
tick = new Date(),
|
|
expected,
|
|
header;
|
|
|
|
Object.keys(data).forEach(function (category) {
|
|
Object.keys(data[category]).forEach(function (source) {
|
|
total += 1;
|
|
expected = data[category][source];
|
|
try {
|
|
runTest(source, expected);
|
|
} catch (e) {
|
|
e.source = source;
|
|
failures.push(e);
|
|
}
|
|
});
|
|
});
|
|
tick = (new Date()) - tick;
|
|
|
|
header = total + ' tests. ' + failures.length + ' failures. ' +
|
|
tick + ' ms';
|
|
if (failures.length) {
|
|
console.error(header);
|
|
failures.forEach(function (failure) {
|
|
console.error(failure.source + ': Expected\n ' +
|
|
failure.expected.split('\n').join('\n ') +
|
|
'\nto match\n ' + failure.actual);
|
|
});
|
|
} else {
|
|
console.log(header);
|
|
}
|
|
process.exit(failures.length === 0 ? 0 : 1);
|
|
}());
|
|
}
|
|
/* vim: set sw=4 ts=4 et tw=80 : */
|