This commit is contained in:
Vitaly Magerya 2016-06-09 19:23:23 +00:00 committed by GitHub
commit a9293772eb

View File

@ -110,7 +110,7 @@
MemberExpression: function(M) { MemberExpression: function(M) {
return new (M.computed ? AST_Sub : AST_Dot)({ return new (M.computed ? AST_Sub : AST_Dot)({
start : my_start_token(M), start : my_start_token(M),
end : my_end_token(M), end : M.computed ? my_end_token(M) : my_full_token(M.property),
property : M.computed ? from_moz(M.property) : M.property.name, property : M.computed ? from_moz(M.property) : M.property.name,
expression : from_moz(M.object) expression : from_moz(M.object)
}); });
@ -170,6 +170,20 @@
end : my_end_token(M), end : my_end_token(M),
name : M.name name : M.name
}); });
},
ArrayExpression: function (M) {
var start = my_start_token(M);
var end = my_end_token(M);
return new AST_Array({
start: start,
end: end,
elements: M.elements.map(function (E) {
return E ? from_moz(E) : new AST_Hole({
start: start,
end: end
});
})
});
} }
}; };
@ -206,7 +220,6 @@
map("CatchClause", AST_Catch, "param>argname, body%body"); map("CatchClause", AST_Catch, "param>argname, body%body");
map("ThisExpression", AST_This); map("ThisExpression", AST_This);
map("ArrayExpression", AST_Array, "elements@elements");
map("FunctionExpression", AST_Function, "id>name, params@argnames, body%body"); map("FunctionExpression", AST_Function, "id>name, params@argnames, body%body");
map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right"); map("BinaryExpression", AST_Binary, "operator=operator, left>left, right>right");
map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right"); map("LogicalExpression", AST_Binary, "operator=operator, left>left, right>right");
@ -215,6 +228,13 @@
map("NewExpression", AST_New, "callee>expression, arguments@args"); map("NewExpression", AST_New, "callee>expression, arguments@args");
map("CallExpression", AST_Call, "callee>expression, arguments@args"); map("CallExpression", AST_Call, "callee>expression, arguments@args");
def_to_moz(AST_Array, function To_Moz_ArrayExpression(M) {
return {
type: "ArrayExpression",
elements: M.elements.map(to_moz)
}
});
def_to_moz(AST_Directive, function To_Moz_Directive(M) { def_to_moz(AST_Directive, function To_Moz_Directive(M) {
return { return {
type: "ExpressionStatement", type: "ExpressionStatement",
@ -427,6 +447,22 @@
}); });
}; };
function my_full_token(moznode) {
var loc = moznode.loc,
start = loc && loc.start,
end = loc && loc.end;
var range = moznode.range;
return new AST_Token({
file : loc && loc.source,
line : start && start.line,
col : start && start.column,
pos : range ? range[0] : moznode.start,
endline : end && end.line,
endcol : end && end.column,
endpos : range ? range[1] : moznode.end
});
};
function map(moztype, mytype, propmap) { function map(moztype, mytype, propmap) {
var moz_to_me = "function From_Moz_" + moztype + "(M){\n"; var moz_to_me = "function From_Moz_" + moztype + "(M){\n";
moz_to_me += "return new U2." + mytype.name + "({\n" + moz_to_me += "return new U2." + mytype.name + "({\n" +