1 /* This file was generated by SableCC (http://www.sablecc.org/). */
\r
3 package org.simantics.basicexpression.parser;
\r
5 import org.simantics.basicexpression.lexer.*;
\r
6 import org.simantics.basicexpression.node.*;
\r
7 import org.simantics.basicexpression.analysis.*;
\r
10 import java.io.DataInputStream;
\r
11 import java.io.BufferedInputStream;
\r
12 import java.io.IOException;
\r
14 @SuppressWarnings("nls")
\r
17 public final Analysis ignoredTokens = new AnalysisAdapter();
\r
19 protected ArrayList nodeList;
\r
21 private final Lexer lexer;
\r
22 private final ListIterator stack = new LinkedList().listIterator();
\r
23 private int last_pos;
\r
24 private int last_line;
\r
25 private Token last_token;
\r
26 private final TokenIndex converter = new TokenIndex();
\r
27 private final int[] action = new int[2];
\r
29 private final static int SHIFT = 0;
\r
30 private final static int REDUCE = 1;
\r
31 private final static int ACCEPT = 2;
\r
32 private final static int ERROR = 3;
\r
34 public Parser(@SuppressWarnings("hiding") Lexer lexer)
\r
39 protected void filter() throws ParserException, LexerException, IOException
\r
44 private void push(int numstate, ArrayList listNode, boolean hidden) throws ParserException, LexerException, IOException
\r
46 this.nodeList = listNode;
\r
53 if(!this.stack.hasNext())
\r
55 this.stack.add(new State(numstate, this.nodeList));
\r
59 State s = (State) this.stack.next();
\r
61 s.nodes = this.nodeList;
\r
64 private int goTo(int index)
\r
66 int state = state();
\r
68 int high = gotoTable[index].length - 1;
\r
69 int value = gotoTable[index][0][1];
\r
73 int middle = (low + high) / 2;
\r
75 if(state < gotoTable[index][middle][0])
\r
79 else if(state > gotoTable[index][middle][0])
\r
85 value = gotoTable[index][middle][1];
\r
95 State s = (State) this.stack.previous();
\r
100 private ArrayList pop()
\r
102 return ((State) this.stack.previous()).nodes;
\r
105 private int index(Switchable token)
\r
107 this.converter.index = -1;
\r
108 token.apply(this.converter);
\r
109 return this.converter.index;
\r
112 @SuppressWarnings("unchecked")
\r
113 public Start parse() throws ParserException, LexerException, IOException
\r
115 push(0, null, true);
\r
116 List<Node> ign = null;
\r
119 while(index(this.lexer.peek()) == -1)
\r
123 ign = new LinkedList<Node>();
\r
126 ign.add(this.lexer.next());
\r
131 this.ignoredTokens.setIn(this.lexer.peek(), ign);
\r
135 this.last_pos = this.lexer.peek().getPos();
\r
136 this.last_line = this.lexer.peek().getLine();
\r
137 this.last_token = this.lexer.peek();
\r
139 int index = index(this.lexer.peek());
\r
140 this.action[0] = Parser.actionTable[state()][0][1];
\r
141 this.action[1] = Parser.actionTable[state()][0][2];
\r
144 int high = Parser.actionTable[state()].length - 1;
\r
148 int middle = (low + high) / 2;
\r
150 if(index < Parser.actionTable[state()][middle][0])
\r
154 else if(index > Parser.actionTable[state()][middle][0])
\r
160 this.action[0] = Parser.actionTable[state()][middle][1];
\r
161 this.action[1] = Parser.actionTable[state()][middle][2];
\r
166 switch(this.action[0])
\r
170 ArrayList list = new ArrayList();
\r
171 list.add(this.lexer.next());
\r
172 push(this.action[1], list, false);
\r
176 switch(this.action[1])
\r
178 case 0: /* reduce AMultExpression */
\r
180 ArrayList list = new0();
\r
181 push(goTo(0), list, false);
\r
184 case 1: /* reduce APlusExpression */
\r
186 ArrayList list = new1();
\r
187 push(goTo(0), list, false);
\r
190 case 2: /* reduce AMinusExpression */
\r
192 ArrayList list = new2();
\r
193 push(goTo(0), list, false);
\r
196 case 3: /* reduce AUnaryMultiplicative */
\r
198 ArrayList list = new3();
\r
199 push(goTo(1), list, false);
\r
202 case 4: /* reduce AMultMultiplicative */
\r
204 ArrayList list = new4();
\r
205 push(goTo(1), list, false);
\r
208 case 5: /* reduce ADivMultiplicative */
\r
210 ArrayList list = new5();
\r
211 push(goTo(1), list, false);
\r
214 case 6: /* reduce APrimaryUnary */
\r
216 ArrayList list = new6();
\r
217 push(goTo(2), list, false);
\r
220 case 7: /* reduce AUnaryplusUnary */
\r
222 ArrayList list = new7();
\r
223 push(goTo(2), list, false);
\r
226 case 8: /* reduce AUnaryminusUnary */
\r
228 ArrayList list = new8();
\r
229 push(goTo(2), list, false);
\r
232 case 9: /* reduce ASingleArgList */
\r
234 ArrayList list = new9();
\r
235 push(goTo(3), list, false);
\r
238 case 10: /* reduce ASequenceArgList */
\r
240 ArrayList list = new10();
\r
241 push(goTo(3), list, false);
\r
244 case 11: /* reduce AValuePrimary */
\r
246 ArrayList list = new11();
\r
247 push(goTo(4), list, false);
\r
250 case 12: /* reduce AVariablePrimary */
\r
252 ArrayList list = new12();
\r
253 push(goTo(4), list, false);
\r
256 case 13: /* reduce AAfunctionprimary1Primary */
\r
258 ArrayList list = new13();
\r
259 push(goTo(4), list, false);
\r
262 case 14: /* reduce AAfunctionprimary2Primary */
\r
264 ArrayList list = new14();
\r
265 push(goTo(4), list, false);
\r
268 case 15: /* reduce ASingleRange */
\r
270 ArrayList list = new15();
\r
271 push(goTo(5), list, false);
\r
274 case 16: /* reduce AMultiRange */
\r
276 ArrayList list = new16();
\r
277 push(goTo(5), list, false);
\r
280 case 17: /* reduce ARviValue */
\r
282 ArrayList list = new17();
\r
283 push(goTo(6), list, false);
\r
286 case 18: /* reduce AStringValue */
\r
288 ArrayList list = new18();
\r
289 push(goTo(6), list, false);
\r
292 case 19: /* reduce AConstantValue */
\r
294 ArrayList list = new19();
\r
295 push(goTo(6), list, false);
\r
298 case 20: /* reduce ARangeValue */
\r
300 ArrayList list = new20();
\r
301 push(goTo(6), list, false);
\r
304 case 21: /* reduce AAddressValue */
\r
306 ArrayList list = new21();
\r
307 push(goTo(6), list, false);
\r
310 case 22: /* reduce AExprValue */
\r
312 ArrayList list = new22();
\r
313 push(goTo(6), list, false);
\r
320 EOF node2 = (EOF) this.lexer.next();
\r
321 PExpression node1 = (PExpression) pop().get(0);
\r
322 Start node = new Start(node1, node2);
\r
326 throw new ParserException(this.last_token,
\r
327 "[" + this.last_line + "," + this.last_pos + "] " +
\r
328 Parser.errorMessages[Parser.errors[this.action[1]]]);
\r
335 @SuppressWarnings("unchecked")
\r
336 ArrayList new0() /* reduce AMultExpression */
\r
338 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
340 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
341 PExpression pexpressionNode1;
\r
344 PMultiplicative pmultiplicativeNode2;
\r
345 pmultiplicativeNode2 = (PMultiplicative)nodeArrayList1.get(0);
\r
347 pexpressionNode1 = new AMultExpression(pmultiplicativeNode2);
\r
349 nodeList.add(pexpressionNode1);
\r
355 @SuppressWarnings("unchecked")
\r
356 ArrayList new1() /* reduce APlusExpression */
\r
358 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
360 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
361 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
362 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
363 PExpression pexpressionNode1;
\r
366 PExpression pexpressionNode2;
\r
368 PMultiplicative pmultiplicativeNode4;
\r
369 pexpressionNode2 = (PExpression)nodeArrayList1.get(0);
\r
370 tplusNode3 = (TPlus)nodeArrayList2.get(0);
\r
371 pmultiplicativeNode4 = (PMultiplicative)nodeArrayList3.get(0);
\r
373 pexpressionNode1 = new APlusExpression(pexpressionNode2, tplusNode3, pmultiplicativeNode4);
\r
375 nodeList.add(pexpressionNode1);
\r
381 @SuppressWarnings("unchecked")
\r
382 ArrayList new2() /* reduce AMinusExpression */
\r
384 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
386 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
387 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
388 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
389 PExpression pexpressionNode1;
\r
392 PExpression pexpressionNode2;
\r
393 TMinus tminusNode3;
\r
394 PMultiplicative pmultiplicativeNode4;
\r
395 pexpressionNode2 = (PExpression)nodeArrayList1.get(0);
\r
396 tminusNode3 = (TMinus)nodeArrayList2.get(0);
\r
397 pmultiplicativeNode4 = (PMultiplicative)nodeArrayList3.get(0);
\r
399 pexpressionNode1 = new AMinusExpression(pexpressionNode2, tminusNode3, pmultiplicativeNode4);
\r
401 nodeList.add(pexpressionNode1);
\r
407 @SuppressWarnings("unchecked")
\r
408 ArrayList new3() /* reduce AUnaryMultiplicative */
\r
410 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
412 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
413 PMultiplicative pmultiplicativeNode1;
\r
416 PUnary punaryNode2;
\r
417 punaryNode2 = (PUnary)nodeArrayList1.get(0);
\r
419 pmultiplicativeNode1 = new AUnaryMultiplicative(punaryNode2);
\r
421 nodeList.add(pmultiplicativeNode1);
\r
427 @SuppressWarnings("unchecked")
\r
428 ArrayList new4() /* reduce AMultMultiplicative */
\r
430 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
432 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
433 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
434 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
435 PMultiplicative pmultiplicativeNode1;
\r
438 PMultiplicative pmultiplicativeNode2;
\r
440 PUnary punaryNode4;
\r
441 pmultiplicativeNode2 = (PMultiplicative)nodeArrayList1.get(0);
\r
442 tmultNode3 = (TMult)nodeArrayList2.get(0);
\r
443 punaryNode4 = (PUnary)nodeArrayList3.get(0);
\r
445 pmultiplicativeNode1 = new AMultMultiplicative(pmultiplicativeNode2, tmultNode3, punaryNode4);
\r
447 nodeList.add(pmultiplicativeNode1);
\r
453 @SuppressWarnings("unchecked")
\r
454 ArrayList new5() /* reduce ADivMultiplicative */
\r
456 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
458 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
459 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
460 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
461 PMultiplicative pmultiplicativeNode1;
\r
464 PMultiplicative pmultiplicativeNode2;
\r
466 PUnary punaryNode4;
\r
467 pmultiplicativeNode2 = (PMultiplicative)nodeArrayList1.get(0);
\r
468 tdivNode3 = (TDiv)nodeArrayList2.get(0);
\r
469 punaryNode4 = (PUnary)nodeArrayList3.get(0);
\r
471 pmultiplicativeNode1 = new ADivMultiplicative(pmultiplicativeNode2, tdivNode3, punaryNode4);
\r
473 nodeList.add(pmultiplicativeNode1);
\r
479 @SuppressWarnings("unchecked")
\r
480 ArrayList new6() /* reduce APrimaryUnary */
\r
482 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
484 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
485 PUnary punaryNode1;
\r
488 PPrimary pprimaryNode2;
\r
489 pprimaryNode2 = (PPrimary)nodeArrayList1.get(0);
\r
491 punaryNode1 = new APrimaryUnary(pprimaryNode2);
\r
493 nodeList.add(punaryNode1);
\r
499 @SuppressWarnings("unchecked")
\r
500 ArrayList new7() /* reduce AUnaryplusUnary */
\r
502 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
504 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
505 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
506 PUnary punaryNode1;
\r
510 PUnary punaryNode3;
\r
511 tplusNode2 = (TPlus)nodeArrayList1.get(0);
\r
512 punaryNode3 = (PUnary)nodeArrayList2.get(0);
\r
514 punaryNode1 = new AUnaryplusUnary(tplusNode2, punaryNode3);
\r
516 nodeList.add(punaryNode1);
\r
522 @SuppressWarnings("unchecked")
\r
523 ArrayList new8() /* reduce AUnaryminusUnary */
\r
525 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
527 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
528 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
529 PUnary punaryNode1;
\r
532 TMinus tminusNode2;
\r
533 PUnary punaryNode3;
\r
534 tminusNode2 = (TMinus)nodeArrayList1.get(0);
\r
535 punaryNode3 = (PUnary)nodeArrayList2.get(0);
\r
537 punaryNode1 = new AUnaryminusUnary(tminusNode2, punaryNode3);
\r
539 nodeList.add(punaryNode1);
\r
545 @SuppressWarnings("unchecked")
\r
546 ArrayList new9() /* reduce ASingleArgList */
\r
548 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
550 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
551 PArgList parglistNode1;
\r
554 PExpression pexpressionNode2;
\r
555 pexpressionNode2 = (PExpression)nodeArrayList1.get(0);
\r
557 parglistNode1 = new ASingleArgList(pexpressionNode2);
\r
559 nodeList.add(parglistNode1);
\r
565 @SuppressWarnings("unchecked")
\r
566 ArrayList new10() /* reduce ASequenceArgList */
\r
568 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
570 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
571 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
572 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
573 PArgList parglistNode1;
\r
576 PArgList parglistNode2;
\r
577 TComma tcommaNode3;
\r
578 PExpression pexpressionNode4;
\r
579 parglistNode2 = (PArgList)nodeArrayList1.get(0);
\r
580 tcommaNode3 = (TComma)nodeArrayList2.get(0);
\r
581 pexpressionNode4 = (PExpression)nodeArrayList3.get(0);
\r
583 parglistNode1 = new ASequenceArgList(parglistNode2, tcommaNode3, pexpressionNode4);
\r
585 nodeList.add(parglistNode1);
\r
591 @SuppressWarnings("unchecked")
\r
592 ArrayList new11() /* reduce AValuePrimary */
\r
594 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
596 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
597 PPrimary pprimaryNode1;
\r
600 PValue pvalueNode2;
\r
601 pvalueNode2 = (PValue)nodeArrayList1.get(0);
\r
603 pprimaryNode1 = new AValuePrimary(pvalueNode2);
\r
605 nodeList.add(pprimaryNode1);
\r
611 @SuppressWarnings("unchecked")
\r
612 ArrayList new12() /* reduce AVariablePrimary */
\r
614 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
616 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
617 PPrimary pprimaryNode1;
\r
620 TVariable tvariableNode2;
\r
621 tvariableNode2 = (TVariable)nodeArrayList1.get(0);
\r
623 pprimaryNode1 = new AVariablePrimary(tvariableNode2);
\r
625 nodeList.add(pprimaryNode1);
\r
631 @SuppressWarnings("unchecked")
\r
632 ArrayList new13() /* reduce AAfunctionprimary1Primary */
\r
634 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
636 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
637 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
638 PPrimary pprimaryNode1;
\r
642 @SuppressWarnings("unused") Object nullNode3 = null;
\r
644 tfuncNode2 = (TFunc)nodeArrayList1.get(0);
\r
645 trparNode4 = (TRPar)nodeArrayList2.get(0);
\r
647 pprimaryNode1 = new AFunctionPrimary(tfuncNode2, null, trparNode4);
\r
649 nodeList.add(pprimaryNode1);
\r
655 @SuppressWarnings("unchecked")
\r
656 ArrayList new14() /* reduce AAfunctionprimary2Primary */
\r
658 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
660 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
661 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
662 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
663 PPrimary pprimaryNode1;
\r
667 PArgList parglistNode3;
\r
669 tfuncNode2 = (TFunc)nodeArrayList1.get(0);
\r
670 parglistNode3 = (PArgList)nodeArrayList2.get(0);
\r
671 trparNode4 = (TRPar)nodeArrayList3.get(0);
\r
673 pprimaryNode1 = new AFunctionPrimary(tfuncNode2, parglistNode3, trparNode4);
\r
675 nodeList.add(pprimaryNode1);
\r
681 @SuppressWarnings("unchecked")
\r
682 ArrayList new15() /* reduce ASingleRange */
\r
684 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
686 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
687 PRange prangeNode1;
\r
691 tcellNode2 = (TCell)nodeArrayList1.get(0);
\r
693 prangeNode1 = new ASingleRange(tcellNode2);
\r
695 nodeList.add(prangeNode1);
\r
701 @SuppressWarnings("unchecked")
\r
702 ArrayList new16() /* reduce AMultiRange */
\r
704 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
706 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
707 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
708 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
709 PRange prangeNode1;
\r
713 TColon tcolonNode3;
\r
715 tcellNode2 = (TCell)nodeArrayList1.get(0);
\r
716 tcolonNode3 = (TColon)nodeArrayList2.get(0);
\r
717 tcellNode4 = (TCell)nodeArrayList3.get(0);
\r
719 prangeNode1 = new AMultiRange(tcellNode2, tcolonNode3, tcellNode4);
\r
721 nodeList.add(prangeNode1);
\r
727 @SuppressWarnings("unchecked")
\r
728 ArrayList new17() /* reduce ARviValue */
\r
730 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
732 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
733 PValue pvalueNode1;
\r
737 trviNode2 = (TRvi)nodeArrayList1.get(0);
\r
739 pvalueNode1 = new ARviValue(trviNode2);
\r
741 nodeList.add(pvalueNode1);
\r
747 @SuppressWarnings("unchecked")
\r
748 ArrayList new18() /* reduce AStringValue */
\r
750 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
752 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
753 PValue pvalueNode1;
\r
756 TString tstringNode2;
\r
757 tstringNode2 = (TString)nodeArrayList1.get(0);
\r
759 pvalueNode1 = new AStringValue(tstringNode2);
\r
761 nodeList.add(pvalueNode1);
\r
767 @SuppressWarnings("unchecked")
\r
768 ArrayList new19() /* reduce AConstantValue */
\r
770 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
772 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
773 PValue pvalueNode1;
\r
776 TNumber tnumberNode2;
\r
777 tnumberNode2 = (TNumber)nodeArrayList1.get(0);
\r
779 pvalueNode1 = new AConstantValue(tnumberNode2);
\r
781 nodeList.add(pvalueNode1);
\r
787 @SuppressWarnings("unchecked")
\r
788 ArrayList new20() /* reduce ARangeValue */
\r
790 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
792 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
793 PValue pvalueNode1;
\r
796 PRange prangeNode2;
\r
797 prangeNode2 = (PRange)nodeArrayList1.get(0);
\r
799 pvalueNode1 = new ARangeValue(prangeNode2);
\r
801 nodeList.add(pvalueNode1);
\r
807 @SuppressWarnings("unchecked")
\r
808 ArrayList new21() /* reduce AAddressValue */
\r
810 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
812 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
813 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
814 PValue pvalueNode1;
\r
817 TAmpersand tampersandNode2;
\r
818 PRange prangeNode3;
\r
819 tampersandNode2 = (TAmpersand)nodeArrayList1.get(0);
\r
820 prangeNode3 = (PRange)nodeArrayList2.get(0);
\r
822 pvalueNode1 = new AAddressValue(tampersandNode2, prangeNode3);
\r
824 nodeList.add(pvalueNode1);
\r
830 @SuppressWarnings("unchecked")
\r
831 ArrayList new22() /* reduce AExprValue */
\r
833 @SuppressWarnings("hiding") ArrayList nodeList = new ArrayList();
\r
835 @SuppressWarnings("unused") ArrayList nodeArrayList3 = pop();
\r
836 @SuppressWarnings("unused") ArrayList nodeArrayList2 = pop();
\r
837 @SuppressWarnings("unused") ArrayList nodeArrayList1 = pop();
\r
838 PValue pvalueNode1;
\r
842 PExpression pexpressionNode3;
\r
844 tlparNode2 = (TLPar)nodeArrayList1.get(0);
\r
845 pexpressionNode3 = (PExpression)nodeArrayList2.get(0);
\r
846 trparNode4 = (TRPar)nodeArrayList3.get(0);
\r
848 pvalueNode1 = new AExprValue(tlparNode2, pexpressionNode3, trparNode4);
\r
850 nodeList.add(pvalueNode1);
\r
856 private static int[][][] actionTable;
\r
858 {{-1, ERROR, 0}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
859 {{-1, ERROR, 1}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
860 {{-1, ERROR, 2}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
861 {{-1, ERROR, 3}, {14, SHIFT, 7}, },
\r
862 {{-1, ERROR, 4}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
863 {{-1, REDUCE, 12}, },
\r
864 {{-1, ERROR, 6}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {11, SHIFT, 21}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
865 {{-1, REDUCE, 15}, {9, SHIFT, 24}, },
\r
866 {{-1, REDUCE, 17}, },
\r
867 {{-1, REDUCE, 19}, },
\r
868 {{-1, REDUCE, 18}, },
\r
869 {{-1, ERROR, 11}, {3, SHIFT, 25}, {4, SHIFT, 26}, {19, ACCEPT, -1}, },
\r
870 {{-1, REDUCE, 0}, {5, SHIFT, 27}, {6, SHIFT, 28}, },
\r
871 {{-1, REDUCE, 3}, },
\r
872 {{-1, REDUCE, 6}, },
\r
873 {{-1, REDUCE, 20}, },
\r
874 {{-1, REDUCE, 11}, },
\r
875 {{-1, REDUCE, 7}, },
\r
876 {{-1, REDUCE, 8}, },
\r
877 {{-1, REDUCE, 21}, },
\r
878 {{-1, ERROR, 20}, {3, SHIFT, 25}, {4, SHIFT, 26}, {11, SHIFT, 29}, },
\r
879 {{-1, REDUCE, 13}, },
\r
880 {{-1, REDUCE, 9}, {3, SHIFT, 25}, {4, SHIFT, 26}, },
\r
881 {{-1, ERROR, 23}, {8, SHIFT, 30}, {11, SHIFT, 31}, },
\r
882 {{-1, ERROR, 24}, {14, SHIFT, 32}, },
\r
883 {{-1, ERROR, 25}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
884 {{-1, ERROR, 26}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
885 {{-1, ERROR, 27}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
886 {{-1, ERROR, 28}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
887 {{-1, REDUCE, 22}, },
\r
888 {{-1, ERROR, 30}, {3, SHIFT, 1}, {4, SHIFT, 2}, {7, SHIFT, 3}, {10, SHIFT, 4}, {12, SHIFT, 5}, {13, SHIFT, 6}, {14, SHIFT, 7}, {15, SHIFT, 8}, {16, SHIFT, 9}, {17, SHIFT, 10}, },
\r
889 {{-1, REDUCE, 14}, },
\r
890 {{-1, REDUCE, 16}, },
\r
891 {{-1, REDUCE, 1}, {5, SHIFT, 27}, {6, SHIFT, 28}, },
\r
892 {{-1, REDUCE, 2}, {5, SHIFT, 27}, {6, SHIFT, 28}, },
\r
893 {{-1, REDUCE, 4}, },
\r
894 {{-1, REDUCE, 5}, },
\r
895 {{-1, REDUCE, 10}, {3, SHIFT, 25}, {4, SHIFT, 26}, },
\r
897 private static int[][][] gotoTable;
\r
899 {{-1, 11}, {4, 20}, {6, 22}, {30, 37}, },
\r
900 {{-1, 12}, {25, 33}, {26, 34}, },
\r
901 {{-1, 13}, {1, 17}, {2, 18}, {27, 35}, {28, 36}, },
\r
904 {{-1, 15}, {3, 19}, },
\r
907 private static String[] errorMessages;
\r
909 "expecting: '+', '-', '&', '(', variable, func, cell, rvi, number, string",
\r
911 "expecting: '+', '-', '*', '/', ',', ')', EOF",
\r
912 "expecting: '+', '-', '&', '(', ')', variable, func, cell, rvi, number, string",
\r
913 "expecting: '+', '-', '*', '/', ',', ':', ')', EOF",
\r
914 "expecting: '+', '-', EOF",
\r
915 "expecting: '+', '-', ')'",
\r
916 "expecting: '+', '-', ',', ')'",
\r
917 "expecting: ',', ')'",
\r
919 private static int[] errors;
\r
921 0, 0, 0, 1, 0, 2, 3, 4, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 6, 2, 7, 8, 1, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 7,
\r
928 DataInputStream s = new DataInputStream(
\r
929 new BufferedInputStream(
\r
930 Parser.class.getResourceAsStream("parser.dat")));
\r
932 // read actionTable
\r
933 int length = s.readInt();
\r
934 Parser.actionTable = new int[length][][];
\r
935 for(int i = 0; i < Parser.actionTable.length; i++)
\r
937 length = s.readInt();
\r
938 Parser.actionTable[i] = new int[length][3];
\r
939 for(int j = 0; j < Parser.actionTable[i].length; j++)
\r
941 for(int k = 0; k < 3; k++)
\r
943 Parser.actionTable[i][j][k] = s.readInt();
\r
949 length = s.readInt();
\r
950 gotoTable = new int[length][][];
\r
951 for(int i = 0; i < gotoTable.length; i++)
\r
953 length = s.readInt();
\r
954 gotoTable[i] = new int[length][2];
\r
955 for(int j = 0; j < gotoTable[i].length; j++)
\r
957 for(int k = 0; k < 2; k++)
\r
959 gotoTable[i][j][k] = s.readInt();
\r
964 // read errorMessages
\r
965 length = s.readInt();
\r
966 errorMessages = new String[length];
\r
967 for(int i = 0; i < errorMessages.length; i++)
\r
969 length = s.readInt();
\r
970 StringBuffer buffer = new StringBuffer();
\r
972 for(int j = 0; j < length; j++)
\r
974 buffer.append(s.readChar());
\r
976 errorMessages[i] = buffer.toString();
\r
980 length = s.readInt();
\r
981 errors = new int[length];
\r
982 for(int i = 0; i < errors.length; i++)
\r
984 errors[i] = s.readInt();
\r
991 throw new RuntimeException("The file \"parser.dat\" is either missing or corrupted.");
\r