mirror of
https://github.com/adelphes/android-dev-ext.git
synced 2025-12-23 01:48:18 +00:00
add support for array-literal expressions
This commit is contained in:
@@ -151,6 +151,10 @@ class BracketedExpression extends ParsedExpression {
|
||||
}
|
||||
}
|
||||
|
||||
class ArrayLiteralExpression extends ParsedExpression {
|
||||
elements = [];
|
||||
}
|
||||
|
||||
class ParsedNewExpression extends ParsedExpression {}
|
||||
|
||||
class NewObjectExpression extends ParsedNewExpression {
|
||||
@@ -382,6 +386,25 @@ function parseNewExpression(e) {
|
||||
return new_expression;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {ExpressionText} e
|
||||
*/
|
||||
function parseArrayLiteral(e) {
|
||||
const arr = new ArrayLiteralExpression();
|
||||
if (!strip(e, '}')) {
|
||||
for (let element; ;) {
|
||||
if ((element = parse_expression(e)) === null) {
|
||||
return null;
|
||||
}
|
||||
arr.elements.push(element);
|
||||
if (strip(e, ',')) continue;
|
||||
if (strip(e, '}')) break;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {ExpressionText} e
|
||||
*/
|
||||
@@ -419,15 +442,23 @@ function getBinaryOperator(s) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {ExpressionText} e
|
||||
* @param {ExpressionText|string} e
|
||||
* @returns {ParsedExpression}
|
||||
*/
|
||||
function parse_expression(e) {
|
||||
if (typeof e === 'string') {
|
||||
e = new ExpressionText(e);
|
||||
}
|
||||
const newop = e.expr.match(/^new\b/);
|
||||
if (newop) {
|
||||
strip(e, 3);
|
||||
return parseNewExpression(e);
|
||||
}
|
||||
const arrayinit = e.expr.match(/^\{/);
|
||||
if (arrayinit) {
|
||||
strip(e, 1);
|
||||
return parseArrayLiteral(e);
|
||||
}
|
||||
const prefix_incdec = e.expr.match(/^(?:(\+\+)|\-\-)(?=[a-zA-Z_])/);
|
||||
if (prefix_incdec) {
|
||||
strip(e, 2);
|
||||
|
||||
Reference in New Issue
Block a user