alloy
Version:
TiDev Titanium MVC Framework
1,648 lines (1,596 loc) • 112 kB
JavaScript
module.exports = (function(){
/*
* Generated by PEG.js 0.7.0.
*
* http://pegjs.majda.cz/
*/
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.
*
* For portability, we also escape escape all control and non-ASCII
* characters. Note that "\0" and "\v" escape sequences are not used
* because JSHint does not like the first and IE the second.
*/
return '"' + s
.replace(/\\/g, '\\\\') // backslash
.replace(/"/g, '\\"') // closing quote character
.replace(/\x08/g, '\\b') // backspace
.replace(/\t/g, '\\t') // horizontal tab
.replace(/\n/g, '\\n') // line feed
.replace(/\f/g, '\\f') // form feed
.replace(/\r/g, '\\r') // carriage return
.replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g, escape)
+ '"';
}
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 = {
"start": parse_start,
"topobject": parse_topobject,
"object": parse_object,
"topmembers": parse_topmembers,
"members": parse_members,
"pair": parse_pair,
"array": parse_array,
"elements": parse_elements,
"value": parse_value,
"basevalue": parse_basevalue,
"DollarArgs": parse_DollarArgs,
"bitwise_operator": parse_bitwise_operator,
"OpenParen": parse_OpenParen,
"CloseParen": parse_CloseParen,
"WPATH": parse_WPATH,
"LocaleCall": parse_LocaleCall,
"Locale": parse_Locale,
"TiConstant": parse_TiConstant,
"TiNS": parse_TiNS,
"paramComma": parse_paramComma,
"paramString": parse_paramString,
"string": parse_string,
"bareString": parse_bareString,
"bareChar": parse_bareChar,
"schars": parse_schars,
"chars": parse_chars,
"schar": parse_schar,
"char": parse_char,
"number": parse_number,
"int": parse_int,
"frac": parse_frac,
"exp": parse_exp,
"digits": parse_digits,
"e": parse_e,
"digit": parse_digit,
"digit19": parse_digit19,
"hexDigit": parse_hexDigit,
"_": parse__,
"__": parse___,
"___": parse____,
"Comma": parse_Comma,
"LineTerminator": parse_LineTerminator,
"LineTerminatorSequence": parse_LineTerminatorSequence,
"SourceCharacter": parse_SourceCharacter,
"WhiteSpace": parse_WhiteSpace,
"Comment": parse_Comment,
"MultiLineComment": parse_MultiLineComment,
"SingleLineComment": parse_SingleLineComment,
"MultiLineCommentNoLineTerminator": parse_MultiLineCommentNoLineTerminator
};
if (startRule !== undefined) {
if (parseFunctions[startRule] === undefined) {
throw new Error("Invalid rule name: " + quote(startRule) + ".");
}
} else {
startRule = "start";
}
var pos = 0;
var reportFailures = 0;
var rightmostFailuresPos = 0;
var rightmostFailuresExpected = [];
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);
var escapeChar;
var length;
if (charCode <= 0xFF) {
escapeChar = 'x';
length = 2;
} else {
escapeChar = 'u';
length = 4;
}
return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);
}
function matchFailed(failure) {
if (pos < rightmostFailuresPos) {
return;
}
if (pos > rightmostFailuresPos) {
rightmostFailuresPos = pos;
rightmostFailuresExpected = [];
}
rightmostFailuresExpected.push(failure);
}
function parse_start() {
var result0, result1, result2;
var pos0, pos1;
pos0 = pos;
pos1 = pos;
result0 = parse___();
if (result0 !== null) {
result1 = parse_topobject();
if (result1 !== null) {
result2 = parse___();
if (result2 !== null) {
result0 = [result0, result1, result2];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, topobject) { return topobject; })(pos0, result0[1]);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_topobject() {
var result0, result1, result2, result3, result4;
var pos0, pos1;
pos0 = pos;
pos1 = pos;
if (input.charCodeAt(pos) === 123) {
result0 = "{";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"{\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
if (input.charCodeAt(pos) === 125) {
result2 = "}";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\"}\"");
}
}
if (result2 !== null) {
result0 = [result0, result1, result2];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset) { return {}; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
pos0 = pos;
pos1 = pos;
if (input.charCodeAt(pos) === 123) {
result0 = "{";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"{\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
result2 = parse_topmembers();
if (result2 !== null) {
result3 = parse___();
if (result3 !== null) {
if (input.charCodeAt(pos) === 125) {
result4 = "}";
pos++;
} else {
result4 = null;
if (reportFailures === 0) {
matchFailed("\"}\"");
}
}
if (result4 !== null) {
result0 = [result0, result1, result2, result3, result4];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, topmembers) { return topmembers; })(pos0, result0[2]);
}
if (result0 === null) {
pos = pos0;
}
}
return result0;
}
function parse_object() {
var result0, result1, result2, result3, result4;
var pos0, pos1;
pos0 = pos;
pos1 = pos;
if (input.charCodeAt(pos) === 123) {
result0 = "{";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"{\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
if (input.charCodeAt(pos) === 125) {
result2 = "}";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\"}\"");
}
}
if (result2 !== null) {
result0 = [result0, result1, result2];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset) { return {}; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
pos0 = pos;
pos1 = pos;
if (input.charCodeAt(pos) === 123) {
result0 = "{";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"{\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
result2 = parse_members();
if (result2 !== null) {
result3 = parse___();
if (result3 !== null) {
if (input.charCodeAt(pos) === 125) {
result4 = "}";
pos++;
} else {
result4 = null;
if (reportFailures === 0) {
matchFailed("\"}\"");
}
}
if (result4 !== null) {
result0 = [result0, result1, result2, result3, result4];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, members) { return members; })(pos0, result0[2]);
}
if (result0 === null) {
pos = pos0;
}
}
return result0;
}
function parse_topmembers() {
var result0, result1, result2, result3;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
result0 = parse_pair();
if (result0 !== null) {
result1 = [];
pos2 = pos;
result2 = parse____();
if (result2 !== null) {
result3 = parse_pair();
result3 = result3 !== null ? result3 : "";
if (result3 !== null) {
result2 = [result2, result3];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
while (result2 !== null) {
result1.push(result2);
pos2 = pos;
result2 = parse____();
if (result2 !== null) {
result3 = parse_pair();
result3 = result3 !== null ? result3 : "";
if (result3 !== null) {
result2 = [result2, result3];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
}
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, head, tail) {
var result = {};
result[head[0]] = head[1];
for (var i = 0; i < tail.length; i++) {
result[tail[i][1][0]] = tail[i][1][1];
}
if (typeof result['undefined'] === 'undefined') {
delete result['undefined'];
}
return result;
})(pos0, result0[0], result0[1]);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_members() {
var result0, result1, result2, result3, result4, result5;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
result0 = parse_pair();
if (result0 !== null) {
result1 = [];
pos2 = pos;
result2 = parse___();
if (result2 !== null) {
if (input.charCodeAt(pos) === 44) {
result3 = ",";
pos++;
} else {
result3 = null;
if (reportFailures === 0) {
matchFailed("\",\"");
}
}
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
result5 = parse_pair();
result5 = result5 !== null ? result5 : "";
if (result5 !== null) {
result2 = [result2, result3, result4, result5];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
while (result2 !== null) {
result1.push(result2);
pos2 = pos;
result2 = parse___();
if (result2 !== null) {
if (input.charCodeAt(pos) === 44) {
result3 = ",";
pos++;
} else {
result3 = null;
if (reportFailures === 0) {
matchFailed("\",\"");
}
}
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
result5 = parse_pair();
result5 = result5 !== null ? result5 : "";
if (result5 !== null) {
result2 = [result2, result3, result4, result5];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
}
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, head, tail) {
var result = {};
result[head[0]] = head[1];
for (var i = 0; i < tail.length; i++) {
result[tail[i][3][0]] = tail[i][3][1];
}
if (typeof result['undefined'] === 'undefined') {
delete result['undefined'];
}
return result;
})(pos0, result0[0], result0[1]);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_pair() {
var result0, result1, result2, result3, result4;
var pos0, pos1;
pos0 = pos;
pos1 = pos;
result0 = parse_string();
if (result0 === null) {
result0 = parse_bareString();
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
if (input.charCodeAt(pos) === 58) {
result2 = ":";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\":\"");
}
}
if (result2 !== null) {
result3 = parse___();
if (result3 !== null) {
result4 = parse_value();
if (result4 !== null) {
result0 = [result0, result1, result2, result3, result4];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, name, value) { return [name, value]; })(pos0, result0[0], result0[4]);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_array() {
var result0, result1, result2, result3, result4;
var pos0, pos1;
pos0 = pos;
pos1 = pos;
if (input.charCodeAt(pos) === 91) {
result0 = "[";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"[\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
if (input.charCodeAt(pos) === 93) {
result2 = "]";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\"]\"");
}
}
if (result2 !== null) {
result0 = [result0, result1, result2];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset) { return []; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
pos0 = pos;
pos1 = pos;
if (input.charCodeAt(pos) === 91) {
result0 = "[";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"[\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
result2 = parse_elements();
if (result2 !== null) {
result3 = parse___();
if (result3 !== null) {
if (input.charCodeAt(pos) === 93) {
result4 = "]";
pos++;
} else {
result4 = null;
if (reportFailures === 0) {
matchFailed("\"]\"");
}
}
if (result4 !== null) {
result0 = [result0, result1, result2, result3, result4];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, elements) { return elements; })(pos0, result0[2]);
}
if (result0 === null) {
pos = pos0;
}
}
return result0;
}
function parse_elements() {
var result0, result1, result2, result3, result4, result5;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
result0 = parse_value();
if (result0 !== null) {
result1 = [];
pos2 = pos;
result2 = parse___();
if (result2 !== null) {
if (input.charCodeAt(pos) === 44) {
result3 = ",";
pos++;
} else {
result3 = null;
if (reportFailures === 0) {
matchFailed("\",\"");
}
}
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
result5 = parse_value();
if (result5 !== null) {
result2 = [result2, result3, result4, result5];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
while (result2 !== null) {
result1.push(result2);
pos2 = pos;
result2 = parse___();
if (result2 !== null) {
if (input.charCodeAt(pos) === 44) {
result3 = ",";
pos++;
} else {
result3 = null;
if (reportFailures === 0) {
matchFailed("\",\"");
}
}
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
result5 = parse_value();
if (result5 !== null) {
result2 = [result2, result3, result4, result5];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
}
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, head, tail) {
var result = [head];
for (var i = 0; i < tail.length; i++) {
result.push(tail[i][3]);
}
return result;
})(pos0, result0[0], result0[1]);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_value() {
var result0, result1, result2, result3, result4, result5;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
result0 = parse_basevalue();
if (result0 !== null) {
pos2 = pos;
result2 = parse___();
if (result2 !== null) {
result3 = parse_bitwise_operator();
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
result5 = parse_basevalue();
if (result5 !== null) {
result2 = [result2, result3, result4, result5];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
if (result2 !== null) {
result1 = [];
while (result2 !== null) {
result1.push(result2);
pos2 = pos;
result2 = parse___();
if (result2 !== null) {
result3 = parse_bitwise_operator();
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
result5 = parse_basevalue();
if (result5 !== null) {
result2 = [result2, result3, result4, result5];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
}
} else {
result1 = null;
}
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, head, tail) {
var str = processValue(head);
for (var i = 0; i < tail.length; i++) {
str += tail[i][1] + processValue(tail[i][3]);
}
return ALLOY_EXPR + str;
})(pos0, result0[0], result0[1]);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
result0 = parse_basevalue();
}
return result0;
}
function parse_basevalue() {
var result0, result1;
var pos0, pos1;
result0 = parse_LocaleCall();
if (result0 === null) {
result0 = parse_TiConstant();
if (result0 === null) {
result0 = parse_WPATH();
if (result0 === null) {
result0 = parse_string();
if (result0 === null) {
result0 = parse_number();
if (result0 === null) {
result0 = parse_object();
if (result0 === null) {
result0 = parse_array();
if (result0 === null) {
pos0 = pos;
pos1 = pos;
if (input.substr(pos, 4) === "true") {
result0 = "true";
pos += 4;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"true\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset) { return true; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
pos0 = pos;
pos1 = pos;
if (input.substr(pos, 5) === "false") {
result0 = "false";
pos += 5;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"false\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset) { return false; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
pos0 = pos;
pos1 = pos;
if (input.substr(pos, 9) === "undefined") {
result0 = "undefined";
pos += 9;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"undefined\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset) { return ALLOY_EXPR + "undefined"; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
pos0 = pos;
pos1 = pos;
if (input.substr(pos, 4) === "null") {
result0 = "null";
pos += 4;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"null\"");
}
}
if (result0 !== null) {
result1 = parse___();
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset) { return ALLOY_EXPR + "null"; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
if (result0 === null) {
result0 = parse_DollarArgs();
}
}
}
}
}
}
}
}
}
}
}
return result0;
}
function parse_DollarArgs() {
var result0, result1, result2, result3;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
if (input.substr(pos, 6) === "$.args") {
result0 = "$.args";
pos += 6;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"$.args\"");
}
}
if (result0 !== null) {
pos2 = pos;
if (input.charCodeAt(pos) === 46) {
result2 = ".";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\".\"");
}
}
if (result2 !== null) {
result3 = parse_bareString();
if (result3 !== null) {
result2 = [result2, result3];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
if (result2 !== null) {
result1 = [];
while (result2 !== null) {
result1.push(result2);
pos2 = pos;
if (input.charCodeAt(pos) === 46) {
result2 = ".";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\".\"");
}
}
if (result2 !== null) {
result3 = parse_bareString();
if (result3 !== null) {
result2 = [result2, result3];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
}
} else {
result1 = null;
}
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, parts) {
var args = ALLOY_EXPR + parts[0];
var len = parts[1] ? parts[1].length : 0;
for (var i = 0; i < len; i++) {
args += parts[1][i].join('');
}
return args;
})(pos0, result0);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_bitwise_operator() {
var result0;
var pos0;
reportFailures++;
if (input.substr(pos, 2) === ">>") {
result0 = ">>";
pos += 2;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\">>\"");
}
}
if (result0 === null) {
if (input.substr(pos, 3) === ">>>") {
result0 = ">>>";
pos += 3;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\">>>\"");
}
}
if (result0 === null) {
if (input.substr(pos, 2) === "<<") {
result0 = "<<";
pos += 2;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"<<\"");
}
}
if (result0 === null) {
if (input.substr(pos, 3) === "<<<") {
result0 = "<<<";
pos += 3;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"<<<\"");
}
}
if (result0 === null) {
pos0 = pos;
if (/^[&|^]/.test(input.charAt(pos))) {
result0 = input.charAt(pos);
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("[&|^]");
}
}
if (result0 !== null) {
result0 = (function(offset, op) { return op; })(pos0, result0);
}
if (result0 === null) {
pos = pos0;
}
}
}
}
}
reportFailures--;
if (reportFailures === 0 && result0 === null) {
matchFailed("bitwise_operator");
}
return result0;
}
function parse_OpenParen() {
var result0;
var pos0;
pos0 = pos;
if (input.charCodeAt(pos) === 40) {
result0 = "(";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"(\"");
}
}
if (result0 !== null) {
result0 = (function(offset) { return '('; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_CloseParen() {
var result0;
var pos0;
pos0 = pos;
if (input.charCodeAt(pos) === 41) {
result0 = ")";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\")\"");
}
}
if (result0 !== null) {
result0 = (function(offset) { return ')'; })(pos0);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_WPATH() {
var result0, result1, result2, result3, result4, result5, result6, result7, result8;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
if (input.substr(pos, 5) === "WPATH") {
result0 = "WPATH";
pos += 5;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"WPATH\"");
}
}
if (result0 !== null) {
result1 = parse_OpenParen();
if (result1 !== null) {
result2 = parse___();
if (result2 !== null) {
result3 = parse_paramString();
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
result5 = [];
pos2 = pos;
result6 = parse_paramComma();
if (result6 !== null) {
result7 = parse___();
if (result7 !== null) {
result8 = parse_paramString();
if (result8 !== null) {
result6 = [result6, result7, result8];
} else {
result6 = null;
pos = pos2;
}
} else {
result6 = null;
pos = pos2;
}
} else {
result6 = null;
pos = pos2;
}
while (result6 !== null) {
result5.push(result6);
pos2 = pos;
result6 = parse_paramComma();
if (result6 !== null) {
result7 = parse___();
if (result7 !== null) {
result8 = parse_paramString();
if (result8 !== null) {
result6 = [result6, result7, result8];
} else {
result6 = null;
pos = pos2;
}
} else {
result6 = null;
pos = pos2;
}
} else {
result6 = null;
pos = pos2;
}
}
if (result5 !== null) {
result6 = parse___();
if (result6 !== null) {
result7 = parse_CloseParen();
if (result7 !== null) {
result0 = [result0, result1, result2, result3, result4, result5, result6, result7];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, param1) {
return ALLOY_EXPR + 'WPATH(' + param1 + ')';
})(pos0, result0[3]);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_LocaleCall() {
var result0, result1, result2, result3, result4, result5, result6, result7;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
result0 = parse_Locale();
if (result0 !== null) {
result1 = parse_OpenParen();
if (result1 !== null) {
result2 = parse___();
if (result2 !== null) {
result3 = parse_paramString();
if (result3 !== null) {
result4 = parse___();
if (result4 !== null) {
pos2 = pos;
result5 = parse_paramComma();
if (result5 !== null) {
result6 = parse___();
if (result6 !== null) {
result7 = parse_paramString();
if (result7 !== null) {
result5 = [result5, result6, result7];
} else {
result5 = null;
pos = pos2;
}
} else {
result5 = null;
pos = pos2;
}
} else {
result5 = null;
pos = pos2;
}
result5 = result5 !== null ? result5 : "";
if (result5 !== null) {
result6 = parse___();
if (result6 !== null) {
result7 = parse_CloseParen();
if (result7 !== null) {
result0 = [result0, result1, result2, result3, result4, result5, result6, result7];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, param1, param2) {
return ALLOY_EXPR + 'L(' + param1 + (param2 ? param2.join('') : '') + ')';
})(pos0, result0[3], result0[5]);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_Locale() {
var result0, result1;
var pos0;
pos0 = pos;
result0 = parse_TiNS();
if (result0 !== null) {
if (input.substr(pos, 17) === ".Locale.getString") {
result1 = ".Locale.getString";
pos += 17;
} else {
result1 = null;
if (reportFailures === 0) {
matchFailed("\".Locale.getString\"");
}
}
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos0;
}
} else {
result0 = null;
pos = pos0;
}
if (result0 === null) {
if (input.charCodeAt(pos) === 76) {
result0 = "L";
pos++;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"L\"");
}
}
}
return result0;
}
function parse_TiConstant() {
var result0, result1, result2, result3;
var pos0, pos1, pos2;
pos0 = pos;
pos1 = pos;
result0 = parse_TiNS();
if (result0 !== null) {
pos2 = pos;
if (input.charCodeAt(pos) === 46) {
result2 = ".";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\".\"");
}
}
if (result2 !== null) {
result3 = parse_bareString();
if (result3 !== null) {
result2 = [result2, result3];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
if (result2 !== null) {
result1 = [];
while (result2 !== null) {
result1.push(result2);
pos2 = pos;
if (input.charCodeAt(pos) === 46) {
result2 = ".";
pos++;
} else {
result2 = null;
if (reportFailures === 0) {
matchFailed("\".\"");
}
}
if (result2 !== null) {
result3 = parse_bareString();
if (result3 !== null) {
result2 = [result2, result3];
} else {
result2 = null;
pos = pos2;
}
} else {
result2 = null;
pos = pos2;
}
}
} else {
result1 = null;
}
if (result1 !== null) {
result0 = [result0, result1];
} else {
result0 = null;
pos = pos1;
}
} else {
result0 = null;
pos = pos1;
}
if (result0 !== null) {
result0 = (function(offset, parts) {
var tc = ALLOY_EXPR + parts[0];
var len = parts[1] ? parts[1].length : 0;
for (var i = 0; i < len; i++) {
tc += parts[1][i].join('');
}
return tc;
})(pos0, result0);
}
if (result0 === null) {
pos = pos0;
}
return result0;
}
function parse_TiNS() {
var result0;
if (input.substr(pos, 8) === "Titanium") {
result0 = "Titanium";
pos += 8;
} else {
result0 = null;
if (reportFailures === 0) {
matchFailed("\"Titanium\"");
}
}
if (result0 === null) {
if (input.substr(pos, 2) === "Ti") {
result0 = "Ti";