8488 lines
232 KiB
JavaScript
8488 lines
232 KiB
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,
|
||
"init": parse_init,
|
||
"union_stmt": parse_union_stmt,
|
||
"select_stmt": parse_select_stmt,
|
||
"select_stmt_nake": parse_select_stmt_nake,
|
||
"column_clause": parse_column_clause,
|
||
"column_list_item": parse_column_list_item,
|
||
"alias_clause": parse_alias_clause,
|
||
"from_clause": parse_from_clause,
|
||
"table_ref_list": parse_table_ref_list,
|
||
"table_ref": parse_table_ref,
|
||
"table_join": parse_table_join,
|
||
"table_base": parse_table_base,
|
||
"join_op": parse_join_op,
|
||
"table_name": parse_table_name,
|
||
"on_clause": parse_on_clause,
|
||
"where_clause": parse_where_clause,
|
||
"group_by_clause": parse_group_by_clause,
|
||
"column_ref_list": parse_column_ref_list,
|
||
"having_clause": parse_having_clause,
|
||
"order_by_clause": parse_order_by_clause,
|
||
"order_by_list": parse_order_by_list,
|
||
"order_by_element": parse_order_by_element,
|
||
"number_or_param": parse_number_or_param,
|
||
"limit_clause": parse_limit_clause,
|
||
"update_stmt": parse_update_stmt,
|
||
"set_list": parse_set_list,
|
||
"set_item": parse_set_item,
|
||
"replace_insert_stmt": parse_replace_insert_stmt,
|
||
"replace_insert": parse_replace_insert,
|
||
"value_clause": parse_value_clause,
|
||
"value_list": parse_value_list,
|
||
"value_item": parse_value_item,
|
||
"expr_list": parse_expr_list,
|
||
"expr_list_or_empty": parse_expr_list_or_empty,
|
||
"or_expr": parse_or_expr,
|
||
"and_expr": parse_and_expr,
|
||
"not_expr": parse_not_expr,
|
||
"comparison_expr": parse_comparison_expr,
|
||
"comparison_op_right": parse_comparison_op_right,
|
||
"arithmetic_op_right": parse_arithmetic_op_right,
|
||
"arithmetic_comparison_operator": parse_arithmetic_comparison_operator,
|
||
"is_op_right": parse_is_op_right,
|
||
"between_op_right": parse_between_op_right,
|
||
"like_op": parse_like_op,
|
||
"in_op": parse_in_op,
|
||
"contains_op": parse_contains_op,
|
||
"like_op_right": parse_like_op_right,
|
||
"in_op_right": parse_in_op_right,
|
||
"contains_op_right": parse_contains_op_right,
|
||
"additive_expr": parse_additive_expr,
|
||
"additive_operator": parse_additive_operator,
|
||
"multiplicative_expr": parse_multiplicative_expr,
|
||
"multiplicative_operator": parse_multiplicative_operator,
|
||
"primary": parse_primary,
|
||
"column_ref": parse_column_ref,
|
||
"column_list": parse_column_list,
|
||
"ident": parse_ident,
|
||
"column": parse_column,
|
||
"column_name": parse_column_name,
|
||
"ident_name": parse_ident_name,
|
||
"ident_start": parse_ident_start,
|
||
"ident_part": parse_ident_part,
|
||
"column_part": parse_column_part,
|
||
"param": parse_param,
|
||
"aggr_func": parse_aggr_func,
|
||
"aggr_fun_smma": parse_aggr_fun_smma,
|
||
"KW_SUM_MAX_MIN_AVG": parse_KW_SUM_MAX_MIN_AVG,
|
||
"aggr_fun_count": parse_aggr_fun_count,
|
||
"count_arg": parse_count_arg,
|
||
"star_expr": parse_star_expr,
|
||
"func_call": parse_func_call,
|
||
"literal": parse_literal,
|
||
"literal_list": parse_literal_list,
|
||
"literal_null": parse_literal_null,
|
||
"literal_bool": parse_literal_bool,
|
||
"literal_string": parse_literal_string,
|
||
"single_char": parse_single_char,
|
||
"double_char": parse_double_char,
|
||
"escape_char": parse_escape_char,
|
||
"line_terminator": parse_line_terminator,
|
||
"literal_numeric": parse_literal_numeric,
|
||
"number": parse_number,
|
||
"int": parse_int,
|
||
"frac": parse_frac,
|
||
"exp": parse_exp,
|
||
"digits": parse_digits,
|
||
"digit": parse_digit,
|
||
"digit19": parse_digit19,
|
||
"hexDigit": parse_hexDigit,
|
||
"e": parse_e,
|
||
"KW_NULL": parse_KW_NULL,
|
||
"KW_TRUE": parse_KW_TRUE,
|
||
"KW_FALSE": parse_KW_FALSE,
|
||
"KW_SHOW": parse_KW_SHOW,
|
||
"KW_DROP": parse_KW_DROP,
|
||
"KW_SELECT": parse_KW_SELECT,
|
||
"KW_UPDATE": parse_KW_UPDATE,
|
||
"KW_CREATE": parse_KW_CREATE,
|
||
"KW_DELETE": parse_KW_DELETE,
|
||
"KW_INSERT": parse_KW_INSERT,
|
||
"KW_REPLACE": parse_KW_REPLACE,
|
||
"KW_EXPLAIN": parse_KW_EXPLAIN,
|
||
"KW_INTO": parse_KW_INTO,
|
||
"KW_FROM": parse_KW_FROM,
|
||
"KW_SET": parse_KW_SET,
|
||
"KW_AS": parse_KW_AS,
|
||
"KW_TABLE": parse_KW_TABLE,
|
||
"KW_ON": parse_KW_ON,
|
||
"KW_LEFT": parse_KW_LEFT,
|
||
"KW_INNER": parse_KW_INNER,
|
||
"KW_JOIN": parse_KW_JOIN,
|
||
"KW_UNION": parse_KW_UNION,
|
||
"KW_VALUES": parse_KW_VALUES,
|
||
"KW_EXISTS": parse_KW_EXISTS,
|
||
"KW_WHERE": parse_KW_WHERE,
|
||
"KW_GROUP": parse_KW_GROUP,
|
||
"KW_BY": parse_KW_BY,
|
||
"KW_ORDER": parse_KW_ORDER,
|
||
"KW_HAVING": parse_KW_HAVING,
|
||
"KW_LIMIT": parse_KW_LIMIT,
|
||
"KW_ASC": parse_KW_ASC,
|
||
"KW_DESC": parse_KW_DESC,
|
||
"KW_ALL": parse_KW_ALL,
|
||
"KW_DISTINCT": parse_KW_DISTINCT,
|
||
"KW_BETWEEN": parse_KW_BETWEEN,
|
||
"KW_IN": parse_KW_IN,
|
||
"KW_IS": parse_KW_IS,
|
||
"KW_LIKE": parse_KW_LIKE,
|
||
"KW_CONTAINS": parse_KW_CONTAINS,
|
||
"KW_NOT": parse_KW_NOT,
|
||
"KW_AND": parse_KW_AND,
|
||
"KW_OR": parse_KW_OR,
|
||
"KW_COUNT": parse_KW_COUNT,
|
||
"KW_MAX": parse_KW_MAX,
|
||
"KW_MIN": parse_KW_MIN,
|
||
"KW_SUM": parse_KW_SUM,
|
||
"KW_AVG": parse_KW_AVG,
|
||
"DOT": parse_DOT,
|
||
"COMMA": parse_COMMA,
|
||
"STAR": parse_STAR,
|
||
"LPAREN": parse_LPAREN,
|
||
"RPAREN": parse_RPAREN,
|
||
"LBRAKE": parse_LBRAKE,
|
||
"RBRAKE": parse_RBRAKE,
|
||
"__": parse___,
|
||
"char": parse_char,
|
||
"whitespace": parse_whitespace,
|
||
"EOL": parse_EOL,
|
||
"EOF": parse_EOF,
|
||
"proc_stmts": parse_proc_stmts,
|
||
"proc_stmt": parse_proc_stmt,
|
||
"proc_init": parse_proc_init,
|
||
"assign_stmt": parse_assign_stmt,
|
||
"return_stmt": parse_return_stmt,
|
||
"proc_expr": parse_proc_expr,
|
||
"proc_additive_expr": parse_proc_additive_expr,
|
||
"proc_multiplicative_expr": parse_proc_multiplicative_expr,
|
||
"proc_join": parse_proc_join,
|
||
"proc_primary": parse_proc_primary,
|
||
"proc_func_call": parse_proc_func_call,
|
||
"proc_primary_list": parse_proc_primary_list,
|
||
"proc_array": parse_proc_array,
|
||
"var_decl": parse_var_decl,
|
||
"mem_chain": parse_mem_chain,
|
||
"KW_VAR_PRE": parse_KW_VAR_PRE,
|
||
"KW_RETURN": parse_KW_RETURN,
|
||
"KW_ASSIGN": parse_KW_ASSIGN
|
||
};
|
||
|
||
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, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result0 = parse_init();
|
||
reportFailures--;
|
||
if (result0 !== null) {
|
||
result0 = "";
|
||
pos = pos2;
|
||
} else {
|
||
result0 = null;
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_union_stmt();
|
||
if (result2 === null) {
|
||
result2 = parse_update_stmt();
|
||
if (result2 === null) {
|
||
result2 = parse_replace_insert_stmt();
|
||
}
|
||
}
|
||
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, ast) {
|
||
return {
|
||
ast : ast,
|
||
param : params
|
||
}
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
result0 = parse_proc_stmts();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, ast) {
|
||
return {
|
||
ast : ast
|
||
}
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_init() {
|
||
var result0;
|
||
|
||
result0 = (function(offset) { params = []; return true; })(pos) ? "" : null;
|
||
return result0;
|
||
}
|
||
|
||
function parse_union_stmt() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_select_stmt();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_KW_UNION();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_select_stmt();
|
||
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) {
|
||
result3 = parse_KW_UNION();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_select_stmt();
|
||
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 cur = head;
|
||
for (var i = 0; i < tail.length; i++) {
|
||
cur._next = tail[i][3];
|
||
cur = cur._next
|
||
}
|
||
return head;
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_select_stmt() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
result0 = parse_select_stmt_nake();
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 40) {
|
||
result0 = "(";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"(\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_select_stmt();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
if (input.charCodeAt(pos) === 41) {
|
||
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, s) {
|
||
console.log(s);
|
||
return s[2];
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_select_stmt_nake() {
|
||
var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_SELECT();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_DISTINCT();
|
||
result2 = result2 !== null ? result2 : "";
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_column_clause();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_from_clause();
|
||
result6 = result6 !== null ? result6 : "";
|
||
if (result6 !== null) {
|
||
result7 = parse___();
|
||
if (result7 !== null) {
|
||
result8 = parse_where_clause();
|
||
result8 = result8 !== null ? result8 : "";
|
||
if (result8 !== null) {
|
||
result9 = parse___();
|
||
if (result9 !== null) {
|
||
result10 = parse_group_by_clause();
|
||
result10 = result10 !== null ? result10 : "";
|
||
if (result10 !== null) {
|
||
result11 = parse___();
|
||
if (result11 !== null) {
|
||
result12 = parse_order_by_clause();
|
||
result12 = result12 !== null ? result12 : "";
|
||
if (result12 !== null) {
|
||
result13 = parse___();
|
||
if (result13 !== null) {
|
||
result14 = parse_limit_clause();
|
||
result14 = result14 !== null ? result14 : "";
|
||
if (result14 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14];
|
||
} 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;
|
||
}
|
||
} 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, d, c, f, w, g, o, l) {
|
||
return {
|
||
type : 'select',
|
||
distinct : d,
|
||
columns : c,
|
||
from : f,
|
||
where : w,
|
||
groupby : g,
|
||
orderby : o,
|
||
limit : l
|
||
}
|
||
})(pos0, result0[2], result0[4], result0[6], result0[8], result0[10], result0[12], result0[14]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column_clause() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
result0 = parse_KW_ALL();
|
||
if (result0 === null) {
|
||
pos1 = pos;
|
||
result0 = parse_STAR();
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) {
|
||
return '*';
|
||
})(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_column_list_item();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_column_list_item();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_column_list_item();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column_list_item() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_additive_expr();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_alias_clause();
|
||
result2 = result2 !== null ? result2 : "";
|
||
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, e, alias) {
|
||
return {
|
||
expr : e,
|
||
as : alias
|
||
};
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_alias_clause() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_AS();
|
||
result0 = result0 !== null ? result0 : "";
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_ident();
|
||
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, i) { return i; })(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_from_clause() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_FROM();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_table_ref_list();
|
||
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, l) { return l; })(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_table_ref_list() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_table_base();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
result2 = parse_table_ref();
|
||
while (result2 !== null) {
|
||
result1.push(result2);
|
||
result2 = parse_table_ref();
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, head, tail) {
|
||
tail.unshift(head);
|
||
return tail;
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_table_ref() {
|
||
var result0, result1, result2, result3;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse___();
|
||
if (result0 !== null) {
|
||
result1 = parse_COMMA();
|
||
if (result1 !== null) {
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_table_base();
|
||
if (result3 !== null) {
|
||
result0 = [result0, result1, result2, result3];
|
||
} 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, t) { return t; })(pos0, result0[3]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse___();
|
||
if (result0 !== null) {
|
||
result1 = parse_table_join();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, t) { return t; })(pos0, result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_table_join() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_join_op();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_table_base();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_on_clause();
|
||
result4 = result4 !== null ? result4 : "";
|
||
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, op, t, expr) {
|
||
t.join = op;
|
||
t.on = expr;
|
||
return t;
|
||
/*
|
||
return {
|
||
db : t.db,
|
||
table : t.table,
|
||
as : t.as,
|
||
join : op,
|
||
on : expr
|
||
}
|
||
*/
|
||
})(pos0, result0[0], result0[2], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_table_base() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_table_name();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_AS();
|
||
result2 = result2 !== null ? result2 : "";
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_ident();
|
||
result4 = result4 !== null ? result4 : "";
|
||
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, t, alias) {
|
||
if (t.type == 'var') {
|
||
t.as = alias;
|
||
return t;
|
||
} else {
|
||
return {
|
||
db : t.db,
|
||
table : t.table,
|
||
as : alias
|
||
}
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_join_op() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_LEFT();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_JOIN();
|
||
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 'LEFT JOIN'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
pos2 = pos;
|
||
result0 = parse_KW_INNER();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos2;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos2;
|
||
}
|
||
result0 = result0 !== null ? result0 : "";
|
||
if (result0 !== null) {
|
||
result1 = parse_KW_JOIN();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return 'INNER JOIN'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_table_name() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_ident();
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_DOT();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_ident_name();
|
||
if (result4 !== null) {
|
||
result1 = [result1, result2, result3, result4];
|
||
} else {
|
||
result1 = null;
|
||
pos = pos2;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos2;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos2;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos2;
|
||
}
|
||
result1 = result1 !== null ? result1 : "";
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, dt, tail) {
|
||
var obj = {
|
||
db : '',
|
||
table : dt
|
||
}
|
||
if (tail != '') {
|
||
obj.db = dt;
|
||
obj.table = tail[3];
|
||
}
|
||
return obj;
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
result0 = parse_var_decl();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, v) {
|
||
v.db = '';
|
||
v.table = v.name;
|
||
return v;
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_on_clause() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_ON();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_or_expr();
|
||
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, e) { return e; })(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_where_clause() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_WHERE();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_or_expr();
|
||
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, e) { return e; })(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_group_by_clause() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_GROUP();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_BY();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_column_ref_list();
|
||
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, l) { return l; })(pos0, result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column_ref_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_column_ref();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_column_ref();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_column_ref();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_having_clause() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_HAVING();
|
||
if (result0 !== null) {
|
||
result1 = parse_or_expr();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, e) { return e; })(pos0, result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_order_by_clause() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_ORDER();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_BY();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_order_by_list();
|
||
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, l) { return l; })(pos0, result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_order_by_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_order_by_element();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_order_by_element();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_order_by_element();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_order_by_element() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_or_expr();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_DESC();
|
||
if (result2 === null) {
|
||
result2 = parse_KW_ASC();
|
||
}
|
||
result2 = result2 !== null ? result2 : "";
|
||
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, e, d) {
|
||
var obj = {
|
||
expr : e,
|
||
type : 'ASC'
|
||
}
|
||
if (d == 'DESC') {
|
||
obj.type = 'DESC';
|
||
}
|
||
return obj;
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_number_or_param() {
|
||
var result0;
|
||
|
||
result0 = parse_literal_numeric();
|
||
if (result0 === null) {
|
||
result0 = parse_param();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_limit_clause() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_LIMIT();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_number_or_param();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
pos2 = pos;
|
||
result4 = parse_COMMA();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_number_or_param();
|
||
if (result6 !== null) {
|
||
result4 = [result4, result5, result6];
|
||
} else {
|
||
result4 = null;
|
||
pos = pos2;
|
||
}
|
||
} else {
|
||
result4 = null;
|
||
pos = pos2;
|
||
}
|
||
} else {
|
||
result4 = null;
|
||
pos = pos2;
|
||
}
|
||
result4 = result4 !== null ? result4 : "";
|
||
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, i1, tail) {
|
||
var res = [i1];
|
||
if (tail == '') {
|
||
res.unshift({
|
||
type : 'number',
|
||
value : 0
|
||
});
|
||
} else {
|
||
res.push(tail[2]);
|
||
}
|
||
return res;
|
||
})(pos0, result0[2], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_update_stmt() {
|
||
var result0, result1, result2, result3, result4, result5, result6, result7, result8;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_UPDATE();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_table_name();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_KW_SET();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_set_list();
|
||
if (result6 !== null) {
|
||
result7 = parse___();
|
||
if (result7 !== null) {
|
||
result8 = parse_where_clause();
|
||
if (result8 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8];
|
||
} 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;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, t, l, w) {
|
||
return {
|
||
type : 'update',
|
||
db : t.db,
|
||
table : t.table,
|
||
set : l,
|
||
where : w
|
||
}
|
||
})(pos0, result0[2], result0[6], result0[8]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_set_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_set_item();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_set_item();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_set_item();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_set_item() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_column_name();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
if (input.charCodeAt(pos) === 61) {
|
||
result2 = "=";
|
||
pos++;
|
||
} else {
|
||
result2 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"=\"");
|
||
}
|
||
}
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_additive_expr();
|
||
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, c, v) {
|
||
return {
|
||
column: c,
|
||
value : v
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_replace_insert_stmt() {
|
||
var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_replace_insert();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_INTO();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_table_name();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_LPAREN();
|
||
if (result6 !== null) {
|
||
result7 = parse___();
|
||
if (result7 !== null) {
|
||
result8 = parse_column_list();
|
||
if (result8 !== null) {
|
||
result9 = parse___();
|
||
if (result9 !== null) {
|
||
result10 = parse_RPAREN();
|
||
if (result10 !== null) {
|
||
result11 = parse___();
|
||
if (result11 !== null) {
|
||
result12 = parse_value_clause();
|
||
if (result12 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12];
|
||
} 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;
|
||
}
|
||
} 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, ri, t, c, v) {
|
||
return {
|
||
type : ri,
|
||
db : t.db,
|
||
table : t.table,
|
||
columns : c,
|
||
values : v
|
||
}
|
||
})(pos0, result0[0], result0[4], result0[8], result0[12]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_replace_insert() {
|
||
var result0;
|
||
var pos0;
|
||
|
||
pos0 = pos;
|
||
result0 = parse_KW_INSERT();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return 'insert'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
result0 = parse_KW_REPLACE();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return 'replace' })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_value_clause() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_VALUES();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_value_list();
|
||
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, l) { return l; })(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_value_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_value_item();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_value_item();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_value_item();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_value_item() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_LPAREN();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_expr_list();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_RPAREN();
|
||
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, l) {
|
||
return l;
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_expr_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_or_expr();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_or_expr();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_or_expr();
|
||
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 el = {
|
||
type : 'expr_list'
|
||
}
|
||
var l = createExprList(head, tail, el);
|
||
|
||
el.value = l;
|
||
return el;
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_expr_list_or_empty() {
|
||
var result0;
|
||
|
||
result0 = parse_expr_list();
|
||
if (result0 === null) {
|
||
result0 = (function(offset, l) {
|
||
return {
|
||
type : 'expr_list',
|
||
value : []
|
||
}
|
||
})(pos, result0) ? "" : null;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_or_expr() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_and_expr();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_KW_OR();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_and_expr();
|
||
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) {
|
||
result3 = parse_KW_OR();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_and_expr();
|
||
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) {
|
||
return createBinaryExprChain(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_and_expr() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_not_expr();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_KW_AND();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_not_expr();
|
||
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) {
|
||
result3 = parse_KW_AND();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_not_expr();
|
||
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) {
|
||
return createBinaryExprChain(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_not_expr() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1, pos2, pos3;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_NOT();
|
||
if (result0 === null) {
|
||
pos2 = pos;
|
||
if (input.charCodeAt(pos) === 33) {
|
||
result0 = "!";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"!\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos3 = pos;
|
||
reportFailures++;
|
||
if (input.charCodeAt(pos) === 61) {
|
||
result1 = "=";
|
||
pos++;
|
||
} else {
|
||
result1 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"=\"");
|
||
}
|
||
}
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos3;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos2;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos2;
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_not_expr();
|
||
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, expr) {
|
||
return createUnaryExpr('NOT', expr);
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_comparison_expr();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_comparison_expr() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_additive_expr();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_comparison_op_right();
|
||
result2 = result2 !== null ? result2 : "";
|
||
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, left, rh) {
|
||
if (rh == '') {
|
||
return left;
|
||
} else {
|
||
var res = null;
|
||
if (rh.type == 'arithmetic') {
|
||
res = createBinaryExprChain(left, rh.tail);
|
||
} else {
|
||
res = createBinaryExpr(rh.op, left, rh.right);
|
||
}
|
||
return res;
|
||
}
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_comparison_op_right() {
|
||
var result0;
|
||
|
||
result0 = parse_arithmetic_op_right();
|
||
if (result0 === null) {
|
||
result0 = parse_in_op_right();
|
||
if (result0 === null) {
|
||
result0 = parse_between_op_right();
|
||
if (result0 === null) {
|
||
result0 = parse_is_op_right();
|
||
if (result0 === null) {
|
||
result0 = parse_like_op_right();
|
||
if (result0 === null) {
|
||
result0 = parse_contains_op_right();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_arithmetic_op_right() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_arithmetic_comparison_operator();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_additive_expr();
|
||
if (result4 !== null) {
|
||
result1 = [result1, result2, result3, result4];
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [];
|
||
while (result1 !== null) {
|
||
result0.push(result1);
|
||
pos1 = pos;
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_arithmetic_comparison_operator();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_additive_expr();
|
||
if (result4 !== null) {
|
||
result1 = [result1, result2, result3, result4];
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, l) {
|
||
return {
|
||
type : 'arithmetic',
|
||
tail : l
|
||
}
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_arithmetic_comparison_operator() {
|
||
var result0;
|
||
|
||
if (input.substr(pos, 2) === ">=") {
|
||
result0 = ">=";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\">=\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 62) {
|
||
result0 = ">";
|
||
pos++;
|
||
} 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, 2) === "<>") {
|
||
result0 = "<>";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"<>\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 60) {
|
||
result0 = "<";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"<\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 61) {
|
||
result0 = "=";
|
||
pos++;
|
||
} 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("\"!=\"");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_is_op_right() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_IS();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_additive_expr();
|
||
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, op, right) {
|
||
return {
|
||
op : op,
|
||
right : right
|
||
}
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_between_op_right() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_BETWEEN();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_additive_expr();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_KW_AND();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_additive_expr();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, op, begin, end) {
|
||
return {
|
||
op : op,
|
||
right : {
|
||
type : 'expr_list',
|
||
value : [begin, end]
|
||
}
|
||
}
|
||
})(pos0, result0[0], result0[2], result0[6]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_like_op() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_NOT();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_LIKE();
|
||
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, nk) { return nk[0] + ' ' + nk[2]; })(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_KW_LIKE();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_in_op() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_NOT();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_IN();
|
||
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, nk) { return nk[0] + ' ' + nk[2]; })(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_KW_IN();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_contains_op() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_NOT();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_CONTAINS();
|
||
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, nk) { return nk[0] + ' ' + nk[2]; })(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_KW_CONTAINS();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_like_op_right() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_like_op();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_comparison_expr();
|
||
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, op, right) {
|
||
return {
|
||
op : op,
|
||
right : right
|
||
}
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_in_op_right() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_in_op();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_LPAREN();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_expr_list();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_RPAREN();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, op, l) {
|
||
return {
|
||
op : op,
|
||
right : l
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_in_op();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_var_decl();
|
||
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, op, e) {
|
||
return {
|
||
op : op,
|
||
right : e
|
||
}
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_contains_op_right() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_contains_op();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_LPAREN();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_expr_list();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_RPAREN();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, op, l) {
|
||
return {
|
||
op : op,
|
||
right : l
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_contains_op();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_var_decl();
|
||
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, op, e) {
|
||
return {
|
||
op : op,
|
||
right : e
|
||
}
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_additive_expr() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_multiplicative_expr();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_additive_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_multiplicative_expr();
|
||
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) {
|
||
result3 = parse_additive_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_multiplicative_expr();
|
||
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) {
|
||
return createBinaryExprChain(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_additive_operator() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 43) {
|
||
result0 = "+";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"+\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 45) {
|
||
result0 = "-";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"-\"");
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_multiplicative_expr() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_primary();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_multiplicative_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_primary();
|
||
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) {
|
||
result3 = parse_multiplicative_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_primary();
|
||
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) {
|
||
return createBinaryExprChain(head, tail)
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_multiplicative_operator() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 42) {
|
||
result0 = "*";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"*\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 47) {
|
||
result0 = "/";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"/\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 37) {
|
||
result0 = "%";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"%\"");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_primary() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
result0 = parse_literal();
|
||
if (result0 === null) {
|
||
result0 = parse_aggr_func();
|
||
if (result0 === null) {
|
||
result0 = parse_func_call();
|
||
if (result0 === null) {
|
||
result0 = parse_column_ref();
|
||
if (result0 === null) {
|
||
result0 = parse_param();
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_LPAREN();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_or_expr();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_RPAREN();
|
||
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, e) {
|
||
e.paren = true;
|
||
return e;
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_var_decl();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column_ref() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_ident();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_DOT();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_column();
|
||
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, tbl, col) {
|
||
return {
|
||
type : 'column_ref',
|
||
table : tbl,
|
||
column : col
|
||
};
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
result0 = parse_column();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, col) {
|
||
return {
|
||
type : 'column_ref',
|
||
table : '',
|
||
column: col
|
||
};
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_column();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_column();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_column();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_ident() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_ident_name();
|
||
if (result0 !== null) {
|
||
result1 = (function(offset, name) { return reservedMap[name.toUpperCase()] === true; })(pos, result0) ? null : "";
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, name) {
|
||
return name;
|
||
})(pos0, result0[0]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_column_name();
|
||
if (result0 !== null) {
|
||
result1 = (function(offset, name) { return reservedMap[name.toUpperCase()] === true; })(pos, result0) ? null : "";
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, name) {
|
||
return name;
|
||
})(pos0, result0[0]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 96) {
|
||
result0 = "`";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"`\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
if (/^[^`]/.test(input.charAt(pos))) {
|
||
result2 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result2 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[^`]");
|
||
}
|
||
}
|
||
if (result2 !== null) {
|
||
result1 = [];
|
||
while (result2 !== null) {
|
||
result1.push(result2);
|
||
if (/^[^`]/.test(input.charAt(pos))) {
|
||
result2 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result2 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[^`]");
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
}
|
||
if (result1 !== null) {
|
||
if (input.charCodeAt(pos) === 96) {
|
||
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, chars) {
|
||
return chars.join('');
|
||
})(pos0, result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column_name() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_ident_start();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
result2 = parse_column_part();
|
||
while (result2 !== null) {
|
||
result1.push(result2);
|
||
result2 = parse_column_part();
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, start, parts) { return start + parts.join(''); })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_ident_name() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_ident_start();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
result2 = parse_ident_part();
|
||
while (result2 !== null) {
|
||
result1.push(result2);
|
||
result2 = parse_ident_part();
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, start, parts) { return start + parts.join(''); })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_ident_start() {
|
||
var result0;
|
||
|
||
if (/^[A-Za-z_]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[A-Za-z_]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_ident_part() {
|
||
var result0;
|
||
|
||
if (/^[A-Za-z0-9_]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[A-Za-z0-9_]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_column_part() {
|
||
var result0;
|
||
|
||
if (/^[A-Za-z0-9_:]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[A-Za-z0-9_:]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_param() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 58) {
|
||
result0 = ":";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\":\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse_ident_name();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, l) {
|
||
var p = {
|
||
type : 'param',
|
||
value: l[1]
|
||
}
|
||
//var key = 'L' + line + 'C' + column;
|
||
//debug(key);
|
||
//params[key] = p;
|
||
params.push(p);
|
||
return p;
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_aggr_func() {
|
||
var result0;
|
||
|
||
result0 = parse_aggr_fun_count();
|
||
if (result0 === null) {
|
||
result0 = parse_aggr_fun_smma();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_aggr_fun_smma() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_SUM_MAX_MIN_AVG();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_LPAREN();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_additive_expr();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_RPAREN();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, name, e) {
|
||
return {
|
||
type : 'aggr_func',
|
||
name : name,
|
||
args : {
|
||
expr : e
|
||
}
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_SUM_MAX_MIN_AVG() {
|
||
var result0;
|
||
|
||
result0 = parse_KW_SUM();
|
||
if (result0 === null) {
|
||
result0 = parse_KW_MAX();
|
||
if (result0 === null) {
|
||
result0 = parse_KW_MIN();
|
||
if (result0 === null) {
|
||
result0 = parse_KW_AVG();
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_aggr_fun_count() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_COUNT();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_LPAREN();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_count_arg();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_RPAREN();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, name, arg) {
|
||
return {
|
||
type : 'aggr_func',
|
||
name : name,
|
||
args : arg
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_count_arg() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
result0 = parse_star_expr();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, e) {
|
||
return {
|
||
expr : e
|
||
}
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_DISTINCT();
|
||
result0 = result0 !== null ? result0 : "";
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_column_ref();
|
||
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, d, c) {
|
||
return {
|
||
distinct : d,
|
||
expr : c
|
||
}
|
||
})(pos0, result0[0], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_star_expr() {
|
||
var result0;
|
||
var pos0;
|
||
|
||
pos0 = pos;
|
||
if (input.charCodeAt(pos) === 42) {
|
||
result0 = "*";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"*\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) {
|
||
return {
|
||
type : 'star',
|
||
value : '*'
|
||
}
|
||
})(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_func_call() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_ident();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_LPAREN();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_expr_list_or_empty();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_RPAREN();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, name, l) {
|
||
return {
|
||
type : 'function',
|
||
name : name,
|
||
args : l
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_literal() {
|
||
var result0;
|
||
|
||
result0 = parse_literal_string();
|
||
if (result0 === null) {
|
||
result0 = parse_literal_numeric();
|
||
if (result0 === null) {
|
||
result0 = parse_literal_bool();
|
||
if (result0 === null) {
|
||
result0 = parse_literal_null();
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_literal_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_literal();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_literal();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_literal();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_literal_null() {
|
||
var result0;
|
||
var pos0;
|
||
|
||
pos0 = pos;
|
||
result0 = parse_KW_NULL();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) {
|
||
return {
|
||
type : 'null',
|
||
value : null
|
||
};
|
||
})(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_literal_bool() {
|
||
var result0;
|
||
var pos0;
|
||
|
||
pos0 = pos;
|
||
result0 = parse_KW_TRUE();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) {
|
||
return {
|
||
type : 'bool',
|
||
value : true
|
||
};
|
||
})(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
result0 = parse_KW_FALSE();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) {
|
||
return {
|
||
type : 'bool',
|
||
value : false
|
||
};
|
||
})(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_literal_string() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 34) {
|
||
result0 = "\"";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\"\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
result2 = parse_double_char();
|
||
while (result2 !== null) {
|
||
result1.push(result2);
|
||
result2 = parse_double_char();
|
||
}
|
||
if (result1 !== null) {
|
||
if (input.charCodeAt(pos) === 34) {
|
||
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) {
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 39) {
|
||
result0 = "'";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"'\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
result2 = parse_single_char();
|
||
while (result2 !== null) {
|
||
result1.push(result2);
|
||
result2 = parse_single_char();
|
||
}
|
||
if (result1 !== null) {
|
||
if (input.charCodeAt(pos) === 39) {
|
||
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, ca) {
|
||
return {
|
||
type : 'string',
|
||
value : ca[1].join('')
|
||
}
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_single_char() {
|
||
var result0;
|
||
|
||
if (/^[^'\\\0-\x1F]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[^'\\\\\\0-\\x1F]");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_escape_char();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_double_char() {
|
||
var result0;
|
||
|
||
if (/^[^"\\\0-\x1F]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[^\"\\\\\\0-\\x1F]");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_escape_char();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_escape_char() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\'") {
|
||
result0 = "\\'";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\'\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "'"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\\"") {
|
||
result0 = "\\\"";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\\\\"\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return '"'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\\\") {
|
||
result0 = "\\\\";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\\\\\\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "\\"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\/") {
|
||
result0 = "\\/";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\/\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "/"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\b") {
|
||
result0 = "\\b";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\b\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "\b"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\f") {
|
||
result0 = "\\f";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\f\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "\f"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\n") {
|
||
result0 = "\\n";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\n\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "\n"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\r") {
|
||
result0 = "\\r";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\r\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "\r"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2) === "\\t") {
|
||
result0 = "\\t";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\t\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset) { return "\t"; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 2) === "\\u") {
|
||
result0 = "\\u";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"\\\\u\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse_hexDigit();
|
||
if (result1 !== null) {
|
||
result2 = parse_hexDigit();
|
||
if (result2 !== null) {
|
||
result3 = parse_hexDigit();
|
||
if (result3 !== null) {
|
||
result4 = parse_hexDigit();
|
||
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, h1, h2, h3, h4) {
|
||
return String.fromCharCode(parseInt("0x" + h1 + h2 + h3 + h4));
|
||
})(pos0, result0[1], result0[2], result0[3], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_line_terminator() {
|
||
var result0;
|
||
|
||
if (/^[\n\r]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[\\n\\r]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_literal_numeric() {
|
||
var result0;
|
||
var pos0;
|
||
|
||
pos0 = pos;
|
||
result0 = parse_number();
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, n) {
|
||
return {
|
||
type : 'number',
|
||
value : n
|
||
}
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_number() {
|
||
var result0, result1, result2, result3;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_int();
|
||
if (result0 !== null) {
|
||
result1 = parse_frac();
|
||
if (result1 !== null) {
|
||
result2 = parse_exp();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result0 = [result0, result1, result2, result3];
|
||
} 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, int_, frac, exp) { return parseFloat(int_ + frac + exp); })(pos0, result0[0], result0[1], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_int();
|
||
if (result0 !== null) {
|
||
result1 = parse_frac();
|
||
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, int_, frac) { return parseFloat(int_ + frac); })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_int();
|
||
if (result0 !== null) {
|
||
result1 = parse_exp();
|
||
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, int_, exp) { return parseFloat(int_ + exp); })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_int();
|
||
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, int_) { return parseFloat(int_); })(pos0, result0[0]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_int() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_digit19();
|
||
if (result0 !== null) {
|
||
result1 = parse_digits();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, digit19, digits) { return digit19 + digits; })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
result0 = parse_digit();
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 45) {
|
||
result0 = "-";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"-\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 43) {
|
||
result0 = "+";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"+\"");
|
||
}
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse_digit19();
|
||
if (result1 !== null) {
|
||
result2 = parse_digits();
|
||
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, op, digit19, digits) { return "-" + digit19 + digits; })(pos0, result0[0], result0[1], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 45) {
|
||
result0 = "-";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"-\"");
|
||
}
|
||
}
|
||
if (result0 === null) {
|
||
if (input.charCodeAt(pos) === 43) {
|
||
result0 = "+";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"+\"");
|
||
}
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse_digit();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, op, digit) { return "-" + digit; })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_frac() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 46) {
|
||
result0 = ".";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\".\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse_digits();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, digits) { return "." + digits; })(pos0, result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_exp() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_e();
|
||
if (result0 !== null) {
|
||
result1 = parse_digits();
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, e, digits) { return e + digits; })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_digits() {
|
||
var result0, result1;
|
||
var pos0;
|
||
|
||
pos0 = pos;
|
||
result1 = parse_digit();
|
||
if (result1 !== null) {
|
||
result0 = [];
|
||
while (result1 !== null) {
|
||
result0.push(result1);
|
||
result1 = parse_digit();
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, digits) { return digits.join(""); })(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_digit() {
|
||
var result0;
|
||
|
||
if (/^[0-9]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[0-9]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_digit19() {
|
||
var result0;
|
||
|
||
if (/^[1-9]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[1-9]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_hexDigit() {
|
||
var result0;
|
||
|
||
if (/^[0-9a-fA-F]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[0-9a-fA-F]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_e() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (/^[eE]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[eE]");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
if (/^[+\-]/.test(input.charAt(pos))) {
|
||
result1 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result1 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[+\\-]");
|
||
}
|
||
}
|
||
result1 = result1 !== null ? result1 : "";
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, e, sign) { return e + sign; })(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_NULL() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "null") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"NULL\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_TRUE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "true") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"TRUE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_FALSE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "false") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"FALSE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_SHOW() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "show") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"SHOW\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_DROP() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "drop") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"DROP\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_SELECT() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "select") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"SELECT\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_UPDATE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "update") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"UPDATE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_CREATE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "create") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"CREATE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_DELETE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "delete") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"DELETE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_INSERT() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "insert") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"INSERT\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_REPLACE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 7).toLowerCase() === "replace") {
|
||
result0 = input.substr(pos, 7);
|
||
pos += 7;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"REPLACE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_EXPLAIN() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 7).toLowerCase() === "explain") {
|
||
result0 = input.substr(pos, 7);
|
||
pos += 7;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"EXPLAIN\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_INTO() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "into") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"INTO\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_FROM() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "from") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"FROM\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_SET() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "set") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"SET\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_AS() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2).toLowerCase() === "as") {
|
||
result0 = input.substr(pos, 2);
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"AS\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_TABLE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "table") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"TABLE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_ON() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2).toLowerCase() === "on") {
|
||
result0 = input.substr(pos, 2);
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"ON\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_LEFT() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "left") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"LEFT\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_INNER() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "inner") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"INNER\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_JOIN() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "join") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"JOIN\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_UNION() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "union") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"UNION\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_VALUES() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "values") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"VALUES\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_EXISTS() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "exists") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"EXISTS\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_WHERE() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "where") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"WHERE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_GROUP() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "group") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"GROUP\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_BY() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 2).toLowerCase() === "by") {
|
||
result0 = input.substr(pos, 2);
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"BY\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_ORDER() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "order") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"ORDER\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_HAVING() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 6).toLowerCase() === "having") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"HAVING\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_LIMIT() {
|
||
var result0, result1;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "limit") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"LIMIT\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos1 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [result0, result1];
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_ASC() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "asc") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"ASC\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'ASC'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_DESC() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "desc") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"DESC\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'DESC'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_ALL() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "all") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"ALL\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'ALL'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_DISTINCT() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 8).toLowerCase() === "distinct") {
|
||
result0 = input.substr(pos, 8);
|
||
pos += 8;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"DISTINCT\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'DISTINCT';})(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_BETWEEN() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 7).toLowerCase() === "between") {
|
||
result0 = input.substr(pos, 7);
|
||
pos += 7;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"BETWEEN\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'BETWEEN'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_IN() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 2).toLowerCase() === "in") {
|
||
result0 = input.substr(pos, 2);
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"IN\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'IN'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_IS() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 2).toLowerCase() === "is") {
|
||
result0 = input.substr(pos, 2);
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"IS\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'IS'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_LIKE() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 4).toLowerCase() === "like") {
|
||
result0 = input.substr(pos, 4);
|
||
pos += 4;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"LIKE\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'LIKE'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_CONTAINS() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 8).toLowerCase() === "contains") {
|
||
result0 = input.substr(pos, 8);
|
||
pos += 8;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"CONTAINS\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'CONTAINS';})(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_NOT() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "not") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"NOT\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'NOT'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_AND() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "and") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"AND\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'AND'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_OR() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 2).toLowerCase() === "or") {
|
||
result0 = input.substr(pos, 2);
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"OR\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'OR'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_COUNT() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 5).toLowerCase() === "count") {
|
||
result0 = input.substr(pos, 5);
|
||
pos += 5;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"COUNT\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'COUNT'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_MAX() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "max") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"MAX\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'MAX'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_MIN() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "min") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"MIN\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'MIN'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_SUM() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "sum") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"SUM\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'SUM'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_AVG() {
|
||
var result0, result1;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
if (input.substr(pos, 3).toLowerCase() === "avg") {
|
||
result0 = input.substr(pos, 3);
|
||
pos += 3;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"AVG\"");
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result1 = parse_ident_start();
|
||
reportFailures--;
|
||
if (result1 === null) {
|
||
result1 = "";
|
||
} else {
|
||
result1 = 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) { return 'AVG'; })(pos0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_DOT() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 46) {
|
||
result0 = ".";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\".\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_COMMA() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 44) {
|
||
result0 = ",";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\",\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_STAR() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 42) {
|
||
result0 = "*";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"*\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_LPAREN() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 40) {
|
||
result0 = "(";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"(\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_RPAREN() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 41) {
|
||
result0 = ")";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\")\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_LBRAKE() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 91) {
|
||
result0 = "[";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"[\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_RBRAKE() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 93) {
|
||
result0 = "]";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"]\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse___() {
|
||
var result0, result1;
|
||
|
||
result0 = [];
|
||
result1 = parse_whitespace();
|
||
while (result1 !== null) {
|
||
result0.push(result1);
|
||
result1 = parse_whitespace();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_char() {
|
||
var result0;
|
||
|
||
if (input.length > pos) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("any character");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_whitespace() {
|
||
var result0;
|
||
|
||
if (/^[ \t\n\r]/.test(input.charAt(pos))) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[ \\t\\n\\r]");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_EOL() {
|
||
var result0, result1;
|
||
|
||
result0 = parse_EOF();
|
||
if (result0 === null) {
|
||
if (/^[\n\r]/.test(input.charAt(pos))) {
|
||
result1 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result1 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[\\n\\r]");
|
||
}
|
||
}
|
||
if (result1 !== null) {
|
||
result0 = [];
|
||
while (result1 !== null) {
|
||
result0.push(result1);
|
||
if (/^[\n\r]/.test(input.charAt(pos))) {
|
||
result1 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result1 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("[\\n\\r]");
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
result0 = null;
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_EOF() {
|
||
var result0;
|
||
var pos0;
|
||
|
||
pos0 = pos;
|
||
reportFailures++;
|
||
if (input.length > pos) {
|
||
result0 = input.charAt(pos);
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("any character");
|
||
}
|
||
}
|
||
reportFailures--;
|
||
if (result0 === null) {
|
||
result0 = "";
|
||
} else {
|
||
result0 = null;
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_stmts() {
|
||
var result0, result1;
|
||
|
||
result0 = [];
|
||
result1 = parse_proc_stmt();
|
||
while (result1 !== null) {
|
||
result0.push(result1);
|
||
result1 = parse_proc_stmt();
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_stmt() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
pos2 = pos;
|
||
reportFailures++;
|
||
result0 = parse_proc_init();
|
||
reportFailures--;
|
||
if (result0 !== null) {
|
||
result0 = "";
|
||
pos = pos2;
|
||
} else {
|
||
result0 = null;
|
||
}
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_assign_stmt();
|
||
if (result2 === null) {
|
||
result2 = parse_return_stmt();
|
||
}
|
||
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, s) {
|
||
return {
|
||
stmt : s,
|
||
vars: varList
|
||
}
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_init() {
|
||
var result0;
|
||
|
||
result0 = (function(offset) { varList = []; return true; })(pos) ? "" : null;
|
||
return result0;
|
||
}
|
||
|
||
function parse_assign_stmt() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_var_decl();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_KW_ASSIGN();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_proc_expr();
|
||
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, va, e) {
|
||
return {
|
||
type : 'assign',
|
||
left : va,
|
||
right: e
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_return_stmt() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_RETURN();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_proc_expr();
|
||
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, e) {
|
||
return {
|
||
type : 'return',
|
||
expr: e
|
||
}
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_expr() {
|
||
var result0;
|
||
|
||
result0 = parse_select_stmt();
|
||
if (result0 === null) {
|
||
result0 = parse_proc_join();
|
||
if (result0 === null) {
|
||
result0 = parse_proc_additive_expr();
|
||
if (result0 === null) {
|
||
result0 = parse_proc_array();
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_additive_expr() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_proc_multiplicative_expr();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_additive_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_proc_multiplicative_expr();
|
||
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) {
|
||
result3 = parse_additive_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_proc_multiplicative_expr();
|
||
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) {
|
||
return createBinaryExprChain(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_multiplicative_expr() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_proc_primary();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_multiplicative_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_proc_primary();
|
||
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) {
|
||
result3 = parse_multiplicative_operator();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_proc_primary();
|
||
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) {
|
||
return createBinaryExprChain(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_join() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_var_decl();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_join_op();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_var_decl();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_on_clause();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, lt, op, rt, expr) {
|
||
return {
|
||
type : 'join',
|
||
ltable : lt,
|
||
rtable : rt,
|
||
op : op,
|
||
on : expr
|
||
}
|
||
})(pos0, result0[0], result0[2], result0[4], result0[6]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_primary() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
result0 = parse_literal();
|
||
if (result0 === null) {
|
||
result0 = parse_var_decl();
|
||
if (result0 === null) {
|
||
result0 = parse_proc_func_call();
|
||
if (result0 === null) {
|
||
result0 = parse_param();
|
||
if (result0 === null) {
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_LPAREN();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_proc_additive_expr();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_RPAREN();
|
||
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, e) {
|
||
e.paren = true;
|
||
return e;
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_func_call() {
|
||
var result0, result1, result2, result3, result4, result5, result6;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_ident();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_LPAREN();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_proc_primary_list();
|
||
if (result4 !== null) {
|
||
result5 = parse___();
|
||
if (result5 !== null) {
|
||
result6 = parse_RPAREN();
|
||
if (result6 !== null) {
|
||
result0 = [result0, result1, result2, result3, result4, result5, result6];
|
||
} 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, name, l) {
|
||
//compatible with original func_call
|
||
return {
|
||
type : 'function',
|
||
name : name,
|
||
args : {
|
||
type : 'expr_list',
|
||
value : l
|
||
}
|
||
}
|
||
})(pos0, result0[0], result0[4]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_primary_list() {
|
||
var result0, result1, result2, result3, result4, result5;
|
||
var pos0, pos1, pos2;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_proc_primary();
|
||
if (result0 !== null) {
|
||
result1 = [];
|
||
pos2 = pos;
|
||
result2 = parse___();
|
||
if (result2 !== null) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_proc_primary();
|
||
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) {
|
||
result3 = parse_COMMA();
|
||
if (result3 !== null) {
|
||
result4 = parse___();
|
||
if (result4 !== null) {
|
||
result5 = parse_proc_primary();
|
||
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) {
|
||
return createList(head, tail);
|
||
})(pos0, result0[0], result0[1]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_proc_array() {
|
||
var result0, result1, result2, result3, result4;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_LBRAKE();
|
||
if (result0 !== null) {
|
||
result1 = parse___();
|
||
if (result1 !== null) {
|
||
result2 = parse_proc_primary_list();
|
||
if (result2 !== null) {
|
||
result3 = parse___();
|
||
if (result3 !== null) {
|
||
result4 = parse_RBRAKE();
|
||
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, l) {
|
||
return {
|
||
type : 'array',
|
||
value : l
|
||
}
|
||
})(pos0, result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_var_decl() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
pos1 = pos;
|
||
result0 = parse_KW_VAR_PRE();
|
||
if (result0 !== null) {
|
||
result1 = parse_ident_name();
|
||
if (result1 !== null) {
|
||
result2 = parse_mem_chain();
|
||
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, name, m) {
|
||
//push for analysis
|
||
varList.push(name);
|
||
return {
|
||
type : 'var',
|
||
name : name,
|
||
members : m
|
||
}
|
||
})(pos0, result0[1], result0[2]);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_mem_chain() {
|
||
var result0, result1, result2;
|
||
var pos0, pos1;
|
||
|
||
pos0 = pos;
|
||
result0 = [];
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 46) {
|
||
result1 = ".";
|
||
pos++;
|
||
} else {
|
||
result1 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\".\"");
|
||
}
|
||
}
|
||
if (result1 !== null) {
|
||
result2 = parse_ident_name();
|
||
if (result2 !== null) {
|
||
result1 = [result1, result2];
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
while (result1 !== null) {
|
||
result0.push(result1);
|
||
pos1 = pos;
|
||
if (input.charCodeAt(pos) === 46) {
|
||
result1 = ".";
|
||
pos++;
|
||
} else {
|
||
result1 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\".\"");
|
||
}
|
||
}
|
||
if (result1 !== null) {
|
||
result2 = parse_ident_name();
|
||
if (result2 !== null) {
|
||
result1 = [result1, result2];
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
} else {
|
||
result1 = null;
|
||
pos = pos1;
|
||
}
|
||
}
|
||
if (result0 !== null) {
|
||
result0 = (function(offset, l) {
|
||
var s = [];
|
||
for (var i = 0; i < l.length; i++) {
|
||
s.push(l[i][1]);
|
||
}
|
||
return s;
|
||
})(pos0, result0);
|
||
}
|
||
if (result0 === null) {
|
||
pos = pos0;
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_VAR_PRE() {
|
||
var result0;
|
||
|
||
if (input.charCodeAt(pos) === 36) {
|
||
result0 = "$";
|
||
pos++;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"$\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_RETURN() {
|
||
var result0;
|
||
|
||
if (input.substr(pos, 6).toLowerCase() === "return") {
|
||
result0 = input.substr(pos, 6);
|
||
pos += 6;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\"return\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
function parse_KW_ASSIGN() {
|
||
var result0;
|
||
|
||
if (input.substr(pos, 2) === ":=") {
|
||
result0 = ":=";
|
||
pos += 2;
|
||
} else {
|
||
result0 = null;
|
||
if (reportFailures === 0) {
|
||
matchFailed("\":=\"");
|
||
}
|
||
}
|
||
return result0;
|
||
}
|
||
|
||
|
||
function cleanupExpected(expected) {
|
||
expected.sort();
|
||
|
||
var lastExpected = null;
|
||
var cleanExpected = [];
|
||
for (var i = 0; i < expected.length; i++) {
|
||
if (expected[i] !== lastExpected) {
|
||
cleanExpected.push(expected[i]);
|
||
lastExpected = expected[i];
|
||
}
|
||
}
|
||
return cleanExpected;
|
||
}
|
||
|
||
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 < Math.max(pos, rightmostFailuresPos); 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 util = require('util');
|
||
|
||
function debug(str){
|
||
console.log(str);
|
||
}
|
||
|
||
function inspect(obj){
|
||
console.log(util.inspect(obj, false, 10));
|
||
}
|
||
|
||
function createUnaryExpr(op, e) {
|
||
return {
|
||
type : 'unary_expr',
|
||
operator : op,
|
||
expr : e
|
||
}
|
||
}
|
||
|
||
function createBinaryExpr(op, left, right) {
|
||
return {
|
||
type : 'binary_expr',
|
||
operator : op,
|
||
left : left,
|
||
right : right
|
||
}
|
||
}
|
||
|
||
function createList(head, tail) {
|
||
var result = [head];
|
||
for (var i = 0; i < tail.length; i++) {
|
||
result.push(tail[i][3]);
|
||
}
|
||
return result;
|
||
}
|
||
|
||
function createExprList(head, tail, room) {
|
||
var epList = createList(head, tail);
|
||
var exprList = [];
|
||
var ep;
|
||
for (var i = 0; i < epList.length; i++) {
|
||
ep = epList[i];
|
||
//the ep has already added to the global params
|
||
if (ep.type == 'param') {
|
||
ep.room = room;
|
||
ep.pos = i;
|
||
} else {
|
||
exprList.push(ep);
|
||
}
|
||
}
|
||
return exprList;
|
||
}
|
||
|
||
function createBinaryExprChain(head, tail) {
|
||
var result = head;
|
||
for (var i = 0; i < tail.length; i++) {
|
||
result = createBinaryExpr(tail[i][1], result, tail[i][3]);
|
||
}
|
||
return result;
|
||
}
|
||
|
||
var reservedMap = {
|
||
'SHOW' : true,
|
||
'DROP' : true,
|
||
'SELECT' : true,
|
||
'UPDATE' : true,
|
||
'CREATE' : true,
|
||
'DELETE' : true,
|
||
'INSERT' : true,
|
||
'REPLACE' : true,
|
||
'EXPLAIN' : true,
|
||
'ALL' : true,
|
||
'DISTINCT': true,
|
||
'AS' : true,
|
||
'TABLE' : true,
|
||
'INTO' : true,
|
||
'FROM' : true,
|
||
'SET' : true,
|
||
'LEFT' : true,
|
||
'ON' : true,
|
||
'INNER' : true,
|
||
'JOIN' : true,
|
||
'UNION' : true,
|
||
'VALUES' : true,
|
||
'EXISTS' : true,
|
||
'WHERE' : true,
|
||
'GROUP' : true,
|
||
'BY' : true,
|
||
'HAVING' : true,
|
||
'ORDER' : true,
|
||
'ASC' : true,
|
||
'DESC' : true,
|
||
'LIMIT' : true,
|
||
'BETWEEN' : true,
|
||
'IN' : true,
|
||
'IS' : true,
|
||
'LIKE' : true,
|
||
'CONTAINS': true,
|
||
'NOT' : true,
|
||
'AND' : true,
|
||
'OR' : true,
|
||
|
||
//literal
|
||
'TRUE' : true,
|
||
'FALSE' : true,
|
||
'NULL' : true
|
||
}
|
||
|
||
var cmpPrefixMap = {
|
||
'+' : true,
|
||
'-' : true,
|
||
'*' : true,
|
||
'/' : true,
|
||
'>' : true,
|
||
'<' : true,
|
||
'!' : true,
|
||
'=' : true,
|
||
|
||
//between
|
||
'B' : true,
|
||
'b' : true,
|
||
//for is or in
|
||
'I' : true,
|
||
'i' : true,
|
||
//for like
|
||
'L' : true,
|
||
'l' : true,
|
||
//for not
|
||
'N' : true,
|
||
'n' : true,
|
||
//for contains
|
||
'C' : true,
|
||
'c' : true,
|
||
}
|
||
|
||
//used for store refered parmas
|
||
var params = [];
|
||
|
||
//used for dependency analysis
|
||
var varList = [];
|
||
|
||
|
||
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|
|
||
* - |rightmostFailuresExpected| may or may not contain something
|
||
*
|
||
* 2. The parser successfully parsed only a part of the input.
|
||
*
|
||
* - |result !== null|
|
||
* - |pos < input.length|
|
||
* - |rightmostFailuresExpected| may or may not contain something
|
||
*
|
||
* 3. The parser did not successfully parse any part of the input.
|
||
*
|
||
* - |result === null|
|
||
* - |pos === 0|
|
||
* - |rightmostFailuresExpected| contains at least one failure
|
||
*
|
||
* All code following this comment (including called functions) must
|
||
* handle these states.
|
||
*/
|
||
if (result === null || pos !== input.length) {
|
||
var offset = Math.max(pos, rightmostFailuresPos);
|
||
var found = offset < input.length ? input.charAt(offset) : null;
|
||
var errorPosition = computeErrorPosition();
|
||
|
||
throw new this.SyntaxError(
|
||
cleanupExpected(rightmostFailuresExpected),
|
||
found,
|
||
offset,
|
||
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(expected, found, offset, line, column) {
|
||
function buildMessage(expected, found) {
|
||
var expectedHumanized, foundHumanized;
|
||
|
||
switch (expected.length) {
|
||
case 0:
|
||
expectedHumanized = "end of input";
|
||
break;
|
||
case 1:
|
||
expectedHumanized = expected[0];
|
||
break;
|
||
default:
|
||
expectedHumanized = expected.slice(0, expected.length - 1).join(", ")
|
||
+ " or "
|
||
+ expected[expected.length - 1];
|
||
}
|
||
|
||
foundHumanized = found ? quote(found) : "end of input";
|
||
|
||
return "Expected " + expectedHumanized + " but " + foundHumanized + " found.";
|
||
}
|
||
|
||
this.name = "SyntaxError";
|
||
this.expected = expected;
|
||
this.found = found;
|
||
this.message = buildMessage(expected, found);
|
||
this.offset = offset;
|
||
this.line = line;
|
||
this.column = column;
|
||
};
|
||
|
||
result.SyntaxError.prototype = Error.prototype;
|
||
|
||
return result;
|
||
})();
|