spreadsheet
typeScript/javascript spreadsheet parser, with formulas.
git clone https://git.vogt.world/spreadsheet.git
Log | Files | README.md
← Commit log
commit
message
[parser] reformatting parser so it's easier to read
author
Ben Vogt <[email protected]>
date
2017-05-24 02:51:15
stats
1 file(s) changed, 758 insertions(+), 118 deletions(-)
files
lib/parser.js
   1diff --git a/lib/parser.js b/lib/parser.js
   2index 4206cfd..7579d6c 100644
   3--- a/lib/parser.js
   4+++ b/lib/parser.js
   5@@ -71,13 +71,87 @@
   6  recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
   7  }
   8  */
   9-var Parser = (function(){
  10-  var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,7],$V3=[1,10],$V4=[1,8],$V5=[1,9],$V6=[1,11],$V7=[1,16],$V8=[1,17],$V9=[1,14],$Va=[1,15],$Vb=[1,18],$Vc=[1,20],$Vd=[1,21],$Ve=[1,22],$Vf=[1,23],$Vg=[1,24],$Vh=[1,25],$Vi=[1,26],$Vj=[1,27],$Vk=[1,28],$Vl=[1,29],$Vm=[5,11,12,13,15,16,17,18,19,20,21,22,30,31],$Vn=[5,11,12,13,15,16,17,18,19,20,21,22,30,31,33],$Vo=[1,38],$Vp=[5,11,12,13,15,16,17,18,19,20,21,22,30,31,35],$Vq=[5,12,13,15,16,17,18,19,30,31],$Vr=[5,12,15,16,17,18,30,31],$Vs=[5,12,13,15,16,17,18,19,20,21,30,31],$Vt=[15,30,31],$Vu=[5,11,12,13,15,16,17,18,19,20,21,22,30,31,32,36];
  11-  var parser = {trace: function trace() { },
  12+var Parser = (function () {
  13+  var o = function (k, v, o, l) {
  14+    for (o = o || {}, l = k.length; l--; o[k[l]] = v);
  15+    return o
  16+  }, $V0 = [1, 4], $V1 = [1, 5], $V2 = [1, 7], $V3 = [1, 10], $V4 = [1, 8], $V5 = [1, 9], $V6 = [1, 11], $V7 = [1, 16], $V8 = [1, 17], $V9 = [1, 14], $Va = [1, 15], $Vb = [1, 18], $Vc = [1, 20], $Vd = [1, 21], $Ve = [1, 22], $Vf = [1, 23], $Vg = [1, 24], $Vh = [1, 25], $Vi = [1, 26], $Vj = [1, 27], $Vk = [1, 28], $Vl = [1, 29], $Vm = [5, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31], $Vn = [5, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31, 33], $Vo = [1, 38], $Vp = [5, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31, 35], $Vq = [5, 12, 13, 15, 16, 17, 18, 19, 30, 31], $Vr = [5, 12, 15, 16, 17, 18, 30, 31], $Vs = [5, 12, 13, 15, 16, 17, 18, 19, 20, 21, 30, 31], $Vt = [15, 30, 31], $Vu = [5, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31, 32, 36];
  17+  var parser = {
  18+    trace: function trace() {
  19+    },
  20     yy: {},
  21-    symbols_: {"error":2,"expressions":3,"expression":4,"EOF":5,"variableSequence":6,"TIME_AMPM":7,"TIME_24":8,"number":9,"STRING":10,"&":11,"=":12,"+":13,"(":14,")":15,"<":16,">":17,"NOT":18,"-":19,"*":20,"/":21,"^":22,"FUNCTION":23,"expseq":24,"cell":25,"FIXEDCELL":26,":":27,"CELL":28,"ARRAY":29,";":30,",":31,"VARIABLE":32,"DECIMAL":33,"NUMBER":34,"%":35,"#":36,"!":37,"$accept":0,"$end":1},
  22-    terminals_: {5:"EOF",7:"TIME_AMPM",8:"TIME_24",10:"STRING",11:"&",12:"=",13:"+",14:"(",15:")",16:"<",17:">",18:"NOT",19:"-",20:"*",21:"/",22:"^",23:"FUNCTION",26:"FIXEDCELL",27:":",28:"CELL",29:"ARRAY",30:";",31:",",32:"VARIABLE",33:"DECIMAL",34:"NUMBER",35:"%",36:"#",37:"!"},
  23-    productions_: [0,[3,2],[4,1],[4,1],[4,1],[4,1],[4,1],[4,3],[4,3],[4,3],[4,3],[4,4],[4,4],[4,4],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,2],[4,2],[4,3],[4,4],[4,1],[4,1],[4,2],[25,1],[25,3],[25,1],[25,3],[24,1],[24,1],[24,3],[24,3],[6,1],[6,3],[9,1],[9,3],[9,2],[2,3],[2,4]],
  24+    symbols_: {
  25+      "error": 2,
  26+      "expressions": 3,
  27+      "expression": 4,
  28+      "EOF": 5,
  29+      "variableSequence": 6,
  30+      "TIME_AMPM": 7,
  31+      "TIME_24": 8,
  32+      "number": 9,
  33+      "STRING": 10,
  34+      "&": 11,
  35+      "=": 12,
  36+      "+": 13,
  37+      "(": 14,
  38+      ")": 15,
  39+      "<": 16,
  40+      ">": 17,
  41+      "NOT": 18,
  42+      "-": 19,
  43+      "*": 20,
  44+      "/": 21,
  45+      "^": 22,
  46+      "FUNCTION": 23,
  47+      "expseq": 24,
  48+      "cell": 25,
  49+      "FIXEDCELL": 26,
  50+      ":": 27,
  51+      "CELL": 28,
  52+      "ARRAY": 29,
  53+      ";": 30,
  54+      ",": 31,
  55+      "VARIABLE": 32,
  56+      "DECIMAL": 33,
  57+      "NUMBER": 34,
  58+      "%": 35,
  59+      "#": 36,
  60+      "!": 37,
  61+      "$accept": 0,
  62+      "$end": 1
  63+    },
  64+    terminals_: {
  65+      5: "EOF",
  66+      7: "TIME_AMPM",
  67+      8: "TIME_24",
  68+      10: "STRING",
  69+      11: "&",
  70+      12: "=",
  71+      13: "+",
  72+      14: "(",
  73+      15: ")",
  74+      16: "<",
  75+      17: ">",
  76+      18: "NOT",
  77+      19: "-",
  78+      20: "*",
  79+      21: "/",
  80+      22: "^",
  81+      23: "FUNCTION",
  82+      26: "FIXEDCELL",
  83+      27: ":",
  84+      28: "CELL",
  85+      29: "ARRAY",
  86+      30: ";",
  87+      31: ",",
  88+      32: "VARIABLE",
  89+      33: "DECIMAL",
  90+      34: "NUMBER",
  91+      35: "%",
  92+      36: "#",
  93+      37: "!"
  94+    },
  95+    productions_: [0, [3, 2], [4, 1], [4, 1], [4, 1], [4, 1], [4, 1], [4, 3], [4, 3], [4, 3], [4, 3], [4, 4], [4, 4], [4, 4], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 2], [4, 2], [4, 3], [4, 4], [4, 1], [4, 1], [4, 2], [25, 1], [25, 3], [25, 1], [25, 3], [24, 1], [24, 1], [24, 3], [24, 3], [6, 1], [6, 3], [9, 1], [9, 3], [9, 2], [2, 3], [2, 4]],
  96     performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
  97       /* this == yyval */
  98 
  99@@ -85,7 +159,7 @@ var Parser = (function(){
 100       switch (yystate) {
 101         case 1:
 102 
 103-          return $$[$0-1];
 104+          return $$[$0 - 1];
 105 
 106           break;
 107         case 2:
 108@@ -115,72 +189,72 @@ var Parser = (function(){
 109           break;
 110         case 7:
 111 
 112-          this.$ = yy.handler.helper.specialMatch('&', $$[$0-2], $$[$0]);
 113+          this.$ = yy.handler.helper.specialMatch('&', $$[$0 - 2], $$[$0]);
 114 
 115           break;
 116         case 8:
 117 
 118-          this.$ = yy.handler.helper.logicMatch('=', $$[$0-2], $$[$0]);
 119+          this.$ = yy.handler.helper.logicMatch('=', $$[$0 - 2], $$[$0]);
 120 
 121           break;
 122         case 9:
 123 
 124-          this.$ = yy.handler.helper.mathMatch('+', $$[$0-2], $$[$0]);
 125+          this.$ = yy.handler.helper.mathMatch('+', $$[$0 - 2], $$[$0]);
 126 
 127           break;
 128         case 10:
 129 
 130-          this.$ = yy.handler.helper.number($$[$0-1]);
 131+          this.$ = yy.handler.helper.number($$[$0 - 1]);
 132 
 133           break;
 134         case 11:
 135 
 136-          this.$ = yy.handler.helper.logicMatch('<=', $$[$0-3], $$[$0]);
 137+          this.$ = yy.handler.helper.logicMatch('<=', $$[$0 - 3], $$[$0]);
 138 
 139           break;
 140         case 12:
 141 
 142-          this.$ = yy.handler.helper.logicMatch('>=', $$[$0-3], $$[$0]);
 143+          this.$ = yy.handler.helper.logicMatch('>=', $$[$0 - 3], $$[$0]);
 144 
 145           break;
 146         case 13:
 147 
 148-          this.$ = yy.handler.helper.logicMatch('<>', $$[$0-3], $$[$0]);
 149+          this.$ = yy.handler.helper.logicMatch('<>', $$[$0 - 3], $$[$0]);
 150 
 151           break;
 152         case 14:
 153 
 154-          this.$ = yy.handler.helper.logicMatch('NOT', $$[$0-2], $$[$0]);
 155+          this.$ = yy.handler.helper.logicMatch('NOT', $$[$0 - 2], $$[$0]);
 156 
 157           break;
 158         case 15:
 159 
 160-          this.$ = yy.handler.helper.logicMatch('>', $$[$0-2], $$[$0]);
 161+          this.$ = yy.handler.helper.logicMatch('>', $$[$0 - 2], $$[$0]);
 162 
 163           break;
 164         case 16:
 165 
 166-          this.$ = yy.handler.helper.logicMatch('<', $$[$0-2], $$[$0]);
 167+          this.$ = yy.handler.helper.logicMatch('<', $$[$0 - 2], $$[$0]);
 168 
 169           break;
 170         case 17:
 171 
 172-          this.$ = yy.handler.helper.mathMatch('-', $$[$0-2], $$[$0]);
 173+          this.$ = yy.handler.helper.mathMatch('-', $$[$0 - 2], $$[$0]);
 174 
 175           break;
 176         case 18:
 177 
 178-          this.$ = yy.handler.helper.mathMatch('*', $$[$0-2], $$[$0]);
 179+          this.$ = yy.handler.helper.mathMatch('*', $$[$0 - 2], $$[$0]);
 180 
 181           break;
 182         case 19:
 183 
 184-          this.$ = yy.handler.helper.mathMatch('/', $$[$0-2], $$[$0]);
 185+          this.$ = yy.handler.helper.mathMatch('/', $$[$0 - 2], $$[$0]);
 186 
 187           break;
 188         case 20:
 189 
 190-          this.$ = yy.handler.helper.mathMatch('^', $$[$0-2], $$[$0]);
 191+          this.$ = yy.handler.helper.mathMatch('^', $$[$0 - 2], $$[$0]);
 192 
 193           break;
 194         case 21:
 195@@ -203,12 +277,12 @@ var Parser = (function(){
 196           break;
 197         case 23:
 198 
 199-          this.$ = yy.handler.helper.callFunction.call(this, $$[$0-2], '');
 200+          this.$ = yy.handler.helper.callFunction.call(this, $$[$0 - 2], '');
 201 
 202           break;
 203         case 24:
 204 
 205-          this.$ = yy.handler.helper.callFunction.call(this, $$[$0-3], $$[$0-1]);
 206+          this.$ = yy.handler.helper.callFunction.call(this, $$[$0 - 3], $$[$0 - 1]);
 207 
 208           break;
 209         case 28:
 210@@ -218,7 +292,7 @@ var Parser = (function(){
 211           break;
 212         case 29:
 213 
 214-          this.$ = yy.handler.helper.fixedCellRangeValue.call(yy.obj, $$[$0-2], $$[$0]);
 215+          this.$ = yy.handler.helper.fixedCellRangeValue.call(yy.obj, $$[$0 - 2], $$[$0]);
 216 
 217           break;
 218         case 30:
 219@@ -228,7 +302,7 @@ var Parser = (function(){
 220           break;
 221         case 31:
 222 
 223-          this.$ = yy.handler.helper.cellRangeValue.call(yy.obj, $$[$0-2], $$[$0]);
 224+          this.$ = yy.handler.helper.cellRangeValue.call(yy.obj, $$[$0 - 2], $$[$0]);
 225 
 226           break;
 227         case 32:
 228@@ -252,12 +326,13 @@ var Parser = (function(){
 229           this.$ = result;
 230 
 231           break;
 232-        case 34: case 35:
 233+        case 34:
 234+        case 35:
 235 
 236-        $$[$0-2].push($$[$0]);
 237-        this.$ = $$[$0-2];
 238+          $$[$0 - 2].push($$[$0]);
 239+          this.$ = $$[$0 - 2];
 240 
 241-        break;
 242+          break;
 243         case 36:
 244 
 245           this.$ = [$$[$0]];
 246@@ -265,7 +340,7 @@ var Parser = (function(){
 247           break;
 248         case 37:
 249 
 250-          this.$ = (yy.handler.utils.isArray($$[$0-2]) ? $$[$0-2] : [$$[$0-2]]);
 251+          this.$ = (yy.handler.utils.isArray($$[$0 - 2]) ? $$[$0 - 2] : [$$[$0 - 2]]);
 252           this.$.push($$[$0]);
 253 
 254           break;
 255@@ -276,23 +351,496 @@ var Parser = (function(){
 256           break;
 257         case 39:
 258 
 259-          this.$ = ($$[$0-2] + '.' + $$[$0]) * 1;
 260+          this.$ = ($$[$0 - 2] + '.' + $$[$0]) * 1;
 261 
 262           break;
 263         case 40:
 264 
 265-          this.$ = $$[$0-1] * 0.01;
 266+          this.$ = $$[$0 - 1] * 0.01;
 267 
 268           break;
 269-        case 41: case 42:
 270+        case 41:
 271+        case 42:
 272 
 273-        this.$ = $$[$0-2] + $$[$0-1] + $$[$0];
 274+          this.$ = $$[$0 - 2] + $$[$0 - 1] + $$[$0];
 275 
 276-        break;
 277+          break;
 278       }
 279     },
 280-    table: [{2:13,3:1,4:2,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{1:[3]},{5:[1,19],11:$Vc,12:$Vd,13:$Ve,16:$Vf,17:$Vg,18:$Vh,19:$Vi,20:$Vj,21:$Vk,22:$Vl},o($Vm,[2,2],{33:[1,30]}),o($Vm,[2,3]),o($Vm,[2,4]),o($Vm,[2,5],{35:[1,31]}),o($Vm,[2,6]),{2:13,4:32,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:33,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:34,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{14:[1,35]},o($Vm,[2,25]),o($Vm,[2,26],{2:36,32:[1,37],36:$Vb}),o($Vn,[2,36],{36:$Vo}),o($Vp,[2,38],{33:[1,39]}),o($Vm,[2,28],{27:[1,40]}),o($Vm,[2,30],{27:[1,41]}),{32:[1,42]},{1:[2,1]},{2:13,4:43,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:44,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:45,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:48,6:3,7:$V0,8:$V1,9:6,10:$V2,12:[1,46],13:$V3,14:$V4,17:[1,47],19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:50,6:3,7:$V0,8:$V1,9:6,10:$V2,12:[1,49],13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:51,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:52,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:53,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:54,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:55,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{32:[1,56]},o($Vp,[2,40]),{11:$Vc,12:$Vd,13:$Ve,15:[1,57],16:$Vf,17:$Vg,18:$Vh,19:$Vi,20:$Vj,21:$Vk,22:$Vl},o($Vq,[2,21],{11:$Vc,20:$Vj,21:$Vk,22:$Vl}),o($Vq,[2,22],{11:$Vc,20:$Vj,21:$Vk,22:$Vl}),{2:13,4:60,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,15:[1,58],19:$V5,23:$V6,24:59,25:12,26:$V7,28:$V8,29:[1,61],32:$V9,34:$Va,36:$Vb},o($Vm,[2,27]),{36:$Vo},{32:[1,62]},{34:[1,63]},{26:[1,64]},{28:[1,65]},{37:[1,66]},o($Vm,[2,7]),o([5,12,15,30,31],[2,8],{11:$Vc,13:$Ve,16:$Vf,17:$Vg,18:$Vh,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o($Vq,[2,9],{11:$Vc,20:$Vj,21:$Vk,22:$Vl}),{2:13,4:67,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:68,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},o($Vr,[2,16],{11:$Vc,13:$Ve,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),{2:13,4:69,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},o($Vr,[2,15],{11:$Vc,13:$Ve,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o([5,12,15,18,30,31],[2,14],{11:$Vc,13:$Ve,16:$Vf,17:$Vg,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o($Vq,[2,17],{11:$Vc,20:$Vj,21:$Vk,22:$Vl}),o($Vs,[2,18],{11:$Vc,22:$Vl}),o($Vs,[2,19],{11:$Vc,22:$Vl}),o([5,12,13,15,16,17,18,19,20,21,22,30,31],[2,20],{11:$Vc}),o($Vn,[2,37]),o($Vm,[2,10]),o($Vm,[2,23]),{15:[1,70],30:[1,71],31:[1,72]},o($Vt,[2,32],{11:$Vc,12:$Vd,13:$Ve,16:$Vf,17:$Vg,18:$Vh,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o($Vt,[2,33]),{37:[1,73]},o($Vp,[2,39]),o($Vm,[2,29]),o($Vm,[2,31]),o($Vu,[2,41]),o($Vr,[2,11],{11:$Vc,13:$Ve,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o($Vr,[2,13],{11:$Vc,13:$Ve,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o($Vr,[2,12],{11:$Vc,13:$Ve,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o($Vm,[2,24]),{2:13,4:74,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},{2:13,4:75,6:3,7:$V0,8:$V1,9:6,10:$V2,13:$V3,14:$V4,19:$V5,23:$V6,25:12,26:$V7,28:$V8,32:$V9,34:$Va,36:$Vb},o($Vu,[2,42]),o($Vt,[2,34],{11:$Vc,12:$Vd,13:$Ve,16:$Vf,17:$Vg,18:$Vh,19:$Vi,20:$Vj,21:$Vk,22:$Vl}),o($Vt,[2,35],{11:$Vc,12:$Vd,13:$Ve,16:$Vf,17:$Vg,18:$Vh,19:$Vi,20:$Vj,21:$Vk,22:$Vl})],
 281-    defaultActions: {19:[2,1]},
 282+    table: [{
 283+      2: 13,
 284+      3: 1,
 285+      4: 2,
 286+      6: 3,
 287+      7: $V0,
 288+      8: $V1,
 289+      9: 6,
 290+      10: $V2,
 291+      13: $V3,
 292+      14: $V4,
 293+      19: $V5,
 294+      23: $V6,
 295+      25: 12,
 296+      26: $V7,
 297+      28: $V8,
 298+      32: $V9,
 299+      34: $Va,
 300+      36: $Vb
 301+    }, {1: [3]}, {
 302+      5: [1, 19],
 303+      11: $Vc,
 304+      12: $Vd,
 305+      13: $Ve,
 306+      16: $Vf,
 307+      17: $Vg,
 308+      18: $Vh,
 309+      19: $Vi,
 310+      20: $Vj,
 311+      21: $Vk,
 312+      22: $Vl
 313+    }, o($Vm, [2, 2], {33: [1, 30]}), o($Vm, [2, 3]), o($Vm, [2, 4]), o($Vm, [2, 5], {35: [1, 31]}), o($Vm, [2, 6]), {
 314+      2: 13,
 315+      4: 32,
 316+      6: 3,
 317+      7: $V0,
 318+      8: $V1,
 319+      9: 6,
 320+      10: $V2,
 321+      13: $V3,
 322+      14: $V4,
 323+      19: $V5,
 324+      23: $V6,
 325+      25: 12,
 326+      26: $V7,
 327+      28: $V8,
 328+      32: $V9,
 329+      34: $Va,
 330+      36: $Vb
 331+    }, {
 332+      2: 13,
 333+      4: 33,
 334+      6: 3,
 335+      7: $V0,
 336+      8: $V1,
 337+      9: 6,
 338+      10: $V2,
 339+      13: $V3,
 340+      14: $V4,
 341+      19: $V5,
 342+      23: $V6,
 343+      25: 12,
 344+      26: $V7,
 345+      28: $V8,
 346+      32: $V9,
 347+      34: $Va,
 348+      36: $Vb
 349+    }, {
 350+      2: 13,
 351+      4: 34,
 352+      6: 3,
 353+      7: $V0,
 354+      8: $V1,
 355+      9: 6,
 356+      10: $V2,
 357+      13: $V3,
 358+      14: $V4,
 359+      19: $V5,
 360+      23: $V6,
 361+      25: 12,
 362+      26: $V7,
 363+      28: $V8,
 364+      32: $V9,
 365+      34: $Va,
 366+      36: $Vb
 367+    }, {14: [1, 35]}, o($Vm, [2, 25]), o($Vm, [2, 26], {
 368+      2: 36,
 369+      32: [1, 37],
 370+      36: $Vb
 371+    }), o($Vn, [2, 36], {36: $Vo}), o($Vp, [2, 38], {33: [1, 39]}), o($Vm, [2, 28], {27: [1, 40]}), o($Vm, [2, 30], {27: [1, 41]}), {32: [1, 42]}, {1: [2, 1]}, {
 372+      2: 13,
 373+      4: 43,
 374+      6: 3,
 375+      7: $V0,
 376+      8: $V1,
 377+      9: 6,
 378+      10: $V2,
 379+      13: $V3,
 380+      14: $V4,
 381+      19: $V5,
 382+      23: $V6,
 383+      25: 12,
 384+      26: $V7,
 385+      28: $V8,
 386+      32: $V9,
 387+      34: $Va,
 388+      36: $Vb
 389+    }, {
 390+      2: 13,
 391+      4: 44,
 392+      6: 3,
 393+      7: $V0,
 394+      8: $V1,
 395+      9: 6,
 396+      10: $V2,
 397+      13: $V3,
 398+      14: $V4,
 399+      19: $V5,
 400+      23: $V6,
 401+      25: 12,
 402+      26: $V7,
 403+      28: $V8,
 404+      32: $V9,
 405+      34: $Va,
 406+      36: $Vb
 407+    }, {
 408+      2: 13,
 409+      4: 45,
 410+      6: 3,
 411+      7: $V0,
 412+      8: $V1,
 413+      9: 6,
 414+      10: $V2,
 415+      13: $V3,
 416+      14: $V4,
 417+      19: $V5,
 418+      23: $V6,
 419+      25: 12,
 420+      26: $V7,
 421+      28: $V8,
 422+      32: $V9,
 423+      34: $Va,
 424+      36: $Vb
 425+    }, {
 426+      2: 13,
 427+      4: 48,
 428+      6: 3,
 429+      7: $V0,
 430+      8: $V1,
 431+      9: 6,
 432+      10: $V2,
 433+      12: [1, 46],
 434+      13: $V3,
 435+      14: $V4,
 436+      17: [1, 47],
 437+      19: $V5,
 438+      23: $V6,
 439+      25: 12,
 440+      26: $V7,
 441+      28: $V8,
 442+      32: $V9,
 443+      34: $Va,
 444+      36: $Vb
 445+    }, {
 446+      2: 13,
 447+      4: 50,
 448+      6: 3,
 449+      7: $V0,
 450+      8: $V1,
 451+      9: 6,
 452+      10: $V2,
 453+      12: [1, 49],
 454+      13: $V3,
 455+      14: $V4,
 456+      19: $V5,
 457+      23: $V6,
 458+      25: 12,
 459+      26: $V7,
 460+      28: $V8,
 461+      32: $V9,
 462+      34: $Va,
 463+      36: $Vb
 464+    }, {
 465+      2: 13,
 466+      4: 51,
 467+      6: 3,
 468+      7: $V0,
 469+      8: $V1,
 470+      9: 6,
 471+      10: $V2,
 472+      13: $V3,
 473+      14: $V4,
 474+      19: $V5,
 475+      23: $V6,
 476+      25: 12,
 477+      26: $V7,
 478+      28: $V8,
 479+      32: $V9,
 480+      34: $Va,
 481+      36: $Vb
 482+    }, {
 483+      2: 13,
 484+      4: 52,
 485+      6: 3,
 486+      7: $V0,
 487+      8: $V1,
 488+      9: 6,
 489+      10: $V2,
 490+      13: $V3,
 491+      14: $V4,
 492+      19: $V5,
 493+      23: $V6,
 494+      25: 12,
 495+      26: $V7,
 496+      28: $V8,
 497+      32: $V9,
 498+      34: $Va,
 499+      36: $Vb
 500+    }, {
 501+      2: 13,
 502+      4: 53,
 503+      6: 3,
 504+      7: $V0,
 505+      8: $V1,
 506+      9: 6,
 507+      10: $V2,
 508+      13: $V3,
 509+      14: $V4,
 510+      19: $V5,
 511+      23: $V6,
 512+      25: 12,
 513+      26: $V7,
 514+      28: $V8,
 515+      32: $V9,
 516+      34: $Va,
 517+      36: $Vb
 518+    }, {
 519+      2: 13,
 520+      4: 54,
 521+      6: 3,
 522+      7: $V0,
 523+      8: $V1,
 524+      9: 6,
 525+      10: $V2,
 526+      13: $V3,
 527+      14: $V4,
 528+      19: $V5,
 529+      23: $V6,
 530+      25: 12,
 531+      26: $V7,
 532+      28: $V8,
 533+      32: $V9,
 534+      34: $Va,
 535+      36: $Vb
 536+    }, {
 537+      2: 13,
 538+      4: 55,
 539+      6: 3,
 540+      7: $V0,
 541+      8: $V1,
 542+      9: 6,
 543+      10: $V2,
 544+      13: $V3,
 545+      14: $V4,
 546+      19: $V5,
 547+      23: $V6,
 548+      25: 12,
 549+      26: $V7,
 550+      28: $V8,
 551+      32: $V9,
 552+      34: $Va,
 553+      36: $Vb
 554+    }, {32: [1, 56]}, o($Vp, [2, 40]), {
 555+      11: $Vc,
 556+      12: $Vd,
 557+      13: $Ve,
 558+      15: [1, 57],
 559+      16: $Vf,
 560+      17: $Vg,
 561+      18: $Vh,
 562+      19: $Vi,
 563+      20: $Vj,
 564+      21: $Vk,
 565+      22: $Vl
 566+    }, o($Vq, [2, 21], {11: $Vc, 20: $Vj, 21: $Vk, 22: $Vl}), o($Vq, [2, 22], {
 567+      11: $Vc,
 568+      20: $Vj,
 569+      21: $Vk,
 570+      22: $Vl
 571+    }), {
 572+      2: 13,
 573+      4: 60,
 574+      6: 3,
 575+      7: $V0,
 576+      8: $V1,
 577+      9: 6,
 578+      10: $V2,
 579+      13: $V3,
 580+      14: $V4,
 581+      15: [1, 58],
 582+      19: $V5,
 583+      23: $V6,
 584+      24: 59,
 585+      25: 12,
 586+      26: $V7,
 587+      28: $V8,
 588+      29: [1, 61],
 589+      32: $V9,
 590+      34: $Va,
 591+      36: $Vb
 592+    }, o($Vm, [2, 27]), {36: $Vo}, {32: [1, 62]}, {34: [1, 63]}, {26: [1, 64]}, {28: [1, 65]}, {37: [1, 66]}, o($Vm, [2, 7]), o([5, 12, 15, 30, 31], [2, 8], {
 593+      11: $Vc,
 594+      13: $Ve,
 595+      16: $Vf,
 596+      17: $Vg,
 597+      18: $Vh,
 598+      19: $Vi,
 599+      20: $Vj,
 600+      21: $Vk,
 601+      22: $Vl
 602+    }), o($Vq, [2, 9], {11: $Vc, 20: $Vj, 21: $Vk, 22: $Vl}), {
 603+      2: 13,
 604+      4: 67,
 605+      6: 3,
 606+      7: $V0,
 607+      8: $V1,
 608+      9: 6,
 609+      10: $V2,
 610+      13: $V3,
 611+      14: $V4,
 612+      19: $V5,
 613+      23: $V6,
 614+      25: 12,
 615+      26: $V7,
 616+      28: $V8,
 617+      32: $V9,
 618+      34: $Va,
 619+      36: $Vb
 620+    }, {
 621+      2: 13,
 622+      4: 68,
 623+      6: 3,
 624+      7: $V0,
 625+      8: $V1,
 626+      9: 6,
 627+      10: $V2,
 628+      13: $V3,
 629+      14: $V4,
 630+      19: $V5,
 631+      23: $V6,
 632+      25: 12,
 633+      26: $V7,
 634+      28: $V8,
 635+      32: $V9,
 636+      34: $Va,
 637+      36: $Vb
 638+    }, o($Vr, [2, 16], {11: $Vc, 13: $Ve, 19: $Vi, 20: $Vj, 21: $Vk, 22: $Vl}), {
 639+      2: 13,
 640+      4: 69,
 641+      6: 3,
 642+      7: $V0,
 643+      8: $V1,
 644+      9: 6,
 645+      10: $V2,
 646+      13: $V3,
 647+      14: $V4,
 648+      19: $V5,
 649+      23: $V6,
 650+      25: 12,
 651+      26: $V7,
 652+      28: $V8,
 653+      32: $V9,
 654+      34: $Va,
 655+      36: $Vb
 656+    }, o($Vr, [2, 15], {
 657+      11: $Vc,
 658+      13: $Ve,
 659+      19: $Vi,
 660+      20: $Vj,
 661+      21: $Vk,
 662+      22: $Vl
 663+    }), o([5, 12, 15, 18, 30, 31], [2, 14], {
 664+      11: $Vc,
 665+      13: $Ve,
 666+      16: $Vf,
 667+      17: $Vg,
 668+      19: $Vi,
 669+      20: $Vj,
 670+      21: $Vk,
 671+      22: $Vl
 672+    }), o($Vq, [2, 17], {11: $Vc, 20: $Vj, 21: $Vk, 22: $Vl}), o($Vs, [2, 18], {
 673+      11: $Vc,
 674+      22: $Vl
 675+    }), o($Vs, [2, 19], {
 676+      11: $Vc,
 677+      22: $Vl
 678+    }), o([5, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22, 30, 31], [2, 20], {11: $Vc}), o($Vn, [2, 37]), o($Vm, [2, 10]), o($Vm, [2, 23]), {
 679+      15: [1, 70],
 680+      30: [1, 71],
 681+      31: [1, 72]
 682+    }, o($Vt, [2, 32], {
 683+      11: $Vc,
 684+      12: $Vd,
 685+      13: $Ve,
 686+      16: $Vf,
 687+      17: $Vg,
 688+      18: $Vh,
 689+      19: $Vi,
 690+      20: $Vj,
 691+      21: $Vk,
 692+      22: $Vl
 693+    }), o($Vt, [2, 33]), {37: [1, 73]}, o($Vp, [2, 39]), o($Vm, [2, 29]), o($Vm, [2, 31]), o($Vu, [2, 41]), o($Vr, [2, 11], {
 694+      11: $Vc,
 695+      13: $Ve,
 696+      19: $Vi,
 697+      20: $Vj,
 698+      21: $Vk,
 699+      22: $Vl
 700+    }), o($Vr, [2, 13], {11: $Vc, 13: $Ve, 19: $Vi, 20: $Vj, 21: $Vk, 22: $Vl}), o($Vr, [2, 12], {
 701+      11: $Vc,
 702+      13: $Ve,
 703+      19: $Vi,
 704+      20: $Vj,
 705+      21: $Vk,
 706+      22: $Vl
 707+    }), o($Vm, [2, 24]), {
 708+      2: 13,
 709+      4: 74,
 710+      6: 3,
 711+      7: $V0,
 712+      8: $V1,
 713+      9: 6,
 714+      10: $V2,
 715+      13: $V3,
 716+      14: $V4,
 717+      19: $V5,
 718+      23: $V6,
 719+      25: 12,
 720+      26: $V7,
 721+      28: $V8,
 722+      32: $V9,
 723+      34: $Va,
 724+      36: $Vb
 725+    }, {
 726+      2: 13,
 727+      4: 75,
 728+      6: 3,
 729+      7: $V0,
 730+      8: $V1,
 731+      9: 6,
 732+      10: $V2,
 733+      13: $V3,
 734+      14: $V4,
 735+      19: $V5,
 736+      23: $V6,
 737+      25: 12,
 738+      26: $V7,
 739+      28: $V8,
 740+      32: $V9,
 741+      34: $Va,
 742+      36: $Vb
 743+    }, o($Vu, [2, 42]), o($Vt, [2, 34], {
 744+      11: $Vc,
 745+      12: $Vd,
 746+      13: $Ve,
 747+      16: $Vf,
 748+      17: $Vg,
 749+      18: $Vh,
 750+      19: $Vi,
 751+      20: $Vj,
 752+      21: $Vk,
 753+      22: $Vl
 754+    }), o($Vt, [2, 35], {11: $Vc, 12: $Vd, 13: $Ve, 16: $Vf, 17: $Vg, 18: $Vh, 19: $Vi, 20: $Vj, 21: $Vk, 22: $Vl})],
 755+    defaultActions: {19: [2, 1]},
 756     parseError: function parseError(str, hash) {
 757       if (hash.recoverable) {
 758         this.trace(str);
 759@@ -319,7 +867,7 @@ var Parser = (function(){
 760       //this.reductionCount = this.shiftCount = 0;
 761 
 762       var lexer = Object.create(this.lexer);
 763-      var sharedState = { yy: {} };
 764+      var sharedState = {yy: {}};
 765       // copy state
 766       for (var k in this.yy) {
 767         if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
 768@@ -344,7 +892,7 @@ var Parser = (function(){
 769         this.parseError = Object.getPrototypeOf(this).parseError;
 770       }
 771 
 772-      function popStack (n) {
 773+      function popStack(n) {
 774         stack.length = stack.length - 2 * n;
 775         vstack.length = vstack.length - n;
 776         lstack.length = lstack.length - n;
 777@@ -390,7 +938,7 @@ var Parser = (function(){
 778               var depth = 0;
 779 
 780               // try to recover from error
 781-              for(;;) {
 782+              for (; ;) {
 783                 // check for error recovery rule in this state
 784                 if ((TERROR.toString()) in table[state]) {
 785                   return depth;
 786@@ -412,15 +960,15 @@ var Parser = (function(){
 787               expected = [];
 788               for (p in table[state]) {
 789                 if (this.terminals_[p] && p > TERROR) {
 790-                  expected.push("'"+this.terminals_[p]+"'");
 791+                  expected.push("'" + this.terminals_[p] + "'");
 792                 }
 793               }
 794               if (lexer.showPosition) {
 795-                errStr = 'Parse error on line '+(yylineno+1)+":\n"+lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
 796+                errStr = 'Parse error on line ' + (yylineno + 1) + ":\n" + lexer.showPosition() + "\nExpecting " + expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol) + "'";
 797               } else {
 798-                errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
 799+                errStr = 'Parse error on line ' + (yylineno + 1) + ": Unexpected " +
 800                   (symbol == EOF ? "end of input" :
 801-                    ("'"+(this.terminals_[symbol] || symbol)+"'"));
 802+                    ("'" + (this.terminals_[symbol] || symbol) + "'"));
 803               }
 804               this.parseError(errStr, {
 805                 text: lexer.match,
 806@@ -456,14 +1004,14 @@ var Parser = (function(){
 807 
 808             preErrorSymbol = (symbol == TERROR ? null : symbol); // save the lookahead token
 809             symbol = TERROR;         // insert generic error symbol as new lookahead
 810-            state = stack[stack.length-1];
 811+            state = stack[stack.length - 1];
 812             action = table[state] && table[state][TERROR];
 813             recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
 814           }
 815 
 816         // this shouldn't happen, unless resolve defaults are off
 817         if (action[0] instanceof Array && action.length > 1) {
 818-          throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
 819+          throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
 820         }
 821 
 822         switch (action[0]) {
 823@@ -497,16 +1045,16 @@ var Parser = (function(){
 824             len = this.productions_[action[1]][1];
 825 
 826             // perform semantic action
 827-            yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
 828+            yyval.$ = vstack[vstack.length - len]; // default to $$ = $1
 829             // default location, uses first token for firsts, last for lasts
 830             yyval._$ = {
 831-              first_line: lstack[lstack.length-(len||1)].first_line,
 832-              last_line: lstack[lstack.length-1].last_line,
 833-              first_column: lstack[lstack.length-(len||1)].first_column,
 834-              last_column: lstack[lstack.length-1].last_column
 835+              first_line: lstack[lstack.length - (len || 1)].first_line,
 836+              last_line: lstack[lstack.length - 1].last_line,
 837+              first_column: lstack[lstack.length - (len || 1)].first_column,
 838+              last_column: lstack[lstack.length - 1].last_column
 839             };
 840             if (ranges) {
 841-              yyval._$.range = [lstack[lstack.length-(len||1)].range[0], lstack[lstack.length-1].range[1]];
 842+              yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
 843             }
 844             r = this.performAction.apply(yyval, [yytext, yyleng, yylineno, sharedState.yy, action[1], vstack, lstack].concat(args));
 845 
 846@@ -516,16 +1064,16 @@ var Parser = (function(){
 847 
 848             // pop off stack
 849             if (len) {
 850-              stack = stack.slice(0,-1*len*2);
 851-              vstack = vstack.slice(0, -1*len);
 852-              lstack = lstack.slice(0, -1*len);
 853+              stack = stack.slice(0, -1 * len * 2);
 854+              vstack = vstack.slice(0, -1 * len);
 855+              lstack = lstack.slice(0, -1 * len);
 856             }
 857 
 858             stack.push(this.productions_[action[1]][0]);    // push nonterminal (reduce)
 859             vstack.push(yyval.$);
 860             lstack.push(yyval._$);
 861             // goto new state = table[STATE][NONTERMINAL]
 862-            newState = table[stack[stack.length-2]][stack[stack.length-1]];
 863+            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
 864             stack.push(newState);
 865             break;
 866 
 867@@ -537,15 +1085,16 @@ var Parser = (function(){
 868       }
 869 
 870       return true;
 871-    }};
 872+    }
 873+  };
 874 
 875   /* generated by jison-lex 0.3.4 */
 876-  var lexer = (function(){
 877+  var lexer = (function () {
 878     var lexer = ({
 879 
 880-      EOF:1,
 881+      EOF: 1,
 882 
 883-      parseError:function parseError(str, hash) {
 884+      parseError: function parseError(str, hash) {
 885         if (this.yy.parser) {
 886           this.yy.parser.parseError(str, hash);
 887         } else {
 888@@ -554,7 +1103,7 @@ var Parser = (function(){
 889       },
 890 
 891 // resets the lexer, sets new input
 892-      setInput:function (input, yy) {
 893+      setInput: function (input, yy) {
 894         this.yy = yy || this.yy || {};
 895         this._input = input;
 896         this._more = this._backtrack = this.done = false;
 897@@ -568,14 +1117,14 @@ var Parser = (function(){
 898           last_column: 0
 899         };
 900         if (this.options.ranges) {
 901-          this.yylloc.range = [0,0];
 902+          this.yylloc.range = [0, 0];
 903         }
 904         this.offset = 0;
 905         return this;
 906       },
 907 
 908 // consumes and returns one char from the input
 909-      input:function () {
 910+      input: function () {
 911         var ch = this._input[0];
 912         this.yytext += ch;
 913         this.yyleng++;
 914@@ -598,7 +1147,7 @@ var Parser = (function(){
 915       },
 916 
 917 // unshifts one char (or a string) into the input
 918-      unput:function (ch) {
 919+      unput: function (ch) {
 920         var len = ch.length;
 921         var lines = ch.split(/(?:\r\n?|\n)/g);
 922 
 923@@ -633,13 +1182,13 @@ var Parser = (function(){
 924       },
 925 
 926 // When called from action, caches matched text and appends it on next action
 927-      more:function () {
 928+      more: function () {
 929         this._more = true;
 930         return this;
 931       },
 932 
 933 // 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.
 934-      reject:function () {
 935+      reject: function () {
 936         if (this.options.backtrack_lexer) {
 937           this._backtrack = true;
 938         } else {
 939@@ -654,34 +1203,34 @@ var Parser = (function(){
 940       },
 941 
 942 // retain first n characters of the match
 943-      less:function (n) {
 944+      less: function (n) {
 945         this.unput(this.match.slice(n));
 946       },
 947 
 948 // displays already matched input, i.e. for error messages
 949-      pastInput:function () {
 950+      pastInput: function () {
 951         var past = this.matched.substr(0, this.matched.length - this.match.length);
 952-        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
 953+        return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
 954       },
 955 
 956 // displays upcoming input, i.e. for error messages
 957-      upcomingInput:function () {
 958+      upcomingInput: function () {
 959         var next = this.match;
 960         if (next.length < 20) {
 961-          next += this._input.substr(0, 20-next.length);
 962+          next += this._input.substr(0, 20 - next.length);
 963         }
 964-        return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
 965+        return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
 966       },
 967 
 968 // displays the character position where the lexing error occurred, i.e. for error messages
 969-      showPosition:function () {
 970+      showPosition: function () {
 971         var pre = this.pastInput();
 972         var c = new Array(pre.length + 1).join("-");
 973         return pre + this.upcomingInput() + "\n" + c + "^";
 974       },
 975 
 976 // test the lexed token: return FALSE when not a match, otherwise return token
 977-      test_match:function (match, indexed_rule) {
 978+      test_match: function (match, indexed_rule) {
 979         var token,
 980           lines,
 981           backup;
 982@@ -753,7 +1302,7 @@ var Parser = (function(){
 983       },
 984 
 985 // return next match in input
 986-      next:function () {
 987+      next: function () {
 988         if (this.done) {
 989           return this.EOF;
 990         }
 991@@ -811,7 +1360,7 @@ var Parser = (function(){
 992       },
 993 
 994 // return next match that has a token
 995-      lex:function lex() {
 996+      lex: function lex() {
 997         var r = this.next();
 998         if (r) {
 999           return r;
1000@@ -821,12 +1370,12 @@ var Parser = (function(){
1001       },
1002 
1003 // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
1004-      begin:function begin(condition) {
1005+      begin: function begin(condition) {
1006         this.conditionStack.push(condition);
1007       },
1008 
1009 // pop the previously active lexer condition state off the condition stack
1010-      popState:function popState() {
1011+      popState: function popState() {
1012         var n = this.conditionStack.length - 1;
1013         if (n > 0) {
1014           return this.conditionStack.pop();
1015@@ -836,7 +1385,7 @@ var Parser = (function(){
1016       },
1017 
1018 // produce the lexer rule set which is active for the currently active lexer condition state
1019-      _currentRules:function _currentRules() {
1020+      _currentRules: function _currentRules() {
1021         if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
1022           return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
1023         } else {
1024@@ -845,7 +1394,7 @@ var Parser = (function(){
1025       },
1026 
1027 // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
1028-      topState:function topState(n) {
1029+      topState: function topState(n) {
1030         n = this.conditionStack.length - 1 - Math.abs(n || 0);
1031         if (n >= 0) {
1032           return this.conditionStack[n];
1033@@ -855,29 +1404,34 @@ var Parser = (function(){
1034       },
1035 
1036 // alias for begin(condition)
1037-      pushState:function pushState(condition) {
1038+      pushState: function pushState(condition) {
1039         this.begin(condition);
1040       },
1041 
1042 // return the number of states currently on the stack
1043-      stateStackSize:function stateStackSize() {
1044+      stateStackSize: function stateStackSize() {
1045         return this.conditionStack.length;
1046       },
1047       options: {},
1048-      performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
1049-        var YYSTATE=YY_START;
1050-        switch($avoiding_name_collisions) {
1051+      performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) {
1052+        var YYSTATE = YY_START;
1053+        switch ($avoiding_name_collisions) {
1054           case 0:/* skip whitespace */
1055             break;
1056-          case 1:return 10;
1057+          case 1:
1058+            return 10;
1059             break;
1060-          case 2:return 10;
1061+          case 2:
1062+            return 10;
1063             break;
1064-          case 3:return 23;
1065+          case 3:
1066+            return 23;
1067             break;
1068-          case 4:return 7;
1069+          case 4:
1070+            return 7;
1071             break;
1072-          case 5:return 8;
1073+          case 5:
1074+            return 8;
1075             break;
1076           case 6:
1077             //if (yy.obj.type == 'cell') return 26;
1078@@ -891,68 +1445,96 @@ var Parser = (function(){
1079             return 28;
1080 
1081             break;
1082-          case 8:return 23;
1083+          case 8:
1084+            return 23;
1085             break;
1086-          case 9:return 32;
1087+          case 9:
1088+            return 32;
1089             break;
1090-          case 10:return 32;
1091+          case 10:
1092+            return 32;
1093             break;
1094-          case 11:return 34;
1095+          case 11:
1096+            return 34;
1097             break;
1098-          case 12:return 29;
1099+          case 12:
1100+            return 29;
1101             break;
1102           case 13:/* skip whitespace */
1103             break;
1104-          case 14:return 11;
1105+          case 14:
1106+            return 11;
1107             break;
1108-          case 15:return ' ';
1109+          case 15:
1110+            return ' ';
1111             break;
1112-          case 16:return 33;
1113+          case 16:
1114+            return 33;
1115             break;
1116-          case 17:return 27;
1117+          case 17:
1118+            return 27;
1119             break;
1120-          case 18:return 30;
1121+          case 18:
1122+            return 30;
1123             break;
1124-          case 19:return 31;
1125+          case 19:
1126+            return 31;
1127             break;
1128-          case 20:return 20;
1129+          case 20:
1130+            return 20;
1131             break;
1132-          case 21:return 21;
1133+          case 21:
1134+            return 21;
1135             break;
1136-          case 22:return 19;
1137+          case 22:
1138+            return 19;
1139             break;
1140-          case 23:return 13;
1141+          case 23:
1142+            return 13;
1143             break;
1144-          case 24:return 22;
1145+          case 24:
1146+            return 22;
1147             break;
1148-          case 25:return 14;
1149+          case 25:
1150+            return 14;
1151             break;
1152-          case 26:return 15;
1153+          case 26:
1154+            return 15;
1155             break;
1156-          case 27:return 17;
1157+          case 27:
1158+            return 17;
1159             break;
1160-          case 28:return 16;
1161+          case 28:
1162+            return 16;
1163             break;
1164-          case 29:return 18;
1165+          case 29:
1166+            return 18;
1167             break;
1168-          case 30:return '"';
1169+          case 30:
1170+            return '"';
1171             break;
1172-          case 31:return "'";
1173+          case 31:
1174+            return "'";
1175             break;
1176-          case 32:return "!";
1177+          case 32:
1178+            return "!";
1179             break;
1180-          case 33:return 12;
1181+          case 33:
1182+            return 12;
1183             break;
1184-          case 34:return 35;
1185+          case 34:
1186+            return 35;
1187             break;
1188-          case 35:return 36;
1189+          case 35:
1190+            return 36;
1191             break;
1192-          case 36:return 5;
1193+          case 36:
1194+            return 5;
1195             break;
1196         }
1197       },
1198       // NOTE: Alterations made in some regular-expressions to allow for formulas containing dot-notation. Eg: F.INV
1199-      rules: [ /^(?:\s+)/,
1200+      rules: [/^(?:\s+)/,
1201         /^(?:"(\\["]|[^"])*")/,
1202         /^(?:'(\\[']|[^'])*')/,
1203         /^(?:[A-Za-z.]{1,}[A-Za-z_0-9]+(?=[(]))/, // Changed from /^(?:[A-Za-z]{1,}[A-Za-z_0-9]+(?=[(]))/
1204@@ -988,16 +1570,23 @@ var Parser = (function(){
1205         /^(?:=)/,
1206         /^(?:%)/,
1207         /^(?:[#])/,
1208-        /^(?:$)/ ],
1209-      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],"inclusive":true}}
1210+        /^(?:$)/],
1211+      conditions: {
1212+        "INITIAL": {
1213+          "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],
1214+          "inclusive": true
1215+        }
1216+      }
1217     });
1218     return lexer;
1219   })();
1220   parser.lexer = lexer;
1221-  function Parser () {
1222+  function Parser() {
1223     this.yy = {};
1224   }
1225-  Parser.prototype = parser;parser.Parser = Parser;
1226+
1227+  Parser.prototype = parser;
1228+  parser.Parser = Parser;
1229   return new Parser;
1230 })();
1231