1 /* parser generated by jison 0.4.6 */
  2 /*
  3   Returns a Parser object of the following structure:
  4 
  5   Parser: {
  6     yy: {}
  7   }
  8 
  9   Parser.prototype: {
 10     yy: {},
 11     trace: function(),
 12     symbols_: {associative list: name ==> number},
 13     terminals_: {associative list: number ==> name},
 14     productions_: [...],
 15     performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
 16     table: [...],
 17     defaultActions: {...},
 18     parseError: function(str, hash),
 19     parse: function(input),
 20 
 21     lexer: {
 22         EOF: 1,
 23         parseError: function(str, hash),
 24         setInput: function(input),
 25         input: function(),
 26         unput: function(str),
 27         more: function(),
 28         less: function(n),
 29         pastInput: function(),
 30         upcomingInput: function(),
 31         showPosition: function(),
 32         test_match: function(regex_match_array, rule_index),
 33         next: function(),
 34         lex: function(),
 35         begin: function(condition),
 36         popState: function(),
 37         _currentRules: function(),
 38         topState: function(),
 39         pushState: function(condition),
 40 
 41         options: {
 42             ranges: boolean           (optional: true ==> token location info will include a .range[] member)
 43             flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
 44             backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
 45         },
 46 
 47         performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
 48         rules: [...],
 49         conditions: {associative list: name ==> set},
 50     }
 51   }
 52 
 53 
 54   token location info (@$, _$, etc.): {
 55     first_line: n,
 56     last_line: n,
 57     first_column: n,
 58     last_column: n,
 59     range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
 60   }
 61 
 62 
 63   the parseError function receives a 'hash' object with these members for lexer and parser errors: {
 64     text:        (matched text)
 65     token:       (the produced terminal token, if any)
 66     line:        (yylineno)
 67   }
 68   while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
 69     loc:         (yylloc)
 70     expected:    (string describing the set of expected tokens)
 71     recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
 72   }
 73 */
 74 var parser = (function(){
 75 var parser = {trace: function (){},
 76 yy: {},
 77 symbols_: {"error":2,"Program":3,"NexcelProgram":4,"ExcelProgram":5,"RuntimeTable":6,"OR":7,"Clause":8,"EOF":9,"ConstrOp":10,"NexcelRTProgram":11,"RANGE_NAME":12,"=":13,"[":14,"]":15,"Fact":16,"IF":17,"Body":18,"NOT":19,"AND":20,"ConstrRel":21,"Variables":22,"Variable":23,"STRING_CONST":24,"(":25,")":26,">":27,"<":28,"<=":29,">=":30,"!=":31,"+":32,"-":33,"*":34,"/":35,"^":36,"NUMBER":37,"FLOAT":38,"CELL":39,"ABS_CELL":40,"SHEET_CELL":41,"RANGE_CELL":42,"Exps":43,"$accept":0,"$end":1},
 78 terminals_: {2:"error",7:"OR",9:"EOF",12:"RANGE_NAME",13:"=",14:"[",15:"]",17:"IF",19:"NOT",20:"AND",23:"Variable",24:"STRING_CONST",25:"(",26:")",27:">",28:"<",29:"<=",30:">=",31:"!=",32:"+",33:"-",34:"*",35:"/",36:"^",37:"NUMBER",38:"FLOAT",39:"CELL",40:"ABS_CELL",41:"SHEET_CELL",42:"RANGE_CELL"},
 79 productions_: [0,[3,1],[3,1],[4,3],[4,3],[4,3],[5,3],[11,2],[11,3],[6,5],[6,6],[8,1],[8,3],[18,1],[18,2],[18,4],[18,3],[18,3],[18,1],[22,3],[22,1],[22,1],[16,4],[21,3],[21,3],[21,3],[21,3],[21,3],[21,3],[10,3],[10,3],[10,3],[10,3],[10,3],[10,2],[10,3],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,4],[10,1],[10,3],[43,1],[43,3]],
 80 performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */
 81 /**/) {
 82 /* this == yyval */
 83 
 84 var $0 = $$.length - 1;
 85 switch (yystate) {
 86 case 3: programs = helper.appendProgramToArray($$[$0-2], ProgramType.RUNTIME_TABLE, programs);  	console.log('<--------Nexcel Program Clause OR Program --------------->\n'+programs);
 87 break;
 88 case 4: programs = helper.appendProgramToArray($$[$0-2], ProgramType.NEXCEL, programs);  	console.log('<--------Nexcel Program Clause OR Program --------------->\n'+programs); 
 89 break;
 90 case 5: programs = helper.appendProgramToArray($$[$0-2], ProgramType.NEXCEL, programs);  	console.log('<--------Nexcel Program Clause OR EOF --------------->\n'+programs); 
 91 break;
 92 case 6: programs = helper.appendProgramToArray($$[$0-2],ProgramType.EXCEL, programs);		console.log('<--------Excel Program ConstrOp OR EOF --------------->\n'+programs); 
 93 break;
 94 case 7: this.$ = helper.appendProgramToArray($$[$0-1], ProgramType.NEXCEL, []);		  		console.log('<--------Nexcel RT Program [ Clause OR ] --------------->\n'+$$[$0-1].toString()); 
 95 break;
 96 case 8: this.$ = helper.appendProgramToArray($$[$0-2], ProgramType.NEXCEL, $$[$0]);				console.log('<--------Nexcel RT Program [ Clause OR NexcelRTProgram ] --------------->\n'+([$$[$0-2]].concat($$[$0])).join('.\n')); 
 97 break;
 98 case 9: this.$ = new TREEObjects.RUNTIME_TABLE($$[$0-4], $$[$0-1]);					console.log('New Runtime Table :'+$$[$0-4]+'='+$$[$0-1].join());
 99 break;
100 case 10: this.$ = new TREEObjects.NEXCEL_RT_PROGRAM($$[$0-5], $$[$0-2]);					console.log('New Runtime Table :'+$$[$0-5]+'='+$$[$0-2].join());
101 break;
102 case 11: this.$ = helper.clauseNoBody($$[$0]);		console.log('Clause - Fact' +$$[$0]); 	
103 break;
104 case 12: this.$ = helper.clauseWithBody($$[$0-2], $$[$0]);	console.log('Clause FACT IF BODY '+ $$[$0-2] + 'IF '+$$[$0]); 	
105 break;
106 case 13: this.$ = [$$[$0]];			console.log('Body FACT '); 				
107 break;
108 case 14: $$[$0].negate(); this.$ = [$$[$0]];				console.log('Body NOT FACT '+$$[$0].toString()); 				
109 break;
110 case 15: $$[$0-2].negate(); this.$ = [$$[$0-2]].concat($$[$0]);	console.log('Body NOT FACT......'+$$[$0-2].toString()+'--COMMA--'+$$[$0].toString());	
111 break;
112 case 16: this.$ = [$$[$0-2]].concat($$[$0]);	console.log('Body FACT AND Body :'+$$[$0-2].toString()+'--COMMA--'+$$[$0].toString()); 		
113 break;
114 case 17: this.$ = [$$[$0-2]].concat($$[$0]);	console.log('Body Constr AND BODY :'+$$[$0-2].toString()+'--COMMA--'+$$[$0].toString()); 	
115 break;
116 case 18: this.$ = [$$[$0]];			console.log('Body Constr' +$$[$0].toString()); 			
117 break;
118 case 19: this.$ = [$$[$0-2]].concat($$[$0]); 	console.log('Variables:- Variable AND Variables'); 		
119 break;
120 case 20: this.$ = [$$[$0]]; 				console.log('Variables:- Variable '); 					
121 break;
122 case 21: this.$ = [$$[$0]]; 				console.log('Variables:- Variable '); 					
123 break;
124 case 22: this.$ = helper.createFact($$[$0-3],$$[$0-1]);	console.log('Fact  = RANGE_NAME( Variables )'+this.$.toString()); 	
125 break;
126 case 23:  this.$ = helper.setBinRelDetails($$[$0-1],$$[$0-2],$$[$0]); 	console.log('ConstrRel :- ConstrOp-Exp BIN_REL > ConstrOp-Exp '); 
127 break;
128 case 24:  this.$ = helper.setBinRelDetails($$[$0-1],$$[$0-2],$$[$0]); 	console.log('ConstrRel :- ConstrOp-Exp BIN_REL < ConstrOp-Exp '); 
129 break;
130 case 25:  this.$ = helper.setBinRelDetails($$[$0-1],$$[$0-2],$$[$0]); 	console.log('ConstrRel :- ConstrOp-Exp BIN_REL <= ConstrOp-Exp '); 
131 break;
132 case 26:  this.$ = helper.setBinRelDetails($$[$0-1],$$[$0-2],$$[$0]); 	console.log('ConstrRel :- ConstrOp-Exp BIN_REL >= ConstrOp-Exp '); 
133 break;
134 case 27:  this.$ = helper.setBinRelDetails($$[$0-1],$$[$0-2],$$[$0]); 	console.log('ConstrRel :- ConstrOp-Exp BIN_REL = ConstrOp-Exp '); 
135 break;
136 case 28:  this.$ = helper.setBinRelDetails($$[$0-1],$$[$0-2],$$[$0]); 	console.log('ConstrRel :- ConstrOp-Exp BIN_REL != ConstrOp-Exp '); 
137 break;
138 case 29: this.$ = helper.createBinOpDetails($$[$0-1],$$[$0-2],$$[$0]);
139 break;
140 case 30: this.$ = helper.createBinOpDetails($$[$0-1],$$[$0-2],$$[$0]);
141 break;
142 case 31: this.$ = helper.createBinOpDetails($$[$0-1],$$[$0-2],$$[$0]);
143 break;
144 case 32: this.$ = helper.createBinOpDetails($$[$0-1],$$[$0-2],$$[$0]);
145 break;
146 case 33: this.$ = helper.createBinOpDetails($$[$0-1],$$[$0-2],$$[$0]);
147 break;
148 case 34: this.$ = helper.createUnaryMinus($$[$0]);
149 break;
150 case 35: this.$ = $$[$0-1].setBracket();
151 break;
152 case 36: this.$ = new TREEObjects.CONSTANT(ObjectType.CONSTANT_VAL, $$[$0]);	console.log('CONSTR-OP - Constant:- NUMBER	'); 	
153 break;
154 case 37: this.$ = new TREEObjects.CONSTANT(ObjectType.CONSTANT_VAL, $$[$0]);	console.log('CONSTR-OP - Constant:- FLOAT	'); 	
155 break;
156 case 38: this.$ = new TREEObjects.CONSTANT(ObjectType.CONSTANT_NAM, $$[$0].split('\"')[1]);	console.log('CONSTR-OP:- Constant:- STRING	'); 	
157 break;
158 case 39: this.$ = new TREEObjects.EXPRESSION(ObjectType.EXP_CELL, $$[$0]);				console.log('CONSTR-OP:-	CELL '+$$[$0]); 		
159 break;
160 case 40: this.$ = new TREEObjects.EXPRESSION(ObjectType.EXP_ABS_CELL, $$[$0]);				console.log('CONSTR-OP:-	ABS_CELL '+$$[$0]); 		
161 break;
162 case 41: this.$ = new TREEObjects.EXPRESSION(ObjectType.EXP_SHEET_CELL, $$[$0]);		console.log('CONSTR-OP:-	SHEET_CELL '+$$[$0]); 		
163 break;
164 case 42: this.$ = new TREEObjects.EXPRESSION(ObjectType.EXP_RANGE_NAME, $$[$0]);	console.log('CONSTR-OP:-	Range '+$$[$0]); 		
165 break;
166 case 43: this.$ = new TREEObjects.EXPRESSION(ObjectType.EXP_RANGE_CELL, $$[$0]);	console.log('CONSTR-OP:-	Range '+$$[$0]); 		
167 break;
168 case 44: this.$ = new TREEObjects.EXPRESSION(ObjectType.EXP_OP, $$[$0-3], $$[$0-1]);	console.log('CONSTR-OP:- [FUNTION CALL]	Variable ( Exps ) '+$$[$0-3]+'('+$$[$0-1]+')'); 		
169 break;
170 case 45: this.$ = new TREEObjects.EXPRESSION(ObjectType.EXP_VAR, $$[$0]);		console.log('CONSTR-OP:-	Variable '+$$[$0]); 	
171 break;
172 case 46: this.$ = new TREEObjects.NEXCEL_RT_PROGRAM($$[$0-1]);					console.log('New Runtime Programs :'+$$[$0-1].join());
173 break;
174 case 47: this.$ = [$$[$0]];						console.log('Exps:-	Exp		'); 			
175 break;
176 case 48: this.$ = [$$[$0-2]].concat($$[$0]);				console.log('Exps:-	Exp	AND Exps	'); 	
177 break;
178 }
179 },
180 table: [{3:1,4:2,5:3,6:4,8:5,10:6,12:[1,7],14:[1,19],16:8,23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{1:[3]},{1:[2,1]},{1:[2,2]},{7:[1,20]},{7:[1,21]},{7:[1,22],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,42],13:[1,28],25:[1,29],32:[2,42],33:[2,42],34:[2,42],35:[2,42],36:[2,42]},{7:[2,11],17:[1,30]},{10:31,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:33,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{7:[2,36],13:[2,36],20:[2,36],26:[2,36],27:[2,36],28:[2,36],29:[2,36],30:[2,36],31:[2,36],32:[2,36],33:[2,36],34:[2,36],35:[2,36],36:[2,36]},{7:[2,37],13:[2,37],20:[2,37],26:[2,37],27:[2,37],28:[2,37],29:[2,37],30:[2,37],31:[2,37],32:[2,37],33:[2,37],34:[2,37],35:[2,37],36:[2,37]},{7:[2,38],13:[2,38],20:[2,38],26:[2,38],27:[2,38],28:[2,38],29:[2,38],30:[2,38],31:[2,38],32:[2,38],33:[2,38],34:[2,38],35:[2,38],36:[2,38]},{7:[2,39],13:[2,39],20:[2,39],26:[2,39],27:[2,39],28:[2,39],29:[2,39],30:[2,39],31:[2,39],32:[2,39],33:[2,39],34:[2,39],35:[2,39],36:[2,39]},{7:[2,40],13:[2,40],20:[2,40],26:[2,40],27:[2,40],28:[2,40],29:[2,40],30:[2,40],31:[2,40],32:[2,40],33:[2,40],34:[2,40],35:[2,40],36:[2,40]},{7:[2,41],13:[2,41],20:[2,41],26:[2,41],27:[2,41],28:[2,41],29:[2,41],30:[2,41],31:[2,41],32:[2,41],33:[2,41],34:[2,41],35:[2,41],36:[2,41]},{7:[2,43],13:[2,43],20:[2,43],26:[2,43],27:[2,43],28:[2,43],29:[2,43],30:[2,43],31:[2,43],32:[2,43],33:[2,43],34:[2,43],35:[2,43],36:[2,43]},{7:[2,45],13:[2,45],20:[2,45],25:[1,34],26:[2,45],27:[2,45],28:[2,45],29:[2,45],30:[2,45],31:[2,45],32:[2,45],33:[2,45],34:[2,45],35:[2,45],36:[2,45]},{8:36,11:35,12:[1,37],16:8},{4:38,6:4,8:5,12:[1,39],16:8},{4:40,6:4,8:5,9:[1,41],12:[1,39],16:8},{9:[1,42]},{10:43,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:44,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:45,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:46,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:47,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{14:[1,48]},{22:49,23:[1,50],24:[1,51]},{10:57,12:[1,56],14:[1,19],16:53,18:52,19:[1,54],21:55,23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{7:[2,34],13:[2,34],20:[2,34],26:[2,34],27:[2,34],28:[2,34],29:[2,34],30:[2,34],31:[2,34],32:[2,34],33:[2,34],34:[2,34],35:[2,34],36:[2,34]},{7:[2,42],13:[2,42],20:[2,42],26:[2,42],27:[2,42],28:[2,42],29:[2,42],30:[2,42],31:[2,42],32:[2,42],33:[2,42],34:[2,42],35:[2,42],36:[2,42]},{26:[1,58],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{10:60,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17],43:59},{15:[1,61]},{7:[1,62]},{25:[1,29]},{1:[2,3]},{13:[1,28],25:[1,29]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{7:[2,29],13:[2,29],20:[2,29],26:[2,29],27:[2,29],28:[2,29],29:[2,29],30:[2,29],31:[2,29],32:[2,29],33:[2,29],34:[1,25],35:[1,26],36:[1,27]},{7:[2,30],13:[2,30],20:[2,30],26:[2,30],27:[2,30],28:[2,30],29:[2,30],30:[2,30],31:[2,30],32:[2,30],33:[2,30],34:[1,25],35:[1,26],36:[1,27]},{7:[2,31],13:[2,31],20:[2,31],26:[2,31],27:[2,31],28:[2,31],29:[2,31],30:[2,31],31:[2,31],32:[2,31],33:[2,31],34:[2,31],35:[2,31],36:[1,27]},{7:[2,32],13:[2,32],20:[2,32],26:[2,32],27:[2,32],28:[2,32],29:[2,32],30:[2,32],31:[2,32],32:[2,32],33:[2,32],34:[2,32],35:[2,32],36:[1,27]},{7:[2,33],13:[2,33],20:[2,33],26:[2,33],27:[2,33],28:[2,33],29:[2,33],30:[2,33],31:[2,33],32:[2,33],33:[2,33],34:[2,33],35:[2,33],36:[2,33]},{8:36,10:64,11:63,12:[1,56],14:[1,19],16:8,23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{26:[1,65]},{20:[1,66],26:[2,20]},{26:[2,21]},{7:[2,12]},{7:[2,13],20:[1,67]},{12:[1,37],16:68},{7:[2,18],20:[1,69]},{7:[2,42],13:[2,42],25:[1,29],27:[2,42],28:[2,42],29:[2,42],30:[2,42],31:[2,42],32:[2,42],33:[2,42],34:[2,42],35:[2,42],36:[2,42]},{13:[1,74],27:[1,70],28:[1,71],29:[1,72],30:[1,73],31:[1,75],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,35],13:[2,35],20:[2,35],26:[2,35],27:[2,35],28:[2,35],29:[2,35],30:[2,35],31:[2,35],32:[2,35],33:[2,35],34:[2,35],35:[2,35],36:[2,35]},{26:[1,76]},{20:[1,77],26:[2,47],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,46],13:[2,46],20:[2,46],26:[2,46],27:[2,46],28:[2,46],29:[2,46],30:[2,46],31:[2,46],32:[2,46],33:[2,46],34:[2,46],35:[2,46],36:[2,46]},{8:36,11:78,12:[1,37],15:[2,7],16:8},{15:[1,79]},{7:[1,80],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,22],17:[2,22],20:[2,22]},{22:81,23:[1,50],24:[1,51]},{10:57,12:[1,56],14:[1,19],16:53,18:82,19:[1,54],21:55,23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{7:[2,14],20:[1,83]},{10:57,12:[1,56],14:[1,19],16:53,18:84,19:[1,54],21:55,23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:85,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:86,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:87,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:88,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:89,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{10:90,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{7:[2,44],13:[2,44],20:[2,44],26:[2,44],27:[2,44],28:[2,44],29:[2,44],30:[2,44],31:[2,44],32:[2,44],33:[2,44],34:[2,44],35:[2,44],36:[2,44]},{10:60,12:[1,32],14:[1,19],23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17],43:91},{15:[2,8]},{7:[2,9]},{15:[1,92]},{26:[2,19]},{7:[2,16]},{10:57,12:[1,56],14:[1,19],16:53,18:93,19:[1,54],21:55,23:[1,18],24:[1,13],25:[1,10],33:[1,9],37:[1,11],38:[1,12],39:[1,14],40:[1,15],41:[1,16],42:[1,17]},{7:[2,17]},{7:[2,23],20:[2,23],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,24],20:[2,24],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,25],20:[2,25],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,26],20:[2,26],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,27],20:[2,27],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{7:[2,28],20:[2,28],32:[1,23],33:[1,24],34:[1,25],35:[1,26],36:[1,27]},{26:[2,48]},{7:[2,10]},{7:[2,15]}],
181 defaultActions: {2:[2,1],3:[2,2],38:[2,3],40:[2,4],41:[2,5],42:[2,6],51:[2,21],52:[2,12],78:[2,8],79:[2,9],81:[2,19],82:[2,16],84:[2,17],91:[2,48],92:[2,10],93:[2,15]},
182 parseError: function O(e,t){if(!t.recoverable)throw new Error(e);this.trace(e)},
183 parse: function (t){function v(e){r.length=r.length-2*e,i.length=i.length-e,s.length=s.length-e}function m(){var e;return e=n.lexer.lex()||h,typeof e!="number"&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],s=[],o=this.table,u="",a=0,f=0,l=0,c=2,h=1;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,typeof this.lexer.yylloc=="undefined"&&(this.lexer.yylloc={});var p=this.lexer.yylloc;s.push(p);var d=this.lexer.options&&this.lexer.options.ranges;typeof this.yy.parseError=="function"?this.parseError=this.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;var g,y,b,w,E,S,x={},T,N,C,k;for(;;){b=r[r.length-1];if(this.defaultActions[b])w=this.defaultActions[b];else{if(g===null||typeof g=="undefined")g=m();w=o[b]&&o[b][g]}if(typeof w=="undefined"||!w.length||!w[0]){var L,A="";function O(e){var t=r.length-1,n=0;for(;;){if(c.toString()in o[e])return n;if(e===0||t<2)return!1;t-=2,e=r[t],++n}}if(!l){L=O(b),k=[];for(T in o[b])this.terminals_[T]&&T>c&&k.push("'"+this.terminals_[T]+"'");this.lexer.showPosition?A="Parse error on line "+(a+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[g]||g)+"'":A="Parse error on line "+(a+1)+": Unexpected "+(g==h?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError(A,{text:this.lexer.match,token:this.terminals_[g]||g,line:this.lexer.yylineno,loc:p,expected:k,recoverable:L!==!1})}else y!==h&&(L=O(b));if(l==3){if(g===h||y===h)throw new Error(A||"Parsing halted while starting to recover from another error.");f=this.lexer.yyleng,u=this.lexer.yytext,a=this.lexer.yylineno,p=this.lexer.yylloc,g=m()}if(L===!1)throw new Error(A||"Parsing halted. No suitable error recovery rule available.");v(L),y=g==c?null:g,g=c,b=r[r.length-1],w=o[b]&&o[b][c],l=3}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+g);switch(w[0]){case 1:r.push(g),i.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),g=null,y?(g=y,y=null):(f=this.lexer.yyleng,u=this.lexer.yytext,a=this.lexer.yylineno,p=this.lexer.yylloc,l>0&&l--);break;case 2:N=this.productions_[w[1]][1],x.$=i[i.length-N],x._$={first_line:s[s.length-(N||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(N||1)].first_column,last_column:s[s.length-1].last_column},d&&(x._$.range=[s[s.length-(N||1)].range[0],s[s.length-1].range[1]]),S=this.performAction.call(x,u,f,a,this.yy,w[1],i,s);if(typeof S!="undefined")return S;N&&(r=r.slice(0,-1*N*2),i=i.slice(0,-1*N),s=s.slice(0,-1*N)),r.push(this.productions_[w[1]][0]),i.push(x.$),s.push(x._$),C=o[r[r.length-2]][r[r.length-1]],r.push(C);break;case 3:return!0}}return!0}};
184 
185 
186 define(function(){
187 	parsingStack = require('Collections').Stack();
188 	helper = require('TreeGenerationHelper');
189 	TREEObjects = require('GrammarTreeObjects');
190 	CONST = require('CONSTANT');
191 	ObjectType = CONST.ObjectType;
192 	ProgramType = CONST.ProgramType;
193 	return parser;
194 });/* generated by jison-lex 0.2.0 */
195 var lexer = (function(){
196 var lexer = {
197 
198 EOF:1,
199 
200 parseError:function (t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)},
201 
202 // resets the lexer, sets new input
203 setInput:function (e){return this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},
204 
205 // consumes and returns one char from the input
206 input:function (){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},
207 
208 // unshifts one char (or a string) into the input
209 unput:function (e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},
210 
211 // When called from action, caches matched text and appends it on next action
212 more:function (){return this._more=!0,this},
213 
214 // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
215 reject:function (){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},
216 
217 // retain first n characters of the match
218 less:function (e){this.unput(this.match.slice(e))},
219 
220 // displays already matched input, i.e. for error messages
221 pastInput:function (){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},
222 
223 // displays upcoming input, i.e. for error messages
224 upcomingInput:function (){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},
225 
226 // displays the character position where the lexing error occurred, i.e. for error messages
227 showPosition:function (){var e=this.pastInput(),t=(new Array(e.length+1)).join("-");return e+this.upcomingInput()+"\n"+t+"^"},
228 
229 // test the lexed token: return FALSE when not a match, otherwise return token
230 test_match:function (e,t){var n,r,i;this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),r=e[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1);if(n)return this.options.backtrack_lexer&&delete i,n;if(this._backtrack){for(var s in i)this[s]=i[s];return!1}return this.options.backtrack_lexer&&delete i,!1},
231 
232 // return next match in input
233 next:function (){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext="",this.match="");var i=this._currentRules();for(var s=0;s<i.length;s++){n=this._input.match(this.rules[i[s]]);if(n&&(!t||n[0].length>t[0].length)){t=n,r=s;if(this.options.backtrack_lexer){e=this.test_match(n,i[s]);if(e!==!1)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}}return t?(e=this.test_match(t,i[r]),e!==!1?e:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},
234 
235 // return next match that has a token
236 lex:function (){var t=this.next();return t?t:this.lex()},
237 
238 // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
239 begin:function (t){this.conditionStack.push(t)},
240 
241 // pop the previously active lexer condition state off the condition stack
242 popState:function (){var t=this.conditionStack.length-1;return t>0?this.conditionStack.pop():this.conditionStack[0]},
243 
244 // produce the lexer rule set which is active for the currently active lexer condition state
245 _currentRules:function (){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},
246 
247 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
248 topState:function (t){return t=this.conditionStack.length-1-Math.abs(t||0),t>=0?this.conditionStack[t]:"INITIAL"},
249 
250 // alias for begin(condition)
251 pushState:function (t){this.begin(t)},
252 
253 // return the number of states currently on the stack
254 stateStackSize:function (){return this.conditionStack.length},
255 options: {},
256 performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START
257 /**/) {
258 
259 var YYSTATE=YY_START;
260 switch($avoiding_name_collisions) {
261 case 0:/* skip whitespace */
262 break;
263 case 1: console.log('Found IF '); 		helper._CXT.foundToken("IF", ":-");	 	return "IF"; 	
264 break;
265 case 2: console.log('Found COMMA '); 		helper._CXT.foundToken("AND", ",");	return "AND"; 	
266 break;
267 case 3: console.log('Found LPAREN '); 	helper._CXT.foundToken("BRACE", "(");	return "("; 	
268 break;
269 case 4: console.log('Found RPAREN '); 	helper._CXT.foundToken("BRACE", ")"); 	return ")"; 	
270 break;
271 case 5: console.log('Found L-SQUARE '); 	helper._CXT.foundToken("BRACE", "["); 	return "["; 	
272 break;
273 case 6: console.log('Found R-SQUARE '); 	helper._CXT.foundToken("BRACE", "]");	return "]"; 	
274 break;
275 case 7: console.log('Found DOT----');		helper._CXT.foundToken("OR", ".");	return "OR";	
276 break;
277 case 8: console.log('Found RANGE ---1--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
278 break;
279 case 9: console.log('Found RANGE ---2--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
280 break;
281 case 10: console.log('Found RANGE ---3--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);	 	return "RANGE_CELL";	
282 break;
283 case 11: console.log('Found RANGE ---4--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
284 break;
285 case 12: console.log('Found RANGE ---5--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
286 break;
287 case 13: console.log('Found RANGE ---6--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
288 break;
289 case 14: console.log('Found RANGE ---7--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
290 break;
291 case 15: console.log('Found RANGE ---8--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
292 break;
293 case 16: console.log('Found RANGE ---9--- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
294 break;
295 case 17: console.log('Found RANGE ---10-- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
296 break;
297 case 18: console.log('Found RANGE ---11-- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
298 break;
299 case 19: console.log('Found RANGE ---12-- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
300 break;
301 case 20: console.log('Found RANGE ---13-- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
302 break;
303 case 21: console.log('Found RANGE ---14-- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
304 break;
305 case 22: console.log('Found RANGE ---15-- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
306 break;
307 case 23: console.log('Found RANGE ---16-- CELL:CELL '); helper._CXT.foundToken("RANGE_CELL", yy_.yytext);		return "RANGE_CELL";	
308 break;
309 case 24: console.log('Found SHEET CELL Ex:SHEET1!A10  :'+yy_.yytext); 		helper._CXT.foundToken("SHEET_CELL", yy_.yytext);		return "SHEET_CELL";	
310 break;
311 case 25: console.log('Found SHEET CELL Ex:<SHEET1!A10>  :'+yy_.yytext); 	helper._CXT.foundToken("SHEET_CELL", yy_.yytext);		return "SHEET_CELL";	
312 break;
313 case 26: console.log('Found SHEET CELL Ex:<SHEET1!A10>  :'+yy_.yytext); 	helper._CXT.foundToken("SHEET_CELL", yy_.yytext);		return "SHEET_CELL";	
314 break;
315 case 27: console.log('Found SHEET CELL Ex:<SHEET1!A10>  :'+yy_.yytext); 	helper._CXT.foundToken("SHEET_CELL", yy_.yytext);		return "SHEET_CELL";	
316 break;
317 case 28: console.log('Found SHEET CELL Ex:<SHEET1!A10>  :'+yy_.yytext); 	helper._CXT.foundToken("SHEET_CELL", yy_.yytext);		return "SHEET_CELL";	
318 break;
319 case 29: console.log('Found NOT'); 						helper._CXT.foundToken("NOT", yy_.yytext);			return "NOT"				
320 break;
321 case 30: console.log('Found RANGE_NAME :'+yy_.yytext); 		helper._CXT.foundToken("RANGE_NAME", yy_.yytext);	return "RANGE_NAME";	
322 break;
323 case 31: console.log('Found CELL Ex:A10  :'+yy_.yytext); 		helper._CXT.foundToken("CELL", yy_.yytext);			return "CELL";	
324 break;
325 case 32: console.log('Found CELL Ex:$A$10  :'+yy_.yytext); 	helper._CXT.foundToken("ABS_CELL", yy_.yytext);		return "ABS_CELL";	
326 break;
327 case 33: console.log('Found Variable :'+yy_.yytext);			helper._CXT.foundToken("Variable", yy_.yytext); helper._CXT.addVariable(yy_.yytext);		return "Variable";	
328 break;
329 case 34: console.log('Found FLOAT  :'+yy_.yytext); 			helper._CXT.foundToken("FLOAT", yy_.yytext);			return "FLOAT";	
330 break;
331 case 35: console.log('Found NUMBER  :'+yy_.yytext); 			helper._CXT.foundToken("NUMBER", yy_.yytext);		return "NUMBER";	
332 break;
333 case 36: console.log('Found STRING CONSTANT :'+yy_.yytext); 	helper._CXT.foundToken("STRING_CONST", yy_.yytext);	return "STRING_CONST";	
334 break;
335 case 37:helper._CXT.foundToken("ARITHMATIC", yy_.yytext);	return 34
336 break;
337 case 38:helper._CXT.foundToken("ARITHMATIC", yy_.yytext);	return 35
338 break;
339 case 39:helper._CXT.foundToken("ARITHMATIC", yy_.yytext);	return 33
340 break;
341 case 40:helper._CXT.foundToken("ARITHMATIC", yy_.yytext);	return 32
342 break;
343 case 41:helper._CXT.foundToken("ARITHMATIC", yy_.yytext);	return 36
344 break;
345 case 42: helper._CXT.foundToken("ASSIGN", yy_.yytext);		console.log('Found ASSIGN => '); return "=>";	
346 break;
347 case 43: helper._CXT.foundToken("LOGICAL", yy_.yytext);	console.log('Found EQUAL == '); return "==";	
348 break;
349 case 44: helper._CXT.foundToken("LOGICAL", yy_.yytext);	console.log('Found LESS_THAN_EQUAL '); return "<="; 
350 break;
351 case 45: helper._CXT.foundToken("LOGICAL", yy_.yytext);	console.log('Found GREATER_THAN_EQUAL '); return ">="; 
352 break;
353 case 46: helper._CXT.foundToken("LOGICAL", yy_.yytext);	console.log('Found GREATER_THAN '); return ">"; 
354 break;
355 case 47: helper._CXT.foundToken("LOGICAL", yy_.yytext);	console.log('Found LESS_THAN '); return "<"; 
356 break;
357 case 48: helper._CXT.foundToken("LOGICAL", yy_.yytext);	console.log('Found EQUAL '); return "="; 
358 break;
359 case 49: helper._CXT.foundToken("LOGICAL", yy_.yytext);	console.log('Found NOT EQUAL '); return "!="; 
360 break;
361 case 50:return 9
362 break;
363 }
364 },
365 rules: [/^(?:\s+)/,/^(?::-)/,/^(?:,)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\.)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+\$?[1-9][0-9]*(:\$?[A-Z]+\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+\$?[1-9][0-9]*(:\$?_\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+\$?[1-9][0-9]*(:\$?[A-Z]+\$?_){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+\$?[1-9][0-9]*(:\$?_\$?_){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?_\$?[1-9][0-9]*(:\$?[A-Z]+\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?_\$?[1-9][0-9]*(:\$?_\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?_\$?[1-9][0-9]*(:\$?[A-Z]+\$?_){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?_\$?[1-9][0-9]*(:\$?_\$?_){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+(\$?_:\$?[A-Z]+\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+(\$?_:\$?_\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+(\$?_:\$?[A-Z]+\$?_){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+(\$?_:\$?_\$?_){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*(\$?_\$?_:\$?[A-Z]+\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*(\$?_\$?_:\$?_\$?[1-9][0-9]*){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*(\$?_\$?_:\$?[A-Z]+\$?_){1}?)/,/^(?:([A-Za-z0-9 ]+!)?( )*(\$?_\$?_:\$?_\$?_){1}?)/,/^(?:(([A-Za-z0-9 ]+!){1}?[A-Z]+[1-9][0-9]*){1}?)/,/^(?:(<([A-Za-z0-9 ]+!)?( )*\$?_\$?[1-9][0-9]*( )*>){1}?)/,/^(?:(<([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+\$?_( )*>){1}?)/,/^(?:(<([A-Za-z0-9 ]+!)?( )*\$?_\$?_( )*>){1}?)/,/^(?:(<([A-Za-z0-9 ]+!)?( )*\$?[A-Z]+\$?[1-9][0-9]*( )*>){1}?)/,/^(?:NOT\b)/,/^(?:[a-z][a-zA-Z0-9_\']*)/,/^(?:[A-Z]+[1-9][0-9]*)/,/^(?:\$?[A-Z]+\$?[1-9][0-9]*)/,/^(?:[A-Z_][a-zA-Z0-9\'_]*)/,/^(?:[0-9]+(\.[0-9]+)?\b)/,/^(?:[0-9]+)/,/^(?:("[a-zA-Z0-9_ ]*"){1}?)/,/^(?:\*)/,/^(?:\/)/,/^(?:-)/,/^(?:\+)/,/^(?:\^)/,/^(?:=>)/,/^(?:==)/,/^(?:<=)/,/^(?:>=)/,/^(?:>)/,/^(?:<)/,/^(?:=)/,/^(?:!=)/,/^(?:$)/],
366 conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"inclusive":true}}
367 };
368 return lexer;
369 })();
370 parser.lexer = lexer;
371 function Parser () {
372   this.yy = {};
373 }
374 Parser.prototype = parser;parser.Parser = Parser;
375 return new Parser;
376 })();
377 
378 
379 if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
380 exports.parser = parser;
381 exports.Parser = parser.Parser;
382 exports.parse = function () { return parser.parse.apply(parser, arguments); };
383 exports.main = function N(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),t.exit(1));var i=e("fs").readFileSync(e("path").normalize(r[1]),"utf8");return n.parser.parse(i)};
384 if (typeof module !== 'undefined' && require.main === module) {
385   exports.main(process.argv.slice(1));
386 }
387 }