|
@@ -0,0 +1,3724 @@
|
|
|
|
+smalltalk.parser = (function(){
|
|
|
|
+ /* Generated by PEG.js 0.6.2 (http://pegjs.majda.cz/). */
|
|
|
|
+
|
|
|
|
+ var result = {
|
|
|
|
+ /*
|
|
|
|
+ * Parses the input with a generated parser. If the parsing is successfull,
|
|
|
|
+ * returns a value explicitly or implicitly specified by the grammar from
|
|
|
|
+ * which the parser was generated (see |PEG.buildParser|). If the parsing is
|
|
|
|
+ * unsuccessful, throws |PEG.parser.SyntaxError| describing the error.
|
|
|
|
+ */
|
|
|
|
+ parse: function(input, startRule) {
|
|
|
|
+ var parseFunctions = {
|
|
|
|
+ "assignment": parse_assignment,
|
|
|
|
+ "binaryMessage": parse_binaryMessage,
|
|
|
|
+ "binaryPattern": parse_binaryPattern,
|
|
|
|
+ "binarySelector": parse_binarySelector,
|
|
|
|
+ "binarySend": parse_binarySend,
|
|
|
|
+ "binaryTail": parse_binaryTail,
|
|
|
|
+ "block": parse_block,
|
|
|
|
+ "blockParamList": parse_blockParamList,
|
|
|
|
+ "cascade": parse_cascade,
|
|
|
|
+ "className": parse_className,
|
|
|
|
+ "classReference": parse_classReference,
|
|
|
|
+ "comments": parse_comments,
|
|
|
|
+ "expression": parse_expression,
|
|
|
|
+ "expressionList": parse_expressionList,
|
|
|
|
+ "expressions": parse_expressions,
|
|
|
|
+ "float": parse_float,
|
|
|
|
+ "identifier": parse_identifier,
|
|
|
|
+ "integer": parse_integer,
|
|
|
|
+ "jsStatement": parse_jsStatement,
|
|
|
|
+ "keyword": parse_keyword,
|
|
|
|
+ "keywordMessage": parse_keywordMessage,
|
|
|
|
+ "keywordPair": parse_keywordPair,
|
|
|
|
+ "keywordPattern": parse_keywordPattern,
|
|
|
|
+ "keywordSend": parse_keywordSend,
|
|
|
|
+ "literal": parse_literal,
|
|
|
|
+ "literalArray": parse_literalArray,
|
|
|
|
+ "message": parse_message,
|
|
|
|
+ "method": parse_method,
|
|
|
|
+ "number": parse_number,
|
|
|
|
+ "operand": parse_operand,
|
|
|
|
+ "reference": parse_reference,
|
|
|
|
+ "ret": parse_ret,
|
|
|
|
+ "separator": parse_separator,
|
|
|
|
+ "sequence": parse_sequence,
|
|
|
|
+ "statements": parse_statements,
|
|
|
|
+ "string": parse_string,
|
|
|
|
+ "subexpression": parse_subexpression,
|
|
|
|
+ "symbol": parse_symbol,
|
|
|
|
+ "temps": parse_temps,
|
|
|
|
+ "unaryMessage": parse_unaryMessage,
|
|
|
|
+ "unaryPattern": parse_unaryPattern,
|
|
|
|
+ "unarySend": parse_unarySend,
|
|
|
|
+ "unaryTail": parse_unaryTail,
|
|
|
|
+ "variable": parse_variable,
|
|
|
|
+ "ws": parse_ws
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ if (startRule !== undefined) {
|
|
|
|
+ if (parseFunctions[startRule] === undefined) {
|
|
|
|
+ throw new Error("Invalid rule name: " + quote(startRule) + ".");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ startRule = "method";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var pos = 0;
|
|
|
|
+ var reportMatchFailures = true;
|
|
|
|
+ var rightmostMatchFailuresPos = 0;
|
|
|
|
+ var rightmostMatchFailuresExpected = [];
|
|
|
|
+ var cache = {};
|
|
|
|
+
|
|
|
|
+ function padLeft(input, padding, length) {
|
|
|
|
+ var result = input;
|
|
|
|
+
|
|
|
|
+ var padLength = length - input.length;
|
|
|
|
+ for (var i = 0; i < padLength; i++) {
|
|
|
|
+ result = padding + result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function escape(ch) {
|
|
|
|
+ var charCode = ch.charCodeAt(0);
|
|
|
|
+
|
|
|
|
+ if (charCode <= 0xFF) {
|
|
|
|
+ var escapeChar = 'x';
|
|
|
|
+ var length = 2;
|
|
|
|
+ } else {
|
|
|
|
+ var escapeChar = 'u';
|
|
|
|
+ var length = 4;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function quote(s) {
|
|
|
|
+ /*
|
|
|
|
+ * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a
|
|
|
|
+ * string literal except for the closing quote character, backslash,
|
|
|
|
+ * carriage return, line separator, paragraph separator, and line feed.
|
|
|
|
+ * Any character may appear in the form of an escape sequence.
|
|
|
|
+ */
|
|
|
|
+ return '"' + s
|
|
|
|
+ .replace(/\\/g, '\\\\') // backslash
|
|
|
|
+ .replace(/"/g, '\\"') // closing quote character
|
|
|
|
+ .replace(/\r/g, '\\r') // carriage return
|
|
|
|
+ .replace(/\n/g, '\\n') // line feed
|
|
|
|
+ .replace(/[\x80-\uFFFF]/g, escape) // non-ASCII characters
|
|
|
|
+ + '"';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function matchFailed(failure) {
|
|
|
|
+ if (pos < rightmostMatchFailuresPos) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (pos > rightmostMatchFailuresPos) {
|
|
|
|
+ rightmostMatchFailuresPos = pos;
|
|
|
|
+ rightmostMatchFailuresExpected = [];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ rightmostMatchFailuresExpected.push(failure);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_separator() {
|
|
|
|
+ var cacheKey = 'separator@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (input.substr(pos).match(/^[ \xA0\uFEFF\n\r\u2028\u2029]/) !== null) {
|
|
|
|
+ var result1 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[ \\xA0\\uFEFF\\n\\r\\u2028\\u2029]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = [];
|
|
|
|
+ while (result1 !== null) {
|
|
|
|
+ result0.push(result1);
|
|
|
|
+ if (input.substr(pos).match(/^[ \xA0\uFEFF\n\r\u2028\u2029]/) !== null) {
|
|
|
|
+ var result1 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[ \\xA0\\uFEFF\\n\\r\\u2028\\u2029]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_comments() {
|
|
|
|
+ var cacheKey = 'comments@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^["]/) !== null) {
|
|
|
|
+ var result2 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result3 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[^"]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result3.push(result5);
|
|
|
|
+ if (input.substr(pos).match(/^[^"]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ if (input.substr(pos).match(/^["]/) !== null) {
|
|
|
|
+ var result4 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result2, result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = [];
|
|
|
|
+ while (result1 !== null) {
|
|
|
|
+ result0.push(result1);
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^["]/) !== null) {
|
|
|
|
+ var result2 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result3 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[^"]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result3.push(result5);
|
|
|
|
+ if (input.substr(pos).match(/^[^"]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ if (input.substr(pos).match(/^["]/) !== null) {
|
|
|
|
+ var result4 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[\"]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result2, result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_ws() {
|
|
|
|
+ var cacheKey = 'ws@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var result0 = [];
|
|
|
|
+ var result3 = parse_separator();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result1 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = parse_comments();
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result1 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ while (result1 !== null) {
|
|
|
|
+ result0.push(result1);
|
|
|
|
+ var result3 = parse_separator();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result1 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = parse_comments();
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result1 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_identifier() {
|
|
|
|
+ var cacheKey = 'identifier@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^[a-z]/) !== null) {
|
|
|
|
+ var result3 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[a-z]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[a-zA-Z0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result4.push(result5);
|
|
|
|
+ if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[a-zA-Z0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(first, others) {return first + others.join("")})(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_keyword() {
|
|
|
|
+ var cacheKey = 'keyword@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_identifier();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ if (input.substr(pos).match(/^[:]/) !== null) {
|
|
|
|
+ var result4 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[:]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(first, last) {return first + last})(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_className() {
|
|
|
|
+ var cacheKey = 'className@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^[A-Z]/) !== null) {
|
|
|
|
+ var result3 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[A-Z]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[a-zA-Z0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result4.push(result5);
|
|
|
|
+ if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[a-zA-Z0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(first, others) {return first + others.join("")})(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_string() {
|
|
|
|
+ var cacheKey = 'string@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^[']/) !== null) {
|
|
|
|
+ var result3 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[']");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ if (input.substr(pos, 2) === "''") {
|
|
|
|
+ var result9 = "''";
|
|
|
|
+ pos += 2;
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"''\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var result10 = result9 !== null
|
|
|
|
+ ? (function() {return "'"})()
|
|
|
|
+ : null;
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result8 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ if (input.substr(pos).match(/^[^']/) !== null) {
|
|
|
|
+ var result7 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^']");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result6 = result7;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ while (result6 !== null) {
|
|
|
|
+ result4.push(result6);
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ if (input.substr(pos, 2) === "''") {
|
|
|
|
+ var result9 = "''";
|
|
|
|
+ pos += 2;
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"''\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var result10 = result9 !== null
|
|
|
|
+ ? (function() {return "'"})()
|
|
|
|
+ : null;
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result8 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ if (input.substr(pos).match(/^[^']/) !== null) {
|
|
|
|
+ var result7 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^']");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result6 = result7;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ if (input.substr(pos).match(/^[']/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[']");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(val) {
|
|
|
|
+ return smalltalk.ValueNode._new()
|
|
|
|
+ ._value_(val.join("").replace(/\"/ig, '"'))
|
|
|
|
+ })(result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_symbol() {
|
|
|
|
+ var cacheKey = 'symbol@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos, 1) === "#") {
|
|
|
|
+ var result3 = "#";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"#\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[a-zA-Z0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result4.push(result5);
|
|
|
|
+ if (input.substr(pos).match(/^[a-zA-Z0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[a-zA-Z0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(val) {
|
|
|
|
+ return smalltalk.ValueNode._new()
|
|
|
|
+ ._value_(val.join("").replace(/\"/ig, '"'))
|
|
|
|
+ })(result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_number() {
|
|
|
|
+ var cacheKey = 'number@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var result4 = parse_float();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = result4;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = parse_integer();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result1 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(n) {
|
|
|
|
+ return smalltalk.ValueNode._new()
|
|
|
|
+ ._value_(n)
|
|
|
|
+ })(result1)
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_float() {
|
|
|
|
+ var cacheKey = 'float@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^[\-]/) !== null) {
|
|
|
|
+ var result7 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[\\-]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var result3 = result7 !== null ? result7 : '';
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_integer();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ".") {
|
|
|
|
+ var result5 = ".";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\".\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_integer();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(neg, int, dec) {return parseFloat((neg+int+"."+dec), 10)})(result1[0], result1[1], result1[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_integer() {
|
|
|
|
+ var cacheKey = 'integer@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^[\-]/) !== null) {
|
|
|
|
+ var result6 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[\\-]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var result3 = result6 !== null ? result6 : '';
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result4.push(result5);
|
|
|
|
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
|
|
|
|
+ var result5 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[0-9]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(neg, digits) {return (parseInt(neg+digits, 10))})(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_literalArray() {
|
|
|
|
+ var cacheKey = 'literalArray@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos, 2) === "#(") {
|
|
|
|
+ var result3 = "#(";
|
|
|
|
+ pos += 2;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"#(\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = [];
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result11 = parse_literal();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result12 = parse_ws();
|
|
|
|
+ if (result12 !== null) {
|
|
|
|
+ var result9 = [result11, result12];
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result10 = result9 !== null
|
|
|
|
+ ? (function(lit) {return lit._value()})(result9[0])
|
|
|
|
+ : null;
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result8 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ while (result8 !== null) {
|
|
|
|
+ result5.push(result8);
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result11 = parse_literal();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result12 = parse_ws();
|
|
|
|
+ if (result12 !== null) {
|
|
|
|
+ var result9 = [result11, result12];
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result10 = result9 !== null
|
|
|
|
+ ? (function(lit) {return lit._value()})(result9[0])
|
|
|
|
+ : null;
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result8 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ")") {
|
|
|
|
+ var result7 = ")";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\")\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6, result7];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(lits) {
|
|
|
|
+ return smalltalk.ValueNode._new()
|
|
|
|
+ ._value_(lits)
|
|
|
|
+ })(result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_literal() {
|
|
|
|
+ var cacheKey = 'literal@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var result5 = parse_number();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result0 = result5;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = parse_literalArray();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result0 = result4;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = parse_string();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result0 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = parse_symbol();
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = parse_block();
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = result1;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;;
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_variable() {
|
|
|
|
+ var cacheKey = 'variable@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var result1 = parse_identifier();
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(identifier) {
|
|
|
|
+ return smalltalk.VariableNode._new()
|
|
|
|
+ ._value_(identifier)
|
|
|
|
+ })(result1)
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_classReference() {
|
|
|
|
+ var cacheKey = 'classReference@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var result1 = parse_className();
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(className) {
|
|
|
|
+ return smalltalk.ClassReferenceNode._new()
|
|
|
|
+ ._value_(className)
|
|
|
|
+ })(result1)
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_reference() {
|
|
|
|
+ var cacheKey = 'reference@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var result2 = parse_variable();
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = parse_classReference();
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = result1;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_keywordPair() {
|
|
|
|
+ var cacheKey = 'keywordPair@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_keyword();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = parse_binarySend();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(key, arg) {return {key:key, arg: arg}})(result1[0], result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_binarySelector() {
|
|
|
|
+ var cacheKey = 'binarySelector@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ if (input.substr(pos).match(/^[+*\/=><,@%~|&\-]/) !== null) {
|
|
|
|
+ var result3 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[+*\\/=><,@%~|&\\-]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result1 = [];
|
|
|
|
+ while (result3 !== null) {
|
|
|
|
+ result1.push(result3);
|
|
|
|
+ if (input.substr(pos).match(/^[+*\/=><,@%~|&\-]/) !== null) {
|
|
|
|
+ var result3 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[+*\\/=><,@%~|&\\-]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(bin) {return bin.join("")})(result1)
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_keywordPattern() {
|
|
|
|
+ var cacheKey = 'keywordPattern@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result7 = parse_keyword();
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result8 = parse_ws();
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result9 = parse_identifier();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result4 = [result6, result7, result8, result9];
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ var result5 = result4 !== null
|
|
|
|
+ ? (function(key, arg) {return {key:key, arg: arg}})(result4[1], result4[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result3 = result5;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result1 = [];
|
|
|
|
+ while (result3 !== null) {
|
|
|
|
+ result1.push(result3);
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result7 = parse_keyword();
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result8 = parse_ws();
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result9 = parse_identifier();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result4 = [result6, result7, result8, result9];
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ var result5 = result4 !== null
|
|
|
|
+ ? (function(key, arg) {return {key:key, arg: arg}})(result4[1], result4[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result3 = result5;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(pairs) {
|
|
|
|
+ var keywords = [];
|
|
|
|
+ var params = [];
|
|
|
|
+ for(var i=0;i<pairs.length;i++){
|
|
|
|
+ keywords.push(pairs[i].key);
|
|
|
|
+ }
|
|
|
|
+ for(var i=0;i<pairs.length;i++){
|
|
|
|
+ params.push(pairs[i].arg);
|
|
|
|
+ }
|
|
|
|
+ return [keywords.join(""), params]
|
|
|
|
+ })(result1)
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_binaryPattern() {
|
|
|
|
+ var cacheKey = 'binaryPattern@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_binarySelector();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = parse_ws();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_identifier();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(selector, arg) {return [selector, [arg]]})(result1[1], result1[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_unaryPattern() {
|
|
|
|
+ var cacheKey = 'unaryPattern@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_identifier();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(selector) {return [selector, []]})(result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_expression() {
|
|
|
|
+ var cacheKey = 'expression@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var result5 = parse_assignment();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result0 = result5;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = parse_cascade();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result0 = result4;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = parse_keywordSend();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result0 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = parse_binarySend();
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = parse_jsStatement();
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = result1;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;;
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_expressionList() {
|
|
|
|
+ var cacheKey = 'expressionList@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ".") {
|
|
|
|
+ var result4 = ".";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\".\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = parse_ws();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_expression();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(expression) {return expression})(result1[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_expressions() {
|
|
|
|
+ var cacheKey = 'expressions@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_expression();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ var result5 = parse_expressionList();
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result4.push(result5);
|
|
|
|
+ var result5 = parse_expressionList();
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(first, others) {
|
|
|
|
+ var result = [first];
|
|
|
|
+ for(var i=0;i<others.length;i++) {
|
|
|
|
+ result.push(others[i]);
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ })(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_assignment() {
|
|
|
|
+ var cacheKey = 'assignment@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_variable();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ if (input.substr(pos, 2) === ":=") {
|
|
|
|
+ var result5 = ":=";
|
|
|
|
+ pos += 2;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\":=\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result7 = parse_expression();
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6, result7];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(variable, expression) {
|
|
|
|
+ return smalltalk.AssignmentNode._new()
|
|
|
|
+ ._left_(variable)
|
|
|
|
+ ._right_(expression)
|
|
|
|
+ })(result1[0], result1[4])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_ret() {
|
|
|
|
+ var cacheKey = 'ret@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos, 1) === "^") {
|
|
|
|
+ var result3 = "^";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"^\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = parse_expression();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ".") {
|
|
|
|
+ var result8 = ".";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\".\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var result7 = result8 !== null ? result8 : '';
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6, result7];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(expression) {
|
|
|
|
+ return smalltalk.ReturnNode._new()
|
|
|
|
+ ._nodes_([expression])
|
|
|
|
+ })(result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_temps() {
|
|
|
|
+ var cacheKey = 'temps@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos, 1) === "|") {
|
|
|
|
+ var result3 = "|";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"|\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result10 = parse_identifier();
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result11 = parse_ws();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result7 = [result9, result10, result11];
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result8 = result7 !== null
|
|
|
|
+ ? (function(variable) {return variable})(result7[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ while (result6 !== null) {
|
|
|
|
+ result4.push(result6);
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result10 = parse_identifier();
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result11 = parse_ws();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result7 = [result9, result10, result11];
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result8 = result7 !== null
|
|
|
|
+ ? (function(variable) {return variable})(result7[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === "|") {
|
|
|
|
+ var result5 = "|";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"|\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(vars) {return vars})(result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_blockParamList() {
|
|
|
|
+ var cacheKey = 'blockParamList@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ":") {
|
|
|
|
+ var result10 = ":";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result10 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\":\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result11 = parse_ws();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result12 = parse_identifier();
|
|
|
|
+ if (result12 !== null) {
|
|
|
|
+ var result7 = [result9, result10, result11, result12];
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result8 = result7 !== null
|
|
|
|
+ ? (function(param) {return param})(result7[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result3 = [];
|
|
|
|
+ while (result6 !== null) {
|
|
|
|
+ result3.push(result6);
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ":") {
|
|
|
|
+ var result10 = ":";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result10 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\":\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result11 = parse_ws();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result12 = parse_identifier();
|
|
|
|
+ if (result12 !== null) {
|
|
|
|
+ var result7 = [result9, result10, result11, result12];
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result8 = result7 !== null
|
|
|
|
+ ? (function(param) {return param})(result7[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === "|") {
|
|
|
|
+ var result5 = "|";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"|\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(params) {return params})(result1[0])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_subexpression() {
|
|
|
|
+ var cacheKey = 'subexpression@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos, 1) === "(") {
|
|
|
|
+ var result3 = "(";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"(\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = parse_expression();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ")") {
|
|
|
|
+ var result7 = ")";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\")\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6, result7];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(expression) {return expression})(result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_statements() {
|
|
|
|
+ var cacheKey = 'statements@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos4 = pos;
|
|
|
|
+ var savedPos5 = pos;
|
|
|
|
+ var result22 = parse_ret();
|
|
|
|
+ if (result22 !== null) {
|
|
|
|
+ var result23 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result24 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result24 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result24 !== null) {
|
|
|
|
+ result23.push(result24);
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result24 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result24 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result23 !== null) {
|
|
|
|
+ var result20 = [result22, result23];
|
|
|
|
+ } else {
|
|
|
|
+ var result20 = null;
|
|
|
|
+ pos = savedPos5;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result20 = null;
|
|
|
|
+ pos = savedPos5;
|
|
|
|
+ }
|
|
|
|
+ var result21 = result20 !== null
|
|
|
|
+ ? (function(ret) {return [ret]})(result20[0])
|
|
|
|
+ : null;
|
|
|
|
+ if (result21 !== null) {
|
|
|
|
+ var result19 = result21;
|
|
|
|
+ } else {
|
|
|
|
+ var result19 = null;
|
|
|
|
+ pos = savedPos4;
|
|
|
|
+ }
|
|
|
|
+ if (result19 !== null) {
|
|
|
|
+ var result0 = result19;
|
|
|
|
+ } else {
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result11 = parse_expressions();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result12 = parse_ws();
|
|
|
|
+ if (result12 !== null) {
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result18 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result18 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result18 !== null) {
|
|
|
|
+ var result13 = [];
|
|
|
|
+ while (result18 !== null) {
|
|
|
|
+ result13.push(result18);
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result18 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result18 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result13 = null;
|
|
|
|
+ }
|
|
|
|
+ if (result13 !== null) {
|
|
|
|
+ var result14 = parse_ws();
|
|
|
|
+ if (result14 !== null) {
|
|
|
|
+ var result15 = parse_ret();
|
|
|
|
+ if (result15 !== null) {
|
|
|
|
+ var result16 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result17 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result17 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result17 !== null) {
|
|
|
|
+ result16.push(result17);
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result17 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result17 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result16 !== null) {
|
|
|
|
+ var result9 = [result11, result12, result13, result14, result15, result16];
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result10 = result9 !== null
|
|
|
|
+ ? (function(exps, ret) {
|
|
|
|
+ var expressions = exps;
|
|
|
|
+ expressions.push(ret);
|
|
|
|
+ return expressions
|
|
|
|
+ })(result9[0], result9[4])
|
|
|
|
+ : null;
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result8 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result0 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result7 = parse_expressions();
|
|
|
|
+ var result4 = result7 !== null ? result7 : '';
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = [];
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result6 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ while (result6 !== null) {
|
|
|
|
+ result5.push(result6);
|
|
|
|
+ if (input.substr(pos).match(/^[.]/) !== null) {
|
|
|
|
+ var result6 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[.]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result2 = [result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result3 = result2 !== null
|
|
|
|
+ ? (function(expressions) {
|
|
|
|
+ return expressions || []
|
|
|
|
+ })(result2[0])
|
|
|
|
+ : null;
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result1 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = result1;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;;
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_sequence() {
|
|
|
|
+ var cacheKey = 'sequence@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result8 = parse_temps();
|
|
|
|
+ var result3 = result8 !== null ? result8 : '';
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result7 = parse_statements();
|
|
|
|
+ var result5 = result7 !== null ? result7 : '';
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(temps, statements) {
|
|
|
|
+ return smalltalk.SequenceNode._new()
|
|
|
|
+ ._temps_(temps || [])
|
|
|
|
+ ._nodes_(statements || [])
|
|
|
|
+ })(result1[0], result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_block() {
|
|
|
|
+ var cacheKey = 'block@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos, 1) === "[") {
|
|
|
|
+ var result3 = "[";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"[\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result11 = parse_blockParamList();
|
|
|
|
+ var result5 = result11 !== null ? result11 : '';
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result10 = parse_sequence();
|
|
|
|
+ var result7 = result10 !== null ? result10 : '';
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result8 = parse_ws();
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === "]") {
|
|
|
|
+ var result9 = "]";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"]\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6, result7, result8, result9];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(params, sequence) {
|
|
|
|
+ return smalltalk.BlockNode._new()
|
|
|
|
+ ._parameters_(params || [])
|
|
|
|
+ ._nodes_([sequence._asBlockSequenceNode()])
|
|
|
|
+ })(result1[2], result1[4])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_operand() {
|
|
|
|
+ var cacheKey = 'operand@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var result3 = parse_literal();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result0 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = parse_reference();
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = parse_subexpression();
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = result1;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;;
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_unaryMessage() {
|
|
|
|
+ var cacheKey = 'unaryMessage@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_identifier();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedReportMatchFailuresVar0 = reportMatchFailures;
|
|
|
|
+ reportMatchFailures = false;
|
|
|
|
+ if (input.substr(pos).match(/^[:]/) !== null) {
|
|
|
|
+ var result6 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[:]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ reportMatchFailures = savedReportMatchFailuresVar0;
|
|
|
|
+ if (result6 === null) {
|
|
|
|
+ var result5 = '';
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(selector) {
|
|
|
|
+ return smalltalk.SendNode._new()
|
|
|
|
+ ._selector_(selector)
|
|
|
|
+ })(result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_unaryTail() {
|
|
|
|
+ var cacheKey = 'unaryTail@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_unaryMessage();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result7 = parse_unaryTail();
|
|
|
|
+ var result5 = result7 !== null ? result7 : '';
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result6 = parse_ws();
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(message, tail) {
|
|
|
|
+ if(tail) {
|
|
|
|
+ return tail._valueForReceiver_(message);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ return message;
|
|
|
|
+ }
|
|
|
|
+ })(result1[0], result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_unarySend() {
|
|
|
|
+ var cacheKey = 'unarySend@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_operand();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_ws();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result6 = parse_unaryTail();
|
|
|
|
+ var result5 = result6 !== null ? result6 : '';
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(receiver, tail) {
|
|
|
|
+ if(tail) {
|
|
|
|
+ return tail._valueForReceiver_(receiver);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ return receiver;
|
|
|
|
+ }
|
|
|
|
+ })(result1[0], result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_binaryMessage() {
|
|
|
|
+ var cacheKey = 'binaryMessage@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_binarySelector();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = parse_ws();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result8 = parse_unarySend();
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = parse_operand();
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result6 = result7;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(selector, arg) {
|
|
|
|
+ return smalltalk.SendNode._new()
|
|
|
|
+ ._selector_(selector)
|
|
|
|
+ ._arguments_([arg])
|
|
|
|
+ })(result1[1], result1[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_binaryTail() {
|
|
|
|
+ var cacheKey = 'binaryTail@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_binaryMessage();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result5 = parse_binaryTail();
|
|
|
|
+ var result4 = result5 !== null ? result5 : '';
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(message, tail) {
|
|
|
|
+ if(tail) {
|
|
|
|
+ return tail._valueForReceiver_(message);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ return message;
|
|
|
|
+ }
|
|
|
|
+ })(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_binarySend() {
|
|
|
|
+ var cacheKey = 'binarySend@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_unarySend();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result5 = parse_binaryTail();
|
|
|
|
+ var result4 = result5 !== null ? result5 : '';
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(receiver, tail) {
|
|
|
|
+ if(tail) {
|
|
|
|
+ return tail._valueForReceiver_(receiver);
|
|
|
|
+ }
|
|
|
|
+ else {
|
|
|
|
+ return receiver;
|
|
|
|
+ }
|
|
|
|
+ })(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_keywordMessage() {
|
|
|
|
+ var cacheKey = 'keywordMessage@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result8 = parse_keywordPair();
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result6 = [result8, result9];
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result7 = result6 !== null
|
|
|
|
+ ? (function(pair) {return pair})(result6[0])
|
|
|
|
+ : null;
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result5 = result7;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ while (result5 !== null) {
|
|
|
|
+ result4.push(result5);
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result8 = parse_keywordPair();
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result6 = [result8, result9];
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result7 = result6 !== null
|
|
|
|
+ ? (function(pair) {return pair})(result6[0])
|
|
|
|
+ : null;
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result5 = result7;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(pairs) {
|
|
|
|
+ var selector = [];
|
|
|
|
+ var args = [];
|
|
|
|
+ for(var i=0;i<pairs.length;i++) {
|
|
|
|
+ selector.push(pairs[i].key);
|
|
|
|
+ args.push(pairs[i].arg);
|
|
|
|
+ }
|
|
|
|
+ return smalltalk.SendNode._new()
|
|
|
|
+ ._selector_(selector.join(""))
|
|
|
|
+ ._arguments_(args)
|
|
|
|
+ })(result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_keywordSend() {
|
|
|
|
+ var cacheKey = 'keywordSend@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_binarySend();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = parse_keywordMessage();
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result1 = [result3, result4];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(receiver, tail) {
|
|
|
|
+ return tail._valueForReceiver_(receiver);
|
|
|
|
+ })(result1[0], result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_message() {
|
|
|
|
+ var cacheKey = 'message@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var result3 = parse_binaryMessage();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result0 = result3;
|
|
|
|
+ } else {
|
|
|
|
+ var result2 = parse_unaryMessage();
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = parse_keywordMessage();
|
|
|
|
+ if (result1 !== null) {
|
|
|
|
+ var result0 = result1;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;;
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_cascade() {
|
|
|
|
+ var cacheKey = 'cascade@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result15 = parse_keywordSend();
|
|
|
|
+ if (result15 !== null) {
|
|
|
|
+ var result4 = result15;
|
|
|
|
+ } else {
|
|
|
|
+ var result14 = parse_binarySend();
|
|
|
|
+ if (result14 !== null) {
|
|
|
|
+ var result4 = result14;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ";") {
|
|
|
|
+ var result10 = ";";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result10 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\";\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result11 = parse_ws();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result12 = parse_message();
|
|
|
|
+ if (result12 !== null) {
|
|
|
|
+ var result13 = parse_ws();
|
|
|
|
+ if (result13 !== null) {
|
|
|
|
+ var result7 = [result9, result10, result11, result12, result13];
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result8 = result7 !== null
|
|
|
|
+ ? (function(mess) {return mess})(result7[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result5 = [];
|
|
|
|
+ while (result6 !== null) {
|
|
|
|
+ result5.push(result6);
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ var savedPos3 = pos;
|
|
|
|
+ var result9 = parse_ws();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ";") {
|
|
|
|
+ var result10 = ";";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result10 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\";\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result11 = parse_ws();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result12 = parse_message();
|
|
|
|
+ if (result12 !== null) {
|
|
|
|
+ var result13 = parse_ws();
|
|
|
|
+ if (result13 !== null) {
|
|
|
|
+ var result7 = [result9, result10, result11, result12, result13];
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ pos = savedPos3;
|
|
|
|
+ }
|
|
|
|
+ var result8 = result7 !== null
|
|
|
|
+ ? (function(mess) {return mess})(result7[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(send, messages) {
|
|
|
|
+ var cascade = [];
|
|
|
|
+ cascade.push(send);
|
|
|
|
+ for(var i=0;i<messages.length;i++) {
|
|
|
|
+ cascade.push(messages[i]);
|
|
|
|
+ }
|
|
|
|
+ return smalltalk.CascadeNode._new()
|
|
|
|
+ ._receiver_(send._receiver())
|
|
|
|
+ ._nodes_(cascade)
|
|
|
|
+ })(result1[1], result1[2])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_jsStatement() {
|
|
|
|
+ var cacheKey = 'jsStatement@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ if (input.substr(pos, 1) === "<") {
|
|
|
|
+ var result3 = "<";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result3 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\"<\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result4 = [];
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ if (input.substr(pos, 2) === ">>") {
|
|
|
|
+ var result9 = ">>";
|
|
|
|
+ pos += 2;
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\">>\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var result10 = result9 !== null
|
|
|
|
+ ? (function() {return ">"})()
|
|
|
|
+ : null;
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result8 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ if (input.substr(pos).match(/^[^>]/) !== null) {
|
|
|
|
+ var result7 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^>]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result6 = result7;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ while (result6 !== null) {
|
|
|
|
+ result4.push(result6);
|
|
|
|
+ var savedPos2 = pos;
|
|
|
|
+ if (input.substr(pos, 2) === ">>") {
|
|
|
|
+ var result9 = ">>";
|
|
|
|
+ pos += 2;
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\">>\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ var result10 = result9 !== null
|
|
|
|
+ ? (function() {return ">"})()
|
|
|
|
+ : null;
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result8 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result8 = null;
|
|
|
|
+ pos = savedPos2;
|
|
|
|
+ }
|
|
|
|
+ if (result8 !== null) {
|
|
|
|
+ var result6 = result8;
|
|
|
|
+ } else {
|
|
|
|
+ if (input.substr(pos).match(/^[^>]/) !== null) {
|
|
|
|
+ var result7 = input.charAt(pos);
|
|
|
|
+ pos++;
|
|
|
|
+ } else {
|
|
|
|
+ var result7 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("[^>]");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result6 = result7;
|
|
|
|
+ } else {
|
|
|
|
+ var result6 = null;;
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ if (input.substr(pos, 1) === ">") {
|
|
|
|
+ var result5 = ">";
|
|
|
|
+ pos += 1;
|
|
|
|
+ } else {
|
|
|
|
+ var result5 = null;
|
|
|
|
+ if (reportMatchFailures) {
|
|
|
|
+ matchFailed("\">\"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(val) {
|
|
|
|
+ return smalltalk.JSStatementNode._new()
|
|
|
|
+ ._source_(val.join(""))
|
|
|
|
+ })(result1[1])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function parse_method() {
|
|
|
|
+ var cacheKey = 'method@' + pos;
|
|
|
|
+ var cachedResult = cache[cacheKey];
|
|
|
|
+ if (cachedResult) {
|
|
|
|
+ pos = cachedResult.nextPos;
|
|
|
|
+ return cachedResult.result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var savedPos0 = pos;
|
|
|
|
+ var savedPos1 = pos;
|
|
|
|
+ var result3 = parse_ws();
|
|
|
|
+ if (result3 !== null) {
|
|
|
|
+ var result11 = parse_keywordPattern();
|
|
|
|
+ if (result11 !== null) {
|
|
|
|
+ var result4 = result11;
|
|
|
|
+ } else {
|
|
|
|
+ var result10 = parse_binaryPattern();
|
|
|
|
+ if (result10 !== null) {
|
|
|
|
+ var result4 = result10;
|
|
|
|
+ } else {
|
|
|
|
+ var result9 = parse_unaryPattern();
|
|
|
|
+ if (result9 !== null) {
|
|
|
|
+ var result4 = result9;
|
|
|
|
+ } else {
|
|
|
|
+ var result4 = null;;
|
|
|
|
+ };
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ if (result4 !== null) {
|
|
|
|
+ var result5 = parse_ws();
|
|
|
|
+ if (result5 !== null) {
|
|
|
|
+ var result8 = parse_sequence();
|
|
|
|
+ var result6 = result8 !== null ? result8 : '';
|
|
|
|
+ if (result6 !== null) {
|
|
|
|
+ var result7 = parse_ws();
|
|
|
|
+ if (result7 !== null) {
|
|
|
|
+ var result1 = [result3, result4, result5, result6, result7];
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var result1 = null;
|
|
|
|
+ pos = savedPos1;
|
|
|
|
+ }
|
|
|
|
+ var result2 = result1 !== null
|
|
|
|
+ ? (function(pattern, sequence) {
|
|
|
|
+ return smalltalk.MethodNode._new()
|
|
|
|
+ ._selector_(pattern[0])
|
|
|
|
+ ._arguments_(pattern[1])
|
|
|
|
+ ._nodes_([sequence])
|
|
|
|
+ })(result1[1], result1[3])
|
|
|
|
+ : null;
|
|
|
|
+ if (result2 !== null) {
|
|
|
|
+ var result0 = result2;
|
|
|
|
+ } else {
|
|
|
|
+ var result0 = null;
|
|
|
|
+ pos = savedPos0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ cache[cacheKey] = {
|
|
|
|
+ nextPos: pos,
|
|
|
|
+ result: result0
|
|
|
|
+ };
|
|
|
|
+ return result0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function buildErrorMessage() {
|
|
|
|
+ function buildExpected(failuresExpected) {
|
|
|
|
+ failuresExpected.sort();
|
|
|
|
+
|
|
|
|
+ var lastFailure = null;
|
|
|
|
+ var failuresExpectedUnique = [];
|
|
|
|
+ for (var i = 0; i < failuresExpected.length; i++) {
|
|
|
|
+ if (failuresExpected[i] !== lastFailure) {
|
|
|
|
+ failuresExpectedUnique.push(failuresExpected[i]);
|
|
|
|
+ lastFailure = failuresExpected[i];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ switch (failuresExpectedUnique.length) {
|
|
|
|
+ case 0:
|
|
|
|
+ return 'end of input';
|
|
|
|
+ case 1:
|
|
|
|
+ return failuresExpectedUnique[0];
|
|
|
|
+ default:
|
|
|
|
+ return failuresExpectedUnique.slice(0, failuresExpectedUnique.length - 1).join(', ')
|
|
|
|
+ + ' or '
|
|
|
|
+ + failuresExpectedUnique[failuresExpectedUnique.length - 1];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var expected = buildExpected(rightmostMatchFailuresExpected);
|
|
|
|
+ var actualPos = Math.max(pos, rightmostMatchFailuresPos);
|
|
|
|
+ var actual = actualPos < input.length
|
|
|
|
+ ? quote(input.charAt(actualPos))
|
|
|
|
+ : 'end of input';
|
|
|
|
+
|
|
|
|
+ return 'Expected ' + expected + ' but ' + actual + ' found.';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ function computeErrorPosition() {
|
|
|
|
+ /*
|
|
|
|
+ * The first idea was to use |String.split| to break the input up to the
|
|
|
|
+ * error position along newlines and derive the line and column from
|
|
|
|
+ * there. However IE's |split| implementation is so broken that it was
|
|
|
|
+ * enough to prevent it.
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ var line = 1;
|
|
|
|
+ var column = 1;
|
|
|
|
+ var seenCR = false;
|
|
|
|
+
|
|
|
|
+ for (var i = 0; i < rightmostMatchFailuresPos; i++) {
|
|
|
|
+ var ch = input.charAt(i);
|
|
|
|
+ if (ch === '\n') {
|
|
|
|
+ if (!seenCR) { line++; }
|
|
|
|
+ column = 1;
|
|
|
|
+ seenCR = false;
|
|
|
|
+ } else if (ch === '\r' | ch === '\u2028' || ch === '\u2029') {
|
|
|
|
+ line++;
|
|
|
|
+ column = 1;
|
|
|
|
+ seenCR = true;
|
|
|
|
+ } else {
|
|
|
|
+ column++;
|
|
|
|
+ seenCR = false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return { line: line, column: column };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var result = parseFunctions[startRule]();
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * The parser is now in one of the following three states:
|
|
|
|
+ *
|
|
|
|
+ * 1. The parser successfully parsed the whole input.
|
|
|
|
+ *
|
|
|
|
+ * - |result !== null|
|
|
|
|
+ * - |pos === input.length|
|
|
|
|
+ * - |rightmostMatchFailuresExpected| may or may not contain something
|
|
|
|
+ *
|
|
|
|
+ * 2. The parser successfully parsed only a part of the input.
|
|
|
|
+ *
|
|
|
|
+ * - |result !== null|
|
|
|
|
+ * - |pos < input.length|
|
|
|
|
+ * - |rightmostMatchFailuresExpected| may or may not contain something
|
|
|
|
+ *
|
|
|
|
+ * 3. The parser did not successfully parse any part of the input.
|
|
|
|
+ *
|
|
|
|
+ * - |result === null|
|
|
|
|
+ * - |pos === 0|
|
|
|
|
+ * - |rightmostMatchFailuresExpected| contains at least one failure
|
|
|
|
+ *
|
|
|
|
+ * All code following this comment (including called functions) must
|
|
|
|
+ * handle these states.
|
|
|
|
+ */
|
|
|
|
+ if (result === null || pos !== input.length) {
|
|
|
|
+ var errorPosition = computeErrorPosition();
|
|
|
|
+ throw new this.SyntaxError(
|
|
|
|
+ buildErrorMessage(),
|
|
|
|
+ errorPosition.line,
|
|
|
|
+ errorPosition.column
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return result;
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ /* Returns the parser source code. */
|
|
|
|
+ toSource: function() { return this._source; }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ /* Thrown when a parser encounters a syntax error. */
|
|
|
|
+
|
|
|
|
+ result.SyntaxError = function(message, line, column) {
|
|
|
|
+ this.name = 'SyntaxError';
|
|
|
|
+ this.message = message;
|
|
|
|
+ this.line = line;
|
|
|
|
+ this.column = column;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ result.SyntaxError.prototype = Error.prototype;
|
|
|
|
+
|
|
|
|
+ return result;
|
|
|
|
+})();
|