spreadsheet
typeScript/javascript spreadsheet parser, with formulas.
git clone https://git.vogt.world/spreadsheet.git
Log | Files | README.md
← Commit log
commit
message
[Parser] using Symbol enums in ACTION_TABLE
author
Ben Vogt <[email protected]>
date
2017-09-18 01:32:20
stats
1 file(s) changed, 1469 insertions(+), 1176 deletions(-)
files
src/Parser/Parser.ts
   1diff --git a/src/Parser/Parser.ts b/src/Parser/Parser.ts
   2index ffa8487..b209de7 100644
   3--- a/src/Parser/Parser.ts
   4+++ b/src/Parser/Parser.ts
   5@@ -220,78 +220,134 @@ productions[ReduceActions.REDUCE_LAST_THREE_A] = new ReductionPair(2, 3);
   6 productions[ReduceActions.REDUCE_LAST_THREE_B] = new ReductionPair(2, 4);
   7 const PRODUCTIONS = productions;
   8 
   9-const SYMBOL_NAME_TO_INDEX = {
  10-  "$accept": 0,
  11-  "$end": 1,
  12-  "error": 2,
  13-  "expressions": 3,
  14-  "expression": 4,
  15-  "EOF": 5,
  16-  "variableSequence": 6,
  17-  "TIME_AMPM": 7,
  18-  "TIME_24": 8,
  19-  "number": 9,
  20-  "STRING": 10,
  21-  "&": 11,
  22-  "=": 12,
  23-  "+": 13,
  24-  "(": 14,
  25-  ")": 15,
  26-  "<": 16,
  27-  ">": 17,
  28-  "NOT": 18,
  29-  "-": 19,
  30-  "*": 20,
  31-  "/": 21,
  32-  "^": 22,
  33-  "FUNCTION": 23,
  34-  "expseq": 24,
  35-  "cell": 25,
  36-  "FIXEDCELL": 26,
  37-  ":": 27,
  38-  "CELL": 28,
  39-  "ARRAY": 29,
  40-  ";": 30,
  41-  ",": 31,
  42-  "VARIABLE": 32,
  43-  "DECIMAL": 33,
  44-  "NUMBER": 34,
  45-  "%": 35,
  46-  "#": 36,
  47-  "!": 37
  48-};
  49-const SYMBOL_INDEX_TO_NAME = {
  50-  5: "EOF",
  51-  7: "TIME_AMPM",
  52-  8: "TIME_24",
  53-  10: "STRING",
  54-  11: "&",
  55-  12: "=",
  56-  13: "+",
  57-  14: "(",
  58-  15: ")",
  59-  16: "<",
  60-  17: ">",
  61-  18: "NOT",
  62-  19: "-",
  63-  20: "*",
  64-  21: "/",
  65-  22: "^",
  66-  23: "FUNCTION",
  67-  26: "FIXEDCELL",
  68-  27: ":",
  69-  28: "CELL",
  70-  29: "ARRAY",
  71-  30: ";",
  72-  31: ",",
  73-  32: "VARIABLE",
  74-  33: "DECIMAL",
  75-  34: "NUMBER",
  76-  35: "%",
  77-  36: "#",
  78-  37: "!"
  79-};
  80+enum Symbol {
  81+  ACCEPT = 0,
  82+  END = 1,
  83+  ERROR = 2,
  84+  EXPRESSIONS = 3,
  85+  EXPRESSION = 4,
  86+  EOF = 5,
  87+  VARIABLE_SEQUENCE = 6,
  88+  TIME_AMPM = 7,
  89+  TIME_24 = 8,
  90+  NUMBER = 9,
  91+  STRING = 10,
  92+  AMPERSAND = 11,
  93+  EQUALS = 12,
  94+  PLUS = 13,
  95+  LEFT_PAREN = 14,
  96+  RIGHT_PAREN = 15,
  97+  LESS_THAN = 16,
  98+  GREATER_THAN = 17,
  99+  NOT = 18,
 100+  MINUS = 19,
 101+  ASTERISK = 20,
 102+  DIVIDE = 21,
 103+  CARROT = 22,
 104+  FUNCTION = 23,
 105+  EXP_SEQ = 24,
 106+  CELL = 25,
 107+  FIXEDCELL = 26,
 108+  COLON = 27,
 109+  CELL_UPPER = 28,
 110+  ARRAY = 29,
 111+  SEMI_COLON = 30,
 112+  COMMA = 31,
 113+  VARIABLE = 32,
 114+  DECIMAL = 33,
 115+  NUMBER_UPPER = 34,
 116+  PERCENT = 35,
 117+  POUND = 36,
 118+  EXCLAMATION_POINT = 37
 119+}
 120 
 121+const SYMBOL_NAME_TO_INDEX = {
 122+  "$accept": Symbol.ACCEPT,
 123+  "$end": Symbol.END,
 124+  "error": Symbol.ERROR,
 125+  "expressions": Symbol.EXPRESSIONS,
 126+  "expression": Symbol.EXPRESSION,
 127+  "EOF": Symbol.EOF,
 128+  "variableSequence": Symbol.VARIABLE_SEQUENCE,
 129+  "TIME_AMPM": Symbol.TIME_AMPM,
 130+  "TIME_24": Symbol.TIME_24,
 131+  "number": Symbol.NUMBER,
 132+  "STRING": Symbol.STRING,
 133+  "&": Symbol.AMPERSAND,
 134+  "=": Symbol.EQUALS,
 135+  "+": Symbol.PLUS,
 136+  "(": Symbol.LEFT_PAREN,
 137+  ")": Symbol.RIGHT_PAREN,
 138+  "<": Symbol.LESS_THAN,
 139+  ">": Symbol.GREATER_THAN,
 140+  "NOT": Symbol.NOT,
 141+  "-": Symbol.MINUS,
 142+  "*": Symbol.ASTERISK,
 143+  "/": Symbol.DIVIDE,
 144+  "^": Symbol.CARROT,
 145+  "FUNCTION": Symbol.FUNCTION,
 146+  "expseq": Symbol.EXP_SEQ,
 147+  "cell": Symbol.CELL,
 148+  "FIXEDCELL": Symbol.FIXEDCELL,
 149+  ":": Symbol.COLON,
 150+  "CELL": Symbol.CELL_UPPER,
 151+  "ARRAY": Symbol.ARRAY,
 152+  ";": Symbol.SEMI_COLON,
 153+  ",": Symbol.COMMA,
 154+  "VARIABLE": Symbol.VARIABLE,
 155+  "DECIMAL": Symbol.DECIMAL,
 156+  "NUMBER": Symbol.NUMBER_UPPER,
 157+  "%": Symbol.PERCENT,
 158+  "#": Symbol.POUND,
 159+  "!": Symbol.EXCLAMATION_POINT
 160+};
 161+let symbolIndexToName = {};
 162+symbolIndexToName[Symbol.EOF] = "EOF";
 163+symbolIndexToName[Symbol.TIME_AMPM] = "TIME_AMPM";
 164+symbolIndexToName[Symbol.TIME_24] = "TIME_24";
 165+symbolIndexToName[Symbol.STRING] = "STRING";
 166+symbolIndexToName[Symbol.AMPERSAND] = "&";
 167+symbolIndexToName[Symbol.EQUALS] = "=";
 168+symbolIndexToName[Symbol.PLUS] = "+";
 169+symbolIndexToName[Symbol.LEFT_PAREN] = "(";
 170+symbolIndexToName[Symbol.RIGHT_PAREN] = ")";
 171+symbolIndexToName[Symbol.LESS_THAN] = "<";
 172+symbolIndexToName[Symbol.GREATER_THAN] = ">";
 173+symbolIndexToName[Symbol.NOT] = "NOTE";
 174+symbolIndexToName[Symbol.MINUS] = "-";
 175+symbolIndexToName[Symbol.ASTERISK] = "*";
 176+symbolIndexToName[Symbol.DIVIDE] = "/";
 177+symbolIndexToName[Symbol.CARROT] = "^";
 178+symbolIndexToName[Symbol.FUNCTION] = "FUNCTION";
 179+symbolIndexToName[Symbol.FIXEDCELL] = "FIXEDCELL";
 180+symbolIndexToName[Symbol.COLON] = ";";
 181+symbolIndexToName[Symbol.COMMA] = ",";
 182+symbolIndexToName[Symbol.VARIABLE] = "VARIABLE";
 183+symbolIndexToName[Symbol.DECIMAL] = "DECIMAL";
 184+symbolIndexToName[Symbol.NUMBER_UPPER] = "NUMBER";
 185+symbolIndexToName[Symbol.PERCENT] = "%";
 186+symbolIndexToName[Symbol.POUND] = "#";
 187+symbolIndexToName[Symbol.EXCLAMATION_POINT] = "!";
 188+const SYMBOL_INDEX_TO_NAME = symbolIndexToName;
 189+
 190+
 191+
 192+class ObjectBuilder {
 193+  public o : Object = {};
 194+
 195+  public static add(k, v) : ObjectBuilder {
 196+    let m = new ObjectBuilder();
 197+    m.o[k.toString()] = v;
 198+    return m;
 199+  }
 200+  public add(k, v) : ObjectBuilder {
 201+    this.o[k.toString()] = v;
 202+    return this;
 203+  }
 204+  public build() : Object {
 205+    return this.o;
 206+  }
 207+}
 208 
 209 /**
 210  * Array of to map rules to to LexActions and other rules. A single index in the object (e.g. `{2: 13}`) indicates the
 211@@ -299,1103 +355,1130 @@ const SYMBOL_INDEX_TO_NAME = {
 212  * and the rule object to follow after the action.
 213  */
 214 let table = [];
 215-table[0] = {
 216-  2: 13,
 217-  3: 1,
 218-  4: 2,
 219-  6: 3,
 220-  7: [SHIFT, 4],
 221-  8: [SHIFT, 5],
 222-  9: 6,
 223-  10: [SHIFT, 7],
 224-  13: [SHIFT, 10],
 225-  14: [SHIFT, 8],
 226-  19: [SHIFT, 9],
 227-  23: [SHIFT, 11],
 228-  25: 12,
 229-  26: [SHIFT, 16],
 230-  28: [SHIFT, 17],
 231-  32: [SHIFT, 14],
 232-  34: [SHIFT, 15],
 233-  36: [SHIFT, 18]
 234-};
 235-table[1] = {
 236-  1: [3]
 237-};
 238-table[2] = {
 239-  5: [SHIFT, 19],
 240-  11: [SHIFT, 20],
 241-  12: [SHIFT, 21],
 242-  13: [SHIFT, 22],
 243-  16: [SHIFT, 23],
 244-  17: [SHIFT, 24],
 245-  18: [SHIFT, 25],
 246-  19: [SHIFT, 26],
 247-  20: [SHIFT, 27],
 248-  21: [SHIFT, 28],
 249-  22: [SHIFT, 29]
 250-};
 251-table[3] = {
 252-  5: [REDUCE, 2],
 253-  11: [REDUCE, 2],
 254-  12: [REDUCE, 2],
 255-  13: [REDUCE, 2],
 256-  15: [REDUCE, 2],
 257-  16: [REDUCE, 2],
 258-  17: [REDUCE, 2],
 259-  18: [REDUCE, 2],
 260-  19: [REDUCE, 2],
 261-  20: [REDUCE, 2],
 262-  21: [REDUCE, 2],
 263-  22: [REDUCE, 2],
 264-  30: [REDUCE, 2],
 265-  31: [REDUCE, 2],
 266-  33: [SHIFT, 30]
 267-};
 268-table[4] = {
 269-  5: [REDUCE, 3],
 270-  11: [REDUCE, 3],
 271-  12: [REDUCE, 3],
 272-  13: [REDUCE, 3],
 273-  15: [REDUCE, 3],
 274-  16: [REDUCE, 3],
 275-  17: [REDUCE, 3],
 276-  18: [REDUCE, 3],
 277-  19: [REDUCE, 3],
 278-  20: [REDUCE, 3],
 279-  21: [REDUCE, 3],
 280-  22: [REDUCE, 3],
 281-  30: [REDUCE, 3],
 282-  31: [REDUCE, 3]
 283-};
 284-table[5] = {
 285-  5: [REDUCE, 4],
 286-  11: [REDUCE, 4],
 287-  12: [REDUCE, 4],
 288-  13: [REDUCE, 4],
 289-  15: [REDUCE, 4],
 290-  16: [REDUCE, 4],
 291-  17: [REDUCE, 4],
 292-  18: [REDUCE, 4],
 293-  19: [REDUCE, 4],
 294-  20: [REDUCE, 4],
 295-  21: [REDUCE, 4],
 296-  22: [REDUCE, 4],
 297-  30: [REDUCE, 4],
 298-  31: [REDUCE, 4]
 299-};
 300-table[6] = {
 301-  5: [REDUCE, 5],
 302-  11: [REDUCE, 5],
 303-  12: [REDUCE, 5],
 304-  13: [REDUCE, 5],
 305-  15: [REDUCE, 5],
 306-  16: [REDUCE, 5],
 307-  17: [REDUCE, 5],
 308-  18: [REDUCE, 5],
 309-  19: [REDUCE, 5],
 310-  20: [REDUCE, 5],
 311-  21: [REDUCE, 5],
 312-  22: [REDUCE, 5],
 313-  30: [REDUCE, 5],
 314-  31: [REDUCE, 5],
 315-  35: [SHIFT, 31]
 316-};
 317-table[7] = {
 318-  5: [REDUCE, 6],
 319-  11: [REDUCE, 6],
 320-  12: [REDUCE, 6],
 321-  13: [REDUCE, 6],
 322-  15: [REDUCE, 6],
 323-  16: [REDUCE, 6],
 324-  17: [REDUCE, 6],
 325-  18: [REDUCE, 6],
 326-  19: [REDUCE, 6],
 327-  20: [REDUCE, 6],
 328-  21: [REDUCE, 6],
 329-  22: [REDUCE, 6],
 330-  30: [REDUCE, 6],
 331-  31: [REDUCE, 6]
 332-};
 333-table[8] = {
 334-  2: 13,
 335-  4: 32,
 336-  6: 3,
 337-  7: [SHIFT, 4],
 338-  8: [SHIFT, 5],
 339-  9: 6,
 340-  10: [SHIFT, 7],
 341-  13: [SHIFT, 10],
 342-  14: [SHIFT, 8],
 343-  19: [SHIFT, 9],
 344-  23: [SHIFT, 11],
 345-  25: 12,
 346-  26: [SHIFT, 16],
 347-  28: [SHIFT, 17],
 348-  32: [SHIFT, 14],
 349-  34: [SHIFT, 15],
 350-  36: [SHIFT, 18]
 351-};
 352-table[9] = {
 353-  2: 13,
 354-  4: 33,
 355-  6: 3,
 356-  7: [SHIFT, 4],
 357-  8: [SHIFT, 5],
 358-  9: 6,
 359-  10: [SHIFT, 7],
 360-  13: [SHIFT, 10],
 361-  14: [SHIFT, 8],
 362-  19: [SHIFT, 9],
 363-  23: [SHIFT, 11],
 364-  25: 12,
 365-  26: [SHIFT, 16],
 366-  28: [SHIFT, 17],
 367-  32: [SHIFT, 14],
 368-  34: [SHIFT, 15],
 369-  36: [SHIFT, 18]
 370-};
 371-table[10] = {
 372-  2: 13,
 373-  4: 34,
 374-  6: 3,
 375-  7: [SHIFT, 4],
 376-  8: [SHIFT, 5],
 377-  9: 6,
 378-  10: [SHIFT, 7],
 379-  13: [SHIFT, 10],
 380-  14: [SHIFT, 8],
 381-  19: [SHIFT, 9],
 382-  23: [SHIFT, 11],
 383-  25: 12,
 384-  26: [SHIFT, 16],
 385-  28: [SHIFT, 17],
 386-  32: [SHIFT, 14],
 387-  34: [SHIFT, 15],
 388-  36: [SHIFT, 18]
 389-};
 390-table[11] = {
 391-  14: [SHIFT, 35]
 392-};
 393-table[12] = {
 394-  5: [REDUCE, 25],
 395-  11: [REDUCE, 25],
 396-  12: [REDUCE, 25],
 397-  13: [REDUCE, 25],
 398-  15: [REDUCE, 25],
 399-  16: [REDUCE, 25],
 400-  17: [REDUCE, 25],
 401-  18: [REDUCE, 25],
 402-  19: [REDUCE, 25],
 403-  20: [REDUCE, 25],
 404-  21: [REDUCE, 25],
 405-  22: [REDUCE, 25],
 406-  30: [REDUCE, 25],
 407-  31: [REDUCE, 25]
 408-};
 409-table[13] = {
 410-  2: 36,
 411-  5: [REDUCE, 26],
 412-  11: [REDUCE, 26],
 413-  12: [REDUCE, 26],
 414-  13: [REDUCE, 26],
 415-  15: [REDUCE, 26],
 416-  16: [REDUCE, 26],
 417-  17: [REDUCE, 26],
 418-  18: [REDUCE, 26],
 419-  19: [REDUCE, 26],
 420-  20: [REDUCE, 26],
 421-  21: [REDUCE, 26],
 422-  22: [REDUCE, 26],
 423-  30: [REDUCE, 26],
 424-  31: [REDUCE, 26],
 425-  32: [SHIFT, 37],
 426-  36: [SHIFT, 18]
 427-};
 428-table[14] = {
 429-  5: [REDUCE, 36],
 430-  11: [REDUCE, 36],
 431-  12: [REDUCE, 36],
 432-  13: [REDUCE, 36],
 433-  15: [REDUCE, 36],
 434-  16: [REDUCE, 36],
 435-  17: [REDUCE, 36],
 436-  18: [REDUCE, 36],
 437-  19: [REDUCE, 36],
 438-  20: [REDUCE, 36],
 439-  21: [REDUCE, 36],
 440-  22: [REDUCE, 36],
 441-  30: [REDUCE, 36],
 442-  31: [REDUCE, 36],
 443-  33: [REDUCE, 36],
 444-  36: [SHIFT, 38]
 445-};
 446-table[15] = {
 447-  5: [REDUCE, 38],
 448-  11: [REDUCE, 38],
 449-  12: [REDUCE, 38],
 450-  13: [REDUCE, 38],
 451-  15: [REDUCE, 38],
 452-  16: [REDUCE, 38],
 453-  17: [REDUCE, 38],
 454-  18: [REDUCE, 38],
 455-  19: [REDUCE, 38],
 456-  20: [REDUCE, 38],
 457-  21: [REDUCE, 38],
 458-  22: [REDUCE, 38],
 459-  30: [REDUCE, 38],
 460-  31: [REDUCE, 38],
 461-  33: [SHIFT, 39],
 462-  35: [REDUCE, 38],
 463-  38: [REDUCE, 38]
 464-};
 465-table[16] = {
 466-  5: [REDUCE, 28],
 467-  11: [REDUCE, 28],
 468-  12: [REDUCE, 28],
 469-  13: [REDUCE, 28],
 470-  15: [REDUCE, 28],
 471-  16: [REDUCE, 28],
 472-  17: [REDUCE, 28],
 473-  18: [REDUCE, 28],
 474-  19: [REDUCE, 28],
 475-  20: [REDUCE, 28],
 476-  21: [REDUCE, 28],
 477-  22: [REDUCE, 28],
 478-  27: [SHIFT, 40],
 479-  30: [REDUCE, 28],
 480-  31: [REDUCE, 28]
 481-};
 482-table[17] = {
 483-  5: [REDUCE, 30],
 484-  11: [REDUCE, 30],
 485-  12: [REDUCE, 30],
 486-  13: [REDUCE, 30],
 487-  15: [REDUCE, 30],
 488-  16: [REDUCE, 30],
 489-  17: [REDUCE, 30],
 490-  18: [REDUCE, 30],
 491-  19: [REDUCE, 30],
 492-  20: [REDUCE, 30],
 493-  21: [REDUCE, 30],
 494-  22: [REDUCE, 30],
 495-  27: [SHIFT, 41],
 496-  30: [REDUCE, 30],
 497-  31: [REDUCE, 30]
 498-};
 499-table[18] = {
 500-  32: [SHIFT, 42]
 501-};
 502-table[19] = {
 503-  1: [ACCEPT, 1]
 504-};
 505-table[20] = {
 506-  2: 13,
 507-  4: 43,
 508-  6: 3,
 509-  7: [SHIFT, 4],
 510-  8: [SHIFT, 5],
 511-  9: 6,
 512-  10: [SHIFT, 7],
 513-  13: [SHIFT, 10],
 514-  14: [SHIFT, 8],
 515-  19: [SHIFT, 9],
 516-  23: [SHIFT, 11],
 517-  25: 12,
 518-  26: [SHIFT, 16],
 519-  28: [SHIFT, 17],
 520-  32: [SHIFT, 14],
 521-  34: [SHIFT, 15],
 522-  36: [SHIFT, 18]
 523-};
 524-table[21] = {
 525-  2: 13,
 526-  4: 44,
 527-  6: 3,
 528-  7: [SHIFT, 4],
 529-  8: [SHIFT, 5],
 530-  9: 6,
 531-  10: [SHIFT, 7],
 532-  13: [SHIFT, 10],
 533-  14: [SHIFT, 8],
 534-  19: [SHIFT, 9],
 535-  23: [SHIFT, 11],
 536-  25: 12,
 537-  26: [SHIFT, 16],
 538-  28: [SHIFT, 17],
 539-  32: [SHIFT, 14],
 540-  34: [SHIFT, 15],
 541-  36: [SHIFT, 18]
 542-};
 543-table[22] = {
 544-  2: 13,
 545-  4: 45,
 546-  6: 3,
 547-  7: [SHIFT, 4],
 548-  8: [SHIFT, 5],
 549-  9: 6,
 550-  10: [SHIFT, 7],
 551-  13: [SHIFT, 10],
 552-  14: [SHIFT, 8],
 553-  19: [SHIFT, 9],
 554-  23: [SHIFT, 11],
 555-  25: 12,
 556-  26: [SHIFT, 16],
 557-  28: [SHIFT, 17],
 558-  32: [SHIFT, 14],
 559-  34: [SHIFT, 15],
 560-  36: [SHIFT, 18]
 561-};
 562-table[23] = {
 563-  2: 13,
 564-  4: 48,
 565-  6: 3,
 566-  7: [SHIFT, 4],
 567-  8: [SHIFT, 5],
 568-  9: 6,
 569-  10: [SHIFT, 7],
 570-  12: [SHIFT, 46],
 571-  13: [SHIFT, 10],
 572-  14: [SHIFT, 8],
 573-  17: [SHIFT, 47],
 574-  19: [SHIFT, 9],
 575-  23: [SHIFT, 11],
 576-  25: 12,
 577-  26: [SHIFT, 16],
 578-  28: [SHIFT, 17],
 579-  32: [SHIFT, 14],
 580-  34: [SHIFT, 15],
 581-  36: [SHIFT, 18]
 582-};
 583-table[24] = {
 584-  2: 13,
 585-  4: 50,
 586-  6: 3,
 587-  7: [SHIFT, 4],
 588-  8: [SHIFT, 5],
 589-  9: 6,
 590-  10: [SHIFT, 7],
 591-  12: [SHIFT, 49],
 592-  13: [SHIFT, 10],
 593-  14: [SHIFT, 8],
 594-  19: [SHIFT, 9],
 595-  23: [SHIFT, 11],
 596-  25: 12,
 597-  26: [SHIFT, 16],
 598-  28: [SHIFT, 17],
 599-  32: [SHIFT, 14],
 600-  34: [SHIFT, 15],
 601-  36: [SHIFT, 18]
 602-};
 603-table[25] = {
 604-  2: 13,
 605-  4: 51,
 606-  6: 3,
 607-  7: [SHIFT, 4],
 608-  8: [SHIFT, 5],
 609-  9: 6,
 610-  10: [SHIFT, 7],
 611-  13: [SHIFT, 10],
 612-  14: [SHIFT, 8],
 613-  19: [SHIFT, 9],
 614-  23: [SHIFT, 11],
 615-  25: 12,
 616-  26: [SHIFT, 16],
 617-  28: [SHIFT, 17],
 618-  32: [SHIFT, 14],
 619-  34: [SHIFT, 15],
 620-  36: [SHIFT, 18]
 621-};
 622-table[26] = {
 623-  2: 13,
 624-  4: 52,
 625-  6: 3,
 626-  7: [SHIFT, 4],
 627-  8: [SHIFT, 5],
 628-  9: 6,
 629-  10: [SHIFT, 7],
 630-  13: [SHIFT, 10],
 631-  14: [SHIFT, 8],
 632-  19: [SHIFT, 9],
 633-  23: [SHIFT, 11],
 634-  25: 12,
 635-  26: [SHIFT, 16],
 636-  28: [SHIFT, 17],
 637-  32: [SHIFT, 14],
 638-  34: [SHIFT, 15],
 639-  36: [SHIFT, 18]
 640-};
 641-table[27] = {
 642-  2: 13,
 643-  4: 53,
 644-  6: 3,
 645-  7: [SHIFT, 4],
 646-  8: [SHIFT, 5],
 647-  9: 6,
 648-  10: [SHIFT, 7],
 649-  13: [SHIFT, 10],
 650-  14: [SHIFT, 8],
 651-  19: [SHIFT, 9],
 652-  23: [SHIFT, 11],
 653-  25: 12,
 654-  26: [SHIFT, 16],
 655-  28: [SHIFT, 17],
 656-  32: [SHIFT, 14],
 657-  34: [SHIFT, 15],
 658-  36: [SHIFT, 18]
 659-};
 660-table[28] = {
 661-  2: 13,
 662-  4: 54,
 663-  6: 3,
 664-  7: [SHIFT, 4],
 665-  8: [SHIFT, 5],
 666-  9: 6,
 667-  10: [SHIFT, 7],
 668-  13: [SHIFT, 10],
 669-  14: [SHIFT, 8],
 670-  19: [SHIFT, 9],
 671-  23: [SHIFT, 11],
 672-  25: 12,
 673-  26: [SHIFT, 16],
 674-  28: [SHIFT, 17],
 675-  32: [SHIFT, 14],
 676-  34: [SHIFT, 15],
 677-  36: [SHIFT, 18]
 678-};
 679-table[29] = {
 680-  2: 13,
 681-  4: 55,
 682-  6: 3,
 683-  7: [SHIFT, 4],
 684-  8: [SHIFT, 5],
 685-  9: 6,
 686-  10: [SHIFT, 7],
 687-  13: [SHIFT, 10],
 688-  14: [SHIFT, 8],
 689-  19: [SHIFT, 9],
 690-  23: [SHIFT, 11],
 691-  25: 12,
 692-  26: [SHIFT, 16],
 693-  28: [SHIFT, 17],
 694-  32: [SHIFT, 14],
 695-  34: [SHIFT, 15],
 696-  36: [SHIFT, 18]
 697-};
 698-table[30] = {
 699-  32: [SHIFT, 56]
 700-};
 701-table[31] = {
 702-  5: [REDUCE, 40],
 703-  11: [REDUCE, 40],
 704-  12: [REDUCE, 40],
 705-  13: [REDUCE, 40],
 706-  15: [REDUCE, 40],
 707-  16: [REDUCE, 40],
 708-  17: [REDUCE, 40],
 709-  18: [REDUCE, 40],
 710-  19: [REDUCE, 40],
 711-  20: [REDUCE, 40],
 712-  21: [REDUCE, 40],
 713-  22: [REDUCE, 40],
 714-  30: [REDUCE, 40],
 715-  31: [REDUCE, 40],
 716-  35: [REDUCE, 40],
 717-  38: [REDUCE, 40]
 718-};
 719-table[32] = {
 720-  11: [SHIFT, 20],
 721-  12: [SHIFT, 21],
 722-  13: [SHIFT, 22],
 723-  15: [SHIFT, 57],
 724-  16: [SHIFT, 23],
 725-  17: [SHIFT, 24],
 726-  18: [SHIFT, 25],
 727-  19: [SHIFT, 26],
 728-  20: [SHIFT, 27],
 729-  21: [SHIFT, 28],
 730-  22: [SHIFT, 29]
 731-};
 732-table[33] = {
 733-  5: [REDUCE, 21],
 734-  11: [SHIFT, 20],
 735-  12: [REDUCE, 21],
 736-  13: [REDUCE, 21],
 737-  15: [REDUCE, 21],
 738-  16: [REDUCE, 21],
 739-  17: [REDUCE, 21],
 740-  18: [REDUCE, 21],
 741-  19: [REDUCE, 21],
 742-  20: [SHIFT, 27],
 743-  21: [SHIFT, 28],
 744-  22: [SHIFT, 29],
 745-  30: [REDUCE, 21],
 746-  31: [REDUCE, 21]
 747-};
 748-table[34] = {
 749-  5: [REDUCE, 22],
 750-  11: [SHIFT, 20],
 751-  12: [REDUCE, 22],
 752-  13: [REDUCE, 22],
 753-  15: [REDUCE, 22],
 754-  16: [REDUCE, 22],
 755-  17: [REDUCE, 22],
 756-  18: [REDUCE, 22],
 757-  19: [REDUCE, 22],
 758-  20: [SHIFT, 27],
 759-  21: [SHIFT, 28],
 760-  22: [SHIFT, 29],
 761-  30: [REDUCE, 22],
 762-  31: [REDUCE, 22]
 763-};
 764-table[35] = {
 765-  2: 13,
 766-  4: 60,
 767-  6: 3,
 768-  7: [SHIFT, 4],
 769-  8: [SHIFT, 5],
 770-  9: 6,
 771-  10: [SHIFT, 7],
 772-  13: [SHIFT, 10],
 773-  14: [SHIFT, 8],
 774-  15: [SHIFT, 58],
 775-  19: [SHIFT, 9],
 776-  23: [SHIFT, 11],
 777-  24: 59,
 778-  25: 12,
 779-  26: [SHIFT, 16],
 780-  28: [SHIFT, 17],
 781-  29: [SHIFT, 61],
 782-  32: [SHIFT, 14],
 783-  34: [SHIFT, 15],
 784-  36: [SHIFT, 18]
 785-};
 786-table[36] = {
 787-  5: [REDUCE, 27],
 788-  11: [REDUCE, 27],
 789-  12: [REDUCE, 27],
 790-  13: [REDUCE, 27],
 791-  15: [REDUCE, 27],
 792-  16: [REDUCE, 27],
 793-  17: [REDUCE, 27],
 794-  18: [REDUCE, 27],
 795-  19: [REDUCE, 27],
 796-  20: [REDUCE, 27],
 797-  21: [REDUCE, 27],
 798-  22: [REDUCE, 27],
 799-  30: [REDUCE, 27],
 800-  31: [REDUCE, 27]
 801-};
 802-table[37] = {36: [SHIFT, 38]};
 803-table[38] = {32: [SHIFT, 62]};
 804-table[39] = {34: [SHIFT, 63]};
 805-table[40] = {26: [SHIFT, 64]};
 806-table[41] = {28: [SHIFT, 65]};
 807-table[42] = {37: [SHIFT, 66]};
 808-table[43] = {
 809-  5: [REDUCE, 7],
 810-  11: [REDUCE, 7],
 811-  12: [REDUCE, 7],
 812-  13: [REDUCE, 7],
 813-  15: [REDUCE, 7],
 814-  16: [REDUCE, 7],
 815-  17: [REDUCE, 7],
 816-  18: [REDUCE, 7],
 817-  19: [REDUCE, 7],
 818-  20: [REDUCE, 7],
 819-  21: [REDUCE, 7],
 820-  22: [REDUCE, 7],
 821-  30: [REDUCE, 7],
 822-  31: [REDUCE, 7]
 823-};
 824-table[44] = {
 825-  5: [REDUCE, 8],
 826-  11: [SHIFT, 20],
 827-  12: [REDUCE, 8],
 828-  13: [SHIFT, 22],
 829-  15: [REDUCE, 8],
 830-  16: [SHIFT, 23],
 831-  17: [SHIFT, 24],
 832-  18: [SHIFT, 25],
 833-  19: [SHIFT, 26],
 834-  20: [SHIFT, 27],
 835-  21: [SHIFT, 28],
 836-  22: [SHIFT, 29],
 837-  30: [REDUCE, 8],
 838-  31: [REDUCE, 8]
 839-};
 840-table[45] = {
 841-  5: [REDUCE, 9],
 842-  11: [SHIFT, 20],
 843-  12: [REDUCE, 9],
 844-  13: [REDUCE, 9],
 845-  15: [REDUCE, 9],
 846-  16: [REDUCE, 9],
 847-  17: [REDUCE, 9],
 848-  18: [REDUCE, 9],
 849-  19: [REDUCE, 9],
 850-  20: [SHIFT, 27],
 851-  21: [SHIFT, 28],
 852-  22: [SHIFT, 29],
 853-  30: [REDUCE, 9],
 854-  31: [REDUCE, 9]
 855-};
 856-table[46] = {
 857-  2: 13,
 858-  4: 67,
 859-  6: 3,
 860-  7: [SHIFT, 4],
 861-  8: [SHIFT, 5],
 862-  9: 6,
 863-  10: [SHIFT, 7],
 864-  13: [SHIFT, 10],
 865-  14: [SHIFT, 8],
 866-  19: [SHIFT, 9],
 867-  23: [SHIFT, 11],
 868-  25: 12,
 869-  26: [SHIFT, 16],
 870-  28: [SHIFT, 17],
 871-  32: [SHIFT, 14],
 872-  34: [SHIFT, 15],
 873-  36: [SHIFT, 18]
 874-};
 875-table[47] = {
 876-  2: 13,
 877-  4: 68,
 878-  6: 3,
 879-  7: [SHIFT, 4],
 880-  8: [SHIFT, 5],
 881-  9: 6,
 882-  10: [SHIFT, 7],
 883-  13: [SHIFT, 10],
 884-  14: [SHIFT, 8],
 885-  19: [SHIFT, 9],
 886-  23: [SHIFT, 11],
 887-  25: 12,
 888-  26: [SHIFT, 16],
 889-  28: [SHIFT, 17],
 890-  32: [SHIFT, 14],
 891-  34: [SHIFT, 15],
 892-  36: [SHIFT, 18]
 893-};
 894-table[48] = {
 895-  5: [REDUCE, 16],
 896-  11: [SHIFT, 20],
 897-  12: [REDUCE, 16],
 898-  13: [SHIFT, 22],
 899-  15: [REDUCE, 16],
 900-  16: [REDUCE, 16],
 901-  17: [REDUCE, 16],
 902-  18: [REDUCE, 16],
 903-  19: [SHIFT, 26],
 904-  20: [SHIFT, 27],
 905-  21: [SHIFT, 28],
 906-  22: [SHIFT, 29],
 907-  30: [REDUCE, 16],
 908-  31: [REDUCE, 16]
 909-};
 910-table[49] = {
 911-  2: 13,
 912-  4: 69,
 913-  6: 3,
 914-  7: [SHIFT, 4],
 915-  8: [SHIFT, 5],
 916-  9: 6,
 917-  10: [SHIFT, 7],
 918-  13: [SHIFT, 10],
 919-  14: [SHIFT, 8],
 920-  19: [SHIFT, 9],
 921-  23: [SHIFT, 11],
 922-  25: 12,
 923-  26: [SHIFT, 16],
 924-  28: [SHIFT, 17],
 925-  32: [SHIFT, 14],
 926-  34: [SHIFT, 15],
 927-  36: [SHIFT, 18]
 928-};
 929-table[50] = {
 930-  5: [REDUCE, 15],
 931-  11: [SHIFT, 20],
 932-  12: [REDUCE, 15],
 933-  13: [SHIFT, 22],
 934-  15: [REDUCE, 15],
 935-  16: [REDUCE, 15],
 936-  17: [REDUCE, 15],
 937-  18: [REDUCE, 15],
 938-  19: [SHIFT, 26],
 939-  20: [SHIFT, 27],
 940-  21: [SHIFT, 28],
 941-  22: [SHIFT, 29],
 942-  30: [REDUCE, 15],
 943-  31: [REDUCE, 15]
 944-};
 945-table[51] = {
 946-  5: [REDUCE, 14],
 947-  11: [SHIFT, 20],
 948-  12: [REDUCE, 14],
 949-  13: [SHIFT, 22],
 950-  15: [REDUCE, 14],
 951-  16: [SHIFT, 23],
 952-  17: [SHIFT, 24],
 953-  18: [REDUCE, 14],
 954-  19: [SHIFT, 26],
 955-  20: [SHIFT, 27],
 956-  21: [SHIFT, 28],
 957-  22: [SHIFT, 29],
 958-  30: [REDUCE, 14],
 959-  31: [REDUCE, 14]
 960-};
 961-table[52] = {
 962-  5: [REDUCE, 17],
 963-  11: [SHIFT, 20],
 964-  12: [REDUCE, 17],
 965-  13: [REDUCE, 17],
 966-  15: [REDUCE, 17],
 967-  16: [REDUCE, 17],
 968-  17: [REDUCE, 17],
 969-  18: [REDUCE, 17],
 970-  19: [REDUCE, 17],
 971-  20: [SHIFT, 27],
 972-  21: [SHIFT, 28],
 973-  22: [SHIFT, 29],
 974-  30: [REDUCE, 17],
 975-  31: [REDUCE, 17]
 976-};
 977-table[53] = {
 978-  5: [REDUCE, 18],
 979-  11: [SHIFT, 20],
 980-  12: [REDUCE, 18],
 981-  13: [REDUCE, 18],
 982-  15: [REDUCE, 18],
 983-  16: [REDUCE, 18],
 984-  17: [REDUCE, 18],
 985-  18: [REDUCE, 18],
 986-  19: [REDUCE, 18],
 987-  20: [REDUCE, 18],
 988-  21: [REDUCE, 18],
 989-  22: [SHIFT, 29],
 990-  30: [REDUCE, 18],
 991-  31: [REDUCE, 18]
 992-};
 993-table[54] = {
 994-  5: [REDUCE, 19],
 995-  11: [SHIFT, 20],
 996-  12: [REDUCE, 19],
 997-  13: [REDUCE, 19],
 998-  15: [REDUCE, 19],
 999-  16: [REDUCE, 19],
1000-  17: [REDUCE, 19],
1001-  18: [REDUCE, 19],
1002-  19: [REDUCE, 19],
1003-  20: [REDUCE, 19],
1004-  21: [REDUCE, 19],
1005-  22: [SHIFT, 29],
1006-  30: [REDUCE, 19],
1007-  31: [REDUCE, 19]
1008-};
1009-table[55] = {
1010-  5: [REDUCE, 20],
1011-  11: [SHIFT, 20],
1012-  12: [REDUCE, 20],
1013-  13: [REDUCE, 20],
1014-  15: [REDUCE, 20],
1015-  16: [REDUCE, 20],
1016-  17: [REDUCE, 20],
1017-  18: [REDUCE, 20],
1018-  19: [REDUCE, 20],
1019-  20: [REDUCE, 20],
1020-  21: [REDUCE, 20],
1021-  22: [REDUCE, 20],
1022-  30: [REDUCE, 20],
1023-  31: [REDUCE, 20]
1024-};
1025-table[56] = {
1026-  5: [REDUCE, 37],
1027-  11: [REDUCE, 37],
1028-  12: [REDUCE, 37],
1029-  13: [REDUCE, 37],
1030-  15: [REDUCE, 37],
1031-  16: [REDUCE, 37],
1032-  17: [REDUCE, 37],
1033-  18: [REDUCE, 37],
1034-  19: [REDUCE, 37],
1035-  20: [REDUCE, 37],
1036-  21: [REDUCE, 37],
1037-  22: [REDUCE, 37],
1038-  30: [REDUCE, 37],
1039-  31: [REDUCE, 37],
1040-  33: [REDUCE, 37]
1041-};
1042-table[57] = {
1043-  5: [REDUCE, 10],
1044-  11: [REDUCE, 10],
1045-  12: [REDUCE, 10],
1046-  13: [REDUCE, 10],
1047-  15: [REDUCE, 10],
1048-  16: [REDUCE, 10],
1049-  17: [REDUCE, 10],
1050-  18: [REDUCE, 10],
1051-  19: [REDUCE, 10],
1052-  20: [REDUCE, 10],
1053-  21: [REDUCE, 10],
1054-  22: [REDUCE, 10],
1055-  30: [REDUCE, 10],
1056-  31: [REDUCE, 10]
1057-};
1058-table[58] = {
1059-  5: [REDUCE, 23],
1060-  11: [REDUCE, 23],
1061-  12: [REDUCE, 23],
1062-  13: [REDUCE, 23],
1063-  15: [REDUCE, 23],
1064-  16: [REDUCE, 23],
1065-  17: [REDUCE, 23],
1066-  18: [REDUCE, 23],
1067-  19: [REDUCE, 23],
1068-  20: [REDUCE, 23],
1069-  21: [REDUCE, 23],
1070-  22: [REDUCE, 23],
1071-  30: [REDUCE, 23],
1072-  31: [REDUCE, 23]
1073-};
1074-table[59] = {15: [SHIFT, 70], 30: [SHIFT, 71], 31: [SHIFT, 72]};
1075-table[60] = {
1076-  11: [SHIFT, 20],
1077-  12: [SHIFT, 21],
1078-  13: [SHIFT, 22],
1079-  15: [REDUCE, 32],
1080-  16: [SHIFT, 23],
1081-  17: [SHIFT, 24],
1082-  18: [SHIFT, 25],
1083-  19: [SHIFT, 26],
1084-  20: [SHIFT, 27],
1085-  21: [SHIFT, 28],
1086-  22: [SHIFT, 29],
1087-  30: [REDUCE, 32],
1088-  31: [REDUCE, 32]
1089-};
1090-table[61] = {15: [REDUCE, 33], 30: [REDUCE, 33], 31: [REDUCE, 33]};
1091-table[62] = {37: [SHIFT, 73]};
1092-table[63] = {
1093-  5: [REDUCE, 39],
1094-  11: [REDUCE, 39],
1095-  12: [REDUCE, 39],
1096-  13: [REDUCE, 39],
1097-  15: [REDUCE, 39],
1098-  16: [REDUCE, 39],
1099-  17: [REDUCE, 39],
1100-  18: [REDUCE, 39],
1101-  19: [REDUCE, 39],
1102-  20: [REDUCE, 39],
1103-  21: [REDUCE, 39],
1104-  22: [REDUCE, 39],
1105-  30: [REDUCE, 39],
1106-  31: [REDUCE, 39],
1107-  35: [REDUCE, 39],
1108-  38: [REDUCE, 39]
1109-};
1110-table[64] = {
1111-  5: [REDUCE, 29],
1112-  11: [REDUCE, 29],
1113-  12: [REDUCE, 29],
1114-  13: [REDUCE, 29],
1115-  15: [REDUCE, 29],
1116-  16: [REDUCE, 29],
1117-  17: [REDUCE, 29],
1118-  18: [REDUCE, 29],
1119-  19: [REDUCE, 29],
1120-  20: [REDUCE, 29],
1121-  21: [REDUCE, 29],
1122-  22: [REDUCE, 29],
1123-  30: [REDUCE, 29],
1124-  31: [REDUCE, 29]
1125-};
1126-table[65] = {
1127-  5: [REDUCE, 31],
1128-  11: [REDUCE, 31],
1129-  12: [REDUCE, 31],
1130-  13: [REDUCE, 31],
1131-  15: [REDUCE, 31],
1132-  16: [REDUCE, 31],
1133-  17: [REDUCE, 31],
1134-  18: [REDUCE, 31],
1135-  19: [REDUCE, 31],
1136-  20: [REDUCE, 31],
1137-  21: [REDUCE, 31],
1138-  22: [REDUCE, 31],
1139-  30: [REDUCE, 31],
1140-  31: [REDUCE, 31]
1141-};
1142-table[66] = {
1143-  5: [REDUCE, 41],
1144-  11: [REDUCE, 41],
1145-  12: [REDUCE, 41],
1146-  13: [REDUCE, 41],
1147-  15: [REDUCE, 41],
1148-  16: [REDUCE, 41],
1149-  17: [REDUCE, 41],
1150-  18: [REDUCE, 41],
1151-  19: [REDUCE, 41],
1152-  20: [REDUCE, 41],
1153-  21: [REDUCE, 41],
1154-  22: [REDUCE, 41],
1155-  30: [REDUCE, 41],
1156-  31: [REDUCE, 41],
1157-  32: [REDUCE, 41],
1158-  36: [REDUCE, 41]
1159-};
1160-table[67] = {
1161-  5: [REDUCE, 11],
1162-  11: [SHIFT, 20],
1163-  12: [REDUCE, 11],
1164-  13: [SHIFT, 22],
1165-  15: [REDUCE, 11],
1166-  16: [REDUCE, 11],
1167-  17: [REDUCE, 11],
1168-  18: [REDUCE, 11],
1169-  19: [SHIFT, 26],
1170-  20: [SHIFT, 27],
1171-  21: [SHIFT, 28],
1172-  22: [SHIFT, 29],
1173-  30: [REDUCE, 11],
1174-  31: [REDUCE, 11]
1175-};
1176-table[68] = {
1177-  5: [REDUCE, 13],
1178-  11: [SHIFT, 20],
1179-  12: [REDUCE, 13],
1180-  13: [SHIFT, 22],
1181-  15: [REDUCE, 13],
1182-  16: [REDUCE, 13],
1183-  17: [REDUCE, 13],
1184-  18: [REDUCE, 13],
1185-  19: [SHIFT, 26],
1186-  20: [SHIFT, 27],
1187-  21: [SHIFT, 28],
1188-  22: [SHIFT, 29],
1189-  30: [REDUCE, 13],
1190-  31: [REDUCE, 13]
1191-};
1192-table[69] = {
1193-  5: [REDUCE, 12],
1194-  11: [SHIFT, 20],
1195-  12: [REDUCE, 12],
1196-  13: [SHIFT, 22],
1197-  15: [REDUCE, 12],
1198-  16: [REDUCE, 12],
1199-  17: [REDUCE, 12],
1200-  18: [REDUCE, 12],
1201-  19: [SHIFT, 26],
1202-  20: [SHIFT, 27],
1203-  21: [SHIFT, 28],
1204-  22: [SHIFT, 29],
1205-  30: [REDUCE, 12],
1206-  31: [REDUCE, 12]
1207-};
1208-table[70] = {
1209-  5: [REDUCE, 24],
1210-  11: [REDUCE, 24],
1211-  12: [REDUCE, 24],
1212-  13: [REDUCE, 24],
1213-  15: [REDUCE, 24],
1214-  16: [REDUCE, 24],
1215-  17: [REDUCE, 24],
1216-  18: [REDUCE, 24],
1217-  19: [REDUCE, 24],
1218-  20: [REDUCE, 24],
1219-  21: [REDUCE, 24],
1220-  22: [REDUCE, 24],
1221-  30: [REDUCE, 24],
1222-  31: [REDUCE, 24]
1223-};
1224-table[71] = {
1225-  2: 13,
1226-  4: 74,
1227-  6: 3,
1228-  7: [SHIFT, 4],
1229-  8: [SHIFT, 5],
1230-  9: 6,
1231-  10: [SHIFT, 7],
1232-  12: [SHIFT, 21],
1233-  13: [SHIFT, 10],
1234-  14: [SHIFT, 8],
1235-  19: [SHIFT, 9],
1236-  23: [SHIFT, 11],
1237-  25: 12,
1238-  26: [SHIFT, 16],
1239-  28: [SHIFT, 17],
1240-  32: [SHIFT, 14],
1241-  34: [SHIFT, 15],
1242-  36: [SHIFT, 18]
1243-};
1244-table[72] = {
1245-  2: 13,
1246-  4: 75,
1247-  6: 3,
1248-  7: [SHIFT, 4],
1249-  8: [SHIFT, 5],
1250-  9: 6,
1251-  10: [SHIFT, 7],
1252-  12: [SHIFT, 21],
1253-  13: [SHIFT, 10],
1254-  14: [SHIFT, 8],
1255-  19: [SHIFT, 9],
1256-  23: [SHIFT, 11],
1257-  25: 12,
1258-  26: [SHIFT, 16],
1259-  28: [SHIFT, 17],
1260-  32: [SHIFT, 14],
1261-  34: [SHIFT, 15],
1262-  36: [SHIFT, 18]
1263-};
1264-table[73] = {
1265-  5: [REDUCE, 42],
1266-  11: [REDUCE, 42],
1267-  12: [REDUCE, 42],
1268-  13: [REDUCE, 42],
1269-  15: [REDUCE, 42],
1270-  16: [REDUCE, 42],
1271-  17: [REDUCE, 42],
1272-  18: [REDUCE, 42],
1273-  19: [REDUCE, 42],
1274-  20: [REDUCE, 42],
1275-  21: [REDUCE, 42],
1276-  22: [REDUCE, 42],
1277-  30: [REDUCE, 42],
1278-  31: [REDUCE, 42],
1279-  32: [REDUCE, 42],
1280-  36: [REDUCE, 42]
1281-};
1282-table[74] = {
1283-  11: [SHIFT, 20],
1284-  12: [SHIFT, 21],
1285-  13: [SHIFT, 22],
1286-  15: [REDUCE, 34],
1287-  16: [SHIFT, 23],
1288-  17: [SHIFT, 24],
1289-  18: [SHIFT, 25],
1290-  19: [SHIFT, 26],
1291-  20: [SHIFT, 27],
1292-  21: [SHIFT, 28],
1293-  22: [SHIFT, 29],
1294-  30: [REDUCE, 34],
1295-  31: [REDUCE, 34]
1296-};
1297-table[75] = {
1298-  11: [SHIFT, 20],
1299-  12: [SHIFT, 21],
1300-  13: [SHIFT, 22],
1301-  15: [REDUCE, 35],
1302-  16: [SHIFT, 23],
1303-  17: [SHIFT, 24],
1304-  18: [SHIFT, 25],
1305-  19: [SHIFT, 26],
1306-  20: [SHIFT, 27],
1307-  21: [SHIFT, 28],
1308-  22: [SHIFT, 29],
1309-  30: [REDUCE, 35],
1310-  31: [REDUCE, 35]
1311-};
1312+// All functions in the spreadsheet start with a 0-token.
1313+table[0] = ObjectBuilder
1314+  .add(Symbol.ERROR, 13)
1315+  .add(Symbol.EXPRESSIONS, 1)
1316+  .add(Symbol.EXPRESSION, 2)
1317+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1318+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1319+  .add(Symbol.TIME_24, [SHIFT, 5])
1320+  .add(Symbol.NUMBER, 6)
1321+  .add(Symbol.STRING, [SHIFT, 7])
1322+  .add(Symbol.PLUS, [SHIFT, 10])
1323+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1324+  .add(Symbol.MINUS, [SHIFT, 9])
1325+  .add(Symbol.FUNCTION, [SHIFT, 11])
1326+  .add(Symbol.CELL, 12)
1327+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1328+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1329+  .add(Symbol.VARIABLE, [SHIFT, 14])
1330+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1331+  .add(Symbol.POUND, [SHIFT, 18])
1332+  .build();
1333+table[1] = ObjectBuilder
1334+  .add(Symbol.END, [3])
1335+  .build();
1336+table[2] = ObjectBuilder
1337+  .add(Symbol.EOF, [SHIFT, 19])
1338+  .add(Symbol.AMPERSAND, [SHIFT, 20])
1339+  .add(Symbol.EQUALS, [SHIFT, 21])
1340+  .add(Symbol.PLUS, [SHIFT, 22])
1341+  .add(Symbol.LESS_THAN, [SHIFT, 23])
1342+  .add(Symbol.GREATER_THAN, [SHIFT, 24])
1343+  .add(Symbol.NOT, [SHIFT, 25])
1344+  .add(Symbol.MINUS, [SHIFT, 26])
1345+  .add(Symbol.ASTERISK, [SHIFT, 27])
1346+  .add(Symbol.DIVIDE, [SHIFT, 28])
1347+  .add(Symbol.CARROT, [SHIFT, 29])
1348+  .build();
1349+table[3] = ObjectBuilder
1350+  .add(Symbol.EOF, [REDUCE, 2])
1351+  .add(Symbol.AMPERSAND, [REDUCE, 2])
1352+  .add(Symbol.EQUALS, [REDUCE, 2])
1353+  .add(Symbol.PLUS, [REDUCE, 2])
1354+  .add(Symbol.RIGHT_PAREN, [REDUCE, 2])
1355+  .add(Symbol.LESS_THAN, [REDUCE, 2])
1356+  .add(Symbol.GREATER_THAN, [REDUCE, 2])
1357+  .add(Symbol.NOT, [REDUCE, 2])
1358+  .add(Symbol.MINUS, [REDUCE, 2])
1359+  .add(Symbol.ASTERISK, [REDUCE, 2])
1360+  .add(Symbol.DIVIDE, [REDUCE, 2])
1361+  .add(Symbol.CARROT, [REDUCE, 2])
1362+  .add(Symbol.SEMI_COLON, [REDUCE, 2])
1363+  .add(Symbol.COMMA, [REDUCE, 2])
1364+  .add(33, [SHIFT, 30])
1365+  .build();
1366+table[3] = ObjectBuilder
1367+  .add(Symbol.EOF, [REDUCE, 2])
1368+  .add(Symbol.AMPERSAND, [REDUCE, 2])
1369+  .add(Symbol.EQUALS, [REDUCE, 2])
1370+  .add(Symbol.PLUS, [REDUCE, 2])
1371+  .add(Symbol.RIGHT_PAREN, [REDUCE, 2])
1372+  .add(Symbol.LESS_THAN, [REDUCE, 2])
1373+  .add(Symbol.GREATER_THAN, [REDUCE, 2])
1374+  .add(Symbol.NOT, [REDUCE, 2])
1375+  .add(Symbol.MINUS, [REDUCE, 2])
1376+  .add(Symbol.ASTERISK, [REDUCE, 2])
1377+  .add(Symbol.DIVIDE, [REDUCE, 2])
1378+  .add(Symbol.CARROT, [REDUCE, 2])
1379+  .add(Symbol.SEMI_COLON, [REDUCE, 2])
1380+  .add(Symbol.COMMA, [REDUCE, 2])
1381+  .add(33, [SHIFT, 30])
1382+  .build();
1383+table[4] = ObjectBuilder
1384+  .add(Symbol.EOF, [REDUCE, 3])
1385+  .add(Symbol.AMPERSAND, [REDUCE, 3])
1386+  .add(Symbol.EQUALS, [REDUCE, 3])
1387+  .add(Symbol.PLUS, [REDUCE, 3])
1388+  .add(Symbol.RIGHT_PAREN, [REDUCE, 3])
1389+  .add(Symbol.LESS_THAN, [REDUCE, 3])
1390+  .add(Symbol.GREATER_THAN, [REDUCE, 3])
1391+  .add(Symbol.NOT, [REDUCE, 3])
1392+  .add(Symbol.MINUS, [REDUCE, 3])
1393+  .add(Symbol.ASTERISK, [REDUCE, 3])
1394+  .add(Symbol.DIVIDE, [REDUCE, 3])
1395+  .add(Symbol.CARROT, [REDUCE, 3])
1396+  .add(Symbol.SEMI_COLON, [REDUCE, 3])
1397+  .add(Symbol.COMMA, [REDUCE, 3])
1398+  .build();
1399+table[5] = ObjectBuilder
1400+  .add(Symbol.EOF, [REDUCE, 4])
1401+  .add(Symbol.AMPERSAND, [REDUCE, 4])
1402+  .add(Symbol.EQUALS, [REDUCE, 4])
1403+  .add(Symbol.PLUS, [REDUCE, 4])
1404+  .add(Symbol.RIGHT_PAREN, [REDUCE, 4])
1405+  .add(Symbol.LESS_THAN, [REDUCE, 4])
1406+  .add(Symbol.GREATER_THAN, [REDUCE, 4])
1407+  .add(Symbol.NOT, [REDUCE, 4])
1408+  .add(Symbol.MINUS, [REDUCE, 4])
1409+  .add(Symbol.ASTERISK, [REDUCE, 4])
1410+  .add(Symbol.DIVIDE, [REDUCE, 4])
1411+  .add(Symbol.CARROT, [REDUCE, 4])
1412+  .add(Symbol.SEMI_COLON, [REDUCE, 4])
1413+  .add(Symbol.COMMA, [REDUCE, 4])
1414+  .build();
1415+table[6] = ObjectBuilder
1416+  .add(Symbol.EOF, [REDUCE, 5])
1417+  .add(Symbol.AMPERSAND, [REDUCE, 5])
1418+  .add(Symbol.EQUALS, [REDUCE, 5])
1419+  .add(Symbol.PLUS, [REDUCE, 5])
1420+  .add(Symbol.RIGHT_PAREN, [REDUCE, 5])
1421+  .add(Symbol.LESS_THAN, [REDUCE, 5])
1422+  .add(Symbol.GREATER_THAN, [REDUCE, 5])
1423+  .add(Symbol.NOT, [REDUCE, 5])
1424+  .add(Symbol.MINUS, [REDUCE, 5])
1425+  .add(Symbol.ASTERISK, [REDUCE, 5])
1426+  .add(Symbol.DIVIDE, [REDUCE, 5])
1427+  .add(Symbol.CARROT, [REDUCE, 5])
1428+  .add(Symbol.SEMI_COLON, [REDUCE, 5])
1429+  .add(Symbol.COMMA, [REDUCE, 5])
1430+  .add(Symbol.PERCENT, [SHIFT, 31])
1431+  .build();
1432+table[7] = ObjectBuilder
1433+  .add(Symbol.EOF, [REDUCE, 6])
1434+  .add(Symbol.AMPERSAND, [REDUCE, 6])
1435+  .add(Symbol.EQUALS, [REDUCE, 6])
1436+  .add(Symbol.PLUS, [REDUCE, 6])
1437+  .add(Symbol.RIGHT_PAREN, [REDUCE, 6])
1438+  .add(Symbol.LESS_THAN, [REDUCE, 6])
1439+  .add(Symbol.GREATER_THAN, [REDUCE, 6])
1440+  .add(Symbol.NOT, [REDUCE, 6])
1441+  .add(Symbol.MINUS, [REDUCE, 6])
1442+  .add(Symbol.ASTERISK, [REDUCE, 6])
1443+  .add(Symbol.DIVIDE, [REDUCE, 6])
1444+  .add(Symbol.CARROT, [REDUCE, 6])
1445+  .add(Symbol.SEMI_COLON, [REDUCE, 6])
1446+  .add(Symbol.COMMA, [REDUCE, 6])
1447+  .build();
1448+table[8] = ObjectBuilder
1449+  .add(Symbol.ERROR, 13)
1450+  .add(Symbol.EXPRESSION, 32)
1451+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1452+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1453+  .add(Symbol.TIME_24, [SHIFT, 5])
1454+  .add(Symbol.NUMBER, 6)
1455+  .add(Symbol.STRING, [SHIFT, 7])
1456+  .add(Symbol.PLUS, [SHIFT, 10])
1457+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1458+  .add(Symbol.MINUS, [SHIFT, 9])
1459+  .add(Symbol.FUNCTION, [SHIFT, 11])
1460+  .add(Symbol.CELL, 12)
1461+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1462+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1463+  .add(Symbol.VARIABLE, [SHIFT, 14])
1464+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1465+  .add(Symbol.POUND, [SHIFT, 18])
1466+  .build();
1467+table[9] = ObjectBuilder
1468+  .add(Symbol.ERROR, 13)
1469+  .add(Symbol.EXPRESSION, 33)
1470+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1471+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1472+  .add(Symbol.TIME_24, [SHIFT, 5])
1473+  .add(Symbol.NUMBER, 6)
1474+  .add(Symbol.STRING, [SHIFT, 7])
1475+  .add(Symbol.PLUS, [SHIFT, 10])
1476+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1477+  .add(Symbol.MINUS, [SHIFT, 9])
1478+  .add(Symbol.FUNCTION, [SHIFT, 11])
1479+  .add(Symbol.CELL, 12)
1480+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1481+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1482+  .add(Symbol.VARIABLE, [SHIFT, 14])
1483+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1484+  .add(Symbol.POUND, [SHIFT, 18])
1485+  .build();
1486+table[10] = ObjectBuilder
1487+  .add(Symbol.ERROR, 13)
1488+  .add(Symbol.EXPRESSION, 34)
1489+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1490+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1491+  .add(Symbol.TIME_24, [SHIFT, 5])
1492+  .add(Symbol.NUMBER, 6)
1493+  .add(Symbol.STRING, [SHIFT, 7])
1494+  .add(Symbol.PLUS, [SHIFT, 10])
1495+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1496+  .add(Symbol.MINUS, [SHIFT, 9])
1497+  .add(Symbol.FUNCTION, [SHIFT, 11])
1498+  .add(Symbol.CELL, 12)
1499+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1500+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1501+  .add(Symbol.VARIABLE, [SHIFT, 14])
1502+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1503+  .add(Symbol.POUND, [SHIFT, 18])
1504+  .build();
1505+table[11] = ObjectBuilder
1506+  .add(Symbol.LEFT_PAREN, [SHIFT, 35])
1507+  .build();
1508+table[12] = ObjectBuilder
1509+  .add(Symbol.EOF, [REDUCE, 25])
1510+  .add(Symbol.AMPERSAND, [REDUCE, 25])
1511+  .add(Symbol.EQUALS, [REDUCE, 25])
1512+  .add(Symbol.PLUS, [REDUCE, 25])
1513+  .add(Symbol.RIGHT_PAREN, [REDUCE, 25])
1514+  .add(Symbol.LESS_THAN, [REDUCE, 25])
1515+  .add(Symbol.GREATER_THAN, [REDUCE, 25])
1516+  .add(Symbol.NOT, [REDUCE, 25])
1517+  .add(Symbol.MINUS, [REDUCE, 25])
1518+  .add(Symbol.ASTERISK, [REDUCE, 25])
1519+  .add(Symbol.DIVIDE, [REDUCE, 25])
1520+  .add(Symbol.CARROT, [REDUCE, 25])
1521+  .add(Symbol.SEMI_COLON, [REDUCE, 25])
1522+  .add(Symbol.COMMA, [REDUCE, 25])
1523+  .build();
1524+table[13] = ObjectBuilder
1525+  .add(Symbol.ERROR, 36)
1526+  .add(Symbol.EOF, [REDUCE, 26])
1527+  .add(Symbol.AMPERSAND, [REDUCE, 26])
1528+  .add(Symbol.EQUALS, [REDUCE, 26])
1529+  .add(Symbol.PLUS, [REDUCE, 26])
1530+  .add(Symbol.RIGHT_PAREN, [REDUCE, 26])
1531+  .add(Symbol.LESS_THAN, [REDUCE, 26])
1532+  .add(Symbol.GREATER_THAN, [REDUCE, 26])
1533+  .add(Symbol.NOT, [REDUCE, 26])
1534+  .add(Symbol.MINUS, [REDUCE, 26])
1535+  .add(Symbol.ASTERISK, [REDUCE, 26])
1536+  .add(Symbol.DIVIDE, [REDUCE, 26])
1537+  .add(Symbol.CARROT, [REDUCE, 26])
1538+  .add(Symbol.SEMI_COLON, [REDUCE, 26])
1539+  .add(Symbol.COMMA, [REDUCE, 26])
1540+  .add(Symbol.VARIABLE, [SHIFT, 37])
1541+  .add(Symbol.POUND, [SHIFT, 18])
1542+  .build();
1543+table[14] = ObjectBuilder
1544+  .add(Symbol.EOF, [REDUCE, 36])
1545+  .add(Symbol.AMPERSAND, [REDUCE, 36])
1546+  .add(Symbol.EQUALS, [REDUCE, 36])
1547+  .add(Symbol.PLUS, [REDUCE, 36])
1548+  .add(Symbol.RIGHT_PAREN, [REDUCE, 36])
1549+  .add(Symbol.LESS_THAN, [REDUCE, 36])
1550+  .add(Symbol.GREATER_THAN, [REDUCE, 36])
1551+  .add(Symbol.NOT, [REDUCE, 36])
1552+  .add(Symbol.MINUS, [REDUCE, 36])
1553+  .add(Symbol.ASTERISK, [REDUCE, 36])
1554+  .add(Symbol.DIVIDE, [REDUCE, 36])
1555+  .add(Symbol.CARROT, [REDUCE, 36])
1556+  .add(Symbol.SEMI_COLON, [REDUCE, 36])
1557+  .add(Symbol.COMMA, [REDUCE, 36])
1558+  .add(33, [REDUCE, 36])
1559+  .add(Symbol.POUND, [SHIFT, 38])
1560+  .build();
1561+table[15] = ObjectBuilder
1562+  .add(Symbol.EOF, [REDUCE, 38])
1563+  .add(Symbol.AMPERSAND, [REDUCE, 38])
1564+  .add(Symbol.EQUALS, [REDUCE, 38])
1565+  .add(Symbol.PLUS, [REDUCE, 38])
1566+  .add(Symbol.RIGHT_PAREN, [REDUCE, 38])
1567+  .add(Symbol.LESS_THAN, [REDUCE, 38])
1568+  .add(Symbol.GREATER_THAN, [REDUCE, 38])
1569+  .add(Symbol.NOT, [REDUCE, 38])
1570+  .add(Symbol.MINUS, [REDUCE, 38])
1571+  .add(Symbol.ASTERISK, [REDUCE, 38])
1572+  .add(Symbol.DIVIDE, [REDUCE, 38])
1573+  .add(Symbol.CARROT, [REDUCE, 38])
1574+  .add(Symbol.SEMI_COLON, [REDUCE, 38])
1575+  .add(Symbol.COMMA, [REDUCE, 38])
1576+  .add(33, [SHIFT, 39])
1577+  .add(Symbol.PERCENT, [REDUCE, 38])
1578+  .add(38, [REDUCE, 38])
1579+  .build();
1580+table[16] = ObjectBuilder
1581+  .add(Symbol.EOF, [REDUCE, 28])
1582+  .add(Symbol.AMPERSAND, [REDUCE, 28])
1583+  .add(Symbol.EQUALS, [REDUCE, 28])
1584+  .add(Symbol.PLUS, [REDUCE, 28])
1585+  .add(Symbol.RIGHT_PAREN, [REDUCE, 28])
1586+  .add(Symbol.LESS_THAN, [REDUCE, 28])
1587+  .add(Symbol.GREATER_THAN, [REDUCE, 28])
1588+  .add(Symbol.NOT, [REDUCE, 28])
1589+  .add(Symbol.MINUS, [REDUCE, 28])
1590+  .add(Symbol.ASTERISK, [REDUCE, 28])
1591+  .add(Symbol.DIVIDE, [REDUCE, 28])
1592+  .add(Symbol.CARROT, [REDUCE, 28])
1593+  .add(Symbol.COLON, [SHIFT, 40])
1594+  .add(Symbol.SEMI_COLON, [REDUCE, 28])
1595+  .add(Symbol.COMMA, [REDUCE, 28])
1596+  .build();
1597+table[17] = ObjectBuilder
1598+  .add(Symbol.EOF, [REDUCE, 30])
1599+  .add(Symbol.AMPERSAND, [REDUCE, 30])
1600+  .add(Symbol.EQUALS, [REDUCE, 30])
1601+  .add(Symbol.PLUS, [REDUCE, 30])
1602+  .add(Symbol.RIGHT_PAREN, [REDUCE, 30])
1603+  .add(Symbol.LESS_THAN, [REDUCE, 30])
1604+  .add(Symbol.GREATER_THAN, [REDUCE, 30])
1605+  .add(Symbol.NOT, [REDUCE, 30])
1606+  .add(Symbol.MINUS, [REDUCE, 30])
1607+  .add(Symbol.ASTERISK, [REDUCE, 30])
1608+  .add(Symbol.DIVIDE, [REDUCE, 30])
1609+  .add(Symbol.CARROT, [REDUCE, 30])
1610+  .add(Symbol.COLON, [SHIFT, 41])
1611+  .add(Symbol.SEMI_COLON, [REDUCE, 30])
1612+  .add(Symbol.COMMA, [REDUCE, 30])
1613+  .build();
1614+table[18] = ObjectBuilder
1615+  .add(Symbol.VARIABLE, [SHIFT, 42])
1616+  .build();
1617+table[19] = ObjectBuilder
1618+  .add(Symbol.END, [ACCEPT, 1])
1619+  .build();
1620+table[20] = ObjectBuilder
1621+  .add(Symbol.ERROR, 13)
1622+  .add(Symbol.EXPRESSION, 43)
1623+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1624+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1625+  .add(Symbol.TIME_24, [SHIFT, 5])
1626+  .add(Symbol.NUMBER, 6)
1627+  .add(Symbol.STRING, [SHIFT, 7])
1628+  .add(Symbol.PLUS, [SHIFT, 10])
1629+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1630+  .add(Symbol.MINUS, [SHIFT, 9])
1631+  .add(Symbol.FUNCTION, [SHIFT, 11])
1632+  .add(Symbol.CELL, 12)
1633+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1634+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1635+  .add(Symbol.VARIABLE, [SHIFT, 14])
1636+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1637+  .add(Symbol.POUND, [SHIFT, 18])
1638+  .build();
1639+table[21] = ObjectBuilder
1640+  .add(Symbol.ERROR, 13)
1641+  .add(Symbol.EXPRESSION, 44)
1642+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1643+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1644+  .add(Symbol.TIME_24, [SHIFT, 5])
1645+  .add(Symbol.NUMBER, 6)
1646+  .add(Symbol.STRING, [SHIFT, 7])
1647+  .add(Symbol.PLUS, [SHIFT, 10])
1648+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1649+  .add(Symbol.MINUS, [SHIFT, 9])
1650+  .add(Symbol.FUNCTION, [SHIFT, 11])
1651+  .add(Symbol.CELL, 12)
1652+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1653+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1654+  .add(Symbol.VARIABLE, [SHIFT, 14])
1655+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1656+  .add(Symbol.POUND, [SHIFT, 18])
1657+  .build();
1658+table[22] = ObjectBuilder
1659+  .add(Symbol.ERROR, 13)
1660+  .add(Symbol.EXPRESSION, 45)
1661+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1662+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1663+  .add(Symbol.TIME_24, [SHIFT, 5])
1664+  .add(Symbol.NUMBER, 6)
1665+  .add(Symbol.STRING, [SHIFT, 7])
1666+  .add(Symbol.PLUS, [SHIFT, 10])
1667+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1668+  .add(Symbol.MINUS, [SHIFT, 9])
1669+  .add(Symbol.FUNCTION, [SHIFT, 11])
1670+  .add(Symbol.CELL, 12)
1671+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1672+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1673+  .add(Symbol.VARIABLE, [SHIFT, 14])
1674+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1675+  .add(Symbol.POUND, [SHIFT, 18])
1676+  .build();
1677+table[23] = ObjectBuilder
1678+  .add(Symbol.ERROR, 13)
1679+  .add(Symbol.EXPRESSION, 48)
1680+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1681+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1682+  .add(Symbol.TIME_24, [SHIFT, 5])
1683+  .add(Symbol.NUMBER, 6)
1684+  .add(Symbol.STRING, [SHIFT, 7])
1685+  .add(Symbol.EQUALS, [SHIFT, 46])
1686+  .add(Symbol.PLUS, [SHIFT, 10])
1687+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1688+  .add(Symbol.GREATER_THAN, [SHIFT, 47])
1689+  .add(Symbol.MINUS, [SHIFT, 9])
1690+  .add(Symbol.FUNCTION, [SHIFT, 11])
1691+  .add(Symbol.CELL, 12)
1692+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1693+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1694+  .add(Symbol.VARIABLE, [SHIFT, 14])
1695+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1696+  .add(Symbol.POUND, [SHIFT, 18])
1697+  .build();
1698+table[24] = ObjectBuilder
1699+  .add(Symbol.ERROR, 13)
1700+  .add(Symbol.EXPRESSION, 50)
1701+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1702+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1703+  .add(Symbol.TIME_24, [SHIFT, 5])
1704+  .add(Symbol.NUMBER, 6)
1705+  .add(Symbol.STRING, [SHIFT, 7])
1706+  .add(Symbol.EQUALS, [SHIFT, 49])
1707+  .add(Symbol.PLUS, [SHIFT, 10])
1708+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1709+  .add(Symbol.MINUS, [SHIFT, 9])
1710+  .add(Symbol.FUNCTION, [SHIFT, 11])
1711+  .add(Symbol.CELL, 12)
1712+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1713+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1714+  .add(Symbol.VARIABLE, [SHIFT, 14])
1715+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1716+  .add(Symbol.POUND, [SHIFT, 18])
1717+  .build();
1718+table[25] = ObjectBuilder
1719+  .add(Symbol.ERROR, 13)
1720+  .add(Symbol.EXPRESSION, 51)
1721+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1722+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1723+  .add(Symbol.TIME_24, [SHIFT, 5])
1724+  .add(Symbol.NUMBER, 6)
1725+  .add(Symbol.STRING, [SHIFT, 7])
1726+  .add(Symbol.PLUS, [SHIFT, 10])
1727+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1728+  .add(Symbol.MINUS, [SHIFT, 9])
1729+  .add(Symbol.FUNCTION, [SHIFT, 11])
1730+  .add(Symbol.CELL, 12)
1731+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1732+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1733+  .add(Symbol.VARIABLE, [SHIFT, 14])
1734+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1735+  .add(Symbol.POUND, [SHIFT, 18])
1736+  .build();
1737+table[26] = ObjectBuilder
1738+  .add(Symbol.ERROR, 13)
1739+  .add(Symbol.EXPRESSION, 52)
1740+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1741+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1742+  .add(Symbol.TIME_24, [SHIFT, 5])
1743+  .add(Symbol.NUMBER, 6)
1744+  .add(Symbol.STRING, [SHIFT, 7])
1745+  .add(Symbol.PLUS, [SHIFT, 10])
1746+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1747+  .add(Symbol.MINUS, [SHIFT, 9])
1748+  .add(Symbol.FUNCTION, [SHIFT, 11])
1749+  .add(Symbol.CELL, 12)
1750+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1751+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1752+  .add(Symbol.VARIABLE, [SHIFT, 14])
1753+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1754+  .add(Symbol.POUND, [SHIFT, 18])
1755+  .build();
1756+table[27] = ObjectBuilder
1757+  .add(Symbol.ERROR, 13)
1758+  .add(Symbol.EXPRESSION, 53)
1759+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1760+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1761+  .add(Symbol.TIME_24, [SHIFT, 5])
1762+  .add(Symbol.NUMBER, 6)
1763+  .add(Symbol.STRING, [SHIFT, 7])
1764+  .add(Symbol.PLUS, [SHIFT, 10])
1765+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1766+  .add(Symbol.MINUS, [SHIFT, 9])
1767+  .add(Symbol.FUNCTION, [SHIFT, 11])
1768+  .add(Symbol.CELL, 12)
1769+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1770+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1771+  .add(Symbol.VARIABLE, [SHIFT, 14])
1772+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1773+  .add(Symbol.POUND, [SHIFT, 18])
1774+  .build();
1775+table[28] = ObjectBuilder
1776+  .add(Symbol.ERROR, 13)
1777+  .add(Symbol.EXPRESSION, 54)
1778+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1779+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1780+  .add(Symbol.TIME_24, [SHIFT, 5])
1781+  .add(Symbol.NUMBER, 6)
1782+  .add(Symbol.STRING, [SHIFT, 7])
1783+  .add(Symbol.PLUS, [SHIFT, 10])
1784+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1785+  .add(Symbol.MINUS, [SHIFT, 9])
1786+  .add(Symbol.FUNCTION, [SHIFT, 11])
1787+  .add(Symbol.CELL, 12)
1788+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1789+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1790+  .add(Symbol.VARIABLE, [SHIFT, 14])
1791+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1792+  .add(Symbol.POUND, [SHIFT, 18])
1793+  .build();
1794+table[29] = ObjectBuilder
1795+  .add(Symbol.ERROR, 13)
1796+  .add(Symbol.EXPRESSION, 55)
1797+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1798+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1799+  .add(Symbol.TIME_24, [SHIFT, 5])
1800+  .add(Symbol.NUMBER, 6)
1801+  .add(Symbol.STRING, [SHIFT, 7])
1802+  .add(Symbol.PLUS, [SHIFT, 10])
1803+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1804+  .add(Symbol.MINUS, [SHIFT, 9])
1805+  .add(Symbol.FUNCTION, [SHIFT, 11])
1806+  .add(Symbol.CELL, 12)
1807+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1808+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1809+  .add(Symbol.VARIABLE, [SHIFT, 14])
1810+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1811+  .add(Symbol.POUND, [SHIFT, 18])
1812+  .build();
1813+table[30] = ObjectBuilder
1814+  .add(Symbol.VARIABLE, [SHIFT, 56])
1815+  .build();
1816+table[31] = ObjectBuilder
1817+  .add(Symbol.EOF, [REDUCE, 40])
1818+  .add(Symbol.AMPERSAND, [REDUCE, 40])
1819+  .add(Symbol.EQUALS, [REDUCE, 40])
1820+  .add(Symbol.PLUS, [REDUCE, 40])
1821+  .add(Symbol.RIGHT_PAREN, [REDUCE, 40])
1822+  .add(Symbol.LESS_THAN, [REDUCE, 40])
1823+  .add(Symbol.GREATER_THAN, [REDUCE, 40])
1824+  .add(Symbol.NOT, [REDUCE, 40])
1825+  .add(Symbol.MINUS, [REDUCE, 40])
1826+  .add(Symbol.ASTERISK, [REDUCE, 40])
1827+  .add(Symbol.DIVIDE, [REDUCE, 40])
1828+  .add(Symbol.CARROT, [REDUCE, 40])
1829+  .add(Symbol.SEMI_COLON, [REDUCE, 40])
1830+  .add(Symbol.COMMA, [REDUCE, 40])
1831+  .add(Symbol.PERCENT, [REDUCE, 40])
1832+  .add(38, [REDUCE, 40])
1833+  .build();
1834+table[32] = ObjectBuilder
1835+  .add(Symbol.AMPERSAND, [SHIFT, 20])
1836+  .add(Symbol.EQUALS, [SHIFT, 21])
1837+  .add(Symbol.PLUS, [SHIFT, 22])
1838+  .add(Symbol.RIGHT_PAREN, [SHIFT, 57])
1839+  .add(Symbol.LESS_THAN, [SHIFT, 23])
1840+  .add(Symbol.GREATER_THAN, [SHIFT, 24])
1841+  .add(Symbol.NOT, [SHIFT, 25])
1842+  .add(Symbol.MINUS, [SHIFT, 26])
1843+  .add(Symbol.ASTERISK, [SHIFT, 27])
1844+  .add(Symbol.DIVIDE, [SHIFT, 28])
1845+  .add(Symbol.CARROT, [SHIFT, 29])
1846+  .build();
1847+table[33] = ObjectBuilder
1848+  .add(Symbol.EOF, [REDUCE, 21])
1849+  .add(Symbol.AMPERSAND, [SHIFT, 20])
1850+  .add(Symbol.EQUALS, [REDUCE, 21])
1851+  .add(Symbol.PLUS, [REDUCE, 21])
1852+  .add(Symbol.RIGHT_PAREN, [REDUCE, 21])
1853+  .add(Symbol.LESS_THAN, [REDUCE, 21])
1854+  .add(Symbol.GREATER_THAN, [REDUCE, 21])
1855+  .add(Symbol.NOT, [REDUCE, 21])
1856+  .add(Symbol.MINUS, [REDUCE, 21])
1857+  .add(Symbol.ASTERISK, [SHIFT, 27])
1858+  .add(Symbol.DIVIDE, [SHIFT, 28])
1859+  .add(Symbol.CARROT, [SHIFT, 29])
1860+  .add(Symbol.SEMI_COLON, [REDUCE, 21])
1861+  .add(Symbol.COMMA, [REDUCE, 21])
1862+  .build();
1863+table[34] = ObjectBuilder
1864+  .add(Symbol.EOF, [REDUCE, 22])
1865+  .add(Symbol.AMPERSAND, [SHIFT, 20])
1866+  .add(Symbol.EQUALS, [REDUCE, 22])
1867+  .add(Symbol.PLUS, [REDUCE, 22])
1868+  .add(Symbol.RIGHT_PAREN, [REDUCE, 22])
1869+  .add(Symbol.LESS_THAN, [REDUCE, 22])
1870+  .add(Symbol.GREATER_THAN, [REDUCE, 22])
1871+  .add(Symbol.NOT, [REDUCE, 22])
1872+  .add(Symbol.MINUS, [REDUCE, 22])
1873+  .add(Symbol.ASTERISK, [SHIFT, 27])
1874+  .add(Symbol.DIVIDE, [SHIFT, 28])
1875+  .add(Symbol.CARROT, [SHIFT, 29])
1876+  .add(Symbol.SEMI_COLON, [REDUCE, 22])
1877+  .add(Symbol.COMMA, [REDUCE, 22])
1878+  .build();
1879+table[35] = ObjectBuilder
1880+  .add(Symbol.ERROR, 13)
1881+  .add(Symbol.EXPRESSION, 60)
1882+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1883+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1884+  .add(Symbol.TIME_24, [SHIFT, 5])
1885+  .add(Symbol.NUMBER, 6)
1886+  .add(Symbol.STRING, [SHIFT, 7])
1887+  .add(Symbol.PLUS, [SHIFT, 10])
1888+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1889+  .add(Symbol.RIGHT_PAREN, [SHIFT, 58])
1890+  .add(Symbol.MINUS, [SHIFT, 9])
1891+  .add(Symbol.FUNCTION, [SHIFT, 11])
1892+  .add(Symbol.EXP_SEQ, 59)
1893+  .add(Symbol.CELL, 12)
1894+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1895+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1896+  .add(Symbol.ARRAY, [SHIFT, 61])
1897+  .add(Symbol.VARIABLE, [SHIFT, 14])
1898+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
1899+  .add(Symbol.POUND, [SHIFT, 18])
1900+  .build();
1901+table[36] = ObjectBuilder
1902+  .add(Symbol.EOF, [REDUCE, 27])
1903+  .add(Symbol.AMPERSAND, [REDUCE, 27])
1904+  .add(Symbol.EQUALS, [REDUCE, 27])
1905+  .add(Symbol.PLUS, [REDUCE, 27])
1906+  .add(Symbol.RIGHT_PAREN, [REDUCE, 27])
1907+  .add(Symbol.LESS_THAN, [REDUCE, 27])
1908+  .add(Symbol.GREATER_THAN, [REDUCE, 27])
1909+  .add(Symbol.NOT, [REDUCE, 27])
1910+  .add(Symbol.MINUS, [REDUCE, 27])
1911+  .add(Symbol.ASTERISK, [REDUCE, 27])
1912+  .add(Symbol.DIVIDE, [REDUCE, 27])
1913+  .add(Symbol.CARROT, [REDUCE, 27])
1914+  .add(Symbol.SEMI_COLON, [REDUCE, 27])
1915+  .add(Symbol.COMMA, [REDUCE, 27])
1916+  .build();
1917+table[37] = ObjectBuilder
1918+  .add(Symbol.POUND, [SHIFT, 38])
1919+  .build();
1920+table[38] = ObjectBuilder
1921+  .add(Symbol.VARIABLE, [SHIFT, 62])
1922+  .build();
1923+table[39] = ObjectBuilder
1924+  .add(Symbol.NUMBER_UPPER, [SHIFT, 63])
1925+  .build();
1926+table[40] = ObjectBuilder
1927+  .add(Symbol.FIXEDCELL, [SHIFT, 64])
1928+  .build();
1929+table[41] = ObjectBuilder
1930+  .add(Symbol.CELL_UPPER, [SHIFT, 65])
1931+  .build();
1932+table[42] = ObjectBuilder
1933+  .add(Symbol.EXCLAMATION_POINT, [SHIFT, 66])
1934+  .build();
1935+table[43] = ObjectBuilder
1936+  .add(Symbol.EOF, [REDUCE, 7])
1937+  .add(Symbol.AMPERSAND, [REDUCE, 7])
1938+  .add(Symbol.EQUALS, [REDUCE, 7])
1939+  .add(Symbol.PLUS, [REDUCE, 7])
1940+  .add(Symbol.RIGHT_PAREN, [REDUCE, 7])
1941+  .add(Symbol.LESS_THAN, [REDUCE, 7])
1942+  .add(Symbol.GREATER_THAN, [REDUCE, 7])
1943+  .add(Symbol.NOT, [REDUCE, 7])
1944+  .add(Symbol.MINUS, [REDUCE, 7])
1945+  .add(Symbol.ASTERISK, [REDUCE, 7])
1946+  .add(Symbol.DIVIDE, [REDUCE, 7])
1947+  .add(Symbol.CARROT, [REDUCE, 7])
1948+  .add(Symbol.SEMI_COLON, [REDUCE, 7])
1949+  .add(Symbol.COMMA, [REDUCE, 7])
1950+  .build();
1951+table[44] = ObjectBuilder
1952+  .add(Symbol.EOF, [REDUCE, 8])
1953+  .add(Symbol.AMPERSAND, [SHIFT, 20])
1954+  .add(Symbol.EQUALS, [REDUCE, 8])
1955+  .add(Symbol.PLUS, [SHIFT, 22])
1956+  .add(Symbol.RIGHT_PAREN, [REDUCE, 8])
1957+  .add(Symbol.LESS_THAN, [SHIFT, 23])
1958+  .add(Symbol.GREATER_THAN, [SHIFT, 24])
1959+  .add(Symbol.NOT, [SHIFT, 25])
1960+  .add(Symbol.MINUS, [SHIFT, 26])
1961+  .add(Symbol.ASTERISK, [SHIFT, 27])
1962+  .add(Symbol.DIVIDE, [SHIFT, 28])
1963+  .add(Symbol.CARROT, [SHIFT, 29])
1964+  .add(Symbol.SEMI_COLON, [REDUCE, 8])
1965+  .add(Symbol.COMMA, [REDUCE, 8])
1966+  .build();
1967+table[45] = ObjectBuilder
1968+  .add(Symbol.EOF, [REDUCE, 9])
1969+  .add(Symbol.AMPERSAND, [SHIFT, 20])
1970+  .add(Symbol.EQUALS, [REDUCE, 9])
1971+  .add(Symbol.PLUS, [REDUCE, 9])
1972+  .add(Symbol.RIGHT_PAREN, [REDUCE, 9])
1973+  .add(Symbol.LESS_THAN, [REDUCE, 9])
1974+  .add(Symbol.GREATER_THAN, [REDUCE, 9])
1975+  .add(Symbol.NOT, [REDUCE, 9])
1976+  .add(Symbol.MINUS, [REDUCE, 9])
1977+  .add(Symbol.ASTERISK, [SHIFT, 27])
1978+  .add(Symbol.DIVIDE, [SHIFT, 28])
1979+  .add(Symbol.CARROT, [SHIFT, 29])
1980+  .add(Symbol.SEMI_COLON, [REDUCE, 9])
1981+  .add(Symbol.COMMA, [REDUCE, 9])
1982+  .build();
1983+table[46] = ObjectBuilder
1984+  .add(Symbol.ERROR, 13)
1985+  .add(Symbol.EXPRESSION, 67)
1986+  .add(Symbol.VARIABLE_SEQUENCE, 3)
1987+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
1988+  .add(Symbol.TIME_24, [SHIFT, 5])
1989+  .add(Symbol.NUMBER, 6)
1990+  .add(Symbol.STRING, [SHIFT, 7])
1991+  .add(Symbol.PLUS, [SHIFT, 10])
1992+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
1993+  .add(Symbol.MINUS, [SHIFT, 9])
1994+  .add(Symbol.FUNCTION, [SHIFT, 11])
1995+  .add(Symbol.CELL, 12)
1996+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
1997+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
1998+  .add(Symbol.VARIABLE, [SHIFT, 14])
1999+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
2000+  .add(Symbol.POUND, [SHIFT, 18])
2001+  .build();
2002+table[47] = ObjectBuilder
2003+  .add(Symbol.ERROR, 13)
2004+  .add(Symbol.EXPRESSION, 68)
2005+  .add(Symbol.VARIABLE_SEQUENCE, 3)
2006+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
2007+  .add(Symbol.TIME_24, [SHIFT, 5])
2008+  .add(Symbol.NUMBER, 6)
2009+  .add(Symbol.STRING, [SHIFT, 7])
2010+  .add(Symbol.PLUS, [SHIFT, 10])
2011+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
2012+  .add(Symbol.MINUS, [SHIFT, 9])
2013+  .add(Symbol.FUNCTION, [SHIFT, 11])
2014+  .add(Symbol.CELL, 12)
2015+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
2016+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
2017+  .add(Symbol.VARIABLE, [SHIFT, 14])
2018+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
2019+  .add(Symbol.POUND, [SHIFT, 18])
2020+  .build();
2021+table[48] = ObjectBuilder
2022+  .add(Symbol.EOF, [REDUCE, 16])
2023+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2024+  .add(Symbol.EQUALS, [REDUCE, 16])
2025+  .add(Symbol.PLUS, [SHIFT, 22])
2026+  .add(Symbol.RIGHT_PAREN, [REDUCE, 16])
2027+  .add(Symbol.LESS_THAN, [REDUCE, 16])
2028+  .add(Symbol.GREATER_THAN, [REDUCE, 16])
2029+  .add(Symbol.NOT, [REDUCE, 16])
2030+  .add(Symbol.MINUS, [SHIFT, 26])
2031+  .add(Symbol.ASTERISK, [SHIFT, 27])
2032+  .add(Symbol.DIVIDE, [SHIFT, 28])
2033+  .add(Symbol.CARROT, [SHIFT, 29])
2034+  .add(Symbol.SEMI_COLON, [REDUCE, 16])
2035+  .add(Symbol.COMMA, [REDUCE, 16])
2036+  .build();
2037+table[49] = ObjectBuilder
2038+  .add(Symbol.ERROR, 13)
2039+  .add(Symbol.EXPRESSION, 69)
2040+  .add(Symbol.VARIABLE_SEQUENCE, 3)
2041+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
2042+  .add(Symbol.TIME_24, [SHIFT, 5])
2043+  .add(Symbol.NUMBER, 6)
2044+  .add(Symbol.STRING, [SHIFT, 7])
2045+  .add(Symbol.PLUS, [SHIFT, 10])
2046+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
2047+  .add(Symbol.MINUS, [SHIFT, 9])
2048+  .add(Symbol.FUNCTION, [SHIFT, 11])
2049+  .add(Symbol.CELL, 12)
2050+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
2051+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
2052+  .add(Symbol.VARIABLE, [SHIFT, 14])
2053+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
2054+  .add(Symbol.POUND, [SHIFT, 18])
2055+  .build();
2056+table[50] = ObjectBuilder
2057+  .add(Symbol.EOF, [REDUCE, 15])
2058+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2059+  .add(Symbol.EQUALS, [REDUCE, 15])
2060+  .add(Symbol.PLUS, [SHIFT, 22])
2061+  .add(Symbol.RIGHT_PAREN, [REDUCE, 15])
2062+  .add(Symbol.LESS_THAN, [REDUCE, 15])
2063+  .add(Symbol.GREATER_THAN, [REDUCE, 15])
2064+  .add(Symbol.NOT, [REDUCE, 15])
2065+  .add(Symbol.MINUS, [SHIFT, 26])
2066+  .add(Symbol.ASTERISK, [SHIFT, 27])
2067+  .add(Symbol.DIVIDE, [SHIFT, 28])
2068+  .add(Symbol.CARROT, [SHIFT, 29])
2069+  .add(Symbol.SEMI_COLON, [REDUCE, 15])
2070+  .add(Symbol.COMMA, [REDUCE, 15])
2071+  .build();
2072+table[51] = ObjectBuilder
2073+  .add(Symbol.EOF, [REDUCE, 14])
2074+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2075+  .add(Symbol.EQUALS, [REDUCE, 14])
2076+  .add(Symbol.PLUS, [SHIFT, 22])
2077+  .add(Symbol.RIGHT_PAREN, [REDUCE, 14])
2078+  .add(Symbol.LESS_THAN, [SHIFT, 23])
2079+  .add(Symbol.GREATER_THAN, [SHIFT, 24])
2080+  .add(Symbol.NOT, [REDUCE, 14])
2081+  .add(Symbol.MINUS, [SHIFT, 26])
2082+  .add(Symbol.ASTERISK, [SHIFT, 27])
2083+  .add(Symbol.DIVIDE, [SHIFT, 28])
2084+  .add(Symbol.CARROT, [SHIFT, 29])
2085+  .add(Symbol.SEMI_COLON, [REDUCE, 14])
2086+  .add(Symbol.COMMA, [REDUCE, 14])
2087+  .build();
2088+table[52] = ObjectBuilder
2089+  .add(Symbol.EOF, [REDUCE, 17])
2090+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2091+  .add(Symbol.EQUALS, [REDUCE, 17])
2092+  .add(Symbol.PLUS, [REDUCE, 17])
2093+  .add(Symbol.RIGHT_PAREN, [REDUCE, 17])
2094+  .add(Symbol.LESS_THAN, [REDUCE, 17])
2095+  .add(Symbol.GREATER_THAN, [REDUCE, 17])
2096+  .add(Symbol.NOT, [REDUCE, 17])
2097+  .add(Symbol.MINUS, [REDUCE, 17])
2098+  .add(Symbol.ASTERISK, [SHIFT, 27])
2099+  .add(Symbol.DIVIDE, [SHIFT, 28])
2100+  .add(Symbol.CARROT, [SHIFT, 29])
2101+  .add(Symbol.SEMI_COLON, [REDUCE, 17])
2102+  .add(Symbol.COMMA, [REDUCE, 17])
2103+  .build();
2104+table[53] = ObjectBuilder
2105+  .add(Symbol.EOF, [REDUCE, 18])
2106+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2107+  .add(Symbol.EQUALS, [REDUCE, 18])
2108+  .add(Symbol.PLUS, [REDUCE, 18])
2109+  .add(Symbol.RIGHT_PAREN, [REDUCE, 18])
2110+  .add(Symbol.LESS_THAN, [REDUCE, 18])
2111+  .add(Symbol.GREATER_THAN, [REDUCE, 18])
2112+  .add(Symbol.NOT, [REDUCE, 18])
2113+  .add(Symbol.MINUS, [REDUCE, 18])
2114+  .add(Symbol.ASTERISK, [REDUCE, 18])
2115+  .add(Symbol.DIVIDE, [REDUCE, 18])
2116+  .add(Symbol.CARROT, [SHIFT, 29])
2117+  .add(Symbol.SEMI_COLON, [REDUCE, 18])
2118+  .add(Symbol.COMMA, [REDUCE, 18])
2119+  .build();
2120+table[54] = ObjectBuilder
2121+  .add(Symbol.EOF, [REDUCE, 19])
2122+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2123+  .add(Symbol.EQUALS, [REDUCE, 19])
2124+  .add(Symbol.PLUS, [REDUCE, 19])
2125+  .add(Symbol.RIGHT_PAREN, [REDUCE, 19])
2126+  .add(Symbol.LESS_THAN, [REDUCE, 19])
2127+  .add(Symbol.GREATER_THAN, [REDUCE, 19])
2128+  .add(Symbol.NOT, [REDUCE, 19])
2129+  .add(Symbol.MINUS, [REDUCE, 19])
2130+  .add(Symbol.ASTERISK, [REDUCE, 19])
2131+  .add(Symbol.DIVIDE, [REDUCE, 19])
2132+  .add(Symbol.CARROT, [SHIFT, 29])
2133+  .add(Symbol.SEMI_COLON, [REDUCE, 19])
2134+  .add(Symbol.COMMA, [REDUCE, 19])
2135+  .build();
2136+table[55] = ObjectBuilder
2137+  .add(Symbol.EOF, [REDUCE, 20])
2138+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2139+  .add(Symbol.EQUALS, [REDUCE, 20])
2140+  .add(Symbol.PLUS, [REDUCE, 20])
2141+  .add(Symbol.RIGHT_PAREN, [REDUCE, 20])
2142+  .add(Symbol.LESS_THAN, [REDUCE, 20])
2143+  .add(Symbol.GREATER_THAN, [REDUCE, 20])
2144+  .add(Symbol.NOT, [REDUCE, 20])
2145+  .add(Symbol.MINUS, [REDUCE, 20])
2146+  .add(Symbol.ASTERISK, [REDUCE, 20])
2147+  .add(Symbol.DIVIDE, [REDUCE, 20])
2148+  .add(Symbol.CARROT, [REDUCE, 20])
2149+  .add(Symbol.SEMI_COLON, [REDUCE, 20])
2150+  .add(Symbol.COMMA, [REDUCE, 20])
2151+  .build();
2152+table[56] = ObjectBuilder
2153+  .add(Symbol.EOF, [REDUCE, 37])
2154+  .add(Symbol.AMPERSAND, [REDUCE, 37])
2155+  .add(Symbol.EQUALS, [REDUCE, 37])
2156+  .add(Symbol.PLUS, [REDUCE, 37])
2157+  .add(Symbol.RIGHT_PAREN, [REDUCE, 37])
2158+  .add(Symbol.LESS_THAN, [REDUCE, 37])
2159+  .add(Symbol.GREATER_THAN, [REDUCE, 37])
2160+  .add(Symbol.NOT, [REDUCE, 37])
2161+  .add(Symbol.MINUS, [REDUCE, 37])
2162+  .add(Symbol.ASTERISK, [REDUCE, 37])
2163+  .add(Symbol.DIVIDE, [REDUCE, 37])
2164+  .add(Symbol.CARROT, [REDUCE, 37])
2165+  .add(Symbol.SEMI_COLON, [REDUCE, 37])
2166+  .add(Symbol.COMMA, [REDUCE, 37])
2167+  .add(33, [REDUCE, 37])
2168+  .build();
2169+table[57] = ObjectBuilder
2170+  .add(Symbol.EOF, [REDUCE, 10])
2171+  .add(Symbol.AMPERSAND, [REDUCE, 10])
2172+  .add(Symbol.EQUALS, [REDUCE, 10])
2173+  .add(Symbol.PLUS, [REDUCE, 10])
2174+  .add(Symbol.RIGHT_PAREN, [REDUCE, 10])
2175+  .add(Symbol.LESS_THAN, [REDUCE, 10])
2176+  .add(Symbol.GREATER_THAN, [REDUCE, 10])
2177+  .add(Symbol.NOT, [REDUCE, 10])
2178+  .add(Symbol.MINUS, [REDUCE, 10])
2179+  .add(Symbol.ASTERISK, [REDUCE, 10])
2180+  .add(Symbol.DIVIDE, [REDUCE, 10])
2181+  .add(Symbol.CARROT, [REDUCE, 10])
2182+  .add(Symbol.SEMI_COLON, [REDUCE, 10])
2183+  .add(Symbol.COMMA, [REDUCE, 10])
2184+  .build();
2185+table[58] = ObjectBuilder
2186+  .add(Symbol.EOF, [REDUCE, 23])
2187+  .add(Symbol.AMPERSAND, [REDUCE, 23])
2188+  .add(Symbol.EQUALS, [REDUCE, 23])
2189+  .add(Symbol.PLUS, [REDUCE, 23])
2190+  .add(Symbol.RIGHT_PAREN, [REDUCE, 23])
2191+  .add(Symbol.LESS_THAN, [REDUCE, 23])
2192+  .add(Symbol.GREATER_THAN, [REDUCE, 23])
2193+  .add(Symbol.NOT, [REDUCE, 23])
2194+  .add(Symbol.MINUS, [REDUCE, 23])
2195+  .add(Symbol.ASTERISK, [REDUCE, 23])
2196+  .add(Symbol.DIVIDE, [REDUCE, 23])
2197+  .add(Symbol.CARROT, [REDUCE, 23])
2198+  .add(Symbol.SEMI_COLON, [REDUCE, 23])
2199+  .add(Symbol.COMMA, [REDUCE, 23])
2200+  .build();
2201+table[59] = ObjectBuilder
2202+  .add(Symbol.RIGHT_PAREN, [SHIFT, 70])
2203+  .add(Symbol.SEMI_COLON, [SHIFT, 71])
2204+  .add(Symbol.COMMA, [SHIFT, 72])
2205+  .build();
2206+table[60] = ObjectBuilder
2207+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2208+  .add(Symbol.EQUALS, [SHIFT, 21])
2209+  .add(Symbol.PLUS, [SHIFT, 22])
2210+  .add(Symbol.RIGHT_PAREN, [REDUCE, 32])
2211+  .add(Symbol.LESS_THAN, [SHIFT, 23])
2212+  .add(Symbol.GREATER_THAN, [SHIFT, 24])
2213+  .add(Symbol.NOT, [SHIFT, 25])
2214+  .add(Symbol.MINUS, [SHIFT, 26])
2215+  .add(Symbol.ASTERISK, [SHIFT, 27])
2216+  .add(Symbol.DIVIDE, [SHIFT, 28])
2217+  .add(Symbol.CARROT, [SHIFT, 29])
2218+  .add(Symbol.SEMI_COLON, [REDUCE, 32])
2219+  .add(Symbol.COMMA, [REDUCE, 32])
2220+  .build();
2221+table[61] = ObjectBuilder
2222+  .add(Symbol.RIGHT_PAREN, [REDUCE, 33])
2223+  .add(Symbol.SEMI_COLON, [REDUCE, 33])
2224+  .add(Symbol.COMMA, [REDUCE, 33])
2225+  .build();
2226+table[62] = ObjectBuilder
2227+  .add(Symbol.EXCLAMATION_POINT, [SHIFT, 73])
2228+  .build();
2229+table[63] = ObjectBuilder
2230+  .add(Symbol.EOF, [REDUCE, 39])
2231+  .add(Symbol.AMPERSAND, [REDUCE, 39])
2232+  .add(Symbol.EQUALS, [REDUCE, 39])
2233+  .add(Symbol.PLUS, [REDUCE, 39])
2234+  .add(Symbol.RIGHT_PAREN, [REDUCE, 39])
2235+  .add(Symbol.LESS_THAN, [REDUCE, 39])
2236+  .add(Symbol.GREATER_THAN, [REDUCE, 39])
2237+  .add(Symbol.NOT, [REDUCE, 39])
2238+  .add(Symbol.MINUS, [REDUCE, 39])
2239+  .add(Symbol.ASTERISK, [REDUCE, 39])
2240+  .add(Symbol.DIVIDE, [REDUCE, 39])
2241+  .add(Symbol.CARROT, [REDUCE, 39])
2242+  .add(Symbol.SEMI_COLON, [REDUCE, 39])
2243+  .add(Symbol.COMMA, [REDUCE, 39])
2244+  .add(Symbol.PERCENT, [REDUCE, 39])
2245+  .add(38, [REDUCE, 39]).build();
2246+table[64] = ObjectBuilder
2247+  .add(Symbol.EOF, [REDUCE, 29])
2248+  .add(Symbol.AMPERSAND, [REDUCE, 29])
2249+  .add(Symbol.EQUALS, [REDUCE, 29])
2250+  .add(Symbol.PLUS, [REDUCE, 29])
2251+  .add(Symbol.RIGHT_PAREN, [REDUCE, 29])
2252+  .add(Symbol.LESS_THAN, [REDUCE, 29])
2253+  .add(Symbol.GREATER_THAN, [REDUCE, 29])
2254+  .add(Symbol.NOT, [REDUCE, 29])
2255+  .add(Symbol.MINUS, [REDUCE, 29])
2256+  .add(Symbol.ASTERISK, [REDUCE, 29])
2257+  .add(Symbol.DIVIDE, [REDUCE, 29])
2258+  .add(Symbol.CARROT, [REDUCE, 29])
2259+  .add(Symbol.SEMI_COLON, [REDUCE, 29])
2260+  .add(Symbol.COMMA, [REDUCE, 29]).build();
2261+table[65] = ObjectBuilder
2262+  .add(Symbol.EOF, [REDUCE, 31])
2263+  .add(Symbol.AMPERSAND, [REDUCE, 31])
2264+  .add(Symbol.EQUALS, [REDUCE, 31])
2265+  .add(Symbol.PLUS, [REDUCE, 31])
2266+  .add(Symbol.RIGHT_PAREN, [REDUCE, 31])
2267+  .add(Symbol.LESS_THAN, [REDUCE, 31])
2268+  .add(Symbol.GREATER_THAN, [REDUCE, 31])
2269+  .add(Symbol.NOT, [REDUCE, 31])
2270+  .add(Symbol.MINUS, [REDUCE, 31])
2271+  .add(Symbol.ASTERISK, [REDUCE, 31])
2272+  .add(Symbol.DIVIDE, [REDUCE, 31])
2273+  .add(Symbol.CARROT, [REDUCE, 31])
2274+  .add(Symbol.SEMI_COLON, [REDUCE, 31])
2275+  .add(Symbol.COMMA, [REDUCE, 31]).build();
2276+table[66] = ObjectBuilder
2277+  .add(Symbol.EOF, [REDUCE, 41])
2278+  .add(Symbol.AMPERSAND, [REDUCE, 41])
2279+  .add(Symbol.EQUALS, [REDUCE, 41])
2280+  .add(Symbol.PLUS, [REDUCE, 41])
2281+  .add(Symbol.RIGHT_PAREN, [REDUCE, 41])
2282+  .add(Symbol.LESS_THAN, [REDUCE, 41])
2283+  .add(Symbol.GREATER_THAN, [REDUCE, 41])
2284+  .add(Symbol.NOT, [REDUCE, 41])
2285+  .add(Symbol.MINUS, [REDUCE, 41])
2286+  .add(Symbol.ASTERISK, [REDUCE, 41])
2287+  .add(Symbol.DIVIDE, [REDUCE, 41])
2288+  .add(Symbol.CARROT, [REDUCE, 41])
2289+  .add(Symbol.SEMI_COLON, [REDUCE, 41])
2290+  .add(Symbol.COMMA, [REDUCE, 41])
2291+  .add(Symbol.VARIABLE, [REDUCE, 41])
2292+  .add(Symbol.POUND, [REDUCE, 41]).build();
2293+table[67] = ObjectBuilder
2294+  .add(Symbol.EOF, [REDUCE, 11])
2295+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2296+  .add(Symbol.EQUALS, [REDUCE, 11])
2297+  .add(Symbol.PLUS, [SHIFT, 22])
2298+  .add(Symbol.RIGHT_PAREN, [REDUCE, 11])
2299+  .add(Symbol.LESS_THAN, [REDUCE, 11])
2300+  .add(Symbol.GREATER_THAN, [REDUCE, 11])
2301+  .add(Symbol.NOT, [REDUCE, 11])
2302+  .add(Symbol.MINUS, [SHIFT, 26])
2303+  .add(Symbol.ASTERISK, [SHIFT, 27])
2304+  .add(Symbol.DIVIDE, [SHIFT, 28])
2305+  .add(Symbol.CARROT, [SHIFT, 29])
2306+  .add(Symbol.SEMI_COLON, [REDUCE, 11])
2307+  .add(Symbol.COMMA, [REDUCE, 11]).build();
2308+table[68] = ObjectBuilder
2309+  .add(Symbol.EOF, [REDUCE, 13])
2310+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2311+  .add(Symbol.EQUALS, [REDUCE, 13])
2312+  .add(Symbol.PLUS, [SHIFT, 22])
2313+  .add(Symbol.RIGHT_PAREN, [REDUCE, 13])
2314+  .add(Symbol.LESS_THAN, [REDUCE, 13])
2315+  .add(Symbol.GREATER_THAN, [REDUCE, 13])
2316+  .add(Symbol.NOT, [REDUCE, 13])
2317+  .add(Symbol.MINUS, [SHIFT, 26])
2318+  .add(Symbol.ASTERISK, [SHIFT, 27])
2319+  .add(Symbol.DIVIDE, [SHIFT, 28])
2320+  .add(Symbol.CARROT, [SHIFT, 29])
2321+  .add(Symbol.SEMI_COLON, [REDUCE, 13])
2322+  .add(Symbol.COMMA, [REDUCE, 13]).build();
2323+table[69] = ObjectBuilder
2324+  .add(Symbol.EOF, [REDUCE, 12])
2325+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2326+  .add(Symbol.EQUALS, [REDUCE, 12])
2327+  .add(Symbol.PLUS, [SHIFT, 22])
2328+  .add(Symbol.RIGHT_PAREN, [REDUCE, 12])
2329+  .add(Symbol.LESS_THAN, [REDUCE, 12])
2330+  .add(Symbol.GREATER_THAN, [REDUCE, 12])
2331+  .add(Symbol.NOT, [REDUCE, 12])
2332+  .add(Symbol.MINUS, [SHIFT, 26])
2333+  .add(Symbol.ASTERISK, [SHIFT, 27])
2334+  .add(Symbol.DIVIDE, [SHIFT, 28])
2335+  .add(Symbol.CARROT, [SHIFT, 29])
2336+  .add(Symbol.SEMI_COLON, [REDUCE, 12])
2337+  .add(Symbol.COMMA, [REDUCE, 12]).build();
2338+table[70] = ObjectBuilder
2339+  .add(Symbol.EOF, [REDUCE, 24])
2340+  .add(Symbol.AMPERSAND, [REDUCE, 24])
2341+  .add(Symbol.EQUALS, [REDUCE, 24])
2342+  .add(Symbol.PLUS, [REDUCE, 24])
2343+  .add(Symbol.RIGHT_PAREN, [REDUCE, 24])
2344+  .add(Symbol.LESS_THAN, [REDUCE, 24])
2345+  .add(Symbol.GREATER_THAN, [REDUCE, 24])
2346+  .add(Symbol.NOT, [REDUCE, 24])
2347+  .add(Symbol.MINUS, [REDUCE, 24])
2348+  .add(Symbol.ASTERISK, [REDUCE, 24])
2349+  .add(Symbol.DIVIDE, [REDUCE, 24])
2350+  .add(Symbol.CARROT, [REDUCE, 24])
2351+  .add(Symbol.SEMI_COLON, [REDUCE, 24])
2352+  .add(Symbol.COMMA, [REDUCE, 24]).build();
2353+table[71] = ObjectBuilder
2354+  .add(Symbol.ERROR, 13)
2355+  .add(Symbol.EXPRESSION, 74)
2356+  .add(Symbol.VARIABLE_SEQUENCE, 3)
2357+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
2358+  .add(Symbol.TIME_24, [SHIFT, 5])
2359+  .add(Symbol.NUMBER, 6)
2360+  .add(Symbol.STRING, [SHIFT, 7])
2361+  .add(Symbol.EQUALS, [SHIFT, 21])
2362+  .add(Symbol.PLUS, [SHIFT, 10])
2363+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
2364+  .add(Symbol.MINUS, [SHIFT, 9])
2365+  .add(Symbol.FUNCTION, [SHIFT, 11])
2366+  .add(Symbol.CELL, 12)
2367+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
2368+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
2369+  .add(Symbol.VARIABLE, [SHIFT, 14])
2370+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
2371+  .add(Symbol.POUND, [SHIFT, 18]).build();
2372+table[72] = ObjectBuilder
2373+  .add(Symbol.ERROR, 13)
2374+  .add(Symbol.EXPRESSION, 75)
2375+  .add(Symbol.VARIABLE_SEQUENCE, 3)
2376+  .add(Symbol.TIME_AMPM, [SHIFT, 4])
2377+  .add(Symbol.TIME_24, [SHIFT, 5])
2378+  .add(Symbol.NUMBER, 6)
2379+  .add(Symbol.STRING, [SHIFT, 7])
2380+  .add(Symbol.EQUALS, [SHIFT, 21])
2381+  .add(Symbol.PLUS, [SHIFT, 10])
2382+  .add(Symbol.LEFT_PAREN, [SHIFT, 8])
2383+  .add(Symbol.MINUS, [SHIFT, 9])
2384+  .add(Symbol.FUNCTION, [SHIFT, 11])
2385+  .add(Symbol.CELL, 12)
2386+  .add(Symbol.FIXEDCELL, [SHIFT, 16])
2387+  .add(Symbol.CELL_UPPER, [SHIFT, 17])
2388+  .add(Symbol.VARIABLE, [SHIFT, 14])
2389+  .add(Symbol.NUMBER_UPPER, [SHIFT, 15])
2390+  .add(Symbol.POUND, [SHIFT, 18]).build();
2391+table[73] = ObjectBuilder
2392+  .add(Symbol.EOF, [REDUCE, 42])
2393+  .add(Symbol.AMPERSAND, [REDUCE, 42])
2394+  .add(Symbol.EQUALS, [REDUCE, 42])
2395+  .add(Symbol.PLUS, [REDUCE, 42])
2396+  .add(Symbol.RIGHT_PAREN, [REDUCE, 42])
2397+  .add(Symbol.LESS_THAN, [REDUCE, 42])
2398+  .add(Symbol.GREATER_THAN, [REDUCE, 42])
2399+  .add(Symbol.NOT, [REDUCE, 42])
2400+  .add(Symbol.MINUS, [REDUCE, 42])
2401+  .add(Symbol.ASTERISK, [REDUCE, 42])
2402+  .add(Symbol.DIVIDE, [REDUCE, 42])
2403+  .add(Symbol.CARROT, [REDUCE, 42])
2404+  .add(Symbol.SEMI_COLON, [REDUCE, 42])
2405+  .add(Symbol.COMMA, [REDUCE, 42])
2406+  .add(Symbol.VARIABLE, [REDUCE, 42])
2407+  .add(Symbol.POUND, [REDUCE, 42]).build();
2408+table[74] = ObjectBuilder
2409+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2410+  .add(Symbol.EQUALS, [SHIFT, 21])
2411+  .add(Symbol.PLUS, [SHIFT, 22])
2412+  .add(Symbol.RIGHT_PAREN, [REDUCE, 34])
2413+  .add(Symbol.LESS_THAN, [SHIFT, 23])
2414+  .add(Symbol.GREATER_THAN, [SHIFT, 24])
2415+  .add(Symbol.NOT, [SHIFT, 25])
2416+  .add(Symbol.MINUS, [SHIFT, 26])
2417+  .add(Symbol.ASTERISK, [SHIFT, 27])
2418+  .add(Symbol.DIVIDE, [SHIFT, 28])
2419+  .add(Symbol.CARROT, [SHIFT, 29])
2420+  .add(Symbol.SEMI_COLON, [REDUCE, 34])
2421+  .add(Symbol.COMMA, [REDUCE, 34]).build();
2422+table[75] = ObjectBuilder
2423+  .add(Symbol.AMPERSAND, [SHIFT, 20])
2424+  .add(Symbol.EQUALS, [SHIFT, 21])
2425+  .add(Symbol.PLUS, [SHIFT, 22])
2426+  .add(Symbol.RIGHT_PAREN, [REDUCE, 35])
2427+  .add(Symbol.LESS_THAN, [SHIFT, 23])
2428+  .add(Symbol.GREATER_THAN, [SHIFT, 24])
2429+  .add(Symbol.NOT, [SHIFT, 25])
2430+  .add(Symbol.MINUS, [SHIFT, 26])
2431+  .add(Symbol.ASTERISK, [SHIFT, 27])
2432+  .add(Symbol.DIVIDE, [SHIFT, 28])
2433+  .add(Symbol.CARROT, [SHIFT, 29])
2434+  .add(Symbol.SEMI_COLON, [REDUCE, 35])
2435+  .add(Symbol.COMMA, [REDUCE, 35]).build();
2436 const ACTION_TABLE = table;
2437 
2438 
2439@@ -1837,7 +1920,7 @@ let Parser = (function () {
2440           throw new ParseError('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
2441         }
2442 
2443-        // LexActions are always:
2444+        // Available actions:
2445         //   Shift: continue to process tokens.
2446         //   Reduce: enough tokens have been gathered to reduce input through evaluation.
2447         //   Accept: return.
2448@@ -1847,6 +1930,8 @@ let Parser = (function () {
2449             semanticValueStack.push(lexer.yytext);
2450             locationStack.push(lexer.yylloc);
2451             stack.push(action[1]); // push state
2452+            // console.log("SHIFT", "literal", lexer.yytext, "   symbol", symbol, "   symbol name", SYMBOL_INDEX_TO_NAME[symbol], "   action", action,
2453+            //     "   stack", stack, "   semanticValueStack", semanticValueStack);
2454             symbol = null;
2455 
2456             if (Formulas.isTryCatchFormula(lexer.yytext)) {
2457@@ -1869,6 +1954,8 @@ let Parser = (function () {
2458             break;
2459 
2460           case REDUCE: // Reduce
2461+            // console.log("REDUCE", "literal", lexer.yytext, "   symbol", symbol, "   symbol name", SYMBOL_INDEX_TO_NAME[symbol], "   action", action,
2462+            //     "   stack", stack, "   semanticValueStack", semanticValueStack);
2463             let currentProduction : ReductionPair = PRODUCTIONS[action[1]];
2464 
2465             let lengthToReduceStackBy = currentProduction.getLengthToReduceStackBy();
2466@@ -2146,7 +2233,7 @@ let Parser = (function () {
2467         }
2468         let rules = this._currentRules();
2469         for (let i = 0; i < rules.length; i++) {
2470-          tempMatch = this._input.match(this.rules[rules[i]]);
2471+          tempMatch = this._input.match(RULES[rules[i]]);
2472           if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
2473             match = tempMatch;
2474             index = i;
2475@@ -2196,27 +2283,12 @@ let Parser = (function () {
2476         }
2477       },
2478 
2479-      // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
2480-      begin: function begin(condition) {
2481-        this.conditionStack.push(condition);
2482-      },
2483-
2484-      // pop the previously active lexer condition state off the condition stack
2485-      popState: function popState() {
2486-        let n = this.conditionStack.length - 1;
2487-        if (n > 0) {
2488-          return this.conditionStack.pop();
2489-        } else {
2490-          return this.conditionStack[0];
2491-        }
2492-      },
2493-
2494       // produce the lexer rule set which is active for the currently active lexer condition state
2495       _currentRules: function _currentRules() {
2496         if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
2497           return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
2498         } else {
2499-          return this.conditions["INITIAL"].rules;
2500+          return this.conditions.INITIAL.rules;
2501         }
2502       },
2503 
2504@@ -2306,10 +2378,9 @@ let Parser = (function () {
2505             return ReduceActions.AS_NUMBER;
2506         }
2507       },
2508-      rules: RULES,
2509       conditions: {
2510-        "INITIAL": {
2511-          "rules": [
2512+        INITIAL: {
2513+          rules: [
2514             0,
2515             1,
2516             2,