spreadsheet
typeScript/javascript spreadsheet parser, with formulas.
git clone https://git.vogt.world/spreadsheet.git
Log | Files | README.md
← All files
name: src/Parser/ParserConstants.ts
-rw-r--r--
61078
   1import {
   2  ObjectBuilder
   3} from "../Utilities/ObjectBuilder";
   4import {
   5  Symbol
   6} from "./Symbols";
   7import {
   8  ReduceActions
   9} from "./ReduceActions";
  10import {
  11  ReductionPair
  12} from "./ReductionPair";
  13import {
  14  RULES
  15} from "./Rules";
  16
  17/**
  18 * Actions to take when processing tokens one by one. We're always either taking the next token, reducing our current
  19 * tokens, or accepting and returning.
  20 */
  21const SHIFT = 1;
  22const REDUCE = 2;
  23const ACCEPT = 3;
  24
  25
  26/**
  27 * Productions is used to look up both the number to use when reducing the stack (productions[x][1]) and the semantic
  28 * value that will replace the tokens in the stack (productions[x][0]).
  29 * @type {Array<ReductionPair>}
  30 *
  31 * Maps a ProductionRule to the appropriate number of previous tokens to use in a reduction action.
  32 */
  33let productions : Array<ReductionPair> = [];
  34productions[ReduceActions.NoAction] = null;
  35productions[ReduceActions.ReturnLast] = new ReductionPair(Symbol.Expressions, 2);
  36productions[ReduceActions.CallVariable] = new ReductionPair(Symbol.Expression, 1);
  37productions[ReduceActions.AsNumber] = new ReductionPair(Symbol.Expression, 1);
  38productions[ReduceActions.AsString] = new ReductionPair(Symbol.Expression, 1);
  39productions[ReduceActions.Ampersand] = new ReductionPair(Symbol.Expression, 3);
  40productions[ReduceActions.Equals] = new ReductionPair(Symbol.Expression, 3);
  41productions[ReduceActions.Plus] = new ReductionPair(Symbol.Expression, 3);
  42productions[ReduceActions.LastExpression] = new ReductionPair(Symbol.Expression, 3);
  43productions[ReduceActions.LTE] = new ReductionPair(Symbol.Expression, 4);
  44productions[ReduceActions.GTE] = new ReductionPair(Symbol.Expression, 4);
  45productions[ReduceActions.NotEqual] = new ReductionPair(Symbol.Expression, 4);
  46productions[ReduceActions.GT] = new ReductionPair(Symbol.Expression, 3);
  47productions[ReduceActions.LT] = new ReductionPair(Symbol.Expression, 3);
  48productions[ReduceActions.Minus] = new ReductionPair(Symbol.Expression, 3);
  49productions[ReduceActions.Multiply] = new ReductionPair(Symbol.Expression, 3);
  50productions[ReduceActions.Divide] = new ReductionPair(Symbol.Expression, 3);
  51productions[ReduceActions.ToPower] = new ReductionPair(Symbol.Expression, 3);
  52productions[ReduceActions.InvertNumber] = new ReductionPair(Symbol.Expression, 2);
  53productions[ReduceActions.ToNumberNANAsZero] = new ReductionPair(Symbol.Expression, 2);
  54productions[ReduceActions.CallFunctionLastBlank] = new ReductionPair(Symbol.Expression, 3);
  55productions[ReduceActions.CallFunctionLastTwoInStack] = new ReductionPair(Symbol.Expression, 4);
  56productions[ReduceActions.CellValueAsExpression] = new ReductionPair(Symbol.Expression, 1);
  57productions[ReduceActions.ErrorAndContinue] = new ReductionPair(Symbol.Expression, 1);
  58productions[ReduceActions.ErrorAndContinueWithOtherErrors] = new ReductionPair(Symbol.Expression, 2);
  59productions[ReduceActions.FixedCellValue] = new ReductionPair(Symbol.Cell, 1);
  60productions[ReduceActions.FixedCellRangeValue] = new ReductionPair(Symbol.Cell, 3);
  61productions[ReduceActions.CellValue] = new ReductionPair(Symbol.Cell, 1);
  62productions[ReduceActions.CellRangeValue] = new ReductionPair(Symbol.Cell, 3);
  63productions[ReduceActions.EnsureIsArray] = new ReductionPair(Symbol.ExpressionSeq, 1);
  64productions[ReduceActions.EnsureYYTextIsArray] = new ReductionPair(Symbol.ExpressionSeq, 1);
  65productions[ReduceActions.ReduceInt] = new ReductionPair(Symbol.ExpressionSeq, 3);
  66productions[ReduceActions.ReducePercent] = new ReductionPair(Symbol.ExpressionSeq, 3);
  67productions[ReduceActions.WrapCurrentTokenAsArray] = new ReductionPair(Symbol.VariableSeq, 1);
  68productions[ReduceActions.EnsureLastTwoINArrayAndPush] = new ReductionPair(Symbol.VariableSeq, 3);
  69productions[ReduceActions.ReflexiveReduce] = new ReductionPair(Symbol.Number, 1);
  70productions[ReduceActions.ReduceFloat] = new ReductionPair(Symbol.Number, 3);
  71productions[ReduceActions.ReducePrevAsPercent] = new ReductionPair(Symbol.Number, 2);
  72productions[ReduceActions.ReduceLastThreeA] = new ReductionPair(Symbol.Error, 3);
  73productions[ReduceActions.ReduceLastThreeB] = new ReductionPair(Symbol.Error, 4);
  74productions[ReduceActions.AsError] = new ReductionPair(Symbol.Expression, 1);
  75
  76const PRODUCTIONS = productions;
  77
  78const SYMBOL_NAME_TO_INDEX = {
  79  "$accept": Symbol.Accept,
  80  "$end": Symbol.End,
  81  "error": Symbol.Error,
  82  "expressions": Symbol.Expressions,
  83  "expression": Symbol.Expression,
  84  "EOF": Symbol.EOF,
  85  "variableSequence": Symbol.VariableSeq,
  86  "number": Symbol.Number,
  87  "STRING": Symbol.String,
  88  "&": Symbol.Ampersand,
  89  "=": Symbol.Equals,
  90  "+": Symbol.Plus,
  91  "(": Symbol.LeftParen,
  92  ")": Symbol.RightParen,
  93  "<": Symbol.LessThan,
  94  ">": Symbol.GreaterThan,
  95  "-": Symbol.Minus,
  96  "*": Symbol.Asterisk,
  97  "/": Symbol.Divide,
  98  "^": Symbol.Carrot,
  99  "FUNCTION": Symbol.Function,
 100  "expseq": Symbol.ExpressionSeq,
 101  "cell": Symbol.Cell,
 102  "FIXEDCELL": Symbol.FixedCell,
 103  ":": Symbol.Colon,
 104  "CELL": Symbol.CellUpper,
 105  "ARRAY": Symbol.Array,
 106  ";": Symbol.Semicolon,
 107  ",": Symbol.Comma,
 108  "VARIABLE": Symbol.Variable,
 109  "DECIMAL": Symbol.Decimal,
 110  "NUMBER": Symbol.NumberUpper,
 111  "%": Symbol.Percent,
 112  "#": Symbol.FullError,
 113  "!": Symbol.ExclamationPoint
 114};
 115let symbolIndexToName = {};
 116symbolIndexToName[Symbol.EOF] = "EOF";
 117symbolIndexToName[Symbol.String] = "String";
 118symbolIndexToName[Symbol.Ampersand] = "&";
 119symbolIndexToName[Symbol.Equals] = "=";
 120symbolIndexToName[Symbol.Plus] = "+";
 121symbolIndexToName[Symbol.LeftParen] = "(";
 122symbolIndexToName[Symbol.RightParen] = ")";
 123symbolIndexToName[Symbol.LessThan] = "<";
 124symbolIndexToName[Symbol.GreaterThan] = ">";
 125symbolIndexToName[Symbol.Minus] = "-";
 126symbolIndexToName[Symbol.Asterisk] = "*";
 127symbolIndexToName[Symbol.Divide] = "/";
 128symbolIndexToName[Symbol.Carrot] = "^";
 129symbolIndexToName[Symbol.Function] = "Function";
 130symbolIndexToName[Symbol.FixedCell] = "FIXED_CELL_REF";
 131symbolIndexToName[Symbol.Cell] = "Cell";
 132symbolIndexToName[Symbol.Colon] = ";";
 133symbolIndexToName[Symbol.Comma] = ",";
 134symbolIndexToName[Symbol.Variable] = "Variable";
 135symbolIndexToName[Symbol.Decimal] = "Decimal";
 136symbolIndexToName[Symbol.NumberUpper] = "Number";
 137symbolIndexToName[Symbol.Percent] = "%";
 138symbolIndexToName[Symbol.FullError] = "#";
 139symbolIndexToName[Symbol.Array] = "Array";
 140symbolIndexToName[Symbol.ExclamationPoint] = "!";
 141const SYMBOL_INDEX_TO_NAME = symbolIndexToName;
 142
 143
 144/**
 145 * State represents the state of the parser. Enums should be in the format {prev}_{next}.
 146 */
 147const enum State {
 148  // Start
 149  Start = 0,
 150  Start_Number = 6,
 151  Start_String = 7,
 152  Start_Equals = 21,
 153  Start_Equals_Expression = 44,
 154  // Number
 155  Number = 15,
 156  Number_Decimal = 39,
 157  Number_Ampersand_Expression = 43,
 158  Number_Decimal_NumberUpper = 63,
 159  // Prefix Operators
 160  PrefixUnaryMinus = 9,
 161  PrefixUnaryPlus = 10,
 162  PrefixUnaryMinus_Expression = 33,
 163  PrefixUnaryPlus_Expression = 34,
 164  // Error
 165  Error = 13,
 166  Error_Error = 36,
 167  Error_Variable = 37,
 168  // LessThan
 169  LessThan = 23,
 170  LessThan_Equals = 46,
 171  LessThan_GreaterThan = 47,
 172  LessThan_Expression = 48,
 173  LessThan_Equals_Expression = 67,
 174  LessThan_GreaterThan_Expression = 68,
 175  // GreaterThan
 176  GreaterThan = 24,
 177  GreaterThanEquals = 49,
 178  GreaterThan_Expression = 50,
 179  GreaterThanEquals_Expressions = 69,
 180  // Operations
 181  AddTwoNumbers = 45,
 182  SubtractTwoNumbers = 52,
 183  MultiplyTwoNumbers = 53,
 184  DivideTwoNumbers = 54,
 185  PowerTwoNumbers = 55,
 186  // Variable
 187  Variable = 14,
 188  Variable_FullError_Variable = 62,
 189  Variable_SemiColon = 71,
 190  Variable_Comma = 72,
 191  Variable_FullError = 38,
 192  Variable_FullError_Variable_ExclamationPoint = 73,
 193  // VariableSeq
 194  VariableSeq = 3,
 195  VariableSeq_Decimal = 30,
 196  VariableSeq_Decimal_Variable = 56,
 197  // Pound
 198  Pound = 18,
 199  Pound_Variable = 42,
 200  Pound_Variable_ExclamationPoint = 66,
 201  // Left Paren
 202  LeftParen = 8,
 203  LeftParen_Expression = 32,
 204  LeftParen_Array = 61,
 205  // Function
 206  Function = 11,
 207  Function_LeftParen_ExpressionSeq = 59,
 208  Function_RightParenNoArguments = 58,
 209  Function_LeftParen_Expression = 60,
 210  Function_LeftParen = 35,
 211  Function_Etc_RightParen = 70,
 212  // Expressions
 213  Expressions = 1,
 214  Expression = 2,
 215  Expression_Plus = 22,
 216  Expression_Minus = 26,
 217  Expression_RightParen = 57,
 218  Expression_Asterisk = 27,
 219  Expression_Divide = 28,
 220  Expression_Carrot = 29,
 221  Expression_Ampersand = 20,
 222  Expression_Percent = 31,
 223  // Cell
 224  Cell = 12,
 225  FixedCell = 16,
 226  CellUpper = 17,
 227  CellUpper_Colon_CellUpper = 65,
 228  CellUpper_Colon = 41,
 229  FixedCell_Colon = 40,
 230  FixedCell_Colon_FixedCell = 64,
 231  // Other
 232  EOF_ReturnLast = 19
 233}
 234
 235
 236/**
 237 * Array of to map rules to to LexActions and other rules. A single index in the object (e.g. `{2: 13}`) indicates the
 238 * rule object to follow for the next token, while an array (e.g. `{23: [1, ReduceActions.LTE]}`) indicates the action to be taken,
 239 * and the rule object to follow after the action.
 240 */
 241let table = [];
 242// All functions in the spreadsheet start with a 0-token.
 243table[State.Start] = ObjectBuilder
 244  .add(Symbol.Error, State.Error)
 245  .add(Symbol.Expressions, State.Expressions)
 246  .add(Symbol.Expression, State.Expression)
 247  .add(Symbol.VariableSeq, State.VariableSeq)
 248  .add(Symbol.Number, State.Start_Number)
 249  .add(Symbol.String, [SHIFT, State.Start_String])
 250  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 251  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 252  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 253  .add(Symbol.Function, [SHIFT, State.Function])
 254  .add(Symbol.Cell, State.Cell)
 255  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 256  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 257  .add(Symbol.Variable, [SHIFT, State.Variable])
 258  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 259  .add(Symbol.FullError, [SHIFT, State.Pound])
 260  .build();
 261table[State.Expressions] = ObjectBuilder
 262  .add(Symbol.End, [ACCEPT])
 263  .build();
 264table[State.Expression] = ObjectBuilder
 265  .add(Symbol.EOF, [SHIFT, State.EOF_ReturnLast])
 266  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 267  .add(Symbol.Equals, [SHIFT, State.Start_Equals])
 268  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
 269  .add(Symbol.LessThan, [SHIFT, State.LessThan])
 270  .add(Symbol.GreaterThan, [SHIFT, State.GreaterThan])
 271  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
 272  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 273  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 274  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 275  .build();
 276table[State.VariableSeq] = ObjectBuilder
 277  .add(Symbol.EOF, [REDUCE, ReduceActions.CallVariable])
 278  .add(Symbol.Ampersand, [REDUCE, ReduceActions.CallVariable])
 279  .add(Symbol.Equals, [REDUCE, ReduceActions.CallVariable])
 280  .add(Symbol.Plus, [REDUCE, ReduceActions.CallVariable])
 281  .add(Symbol.RightParen, [REDUCE, ReduceActions.CallVariable])
 282  .add(Symbol.LessThan, [REDUCE, ReduceActions.CallVariable])
 283  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.CallVariable])
 284  .add(Symbol.Minus, [REDUCE, ReduceActions.CallVariable])
 285  .add(Symbol.Asterisk, [REDUCE, ReduceActions.CallVariable])
 286  .add(Symbol.Divide, [REDUCE, ReduceActions.CallVariable])
 287  .add(Symbol.Carrot, [REDUCE, ReduceActions.CallVariable])
 288  .add(Symbol.Semicolon, [REDUCE, ReduceActions.CallVariable])
 289  .add(Symbol.Comma, [REDUCE, ReduceActions.CallVariable])
 290  .add(Symbol.Decimal, [SHIFT, State.VariableSeq_Decimal])
 291  .build();
 292table[State.Start_Number] = ObjectBuilder
 293  .add(Symbol.EOF, [REDUCE, ReduceActions.AsNumber])
 294  .add(Symbol.Ampersand, [REDUCE, ReduceActions.AsNumber])
 295  .add(Symbol.Equals, [REDUCE, ReduceActions.AsNumber])
 296  .add(Symbol.Plus, [REDUCE, ReduceActions.AsNumber])
 297  .add(Symbol.RightParen, [REDUCE, ReduceActions.AsNumber])
 298  .add(Symbol.LessThan, [REDUCE, ReduceActions.AsNumber])
 299  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.AsNumber])
 300  .add(Symbol.Minus, [REDUCE, ReduceActions.AsNumber])
 301  .add(Symbol.Asterisk, [REDUCE, ReduceActions.AsNumber])
 302  .add(Symbol.Divide, [REDUCE, ReduceActions.AsNumber])
 303  .add(Symbol.Carrot, [REDUCE, ReduceActions.AsNumber])
 304  .add(Symbol.Semicolon, [REDUCE, ReduceActions.AsNumber])
 305  .add(Symbol.Comma, [REDUCE, ReduceActions.AsNumber])
 306  .add(Symbol.Percent, [SHIFT, State.Expression_Percent])
 307  .build();
 308table[State.Start_String] = ObjectBuilder
 309  .add(Symbol.EOF, [REDUCE, ReduceActions.AsString])
 310  .add(Symbol.Ampersand, [REDUCE, ReduceActions.AsString])
 311  .add(Symbol.Equals, [REDUCE, ReduceActions.AsString])
 312  .add(Symbol.Plus, [REDUCE, ReduceActions.AsString])
 313  .add(Symbol.RightParen, [REDUCE, ReduceActions.AsString])
 314  .add(Symbol.LessThan, [REDUCE, ReduceActions.AsString])
 315  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.AsString])
 316  .add(Symbol.Minus, [REDUCE, ReduceActions.AsString])
 317  .add(Symbol.Asterisk, [REDUCE, ReduceActions.AsString])
 318  .add(Symbol.Divide, [REDUCE, ReduceActions.AsString])
 319  .add(Symbol.Carrot, [REDUCE, ReduceActions.AsString])
 320  .add(Symbol.Semicolon, [REDUCE, ReduceActions.AsString])
 321  .add(Symbol.Comma, [REDUCE, ReduceActions.AsString])
 322  .build();
 323table[State.LeftParen] = ObjectBuilder
 324  .add(Symbol.Error, State.Error)
 325  .add(Symbol.Expression, State.LeftParen_Expression)
 326  .add(Symbol.VariableSeq, State.VariableSeq)
 327  .add(Symbol.Number, State.Start_Number)
 328  .add(Symbol.String, [SHIFT, State.Start_String])
 329  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 330  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 331  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 332  .add(Symbol.Function, [SHIFT, State.Function])
 333  .add(Symbol.Cell, State.Cell)
 334  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 335  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 336  .add(Symbol.Variable, [SHIFT, State.Variable])
 337  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 338  .add(Symbol.FullError, [SHIFT, State.Pound])
 339  .build();
 340table[State.PrefixUnaryMinus] = ObjectBuilder
 341  .add(Symbol.Error, State.Error)
 342  .add(Symbol.Expression, State.PrefixUnaryMinus_Expression)
 343  .add(Symbol.VariableSeq, State.VariableSeq)
 344  .add(Symbol.Number, State.Start_Number)
 345  .add(Symbol.String, [SHIFT, State.Start_String])
 346  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 347  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 348  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 349  .add(Symbol.Function, [SHIFT, State.Function])
 350  .add(Symbol.Cell, State.Cell)
 351  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 352  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 353  .add(Symbol.Variable, [SHIFT, State.Variable])
 354  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 355  .add(Symbol.FullError, [SHIFT, State.Pound])
 356  .build();
 357table[State.PrefixUnaryPlus] = ObjectBuilder
 358  .add(Symbol.Error, State.Error)
 359  .add(Symbol.Expression, State.PrefixUnaryPlus_Expression)
 360  .add(Symbol.VariableSeq, State.VariableSeq)
 361  .add(Symbol.Number, State.Start_Number)
 362  .add(Symbol.String, [SHIFT, State.Start_String])
 363  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 364  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 365  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 366  .add(Symbol.Function, [SHIFT, State.Function])
 367  .add(Symbol.Cell, State.Cell)
 368  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 369  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 370  .add(Symbol.Variable, [SHIFT, State.Variable])
 371  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 372  .add(Symbol.FullError, [SHIFT, State.Pound])
 373  .build();
 374table[State.Function] = ObjectBuilder
 375  .add(Symbol.LeftParen, [SHIFT, State.Function_LeftParen])
 376  .build();
 377table[State.Cell] = ObjectBuilder
 378  .add(Symbol.EOF, [REDUCE, ReduceActions.CellValueAsExpression])
 379  .add(Symbol.Ampersand, [REDUCE, ReduceActions.CellValueAsExpression])
 380  .add(Symbol.Equals, [REDUCE, ReduceActions.CellValueAsExpression])
 381  .add(Symbol.Plus, [REDUCE, ReduceActions.CellValueAsExpression])
 382  .add(Symbol.RightParen, [REDUCE, ReduceActions.CellValueAsExpression])
 383  .add(Symbol.LessThan, [REDUCE, ReduceActions.CellValueAsExpression])
 384  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.CellValueAsExpression])
 385  .add(Symbol.Minus, [REDUCE, ReduceActions.CellValueAsExpression])
 386  .add(Symbol.Asterisk, [REDUCE, ReduceActions.CellValueAsExpression])
 387  .add(Symbol.Divide, [REDUCE, ReduceActions.CellValueAsExpression])
 388  .add(Symbol.Carrot, [REDUCE, ReduceActions.CellValueAsExpression])
 389  .add(Symbol.Semicolon, [REDUCE, ReduceActions.CellValueAsExpression])
 390  .add(Symbol.Comma, [REDUCE, ReduceActions.CellValueAsExpression])
 391  .build();
 392table[State.Error] = ObjectBuilder
 393  .add(Symbol.Error, State.Error_Error)
 394  .add(Symbol.EOF, [REDUCE, ReduceActions.ErrorAndContinue])
 395  .add(Symbol.Ampersand, [REDUCE, ReduceActions.ErrorAndContinue])
 396  .add(Symbol.Equals, [REDUCE, ReduceActions.ErrorAndContinue])
 397  .add(Symbol.Plus, [REDUCE, ReduceActions.ErrorAndContinue])
 398  .add(Symbol.RightParen, [REDUCE, ReduceActions.ErrorAndContinue])
 399  .add(Symbol.LessThan, [REDUCE, ReduceActions.ErrorAndContinue])
 400  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ErrorAndContinue])
 401  .add(Symbol.Minus, [REDUCE, ReduceActions.ErrorAndContinue])
 402  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ErrorAndContinue])
 403  .add(Symbol.Divide, [REDUCE, ReduceActions.ErrorAndContinue])
 404  .add(Symbol.Carrot, [REDUCE, ReduceActions.ErrorAndContinue])
 405  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ErrorAndContinue])
 406  .add(Symbol.Comma, [REDUCE, ReduceActions.ErrorAndContinue])
 407  .add(Symbol.Variable, [SHIFT, State.Error_Variable])
 408  .add(Symbol.FullError, [SHIFT, State.Pound])
 409  .build();
 410table[State.Variable] = ObjectBuilder
 411  .add(Symbol.EOF, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 412  .add(Symbol.Ampersand, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 413  .add(Symbol.Equals, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 414  .add(Symbol.Plus, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 415  .add(Symbol.RightParen, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 416  .add(Symbol.LessThan, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 417  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 418  .add(Symbol.Minus, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 419  .add(Symbol.Asterisk, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 420  .add(Symbol.Divide, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 421  .add(Symbol.Carrot, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 422  .add(Symbol.Semicolon, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 423  .add(Symbol.Comma, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 424  .add(Symbol.Decimal, [REDUCE, ReduceActions.WrapCurrentTokenAsArray])
 425  .add(Symbol.FullError, [SHIFT, State.Variable_FullError])
 426  .build();
 427table[State.Number] = ObjectBuilder
 428  .add(Symbol.EOF, [REDUCE, ReduceActions.ReflexiveReduce])
 429  .add(Symbol.Ampersand, [REDUCE, ReduceActions.ReflexiveReduce])
 430  .add(Symbol.Equals, [REDUCE, ReduceActions.ReflexiveReduce])
 431  .add(Symbol.Plus, [REDUCE, ReduceActions.ReflexiveReduce])
 432  .add(Symbol.RightParen, [REDUCE, ReduceActions.ReflexiveReduce])
 433  .add(Symbol.LessThan, [REDUCE, ReduceActions.ReflexiveReduce])
 434  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ReflexiveReduce])
 435  .add(Symbol.Minus, [REDUCE, ReduceActions.ReflexiveReduce])
 436  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ReflexiveReduce])
 437  .add(Symbol.Divide, [REDUCE, ReduceActions.ReflexiveReduce])
 438  .add(Symbol.Carrot, [REDUCE, ReduceActions.ReflexiveReduce])
 439  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ReflexiveReduce])
 440  .add(Symbol.Comma, [REDUCE, ReduceActions.ReflexiveReduce])
 441  .add(Symbol.Decimal, [SHIFT, State.Number_Decimal])
 442  .add(Symbol.Percent, [REDUCE, ReduceActions.ReflexiveReduce])
 443  .add(Symbol.ReflexiveReduce, [REDUCE, ReduceActions.ReflexiveReduce])
 444  .build();
 445table[State.FixedCell] = ObjectBuilder
 446  .add(Symbol.EOF, [REDUCE, ReduceActions.FixedCellValue])
 447  .add(Symbol.Ampersand, [REDUCE, ReduceActions.FixedCellValue])
 448  .add(Symbol.Equals, [REDUCE, ReduceActions.FixedCellValue])
 449  .add(Symbol.Plus, [REDUCE, ReduceActions.FixedCellValue])
 450  .add(Symbol.RightParen, [REDUCE, ReduceActions.FixedCellValue])
 451  .add(Symbol.LessThan, [REDUCE, ReduceActions.FixedCellValue])
 452  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.FixedCellValue])
 453  .add(Symbol.Minus, [REDUCE, ReduceActions.FixedCellValue])
 454  .add(Symbol.Asterisk, [REDUCE, ReduceActions.FixedCellValue])
 455  .add(Symbol.Divide, [REDUCE, ReduceActions.FixedCellValue])
 456  .add(Symbol.Carrot, [REDUCE, ReduceActions.FixedCellValue])
 457  .add(Symbol.Colon, [SHIFT, State.FixedCell_Colon])
 458  .add(Symbol.Semicolon, [REDUCE, ReduceActions.FixedCellValue])
 459  .add(Symbol.Comma, [REDUCE, ReduceActions.FixedCellValue])
 460  .build();
 461table[State.CellUpper] = ObjectBuilder
 462  .add(Symbol.EOF, [REDUCE, ReduceActions.CellValue])
 463  .add(Symbol.Ampersand, [REDUCE, ReduceActions.CellValue])
 464  .add(Symbol.Equals, [REDUCE, ReduceActions.CellValue])
 465  .add(Symbol.Plus, [REDUCE, ReduceActions.CellValue])
 466  .add(Symbol.RightParen, [REDUCE, ReduceActions.CellValue])
 467  .add(Symbol.LessThan, [REDUCE, ReduceActions.CellValue])
 468  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.CellValue])
 469  .add(Symbol.Minus, [REDUCE, ReduceActions.CellValue])
 470  .add(Symbol.Asterisk, [REDUCE, ReduceActions.CellValue])
 471  .add(Symbol.Divide, [REDUCE, ReduceActions.CellValue])
 472  .add(Symbol.Carrot, [REDUCE, ReduceActions.CellValue])
 473  .add(Symbol.Colon, [SHIFT, State.CellUpper_Colon])
 474  .add(Symbol.Semicolon, [REDUCE, ReduceActions.CellValue])
 475  .add(Symbol.Comma, [REDUCE, ReduceActions.CellValue])
 476  .build();
 477table[State.Pound] = ObjectBuilder
 478  .add(Symbol.Variable, [SHIFT, State.Pound_Variable])
 479  .add(Symbol.EOF, [REDUCE, ReduceActions.AsError])
 480  .add(Symbol.RightParen, [REDUCE, ReduceActions.AsError])
 481  .add(Symbol.Comma, [REDUCE, ReduceActions.AsError])
 482  .build();
 483table[State.EOF_ReturnLast] = ObjectBuilder
 484  .add(Symbol.End, [REDUCE, ReduceActions.ReturnLast])
 485  .build();
 486table[State.Expression_Ampersand] = ObjectBuilder
 487  .add(Symbol.Error, State.Error)
 488  .add(Symbol.Expression, State.Number_Ampersand_Expression)
 489  .add(Symbol.VariableSeq, State.VariableSeq)
 490  .add(Symbol.Number, State.Start_Number)
 491  .add(Symbol.String, [SHIFT, State.Start_String])
 492  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 493  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 494  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 495  .add(Symbol.Function, [SHIFT, State.Function])
 496  .add(Symbol.Cell, State.Cell)
 497  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 498  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 499  .add(Symbol.Variable, [SHIFT, State.Variable])
 500  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 501  .add(Symbol.FullError, [SHIFT, State.Pound])
 502  .build();
 503table[State.Start_Equals] = ObjectBuilder
 504  .add(Symbol.Error, State.Error)
 505  .add(Symbol.Expression, State.Start_Equals_Expression)
 506  .add(Symbol.VariableSeq, State.VariableSeq)
 507  .add(Symbol.Number, State.Start_Number)
 508  .add(Symbol.String, [SHIFT, State.Start_String])
 509  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 510  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 511  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 512  .add(Symbol.Function, [SHIFT, State.Function])
 513  .add(Symbol.Cell, State.Cell)
 514  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 515  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 516  .add(Symbol.Variable, [SHIFT, State.Variable])
 517  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 518  .add(Symbol.FullError, [SHIFT, State.Pound])
 519  .build();
 520table[State.Expression_Plus] = ObjectBuilder
 521  .add(Symbol.Error, State.Error)
 522  .add(Symbol.Expression, State.AddTwoNumbers)
 523  .add(Symbol.VariableSeq, State.VariableSeq)
 524  .add(Symbol.Number, State.Start_Number)
 525  .add(Symbol.String, [SHIFT, State.Start_String])
 526  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 527  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 528  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 529  .add(Symbol.Function, [SHIFT, State.Function])
 530  .add(Symbol.Cell, State.Cell)
 531  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 532  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 533  .add(Symbol.Variable, [SHIFT, State.Variable])
 534  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 535  .add(Symbol.FullError, [SHIFT, State.Pound])
 536  .build();
 537table[State.LessThan] = ObjectBuilder
 538  .add(Symbol.Error, State.Error)
 539  .add(Symbol.Expression, State.LessThan_Expression)
 540  .add(Symbol.VariableSeq, State.VariableSeq)
 541  .add(Symbol.Number, State.Start_Number)
 542  .add(Symbol.String, [SHIFT, State.Start_String])
 543  .add(Symbol.Equals, [SHIFT, State.LessThan_Equals])
 544  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 545  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 546  .add(Symbol.GreaterThan, [SHIFT, State.LessThan_GreaterThan])
 547  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 548  .add(Symbol.Function, [SHIFT, State.Function])
 549  .add(Symbol.Cell, State.Cell)
 550  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 551  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 552  .add(Symbol.Variable, [SHIFT, State.Variable])
 553  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 554  .add(Symbol.FullError, [SHIFT, State.Pound])
 555  .build();
 556table[State.GreaterThan] = ObjectBuilder
 557  .add(Symbol.Error, State.Error)
 558  .add(Symbol.Expression, State.GreaterThan_Expression)
 559  .add(Symbol.VariableSeq, State.VariableSeq)
 560  .add(Symbol.Number, State.Start_Number)
 561  .add(Symbol.String, [SHIFT, State.Start_String])
 562  .add(Symbol.Equals, [SHIFT, State.GreaterThanEquals])
 563  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 564  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 565  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 566  .add(Symbol.Function, [SHIFT, State.Function])
 567  .add(Symbol.Cell, State.Cell)
 568  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 569  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 570  .add(Symbol.Variable, [SHIFT, State.Variable])
 571  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 572  .add(Symbol.FullError, [SHIFT, State.Pound])
 573  .build();
 574// table[25] is absent because it's unreachable.
 575table[State.Expression_Minus] = ObjectBuilder
 576  .add(Symbol.Error, State.Error)
 577  .add(Symbol.Expression, State.SubtractTwoNumbers)
 578  .add(Symbol.VariableSeq, State.VariableSeq)
 579  .add(Symbol.Number, State.Start_Number)
 580  .add(Symbol.String, [SHIFT, State.Start_String])
 581  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 582  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 583  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 584  .add(Symbol.Function, [SHIFT, State.Function])
 585  .add(Symbol.Cell, State.Cell)
 586  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 587  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 588  .add(Symbol.Variable, [SHIFT, State.Variable])
 589  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 590  .add(Symbol.FullError, [SHIFT, State.Pound])
 591  .build();
 592table[State.Expression_Asterisk] = ObjectBuilder
 593  .add(Symbol.Error, State.Error)
 594  .add(Symbol.Expression, State.MultiplyTwoNumbers)
 595  .add(Symbol.VariableSeq, State.VariableSeq)
 596  .add(Symbol.Number, State.Start_Number)
 597  .add(Symbol.String, [SHIFT, State.Start_String])
 598  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 599  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 600  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 601  .add(Symbol.Function, [SHIFT, State.Function])
 602  .add(Symbol.Cell, State.Cell)
 603  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 604  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 605  .add(Symbol.Variable, [SHIFT, State.Variable])
 606  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 607  .add(Symbol.FullError, [SHIFT, State.Pound])
 608  .build();
 609table[State.Expression_Divide] = ObjectBuilder
 610  .add(Symbol.Error, State.Error)
 611  .add(Symbol.Expression, State.DivideTwoNumbers)
 612  .add(Symbol.VariableSeq, State.VariableSeq)
 613  .add(Symbol.Number, State.Start_Number)
 614  .add(Symbol.String, [SHIFT, State.Start_String])
 615  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 616  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 617  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 618  .add(Symbol.Function, [SHIFT, State.Function])
 619  .add(Symbol.Cell, State.Cell)
 620  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 621  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 622  .add(Symbol.Variable, [SHIFT, State.Variable])
 623  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 624  .add(Symbol.FullError, [SHIFT, State.Pound])
 625  .build();
 626table[State.Expression_Carrot] = ObjectBuilder
 627  .add(Symbol.Error, State.Error)
 628  .add(Symbol.Expression, State.PowerTwoNumbers)
 629  .add(Symbol.VariableSeq, State.VariableSeq)
 630  .add(Symbol.Number, State.Start_Number)
 631  .add(Symbol.String, [SHIFT, State.Start_String])
 632  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 633  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 634  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 635  .add(Symbol.Function, [SHIFT, State.Function])
 636  .add(Symbol.Cell, State.Cell)
 637  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 638  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 639  .add(Symbol.Variable, [SHIFT, State.Variable])
 640  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 641  .add(Symbol.FullError, [SHIFT, State.Pound])
 642  .build();
 643table[State.VariableSeq_Decimal] = ObjectBuilder
 644  .add(Symbol.Variable, [SHIFT, State.VariableSeq_Decimal_Variable])
 645  .build();
 646table[State.Expression_Percent] = ObjectBuilder
 647  .add(Symbol.EOF, [REDUCE, ReduceActions.ReducePrevAsPercent])
 648  .add(Symbol.Ampersand, [REDUCE, ReduceActions.ReducePrevAsPercent])
 649  .add(Symbol.Equals, [REDUCE, ReduceActions.ReducePrevAsPercent])
 650  .add(Symbol.Plus, [REDUCE, ReduceActions.ReducePrevAsPercent])
 651  .add(Symbol.RightParen, [REDUCE, ReduceActions.ReducePrevAsPercent])
 652  .add(Symbol.LessThan, [REDUCE, ReduceActions.ReducePrevAsPercent])
 653  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ReducePrevAsPercent])
 654  .add(Symbol.Minus, [REDUCE, ReduceActions.ReducePrevAsPercent])
 655  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ReducePrevAsPercent])
 656  .add(Symbol.Divide, [REDUCE, ReduceActions.ReducePrevAsPercent])
 657  .add(Symbol.Carrot, [REDUCE, ReduceActions.ReducePrevAsPercent])
 658  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ReducePrevAsPercent])
 659  .add(Symbol.Comma, [REDUCE, ReduceActions.ReducePrevAsPercent])
 660  .add(Symbol.Percent, [REDUCE, ReduceActions.ReducePrevAsPercent])
 661  .add(Symbol.ReflexiveReduce, [REDUCE, ReduceActions.ReducePrevAsPercent])
 662  .build();
 663table[State.LeftParen_Expression] = ObjectBuilder
 664  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 665  .add(Symbol.Equals, [SHIFT, State.Start_Equals])
 666  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
 667  .add(Symbol.RightParen, [SHIFT, State.Expression_RightParen])
 668  .add(Symbol.LessThan, [SHIFT, State.LessThan])
 669  .add(Symbol.GreaterThan, [SHIFT, State.GreaterThan])
 670  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
 671  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 672  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 673  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 674  .build();
 675table[State.PrefixUnaryMinus_Expression] = ObjectBuilder
 676  .add(Symbol.EOF, [REDUCE, ReduceActions.InvertNumber])
 677  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 678  .add(Symbol.Equals, [REDUCE, ReduceActions.InvertNumber])
 679  .add(Symbol.Plus, [REDUCE, ReduceActions.InvertNumber])
 680  .add(Symbol.RightParen, [REDUCE, ReduceActions.InvertNumber])
 681  .add(Symbol.LessThan, [REDUCE, ReduceActions.InvertNumber])
 682  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.InvertNumber])
 683  .add(Symbol.Minus, [REDUCE, ReduceActions.InvertNumber])
 684  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 685  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 686  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 687  .add(Symbol.Semicolon, [REDUCE, ReduceActions.InvertNumber])
 688  .add(Symbol.Comma, [REDUCE, ReduceActions.InvertNumber])
 689  .build();
 690table[State.PrefixUnaryPlus_Expression] = ObjectBuilder
 691  .add(Symbol.EOF, [REDUCE, ReduceActions.ToNumberNANAsZero])
 692  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 693  .add(Symbol.Equals, [REDUCE, ReduceActions.ToNumberNANAsZero])
 694  .add(Symbol.Plus, [REDUCE, ReduceActions.ToNumberNANAsZero])
 695  .add(Symbol.RightParen, [REDUCE, ReduceActions.ToNumberNANAsZero])
 696  .add(Symbol.LessThan, [REDUCE, ReduceActions.ToNumberNANAsZero])
 697  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ToNumberNANAsZero])
 698  .add(Symbol.Minus, [REDUCE, ReduceActions.ToNumberNANAsZero])
 699  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 700  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 701  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 702  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ToNumberNANAsZero])
 703  .add(Symbol.Comma, [REDUCE, ReduceActions.ToNumberNANAsZero])
 704  .build();
 705table[State.Function_LeftParen] = ObjectBuilder
 706  .add(Symbol.Error, State.Error)
 707  .add(Symbol.Expression, State.Function_LeftParen_Expression)
 708  .add(Symbol.VariableSeq, State.VariableSeq)
 709  .add(Symbol.Number, State.Start_Number)
 710  .add(Symbol.String, [SHIFT, State.Start_String])
 711  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 712  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 713  .add(Symbol.RightParen, [SHIFT, State.Function_RightParenNoArguments])
 714  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 715  .add(Symbol.Function, [SHIFT, State.Function])
 716  .add(Symbol.ExpressionSeq, State.Function_LeftParen_ExpressionSeq)
 717  .add(Symbol.Cell, State.Cell)
 718  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 719  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 720  .add(Symbol.Array, [SHIFT, State.LeftParen_Array])
 721  .add(Symbol.Variable, [SHIFT, State.Variable])
 722  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 723  .add(Symbol.FullError, [SHIFT, State.Pound])
 724  .build();
 725table[State.Error_Error] = ObjectBuilder
 726  .add(Symbol.EOF, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 727  .add(Symbol.Ampersand, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 728  .add(Symbol.Equals, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 729  .add(Symbol.Plus, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 730  .add(Symbol.RightParen, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 731  .add(Symbol.LessThan, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 732  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 733  .add(Symbol.Minus, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 734  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 735  .add(Symbol.Divide, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 736  .add(Symbol.Carrot, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 737  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 738  .add(Symbol.Comma, [REDUCE, ReduceActions.ErrorAndContinueWithOtherErrors])
 739  .build();
 740table[State.Error_Variable] = ObjectBuilder
 741  .add(Symbol.FullError, [REDUCE, ReduceActions.AsError])
 742  .build();
 743table[State.Variable_FullError] = ObjectBuilder
 744  .add(Symbol.Variable, [SHIFT, State.Variable_FullError_Variable])
 745  .build();
 746table[State.Number_Decimal] = ObjectBuilder
 747  .add(Symbol.NumberUpper, [SHIFT, State.Number_Decimal_NumberUpper])
 748  .build();
 749table[State.FixedCell_Colon] = ObjectBuilder
 750  .add(Symbol.FixedCell, [SHIFT, State.FixedCell_Colon_FixedCell])
 751  .build();
 752table[State.CellUpper_Colon] = ObjectBuilder
 753  .add(Symbol.CellUpper, [SHIFT, State.CellUpper_Colon_CellUpper])
 754  .build();
 755table[State.Pound_Variable] = ObjectBuilder
 756  .add(Symbol.ExclamationPoint, [SHIFT, State.Pound_Variable_ExclamationPoint])
 757  .build();
 758table[State.Number_Ampersand_Expression] = ObjectBuilder
 759  .add(Symbol.EOF, [REDUCE, ReduceActions.Ampersand])
 760  .add(Symbol.Ampersand, [REDUCE, ReduceActions.Ampersand])
 761  .add(Symbol.Equals, [REDUCE, ReduceActions.Ampersand])
 762  .add(Symbol.Plus, [REDUCE, ReduceActions.Ampersand])
 763  .add(Symbol.RightParen, [REDUCE, ReduceActions.Ampersand])
 764  .add(Symbol.LessThan, [REDUCE, ReduceActions.Ampersand])
 765  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.Ampersand])
 766  .add(Symbol.Minus, [REDUCE, ReduceActions.Ampersand])
 767  .add(Symbol.Asterisk, [REDUCE, ReduceActions.Ampersand])
 768  .add(Symbol.Divide, [REDUCE, ReduceActions.Ampersand])
 769  .add(Symbol.Carrot, [REDUCE, ReduceActions.Ampersand])
 770  .add(Symbol.Semicolon, [REDUCE, ReduceActions.Ampersand])
 771  .add(Symbol.Comma, [REDUCE, ReduceActions.Ampersand])
 772  .build();
 773table[State.Start_Equals_Expression] = ObjectBuilder
 774  .add(Symbol.EOF, [REDUCE, ReduceActions.Equals])
 775  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 776  .add(Symbol.Equals, [REDUCE, ReduceActions.Equals])
 777  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
 778  .add(Symbol.RightParen, [REDUCE, ReduceActions.Equals])
 779  .add(Symbol.LessThan, [SHIFT, State.LessThan])
 780  .add(Symbol.GreaterThan, [SHIFT, State.GreaterThan])
 781  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
 782  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 783  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 784  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 785  .add(Symbol.Semicolon, [REDUCE, ReduceActions.Equals])
 786  .add(Symbol.Comma, [REDUCE, ReduceActions.Equals])
 787  .build();
 788table[State.AddTwoNumbers] = ObjectBuilder
 789  .add(Symbol.EOF, [REDUCE, ReduceActions.Plus])
 790  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 791  .add(Symbol.Equals, [REDUCE, ReduceActions.Plus])
 792  .add(Symbol.Plus, [REDUCE, ReduceActions.Plus])
 793  .add(Symbol.RightParen, [REDUCE, ReduceActions.Plus])
 794  .add(Symbol.LessThan, [REDUCE, ReduceActions.Plus])
 795  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.Plus])
 796  .add(Symbol.Minus, [REDUCE, ReduceActions.Plus])
 797  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 798  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 799  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 800  .add(Symbol.Semicolon, [REDUCE, ReduceActions.Plus])
 801  .add(Symbol.Comma, [REDUCE, ReduceActions.Plus])
 802  .build();
 803table[State.LessThan_Equals] = ObjectBuilder
 804  .add(Symbol.Error, State.Error)
 805  .add(Symbol.Expression, State.LessThan_Equals_Expression)
 806  .add(Symbol.VariableSeq, State.VariableSeq)
 807  .add(Symbol.Number, State.Start_Number)
 808  .add(Symbol.String, [SHIFT, State.Start_String])
 809  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 810  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 811  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 812  .add(Symbol.Function, [SHIFT, State.Function])
 813  .add(Symbol.Cell, State.Cell)
 814  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 815  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 816  .add(Symbol.Variable, [SHIFT, State.Variable])
 817  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 818  .add(Symbol.FullError, [SHIFT, State.Pound])
 819  .build();
 820table[State.LessThan_GreaterThan] = ObjectBuilder
 821  .add(Symbol.Error, State.Error)
 822  .add(Symbol.Expression, State.LessThan_GreaterThan_Expression)
 823  .add(Symbol.VariableSeq, State.VariableSeq)
 824  .add(Symbol.Number, State.Start_Number)
 825  .add(Symbol.String, [SHIFT, State.Start_String])
 826  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 827  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 828  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 829  .add(Symbol.Function, [SHIFT, State.Function])
 830  .add(Symbol.Cell, State.Cell)
 831  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 832  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 833  .add(Symbol.Variable, [SHIFT, State.Variable])
 834  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 835  .add(Symbol.FullError, [SHIFT, State.Pound])
 836  .build();
 837table[State.LessThan_Expression] = ObjectBuilder
 838  .add(Symbol.EOF, [REDUCE, ReduceActions.LT])
 839  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 840  .add(Symbol.Equals, [REDUCE, ReduceActions.LT])
 841  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
 842  .add(Symbol.RightParen, [REDUCE, ReduceActions.LT])
 843  .add(Symbol.LessThan, [REDUCE, ReduceActions.LT])
 844  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.LT])
 845  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
 846  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 847  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 848  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 849  .add(Symbol.Semicolon, [REDUCE, ReduceActions.LT])
 850  .add(Symbol.Comma, [REDUCE, ReduceActions.LT])
 851  .build();
 852table[State.GreaterThanEquals] = ObjectBuilder
 853  .add(Symbol.Error, State.Error)
 854  .add(Symbol.Expression, State.GreaterThanEquals_Expressions)
 855  .add(Symbol.VariableSeq, State.VariableSeq)
 856  .add(Symbol.Number, State.Start_Number)
 857  .add(Symbol.String, [SHIFT, State.Start_String])
 858  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
 859  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
 860  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
 861  .add(Symbol.Function, [SHIFT, State.Function])
 862  .add(Symbol.Cell, State.Cell)
 863  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
 864  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
 865  .add(Symbol.Variable, [SHIFT, State.Variable])
 866  .add(Symbol.NumberUpper, [SHIFT, State.Number])
 867  .add(Symbol.FullError, [SHIFT, State.Pound])
 868  .build();
 869table[State.GreaterThan_Expression] = ObjectBuilder
 870  .add(Symbol.EOF, [REDUCE, ReduceActions.GT])
 871  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 872  .add(Symbol.Equals, [REDUCE, ReduceActions.GT])
 873  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
 874  .add(Symbol.RightParen, [REDUCE, ReduceActions.GT])
 875  .add(Symbol.LessThan, [REDUCE, ReduceActions.GT])
 876  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.GT])
 877  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
 878  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 879  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 880  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 881  .add(Symbol.Semicolon, [REDUCE, ReduceActions.GT])
 882  .add(Symbol.Comma, [REDUCE, ReduceActions.GT])
 883  .build();
 884table[51] = ObjectBuilder
 885  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 886  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
 887  .add(Symbol.LessThan, [SHIFT, State.LessThan])
 888  .add(Symbol.GreaterThan, [SHIFT, State.GreaterThan])
 889  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
 890  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 891  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 892  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 893  .build();
 894table[State.SubtractTwoNumbers] = ObjectBuilder
 895  .add(Symbol.EOF, [REDUCE, ReduceActions.Minus])
 896  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 897  .add(Symbol.Equals, [REDUCE, ReduceActions.Minus])
 898  .add(Symbol.Plus, [REDUCE, ReduceActions.Minus])
 899  .add(Symbol.RightParen, [REDUCE, ReduceActions.Minus])
 900  .add(Symbol.LessThan, [REDUCE, ReduceActions.Minus])
 901  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.Minus])
 902  .add(Symbol.Minus, [REDUCE, ReduceActions.Minus])
 903  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
 904  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
 905  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 906  .add(Symbol.Semicolon, [REDUCE, ReduceActions.Minus])
 907  .add(Symbol.Comma, [REDUCE, ReduceActions.Minus])
 908  .build();
 909table[State.MultiplyTwoNumbers] = ObjectBuilder
 910  .add(Symbol.EOF, [REDUCE, ReduceActions.Multiply])
 911  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 912  .add(Symbol.Equals, [REDUCE, ReduceActions.Multiply])
 913  .add(Symbol.Plus, [REDUCE, ReduceActions.Multiply])
 914  .add(Symbol.RightParen, [REDUCE, ReduceActions.Multiply])
 915  .add(Symbol.LessThan, [REDUCE, ReduceActions.Multiply])
 916  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.Multiply])
 917  .add(Symbol.Minus, [REDUCE, ReduceActions.Multiply])
 918  .add(Symbol.Asterisk, [REDUCE, ReduceActions.Multiply])
 919  .add(Symbol.Divide, [REDUCE, ReduceActions.Multiply])
 920  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 921  .add(Symbol.Semicolon, [REDUCE, ReduceActions.Multiply])
 922  .add(Symbol.Comma, [REDUCE, ReduceActions.Multiply])
 923  .build();
 924table[State.DivideTwoNumbers] = ObjectBuilder
 925  .add(Symbol.EOF, [REDUCE, ReduceActions.Divide])
 926  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 927  .add(Symbol.Equals, [REDUCE, ReduceActions.Divide])
 928  .add(Symbol.Plus, [REDUCE, ReduceActions.Divide])
 929  .add(Symbol.RightParen, [REDUCE, ReduceActions.Divide])
 930  .add(Symbol.LessThan, [REDUCE, ReduceActions.Divide])
 931  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.Divide])
 932  .add(Symbol.Minus, [REDUCE, ReduceActions.Divide])
 933  .add(Symbol.Asterisk, [REDUCE, ReduceActions.Divide])
 934  .add(Symbol.Divide, [REDUCE, ReduceActions.Divide])
 935  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
 936  .add(Symbol.Semicolon, [REDUCE, ReduceActions.Divide])
 937  .add(Symbol.Comma, [REDUCE, ReduceActions.Divide])
 938  .build();
 939table[State.PowerTwoNumbers] = ObjectBuilder
 940  .add(Symbol.EOF, [REDUCE, ReduceActions.ToPower])
 941  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
 942  .add(Symbol.Equals, [REDUCE, ReduceActions.ToPower])
 943  .add(Symbol.Plus, [REDUCE, ReduceActions.ToPower])
 944  .add(Symbol.RightParen, [REDUCE, ReduceActions.ToPower])
 945  .add(Symbol.LessThan, [REDUCE, ReduceActions.ToPower])
 946  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ToPower])
 947  .add(Symbol.Minus, [REDUCE, ReduceActions.ToPower])
 948  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ToPower])
 949  .add(Symbol.Divide, [REDUCE, ReduceActions.ToPower])
 950  .add(Symbol.Carrot, [REDUCE, ReduceActions.ToPower])
 951  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ToPower])
 952  .add(Symbol.Comma, [REDUCE, ReduceActions.ToPower])
 953  .build();
 954table[State.VariableSeq_Decimal_Variable] = ObjectBuilder
 955  .add(Symbol.EOF, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 956  .add(Symbol.Ampersand, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 957  .add(Symbol.Equals, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 958  .add(Symbol.Plus, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 959  .add(Symbol.RightParen, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 960  .add(Symbol.LessThan, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 961  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 962  .add(Symbol.Minus, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 963  .add(Symbol.Asterisk, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 964  .add(Symbol.Divide, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 965  .add(Symbol.Carrot, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 966  .add(Symbol.Semicolon, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 967  .add(Symbol.Comma, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 968  .add(Symbol.Decimal, [REDUCE, ReduceActions.EnsureLastTwoINArrayAndPush])
 969  .build();
 970table[State.Expression_RightParen] = ObjectBuilder
 971  .add(Symbol.EOF, [REDUCE, ReduceActions.LastExpression])
 972  .add(Symbol.Ampersand, [REDUCE, ReduceActions.LastExpression])
 973  .add(Symbol.Equals, [REDUCE, ReduceActions.LastExpression])
 974  .add(Symbol.Plus, [REDUCE, ReduceActions.LastExpression])
 975  .add(Symbol.RightParen, [REDUCE, ReduceActions.LastExpression])
 976  .add(Symbol.LessThan, [REDUCE, ReduceActions.LastExpression])
 977  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.LastExpression])
 978  .add(Symbol.Minus, [REDUCE, ReduceActions.LastExpression])
 979  .add(Symbol.Asterisk, [REDUCE, ReduceActions.LastExpression])
 980  .add(Symbol.Divide, [REDUCE, ReduceActions.LastExpression])
 981  .add(Symbol.Carrot, [REDUCE, ReduceActions.LastExpression])
 982  .add(Symbol.Semicolon, [REDUCE, ReduceActions.LastExpression])
 983  .add(Symbol.Comma, [REDUCE, ReduceActions.LastExpression])
 984  .build();
 985table[State.Function_RightParenNoArguments] = ObjectBuilder
 986  .add(Symbol.EOF, [REDUCE, ReduceActions.CallFunctionLastBlank])
 987  .add(Symbol.Ampersand, [REDUCE, ReduceActions.CallFunctionLastBlank])
 988  .add(Symbol.Equals, [REDUCE, ReduceActions.CallFunctionLastBlank])
 989  .add(Symbol.Plus, [REDUCE, ReduceActions.CallFunctionLastBlank])
 990  .add(Symbol.RightParen, [REDUCE, ReduceActions.CallFunctionLastBlank])
 991  .add(Symbol.LessThan, [REDUCE, ReduceActions.CallFunctionLastBlank])
 992  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.CallFunctionLastBlank])
 993  .add(Symbol.Minus, [REDUCE, ReduceActions.CallFunctionLastBlank])
 994  .add(Symbol.Asterisk, [REDUCE, ReduceActions.CallFunctionLastBlank])
 995  .add(Symbol.Divide, [REDUCE, ReduceActions.CallFunctionLastBlank])
 996  .add(Symbol.Carrot, [REDUCE, ReduceActions.CallFunctionLastBlank])
 997  .add(Symbol.Semicolon, [REDUCE, ReduceActions.CallFunctionLastBlank])
 998  .add(Symbol.Comma, [REDUCE, ReduceActions.CallFunctionLastBlank])
 999  .build();
1000table[State.Function_LeftParen_ExpressionSeq] = ObjectBuilder
1001  .add(Symbol.RightParen, [SHIFT, State.Function_Etc_RightParen])
1002  .add(Symbol.Semicolon, [SHIFT, State.Variable_SemiColon])
1003  .add(Symbol.Comma, [SHIFT, State.Variable_Comma])
1004  .build();
1005table[State.Function_LeftParen_Expression] = ObjectBuilder
1006  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
1007  .add(Symbol.Equals, [SHIFT, State.Start_Equals])
1008  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
1009  .add(Symbol.RightParen, [REDUCE, ReduceActions.EnsureIsArray])
1010  .add(Symbol.LessThan, [SHIFT, State.LessThan])
1011  .add(Symbol.GreaterThan, [SHIFT, State.GreaterThan])
1012  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
1013  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
1014  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
1015  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
1016  .add(Symbol.Semicolon, [REDUCE, ReduceActions.EnsureIsArray])
1017  .add(Symbol.Comma, [REDUCE, ReduceActions.EnsureIsArray])
1018  .build();
1019table[State.LeftParen_Array] = ObjectBuilder
1020  .add(Symbol.RightParen, [REDUCE, ReduceActions.EnsureYYTextIsArray])
1021  .add(Symbol.Semicolon, [REDUCE, ReduceActions.EnsureYYTextIsArray])
1022  .add(Symbol.Comma, [REDUCE, ReduceActions.EnsureYYTextIsArray])
1023  .build();
1024table[State.Variable_FullError_Variable] = ObjectBuilder
1025  .add(Symbol.ExclamationPoint, [SHIFT, State.Variable_FullError_Variable_ExclamationPoint])
1026  .build();
1027table[State.Number_Decimal_NumberUpper] = ObjectBuilder
1028  .add(Symbol.EOF, [REDUCE, ReduceActions.ReduceFloat])
1029  .add(Symbol.Ampersand, [REDUCE, ReduceActions.ReduceFloat])
1030  .add(Symbol.Equals, [REDUCE, ReduceActions.ReduceFloat])
1031  .add(Symbol.Plus, [REDUCE, ReduceActions.ReduceFloat])
1032  .add(Symbol.RightParen, [REDUCE, ReduceActions.ReduceFloat])
1033  .add(Symbol.LessThan, [REDUCE, ReduceActions.ReduceFloat])
1034  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ReduceFloat])
1035  .add(Symbol.Minus, [REDUCE, ReduceActions.ReduceFloat])
1036  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ReduceFloat])
1037  .add(Symbol.Divide, [REDUCE, ReduceActions.ReduceFloat])
1038  .add(Symbol.Carrot, [REDUCE, ReduceActions.ReduceFloat])
1039  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ReduceFloat])
1040  .add(Symbol.Comma, [REDUCE, ReduceActions.ReduceFloat])
1041  .add(Symbol.Percent, [REDUCE, ReduceActions.ReduceFloat])
1042  .add(Symbol.ReflexiveReduce, [REDUCE, ReduceActions.ReduceFloat]).build();
1043table[State.FixedCell_Colon_FixedCell] = ObjectBuilder
1044  .add(Symbol.EOF, [REDUCE, ReduceActions.FixedCellRangeValue])
1045  .add(Symbol.Ampersand, [REDUCE, ReduceActions.FixedCellRangeValue])
1046  .add(Symbol.Equals, [REDUCE, ReduceActions.FixedCellRangeValue])
1047  .add(Symbol.Plus, [REDUCE, ReduceActions.FixedCellRangeValue])
1048  .add(Symbol.RightParen, [REDUCE, ReduceActions.FixedCellRangeValue])
1049  .add(Symbol.LessThan, [REDUCE, ReduceActions.FixedCellRangeValue])
1050  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.FixedCellRangeValue])
1051  .add(Symbol.Minus, [REDUCE, ReduceActions.FixedCellRangeValue])
1052  .add(Symbol.Asterisk, [REDUCE, ReduceActions.FixedCellRangeValue])
1053  .add(Symbol.Divide, [REDUCE, ReduceActions.FixedCellRangeValue])
1054  .add(Symbol.Carrot, [REDUCE, ReduceActions.FixedCellRangeValue])
1055  .add(Symbol.Semicolon, [REDUCE, ReduceActions.FixedCellRangeValue])
1056  .add(Symbol.Comma, [REDUCE, ReduceActions.FixedCellRangeValue]).build();
1057table[State.CellUpper_Colon_CellUpper] = ObjectBuilder
1058  .add(Symbol.EOF, [REDUCE, ReduceActions.CellRangeValue])
1059  .add(Symbol.Ampersand, [REDUCE, ReduceActions.CellRangeValue])
1060  .add(Symbol.Equals, [REDUCE, ReduceActions.CellRangeValue])
1061  .add(Symbol.Plus, [REDUCE, ReduceActions.CellRangeValue])
1062  .add(Symbol.RightParen, [REDUCE, ReduceActions.CellRangeValue])
1063  .add(Symbol.LessThan, [REDUCE, ReduceActions.CellRangeValue])
1064  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.CellRangeValue])
1065  .add(Symbol.Minus, [REDUCE, ReduceActions.CellRangeValue])
1066  .add(Symbol.Asterisk, [REDUCE, ReduceActions.CellRangeValue])
1067  .add(Symbol.Divide, [REDUCE, ReduceActions.CellRangeValue])
1068  .add(Symbol.Carrot, [REDUCE, ReduceActions.CellRangeValue])
1069  .add(Symbol.Semicolon, [REDUCE, ReduceActions.CellRangeValue])
1070  .add(Symbol.Comma, [REDUCE, ReduceActions.CellRangeValue]).build();
1071table[State.Pound_Variable_ExclamationPoint] = ObjectBuilder
1072  .add(Symbol.EOF, [REDUCE, ReduceActions.ReduceLastThreeA])
1073  .add(Symbol.Ampersand, [REDUCE, ReduceActions.ReduceLastThreeA])
1074  .add(Symbol.Equals, [REDUCE, ReduceActions.ReduceLastThreeA])
1075  .add(Symbol.Plus, [REDUCE, ReduceActions.ReduceLastThreeA])
1076  .add(Symbol.RightParen, [REDUCE, ReduceActions.ReduceLastThreeA])
1077  .add(Symbol.LessThan, [REDUCE, ReduceActions.ReduceLastThreeA])
1078  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ReduceLastThreeA])
1079  .add(Symbol.Minus, [REDUCE, ReduceActions.ReduceLastThreeA])
1080  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ReduceLastThreeA])
1081  .add(Symbol.Divide, [REDUCE, ReduceActions.ReduceLastThreeA])
1082  .add(Symbol.Carrot, [REDUCE, ReduceActions.ReduceLastThreeA])
1083  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ReduceLastThreeA])
1084  .add(Symbol.Comma, [REDUCE, ReduceActions.ReduceLastThreeA])
1085  .add(Symbol.Variable, [REDUCE, ReduceActions.ReduceLastThreeA])
1086  .add(Symbol.FullError, [REDUCE, ReduceActions.ReduceLastThreeA]).build();
1087table[State.LessThan_Equals_Expression] = ObjectBuilder
1088  .add(Symbol.EOF, [REDUCE, ReduceActions.LTE])
1089  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
1090  .add(Symbol.Equals, [REDUCE, ReduceActions.LTE])
1091  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
1092  .add(Symbol.RightParen, [REDUCE, ReduceActions.LTE])
1093  .add(Symbol.LessThan, [REDUCE, ReduceActions.LTE])
1094  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.LTE])
1095  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
1096  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
1097  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
1098  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
1099  .add(Symbol.Semicolon, [REDUCE, ReduceActions.LTE])
1100  .add(Symbol.Comma, [REDUCE, ReduceActions.LTE]).build();
1101table[State.LessThan_GreaterThan_Expression] = ObjectBuilder
1102  .add(Symbol.EOF, [REDUCE, ReduceActions.NotEqual])
1103  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
1104  .add(Symbol.Equals, [REDUCE, ReduceActions.NotEqual])
1105  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
1106  .add(Symbol.RightParen, [REDUCE, ReduceActions.NotEqual])
1107  .add(Symbol.LessThan, [REDUCE, ReduceActions.NotEqual])
1108  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.NotEqual])
1109  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
1110  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
1111  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
1112  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
1113  .add(Symbol.Semicolon, [REDUCE, ReduceActions.NotEqual])
1114  .add(Symbol.Comma, [REDUCE, ReduceActions.NotEqual]).build();
1115table[State.GreaterThanEquals_Expressions] = ObjectBuilder
1116  .add(Symbol.EOF, [REDUCE, ReduceActions.GTE])
1117  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
1118  .add(Symbol.Equals, [REDUCE, ReduceActions.GTE])
1119  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
1120  .add(Symbol.RightParen, [REDUCE, ReduceActions.GTE])
1121  .add(Symbol.LessThan, [REDUCE, ReduceActions.GTE])
1122  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.GTE])
1123  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
1124  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
1125  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
1126  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
1127  .add(Symbol.Semicolon, [REDUCE, ReduceActions.GTE])
1128  .add(Symbol.Comma, [REDUCE, ReduceActions.GTE])
1129  .build();
1130table[State.Function_Etc_RightParen] = ObjectBuilder
1131  .add(Symbol.EOF, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1132  .add(Symbol.Ampersand, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1133  .add(Symbol.Equals, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1134  .add(Symbol.Plus, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1135  .add(Symbol.RightParen, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1136  .add(Symbol.LessThan, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1137  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1138  .add(Symbol.Minus, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1139  .add(Symbol.Asterisk, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1140  .add(Symbol.Divide, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1141  .add(Symbol.Carrot, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1142  .add(Symbol.Semicolon, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1143  .add(Symbol.Comma, [REDUCE, ReduceActions.CallFunctionLastTwoInStack])
1144  .build();
1145table[State.Variable_SemiColon] = ObjectBuilder
1146  .add(Symbol.Error, State.Error)
1147  .add(Symbol.Expression, 74)
1148  .add(Symbol.VariableSeq, State.VariableSeq)
1149  .add(Symbol.Number, State.Start_Number)
1150  .add(Symbol.String, [SHIFT, State.Start_String])
1151  .add(Symbol.Equals, [SHIFT, State.Start_Equals])
1152  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
1153  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
1154  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
1155  .add(Symbol.Function, [SHIFT, State.Function])
1156  .add(Symbol.Cell, State.Cell)
1157  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
1158  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
1159  .add(Symbol.Variable, [SHIFT, State.Variable])
1160  .add(Symbol.NumberUpper, [SHIFT, State.Number])
1161  .add(Symbol.FullError, [SHIFT, State.Pound])
1162  .build();
1163table[State.Variable_Comma] = ObjectBuilder
1164  .add(Symbol.Error, State.Error)
1165  .add(Symbol.Expression, 75)
1166  .add(Symbol.VariableSeq, State.VariableSeq)
1167  .add(Symbol.Number, State.Start_Number)
1168  .add(Symbol.String, [SHIFT, State.Start_String])
1169  .add(Symbol.Equals, [SHIFT, State.Start_Equals])
1170  .add(Symbol.Plus, [SHIFT, State.PrefixUnaryPlus])
1171  .add(Symbol.LeftParen, [SHIFT, State.LeftParen])
1172  .add(Symbol.Minus, [SHIFT, State.PrefixUnaryMinus])
1173  .add(Symbol.Function, [SHIFT, State.Function])
1174  .add(Symbol.Cell, State.Cell)
1175  .add(Symbol.FixedCell, [SHIFT, State.FixedCell])
1176  .add(Symbol.CellUpper, [SHIFT, State.CellUpper])
1177  .add(Symbol.Variable, [SHIFT, State.Variable])
1178  .add(Symbol.NumberUpper, [SHIFT, State.Number])
1179  .add(Symbol.Array, [SHIFT, 61])
1180  .add(Symbol.FullError, [SHIFT, State.Pound])
1181  .build();
1182table[State.Variable_FullError_Variable_ExclamationPoint] = ObjectBuilder
1183  .add(Symbol.EOF, [REDUCE, ReduceActions.ReduceLastThreeB])
1184  .add(Symbol.Ampersand, [REDUCE, ReduceActions.ReduceLastThreeB])
1185  .add(Symbol.Equals, [REDUCE, ReduceActions.ReduceLastThreeB])
1186  .add(Symbol.Plus, [REDUCE, ReduceActions.ReduceLastThreeB])
1187  .add(Symbol.RightParen, [REDUCE, ReduceActions.ReduceLastThreeB])
1188  .add(Symbol.LessThan, [REDUCE, ReduceActions.ReduceLastThreeB])
1189  .add(Symbol.GreaterThan, [REDUCE, ReduceActions.ReduceLastThreeB])
1190  .add(Symbol.Minus, [REDUCE, ReduceActions.ReduceLastThreeB])
1191  .add(Symbol.Asterisk, [REDUCE, ReduceActions.ReduceLastThreeB])
1192  .add(Symbol.Divide, [REDUCE, ReduceActions.ReduceLastThreeB])
1193  .add(Symbol.Carrot, [REDUCE, ReduceActions.ReduceLastThreeB])
1194  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ReduceLastThreeB])
1195  .add(Symbol.Comma, [REDUCE, ReduceActions.ReduceLastThreeB])
1196  .add(Symbol.Variable, [REDUCE, ReduceActions.ReduceLastThreeB])
1197  .add(Symbol.FullError, [REDUCE, ReduceActions.ReduceLastThreeB])
1198  .build();
1199table[74] = ObjectBuilder
1200  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
1201  .add(Symbol.Equals, [SHIFT, State.Start_Equals])
1202  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
1203  .add(Symbol.RightParen, [REDUCE, ReduceActions.ReduceInt])
1204  .add(Symbol.LessThan, [SHIFT, State.LessThan])
1205  .add(Symbol.GreaterThan, [SHIFT, State.GreaterThan])
1206  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
1207  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
1208  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
1209  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
1210  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ReduceInt])
1211  .add(Symbol.Comma, [REDUCE, ReduceActions.ReduceInt]).build();
1212table[75] = ObjectBuilder
1213  .add(Symbol.Ampersand, [SHIFT, State.Expression_Ampersand])
1214  .add(Symbol.Equals, [SHIFT, State.Start_Equals])
1215  .add(Symbol.Plus, [SHIFT, State.Expression_Plus])
1216  .add(Symbol.RightParen, [REDUCE, ReduceActions.ReducePercent])
1217  .add(Symbol.LessThan, [SHIFT, State.LessThan])
1218  .add(Symbol.GreaterThan, [SHIFT, State.GreaterThan])
1219  .add(Symbol.Minus, [SHIFT, State.Expression_Minus])
1220  .add(Symbol.Asterisk, [SHIFT, State.Expression_Asterisk])
1221  .add(Symbol.Divide, [SHIFT, State.Expression_Divide])
1222  .add(Symbol.Carrot, [SHIFT, State.Expression_Carrot])
1223  .add(Symbol.Semicolon, [REDUCE, ReduceActions.ReducePercent])
1224  .add(Symbol.Comma, [REDUCE, ReduceActions.ReducePercent]).build();
1225const ACTION_TABLE = table;
1226
1227
1228export {
1229  ACTION_TABLE,
1230  RULES,
1231  REDUCE,
1232  ACCEPT,
1233  SHIFT,
1234  SYMBOL_INDEX_TO_NAME,
1235  SYMBOL_NAME_TO_INDEX,
1236  PRODUCTIONS
1237}