|
@@ -51,6 +51,8 @@ smalltalk.parser = (function(){
|
|
|
"float": parse_float,
|
|
|
"integer": parse_integer,
|
|
|
"literalArray": parse_literalArray,
|
|
|
+ "bareLiteralArray": parse_bareLiteralArray,
|
|
|
+ "literalArrayRest": parse_literalArrayRest,
|
|
|
"dynamicArray": parse_dynamicArray,
|
|
|
"dynamicDictionary": parse_dynamicDictionary,
|
|
|
"pseudoVariable": parse_pseudoVariable,
|
|
@@ -1233,8 +1235,8 @@ smalltalk.parser = (function(){
|
|
|
return cachedResult.result;
|
|
|
}
|
|
|
|
|
|
- var result0, result1, result2, result3, result4;
|
|
|
- var pos0, pos1, pos2, pos3;
|
|
|
+ var result0, result1;
|
|
|
+ var pos0, pos1;
|
|
|
|
|
|
pos0 = clone(pos);
|
|
|
pos1 = clone(pos);
|
|
@@ -1248,72 +1250,160 @@ smalltalk.parser = (function(){
|
|
|
}
|
|
|
}
|
|
|
if (result0 !== null) {
|
|
|
- result1 = parse_ws();
|
|
|
+ result1 = parse_literalArrayRest();
|
|
|
if (result1 !== null) {
|
|
|
- result2 = [];
|
|
|
+ result0 = [result0, result1];
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ pos = clone(pos1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ pos = clone(pos1);
|
|
|
+ }
|
|
|
+ if (result0 !== null) {
|
|
|
+ result0 = (function(offset, line, column, rest) {return rest})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
|
|
+ }
|
|
|
+ if (result0 === null) {
|
|
|
+ pos = clone(pos0);
|
|
|
+ }
|
|
|
+
|
|
|
+ cache[cacheKey] = {
|
|
|
+ nextPos: clone(pos),
|
|
|
+ result: result0
|
|
|
+ };
|
|
|
+ return result0;
|
|
|
+ }
|
|
|
+
|
|
|
+ function parse_bareLiteralArray() {
|
|
|
+ var cacheKey = "bareLiteralArray@" + pos.offset;
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
+ if (cachedResult) {
|
|
|
+ pos = clone(cachedResult.nextPos);
|
|
|
+ return cachedResult.result;
|
|
|
+ }
|
|
|
+
|
|
|
+ var result0, result1;
|
|
|
+ var pos0, pos1;
|
|
|
+
|
|
|
+ pos0 = clone(pos);
|
|
|
+ pos1 = clone(pos);
|
|
|
+ if (input.charCodeAt(pos.offset) === 40) {
|
|
|
+ result0 = "(";
|
|
|
+ advance(pos, 1);
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ if (reportFailures === 0) {
|
|
|
+ matchFailed("\"(\"");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (result0 !== null) {
|
|
|
+ result1 = parse_literalArrayRest();
|
|
|
+ if (result1 !== null) {
|
|
|
+ result0 = [result0, result1];
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ pos = clone(pos1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result0 = null;
|
|
|
+ pos = clone(pos1);
|
|
|
+ }
|
|
|
+ if (result0 !== null) {
|
|
|
+ result0 = (function(offset, line, column, rest) {return rest})(pos0.offset, pos0.line, pos0.column, result0[1]);
|
|
|
+ }
|
|
|
+ if (result0 === null) {
|
|
|
+ pos = clone(pos0);
|
|
|
+ }
|
|
|
+
|
|
|
+ cache[cacheKey] = {
|
|
|
+ nextPos: clone(pos),
|
|
|
+ result: result0
|
|
|
+ };
|
|
|
+ return result0;
|
|
|
+ }
|
|
|
+
|
|
|
+ function parse_literalArrayRest() {
|
|
|
+ var cacheKey = "literalArrayRest@" + pos.offset;
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
+ if (cachedResult) {
|
|
|
+ pos = clone(cachedResult.nextPos);
|
|
|
+ return cachedResult.result;
|
|
|
+ }
|
|
|
+
|
|
|
+ var result0, result1, result2, result3;
|
|
|
+ var pos0, pos1, pos2, pos3;
|
|
|
+
|
|
|
+ pos0 = clone(pos);
|
|
|
+ pos1 = clone(pos);
|
|
|
+ result0 = parse_ws();
|
|
|
+ if (result0 !== null) {
|
|
|
+ result1 = [];
|
|
|
+ pos2 = clone(pos);
|
|
|
+ pos3 = clone(pos);
|
|
|
+ result2 = parse_parseTimeLiteral();
|
|
|
+ if (result2 === null) {
|
|
|
+ result2 = parse_bareLiteralArray();
|
|
|
+ }
|
|
|
+ if (result2 !== null) {
|
|
|
+ result3 = parse_ws();
|
|
|
+ if (result3 !== null) {
|
|
|
+ result2 = [result2, result3];
|
|
|
+ } else {
|
|
|
+ result2 = null;
|
|
|
+ pos = clone(pos3);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ result2 = null;
|
|
|
+ pos = clone(pos3);
|
|
|
+ }
|
|
|
+ if (result2 !== null) {
|
|
|
+ result2 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result2[0]);
|
|
|
+ }
|
|
|
+ if (result2 === null) {
|
|
|
+ pos = clone(pos2);
|
|
|
+ }
|
|
|
+ while (result2 !== null) {
|
|
|
+ result1.push(result2);
|
|
|
pos2 = clone(pos);
|
|
|
pos3 = clone(pos);
|
|
|
- result3 = parse_parseTimeLiteral();
|
|
|
- if (result3 !== null) {
|
|
|
- result4 = parse_ws();
|
|
|
- if (result4 !== null) {
|
|
|
- result3 = [result3, result4];
|
|
|
+ result2 = parse_parseTimeLiteral();
|
|
|
+ if (result2 === null) {
|
|
|
+ result2 = parse_bareLiteralArray();
|
|
|
+ }
|
|
|
+ if (result2 !== null) {
|
|
|
+ result3 = parse_ws();
|
|
|
+ if (result3 !== null) {
|
|
|
+ result2 = [result2, result3];
|
|
|
} else {
|
|
|
- result3 = null;
|
|
|
+ result2 = null;
|
|
|
pos = clone(pos3);
|
|
|
}
|
|
|
} else {
|
|
|
- result3 = null;
|
|
|
+ result2 = null;
|
|
|
pos = clone(pos3);
|
|
|
}
|
|
|
- if (result3 !== null) {
|
|
|
- result3 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result3[0]);
|
|
|
+ if (result2 !== null) {
|
|
|
+ result2 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result2[0]);
|
|
|
}
|
|
|
- if (result3 === null) {
|
|
|
+ if (result2 === null) {
|
|
|
pos = clone(pos2);
|
|
|
}
|
|
|
- while (result3 !== null) {
|
|
|
- result2.push(result3);
|
|
|
- pos2 = clone(pos);
|
|
|
- pos3 = clone(pos);
|
|
|
- result3 = parse_parseTimeLiteral();
|
|
|
- if (result3 !== null) {
|
|
|
- result4 = parse_ws();
|
|
|
- if (result4 !== null) {
|
|
|
- result3 = [result3, result4];
|
|
|
- } else {
|
|
|
- result3 = null;
|
|
|
- pos = clone(pos3);
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (result1 !== null) {
|
|
|
+ result2 = parse_ws();
|
|
|
+ if (result2 !== null) {
|
|
|
+ if (input.charCodeAt(pos.offset) === 41) {
|
|
|
+ result3 = ")";
|
|
|
+ advance(pos, 1);
|
|
|
} else {
|
|
|
result3 = null;
|
|
|
- pos = clone(pos3);
|
|
|
- }
|
|
|
- if (result3 !== null) {
|
|
|
- result3 = (function(offset, line, column, lit) {return lit._value()})(pos2.offset, pos2.line, pos2.column, result3[0]);
|
|
|
- }
|
|
|
- if (result3 === null) {
|
|
|
- pos = clone(pos2);
|
|
|
+ if (reportFailures === 0) {
|
|
|
+ matchFailed("\")\"");
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- if (result2 !== null) {
|
|
|
- result3 = parse_ws();
|
|
|
if (result3 !== null) {
|
|
|
- if (input.charCodeAt(pos.offset) === 41) {
|
|
|
- result4 = ")";
|
|
|
- advance(pos, 1);
|
|
|
- } else {
|
|
|
- result4 = null;
|
|
|
- if (reportFailures === 0) {
|
|
|
- matchFailed("\")\"");
|
|
|
- }
|
|
|
- }
|
|
|
- if (result4 !== null) {
|
|
|
- result0 = [result0, result1, result2, result3, result4];
|
|
|
- } else {
|
|
|
- result0 = null;
|
|
|
- pos = clone(pos1);
|
|
|
- }
|
|
|
+ result0 = [result0, result1, result2, result3];
|
|
|
} else {
|
|
|
result0 = null;
|
|
|
pos = clone(pos1);
|
|
@@ -1334,7 +1424,7 @@ smalltalk.parser = (function(){
|
|
|
result0 = (function(offset, line, column, lits) {
|
|
|
return smalltalk.ValueNode._new()
|
|
|
._value_(lits)
|
|
|
- })(pos0.offset, pos0.line, pos0.column, result0[2]);
|
|
|
+ })(pos0.offset, pos0.line, pos0.column, result0[1]);
|
|
|
}
|
|
|
if (result0 === null) {
|
|
|
pos = clone(pos0);
|