spreadsheet
typeScript/javascript spreadsheet parser, with formulas.
git clone https://git.vogt.world/spreadsheet.git
Log | Files | README.md
← Commit log
commit
message
[Parser,ParserConstants] removing DATE, TIME rules
author
Ben Vogt <[email protected]>
date
2017-12-10 04:32:49
stats
2 file(s) changed, 41 insertions(+), 128 deletions(-)
files
src/Parser/Parser.ts
src/Parser/ParserConstants.ts
  1diff --git a/src/Parser/Parser.ts b/src/Parser/Parser.ts
  2index 14b1b51..4e06cfb 100644
  3--- a/src/Parser/Parser.ts
  4+++ b/src/Parser/Parser.ts
  5@@ -48,12 +48,6 @@ let Parser = (function () {
  6           case ReduceActions.CALL_VARIABLE:
  7             this.$ = sharedStateYY.handler.helper.callVariable.call(this, virtualStack[vsl]);
  8             break;
  9-          case ReduceActions.TIME_CALL_TRUE:
 10-            this.$ = sharedStateYY.handler.time.call(sharedStateYY.obj, virtualStack[vsl], true);
 11-            break;
 12-          case ReduceActions.TIME_CALL:
 13-            this.$ = sharedStateYY.handler.time.call(sharedStateYY.obj, virtualStack[vsl]);
 14-            break;
 15           case ReduceActions.AS_NUMBER:
 16             this.$ = sharedStateYY.handler.helper.number(virtualStack[vsl]);
 17             break;
 18@@ -183,8 +177,6 @@ let Parser = (function () {
 19             case ReduceActions.RETURN_LAST:
 20               return virtualStack[vsl - 1];
 21             case ReduceActions.CALL_VARIABLE:
 22-            case ReduceActions.TIME_CALL_TRUE:
 23-            case ReduceActions.TIME_CALL:
 24             case ReduceActions.AS_NUMBER:
 25             case ReduceActions.AS_STRING:
 26             case ReduceActions.AMPERSAND:
 27@@ -855,10 +847,6 @@ let Parser = (function () {
 28             return Symbol.STRING;
 29           case RuleIndex.FORMULA_NAME:
 30             return Symbol.FUNCTION;
 31-          case RuleIndex.DATE:
 32-            return Symbol.TIME_AMPM;
 33-          case RuleIndex.TIME:
 34-            return Symbol.TIME_24;
 35           case RuleIndex.$_A1_CELL:
 36             return Symbol.FIXEDCELL;
 37           case RuleIndex.A1_CELL:
 38@@ -931,8 +919,6 @@ let Parser = (function () {
 39             1,
 40             2,
 41             3,
 42-            4,
 43-            5,
 44             6,
 45             7,
 46             8,
 47diff --git a/src/Parser/ParserConstants.ts b/src/Parser/ParserConstants.ts
 48index 19b5d1d..e39232d 100644
 49--- a/src/Parser/ParserConstants.ts
 50+++ b/src/Parser/ParserConstants.ts
 51@@ -3,45 +3,41 @@ import {
 52 } from "./ObjectBuilder";
 53 
 54 // Rules represent the Regular Expressions that will be used in sequence to match a given input to the Parser.
 55-const WHITE_SPACE_RULE = /^(?:\s+)/; // rule 0
 56-const DOUBLE_QUOTES_RULE = /^(?:"(\\["]|[^"])*")/; // rule 1
 57-const SINGLE_QUOTES_RULE = /^(?:'(\\[']|[^'])*')/; // rule 2
 58-const FORMULA_NAME_RULE = /^(?:[A-Za-z.]{1,}[A-Za-z_0-9]+(?=[(]))/; // Changed from /^(?:[A-Za-z]{1,}[A-Za-z_0-9]+(?=[(]))/ // rule 3
 59-const DATE_RULE = /^(?:([0]?[1-9]|1[0-2])[:][0-5][0-9]([:][0-5][0-9])?[ ]?(AM|am|aM|Am|PM|pm|pM|Pm))/; // rule 4
 60-const TIME_RULE = /^(?:([0]?[0-9]|1[0-9]|2[0-3])[:][0-5][0-9]([:][0-5][0-9])?)/; // rule 5
 61-const $_A1_CELL_RULE = /^(?:\$[A-Za-z]+\$[0-9]+)/; // rule 6
 62-const A1_CELL_RULE = /^(?:[A-Za-z]+[0-9]+)/; // rules 7
 63-const FORMULA_NAME_SIMPLE_RULE = /^(?:[A-Za-z.]+(?=[(]))/; // rule 8
 64-const VARIABLE_RULE = /^(?:[A-Za-z]{1,}[A-Za-z_0-9]+)/; // rule 9
 65-const SIMPLE_VARIABLE_RILE = /^(?:[A-Za-z_]+)/; //rule 10
 66-const INTEGER_RULE = /^(?:[0-9]+(?:(?:[eE])(?:[\+-])?[0-9]+)?)/; // Changed from /^(?:[0-9]+)/ // rule 11
 67-const OPEN_AND_CLOSE_OF_ARRAY_RULE = /^(?:\[([^\]]*)?\])/; // rule 12 // Changed from /^(?:\[(.*)?\])/
 68-const DOLLAR_SIGN_RULE = /^(?:\$)/; // rule 13
 69-const AMPERSAND_SIGN_RULE = /^(?:&)/; //rule 14
 70-const SINGLE_WHITESPACE_RULE = /^(?: )/; // rule 15
 71-const PERIOD_RULE = /^(?:[.])/; // rule 16
 72-const COLON_RULE = /^(?::)/; //rule 17
 73-const SEMI_COLON_RULE = /^(?:;)/; // rule 18
 74-const COMMA_RULE = /^(?:,)/; // rule 19
 75-const ASTERISK_RULE = /^(?:\*)/; //rule 20
 76-const FORWARD_SLASH_RULE = /^(?:\/)/; // rule 21
 77-const MINUS_SIGN_RULE = /^(?:-)/; // rule 22
 78-const PLUS_SIGN_RULE = /^(?:\+)/; // rule 23
 79-const CARET_SIGN_RULE = /^(?:\^)/; //rule 24
 80-const OPEN_PAREN_RULE = /^(?:\()/; // rule 25
 81-const CLOSE_PAREN_RULE = /^(?:\))/; // rule 26
 82-const GREATER_THAN_SIGN_RULE = /^(?:>)/; // rule 27
 83-const LESS_THAN_SIGN_RULE = /^(?:<)/; // rule 28
 84-const NOT_RULE = /^(?:NOT\b)/; // rule 29
 85-const OPEN_DOUBLE_QUOTE = /^(?:")/; // rule 30
 86-const OPEN_SINGLE_QUITE = /^(?:')/; // rule 31
 87-const EXCLAMATION_POINT_RULE = /^(?:!)/; // rule 32
 88-const EQUALS_SIGN_RULE = /^(?:=)/; // rule 33
 89-const PERCENT_SIGN_RULE = /^(?:%)/; // rule 34
 90-// TODO: POUND_SIGN Modified from /^(?:[#])/, which matches pound sign exclusively. Now specific to errors.
 91-// TODO: Should be renamed.
 92-const POUND_SIGN_RULE = /^(?:#N\/A|#NUM\!|#NULL\!|#DIV\/0\!|#VALUE\!|#REF\!|#ERROR)/; // rule 35
 93-const END_OF_STRING_RULE = /^(?:$)/; // rule 36
 94+const WHITE_SPACE_RULE = /^(?:\s+)/;
 95+const DOUBLE_QUOTES_RULE = /^(?:"(\\["]|[^"])*")/;
 96+const SINGLE_QUOTES_RULE = /^(?:'(\\[']|[^'])*')/;
 97+const FORMULA_NAME_RULE = /^(?:[A-Za-z.]{1,}[A-Za-z_0-9]+(?=[(]))/; // Changed from /^(?:[A-Za-z]{1,}[A-Za-z_0-9]+(?=[(]))/
 98+const $_A1_CELL_RULE = /^(?:\$[A-Za-z]+\$[0-9]+)/;
 99+const A1_CELL_RULE = /^(?:[A-Za-z]+[0-9]+)/;
100+const FORMULA_NAME_SIMPLE_RULE = /^(?:[A-Za-z.]+(?=[(]))/;
101+const VARIABLE_RULE = /^(?:[A-Za-z]{1,}[A-Za-z_0-9]+)/;
102+const SIMPLE_VARIABLE_RILE = /^(?:[A-Za-z_]+)/;
103+const INTEGER_RULE = /^(?:[0-9]+(?:(?:[eE])(?:[\+-])?[0-9]+)?)/;
104+const OPEN_AND_CLOSE_OF_ARRAY_RULE = /^(?:\[([^\]]*)?\])/;
105+const DOLLAR_SIGN_RULE = /^(?:\$)/;
106+const AMPERSAND_SIGN_RULE = /^(?:&)/;
107+const SINGLE_WHITESPACE_RULE = /^(?: )/;
108+const PERIOD_RULE = /^(?:[.])/;
109+const COLON_RULE = /^(?::)/;
110+const SEMI_COLON_RULE = /^(?:;)/;
111+const COMMA_RULE = /^(?:,)/;
112+const ASTERISK_RULE = /^(?:\*)/;
113+const FORWARD_SLASH_RULE = /^(?:\/)/;
114+const MINUS_SIGN_RULE = /^(?:-)/;
115+const PLUS_SIGN_RULE = /^(?:\+)/;
116+const CARET_SIGN_RULE = /^(?:\^)/;
117+const OPEN_PAREN_RULE = /^(?:\()/;
118+const CLOSE_PAREN_RULE = /^(?:\))/;
119+const GREATER_THAN_SIGN_RULE = /^(?:>)/;
120+const LESS_THAN_SIGN_RULE = /^(?:<)/;
121+const NOT_RULE = /^(?:NOT\b)/;
122+const OPEN_DOUBLE_QUOTE = /^(?:")/;
123+const OPEN_SINGLE_QUITE = /^(?:')/;
124+const EXCLAMATION_POINT_RULE = /^(?:!)/;
125+const EQUALS_SIGN_RULE = /^(?:=)/;
126+const PERCENT_SIGN_RULE = /^(?:%)/;
127+const POUND_SIGN_RULE = /^(?:#N\/A|#NUM\!|#NULL\!|#DIV\/0\!|#VALUE\!|#REF\!|#ERROR)/;
128+const END_OF_STRING_RULE = /^(?:$)/;
129 
130 
131 const enum RuleIndex {
132@@ -49,8 +45,6 @@ const enum RuleIndex {
133   DOUBLE_QUOTES = 1,
134   SINGLE_QUOTES = 2,
135   FORMULA_NAME = 3,
136-  DATE = 4,
137-  TIME = 5,
138   $_A1_CELL = 6,
139   A1_CELL = 7,
140   FORMULA_NAME_SIMPLE = 8,
141@@ -91,8 +85,6 @@ RULES[RuleIndex.WHITE_SPACE] = WHITE_SPACE_RULE;
142 RULES[RuleIndex.DOUBLE_QUOTES] = DOUBLE_QUOTES_RULE;
143 RULES[RuleIndex.SINGLE_QUOTES] = SINGLE_QUOTES_RULE;
144 RULES[RuleIndex.FORMULA_NAME] = FORMULA_NAME_RULE;
145-RULES[RuleIndex.DATE] = DATE_RULE;
146-RULES[RuleIndex.TIME] = TIME_RULE;
147 RULES[RuleIndex.$_A1_CELL] = $_A1_CELL_RULE;
148 RULES[RuleIndex.A1_CELL] = A1_CELL_RULE;
149 RULES[RuleIndex.FORMULA_NAME_SIMPLE] = FORMULA_NAME_SIMPLE_RULE;
150@@ -138,8 +130,6 @@ const enum ReduceActions {
151   NO_ACTION = 0,
152   RETURN_LAST = 1,
153   CALL_VARIABLE = 2,
154-  TIME_CALL_TRUE = 3,
155-  TIME_CALL = 4,
156   AS_NUMBER = 5,
157   AS_STRING = 6,
158   AMPERSAND = 7,
159@@ -220,8 +210,6 @@ let productions : Array<ReductionPair> = [];
160 productions[ReduceActions.NO_ACTION] = null;
161 productions[ReduceActions.RETURN_LAST] = new ReductionPair(3, 2);
162 productions[ReduceActions.CALL_VARIABLE] = new ReductionPair(4, 1);
163-productions[ReduceActions.TIME_CALL_TRUE] = new ReductionPair(4, 1);
164-productions[ReduceActions.TIME_CALL] = new ReductionPair(4, 1);
165 productions[ReduceActions.AS_NUMBER] = new ReductionPair(4, 1);
166 productions[ReduceActions.AS_STRING] = new ReductionPair(4, 1);
167 productions[ReduceActions.AMPERSAND] = new ReductionPair(4, 3);
168@@ -272,8 +260,6 @@ enum Symbol {
169   EXPRESSION = 4,
170   EOF = 5,
171   VARIABLE_SEQUENCE = 6,
172-  TIME_AMPM = 7,
173-  TIME_24 = 8,
174   NUMBER = 9,
175   STRING = 10,
176   AMPERSAND = 11,
177@@ -313,8 +299,6 @@ const SYMBOL_NAME_TO_INDEX = {
178   "expression": Symbol.EXPRESSION,
179   "EOF": Symbol.EOF,
180   "variableSequence": Symbol.VARIABLE_SEQUENCE,
181-  "TIME_AMPM": Symbol.TIME_AMPM,
182-  "TIME_24": Symbol.TIME_24,
183   "number": Symbol.NUMBER,
184   "STRING": Symbol.STRING,
185   "&": Symbol.AMPERSAND,
186@@ -347,8 +331,6 @@ const SYMBOL_NAME_TO_INDEX = {
187 };
188 let symbolIndexToName = {};
189 symbolIndexToName[Symbol.EOF] = "EOF";
190-symbolIndexToName[Symbol.TIME_AMPM] = "TIME_AMPM";
191-symbolIndexToName[Symbol.TIME_24] = "TIME_24";
192 symbolIndexToName[Symbol.STRING] = "STRING";
193 symbolIndexToName[Symbol.AMPERSAND] = "&";
194 symbolIndexToName[Symbol.EQUALS] = "=";
195@@ -394,8 +376,6 @@ table[State.START] = ObjectBuilder
196   .add(Symbol.EXPRESSIONS, 1)
197   .add(Symbol.EXPRESSION, 2)
198   .add(Symbol.VARIABLE_SEQUENCE, 3)
199-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
200-  .add(Symbol.TIME_24, [SHIFT, 5])
201   .add(Symbol.NUMBER, State.START_NUMBER)
202   .add(Symbol.STRING, [SHIFT, 7])
203   .add(Symbol.PLUS, [SHIFT, 10])
204@@ -442,38 +422,6 @@ table[3] = ObjectBuilder
205   .add(Symbol.COMMA, [REDUCE, ReduceActions.CALL_VARIABLE])
206   .add(33, [SHIFT, ReduceActions.CELL_VALUE])
207   .build();
208-table[4] = ObjectBuilder
209-  .add(Symbol.EOF, [REDUCE, ReduceActions.TIME_CALL_TRUE])
210-  .add(Symbol.AMPERSAND, [REDUCE, ReduceActions.TIME_CALL_TRUE])
211-  .add(Symbol.EQUALS, [REDUCE, ReduceActions.TIME_CALL_TRUE])
212-  .add(Symbol.PLUS, [REDUCE, ReduceActions.TIME_CALL_TRUE])
213-  .add(Symbol.RIGHT_PAREN, [REDUCE, ReduceActions.TIME_CALL_TRUE])
214-  .add(Symbol.LESS_THAN, [REDUCE, ReduceActions.TIME_CALL_TRUE])
215-  .add(Symbol.GREATER_THAN, [REDUCE, ReduceActions.TIME_CALL_TRUE])
216-  .add(Symbol.NOT, [REDUCE, ReduceActions.TIME_CALL_TRUE])
217-  .add(Symbol.MINUS, [REDUCE, ReduceActions.TIME_CALL_TRUE])
218-  .add(Symbol.ASTERISK, [REDUCE, ReduceActions.TIME_CALL_TRUE])
219-  .add(Symbol.DIVIDE, [REDUCE, ReduceActions.TIME_CALL_TRUE])
220-  .add(Symbol.CARROT, [REDUCE, ReduceActions.TIME_CALL_TRUE])
221-  .add(Symbol.SEMI_COLON, [REDUCE, ReduceActions.TIME_CALL_TRUE])
222-  .add(Symbol.COMMA, [REDUCE, ReduceActions.TIME_CALL_TRUE])
223-  .build();
224-table[5] = ObjectBuilder
225-  .add(Symbol.EOF, [REDUCE, ReduceActions.TIME_CALL])
226-  .add(Symbol.AMPERSAND, [REDUCE, ReduceActions.TIME_CALL])
227-  .add(Symbol.EQUALS, [REDUCE, ReduceActions.TIME_CALL])
228-  .add(Symbol.PLUS, [REDUCE, ReduceActions.TIME_CALL])
229-  .add(Symbol.RIGHT_PAREN, [REDUCE, ReduceActions.TIME_CALL])
230-  .add(Symbol.LESS_THAN, [REDUCE, ReduceActions.TIME_CALL])
231-  .add(Symbol.GREATER_THAN, [REDUCE, ReduceActions.TIME_CALL])
232-  .add(Symbol.NOT, [REDUCE, ReduceActions.TIME_CALL])
233-  .add(Symbol.MINUS, [REDUCE, ReduceActions.TIME_CALL])
234-  .add(Symbol.ASTERISK, [REDUCE, ReduceActions.TIME_CALL])
235-  .add(Symbol.DIVIDE, [REDUCE, ReduceActions.TIME_CALL])
236-  .add(Symbol.CARROT, [REDUCE, ReduceActions.TIME_CALL])
237-  .add(Symbol.SEMI_COLON, [REDUCE, ReduceActions.TIME_CALL])
238-  .add(Symbol.COMMA, [REDUCE, ReduceActions.TIME_CALL])
239-  .build();
240 table[State.START_NUMBER] = ObjectBuilder
241   .add(Symbol.EOF, [REDUCE, ReduceActions.AS_NUMBER])
242   .add(Symbol.AMPERSAND, [REDUCE, ReduceActions.AS_NUMBER])
243@@ -511,8 +459,6 @@ table[8] = ObjectBuilder
244   .add(Symbol.ERROR, 13)
245   .add(Symbol.EXPRESSION, 32)
246   .add(Symbol.VARIABLE_SEQUENCE, 3)
247-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
248-  .add(Symbol.TIME_24, [SHIFT, 5])
249   .add(Symbol.NUMBER, State.START_NUMBER)
250   .add(Symbol.STRING, [SHIFT, 7])
251   .add(Symbol.PLUS, [SHIFT, 10])
252@@ -530,8 +476,6 @@ table[9] = ObjectBuilder
253   .add(Symbol.ERROR, 13)
254   .add(Symbol.EXPRESSION, 33)
255   .add(Symbol.VARIABLE_SEQUENCE, 3)
256-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
257-  .add(Symbol.TIME_24, [SHIFT, 5])
258   .add(Symbol.NUMBER, State.START_NUMBER)
259   .add(Symbol.STRING, [SHIFT, 7])
260   .add(Symbol.PLUS, [SHIFT, 10])
261@@ -549,8 +493,6 @@ table[10] = ObjectBuilder
262   .add(Symbol.ERROR, 13)
263   .add(Symbol.EXPRESSION, 34)
264   .add(Symbol.VARIABLE_SEQUENCE, 3)
265-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
266-  .add(Symbol.TIME_24, [SHIFT, 5])
267   .add(Symbol.NUMBER, State.START_NUMBER)
268   .add(Symbol.STRING, [SHIFT, 7])
269   .add(Symbol.PLUS, [SHIFT, 10])
270@@ -686,8 +628,6 @@ table[20] = ObjectBuilder
271   .add(Symbol.ERROR, 13)
272   .add(Symbol.EXPRESSION, 43)
273   .add(Symbol.VARIABLE_SEQUENCE, 3)
274-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
275-  .add(Symbol.TIME_24, [SHIFT, 5])
276   .add(Symbol.NUMBER, State.START_NUMBER)
277   .add(Symbol.STRING, [SHIFT, 7])
278   .add(Symbol.PLUS, [SHIFT, 10])
279@@ -705,8 +645,6 @@ table[21] = ObjectBuilder
280   .add(Symbol.ERROR, 13)
281   .add(Symbol.EXPRESSION, 44)
282   .add(Symbol.VARIABLE_SEQUENCE, 3)
283-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
284-  .add(Symbol.TIME_24, [SHIFT, 5])
285   .add(Symbol.NUMBER, State.START_NUMBER)
286   .add(Symbol.STRING, [SHIFT, 7])
287   .add(Symbol.PLUS, [SHIFT, 10])
288@@ -724,8 +662,6 @@ table[22] = ObjectBuilder
289   .add(Symbol.ERROR, 13)
290   .add(Symbol.EXPRESSION, 45)
291   .add(Symbol.VARIABLE_SEQUENCE, 3)
292-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
293-  .add(Symbol.TIME_24, [SHIFT, 5])
294   .add(Symbol.NUMBER, State.START_NUMBER)
295   .add(Symbol.STRING, [SHIFT, 7])
296   .add(Symbol.PLUS, [SHIFT, 10])
297@@ -743,8 +679,6 @@ table[23] = ObjectBuilder
298   .add(Symbol.ERROR, 13)
299   .add(Symbol.EXPRESSION, 48)
300   .add(Symbol.VARIABLE_SEQUENCE, 3)
301-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
302-  .add(Symbol.TIME_24, [SHIFT, 5])
303   .add(Symbol.NUMBER, State.START_NUMBER)
304   .add(Symbol.STRING, [SHIFT, 7])
305   .add(Symbol.EQUALS, [SHIFT, 46])
306@@ -764,8 +698,6 @@ table[24] = ObjectBuilder
307   .add(Symbol.ERROR, 13)
308   .add(Symbol.EXPRESSION, 50)
309   .add(Symbol.VARIABLE_SEQUENCE, 3)
310-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
311-  .add(Symbol.TIME_24, [SHIFT, 5])
312   .add(Symbol.NUMBER, State.START_NUMBER)
313   .add(Symbol.STRING, [SHIFT, 7])
314   .add(Symbol.EQUALS, [SHIFT, 49])
315@@ -784,8 +716,6 @@ table[25] = ObjectBuilder
316   .add(Symbol.ERROR, 13)
317   .add(Symbol.EXPRESSION, 51)
318   .add(Symbol.VARIABLE_SEQUENCE, 3)
319-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
320-  .add(Symbol.TIME_24, [SHIFT, 5])
321   .add(Symbol.NUMBER, State.START_NUMBER)
322   .add(Symbol.STRING, [SHIFT, 7])
323   .add(Symbol.PLUS, [SHIFT, 10])
324@@ -803,8 +733,6 @@ table[26] = ObjectBuilder
325   .add(Symbol.ERROR, 13)
326   .add(Symbol.EXPRESSION, 52)
327   .add(Symbol.VARIABLE_SEQUENCE, 3)
328-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
329-  .add(Symbol.TIME_24, [SHIFT, 5])
330   .add(Symbol.NUMBER, State.START_NUMBER)
331   .add(Symbol.STRING, [SHIFT, 7])
332   .add(Symbol.PLUS, [SHIFT, 10])
333@@ -822,8 +750,6 @@ table[27] = ObjectBuilder
334   .add(Symbol.ERROR, 13)
335   .add(Symbol.EXPRESSION, 53)
336   .add(Symbol.VARIABLE_SEQUENCE, 3)
337-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
338-  .add(Symbol.TIME_24, [SHIFT, 5])
339   .add(Symbol.NUMBER, State.START_NUMBER)
340   .add(Symbol.STRING, [SHIFT, 7])
341   .add(Symbol.PLUS, [SHIFT, 10])
342@@ -841,8 +767,6 @@ table[28] = ObjectBuilder
343   .add(Symbol.ERROR, 13)
344   .add(Symbol.EXPRESSION, 54)
345   .add(Symbol.VARIABLE_SEQUENCE, 3)
346-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
347-  .add(Symbol.TIME_24, [SHIFT, 5])
348   .add(Symbol.NUMBER, State.START_NUMBER)
349   .add(Symbol.STRING, [SHIFT, 7])
350   .add(Symbol.PLUS, [SHIFT, 10])
351@@ -860,8 +784,6 @@ table[29] = ObjectBuilder
352   .add(Symbol.ERROR, 13)
353   .add(Symbol.EXPRESSION, 55)
354   .add(Symbol.VARIABLE_SEQUENCE, 3)
355-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
356-  .add(Symbol.TIME_24, [SHIFT, 5])
357   .add(Symbol.NUMBER, State.START_NUMBER)
358   .add(Symbol.STRING, [SHIFT, 7])
359   .add(Symbol.PLUS, [SHIFT, 10])
360@@ -945,8 +867,6 @@ table[35] = ObjectBuilder
361   .add(Symbol.ERROR, 13)
362   .add(Symbol.EXPRESSION, 60)
363   .add(Symbol.VARIABLE_SEQUENCE, 3)
364-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
365-  .add(Symbol.TIME_24, [SHIFT, 5])
366   .add(Symbol.NUMBER, State.START_NUMBER)
367   .add(Symbol.STRING, [SHIFT, 7])
368   .add(Symbol.PLUS, [SHIFT, 10])
369@@ -1049,8 +969,6 @@ table[46] = ObjectBuilder
370   .add(Symbol.ERROR, 13)
371   .add(Symbol.EXPRESSION, 67)
372   .add(Symbol.VARIABLE_SEQUENCE, 3)
373-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
374-  .add(Symbol.TIME_24, [SHIFT, 5])
375   .add(Symbol.NUMBER, State.START_NUMBER)
376   .add(Symbol.STRING, [SHIFT, 7])
377   .add(Symbol.PLUS, [SHIFT, 10])
378@@ -1068,8 +986,6 @@ table[47] = ObjectBuilder
379   .add(Symbol.ERROR, 13)
380   .add(Symbol.EXPRESSION, 68)
381   .add(Symbol.VARIABLE_SEQUENCE, 3)
382-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
383-  .add(Symbol.TIME_24, [SHIFT, 5])
384   .add(Symbol.NUMBER, State.START_NUMBER)
385   .add(Symbol.STRING, [SHIFT, 7])
386   .add(Symbol.PLUS, [SHIFT, 10])
387@@ -1103,8 +1019,6 @@ table[49] = ObjectBuilder
388   .add(Symbol.ERROR, 13)
389   .add(Symbol.EXPRESSION, 69)
390   .add(Symbol.VARIABLE_SEQUENCE, 3)
391-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
392-  .add(Symbol.TIME_24, [SHIFT, 5])
393   .add(Symbol.NUMBER, State.START_NUMBER)
394   .add(Symbol.STRING, [SHIFT, 7])
395   .add(Symbol.PLUS, [SHIFT, 10])
396@@ -1421,8 +1335,6 @@ table[71] = ObjectBuilder
397   .add(Symbol.ERROR, 13)
398   .add(Symbol.EXPRESSION, 74)
399   .add(Symbol.VARIABLE_SEQUENCE, 3)
400-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
401-  .add(Symbol.TIME_24, [SHIFT, 5])
402   .add(Symbol.NUMBER, State.START_NUMBER)
403   .add(Symbol.STRING, [SHIFT, 7])
404   .add(Symbol.EQUALS, [SHIFT, 21])
405@@ -1441,8 +1353,6 @@ table[72] = ObjectBuilder
406   .add(Symbol.ERROR, 13)
407   .add(Symbol.EXPRESSION, 75)
408   .add(Symbol.VARIABLE_SEQUENCE, 3)
409-  .add(Symbol.TIME_AMPM, [SHIFT, 4])
410-  .add(Symbol.TIME_24, [SHIFT, 5])
411   .add(Symbol.NUMBER, State.START_NUMBER)
412   .add(Symbol.STRING, [SHIFT, 7])
413   .add(Symbol.EQUALS, [SHIFT, 21])