Merge lp:~tapaal-contributor/tapaal/manual-edit-parsing into lp:tapaal

Proposed by Lena Ernstsen
Status: Superseded
Proposed branch: lp:~tapaal-contributor/tapaal/manual-edit-parsing
Merge into: lp:tapaal
Diff against target: 2877 lines (+1446/-1283)
6 files modified
src/dk/aau/cs/TCTL/CTLParsing/TAPAALCTLQueryParser.java (+756/-682)
src/dk/aau/cs/TCTL/Parsing/TAPAALQueryParser.java (+665/-597)
src/dk/aau/cs/TCTL/TCTLEFNode.java (+2/-1)
src/pipe/gui/widgets/QueryDialog.java (+1/-1)
src/resources/TCTLParser/TAPAALCTLQueryParser.jj (+11/-1)
src/resources/TCTLParser/TAPAALQueryParser.jj (+11/-1)
To merge this branch: bzr merge lp:~tapaal-contributor/tapaal/manual-edit-parsing
Reviewer Review Type Date Requested Status
Jiri Srba Needs Information
Review via email: mp+407327@code.launchpad.net

This proposal has been superseded by a proposal from 2021-09-15.

Commit message

Ensures that the parsed query is the same as the query before being parsed

To post a comment you must log in.
Revision history for this message
Jiri Srba (srba) wrote :

What problem is this branch fixing?

review: Needs Information
1139. By Lena Ernstsen

Added EOF check to the parsers

1140. By Lena Ernstsen

Fixed spacing and missing transition names in manual edit error message

1141. By Lena Ernstsen

Merged trunk

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/dk/aau/cs/TCTL/CTLParsing/TAPAALCTLQueryParser.java'
2--- src/dk/aau/cs/TCTL/CTLParsing/TAPAALCTLQueryParser.java 2019-03-22 10:13:18 +0000
3+++ src/dk/aau/cs/TCTL/CTLParsing/TAPAALCTLQueryParser.java 2021-09-14 20:13:17 +0000
4@@ -1,3 +1,4 @@
5+/* TAPAALCTLQueryParser.java */
6 /* Generated By:JavaCC: Do not edit this line. TAPAALCTLQueryParser.java */
7 package dk.aau.cs.TCTL.CTLParsing;
8
9@@ -13,6 +14,7 @@
10 import dk.aau.cs.TCTL.TCTLAGNode;
11 import dk.aau.cs.TCTL.TCTLAUNode;
12 import dk.aau.cs.TCTL.TCTLAXNode;
13+import dk.aau.cs.TCTL.TCTLAbstractProperty;
14 import dk.aau.cs.TCTL.TCTLAbstractStateProperty;
15 import dk.aau.cs.TCTL.TCTLAbstractPathProperty;
16 import dk.aau.cs.TCTL.TCTLAndListNode;
17@@ -31,714 +33,786 @@
18
19 public class TAPAALCTLQueryParser implements TAPAALCTLQueryParserConstants {
20
21- private static final String ERROR_PARSING_QUERY_MESSAGE = "TAPAAL countered an error trying to parse the query";
22-
23- public static TCTLAbstractPathProperty parse(String query) throws ParseException {
24- TAPAALCTLQueryParser parser = new TAPAALCTLQueryParser(new StringReader(query));
25- return parser.AbstractPathProperty();
26- }
27-
28-/** Root production. */
29- final public TCTLAbstractPathProperty AbstractPathProperty() throws ParseException {
30- TCTLAbstractStateProperty child = null;
31+ private static final String ERROR_PARSING_QUERY_MESSAGE = "TAPAAL countered an error trying to parse the query";
32+
33+ public static TCTLAbstractPathProperty parse(String query) throws ParseException {
34+ TAPAALCTLQueryParser parser = new TAPAALCTLQueryParser(new StringReader(query));
35+ return parser.Start();
36+ }
37+
38+ /** Root production. */
39+ final public TCTLAbstractPathProperty Start() throws ParseException {TCTLAbstractPathProperty child = null;
40+ child = AbstractPathProperty();
41+ jj_consume_token(0);
42+ {if ("" != null) return child;}
43+ throw new Error("Missing return statement in function");
44+ }
45+
46+ final public TCTLAbstractPathProperty AbstractPathProperty() throws ParseException {TCTLAbstractStateProperty child = null;
47 TCTLAbstractStateProperty child2 = null;
48- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
49- case EF:
50- jj_consume_token(EF);
51- child = OrExpr();
52- {if (true) return new TCTLEFNode(child);}
53- break;
54- case EG:
55- jj_consume_token(EG);
56- child = OrExpr();
57- {if (true) return new TCTLEGNode(child);}
58- break;
59- case EX:
60- jj_consume_token(EX);
61- child = OrExpr();
62- {if (true) return new TCTLEXNode(child);}
63- break;
64- case E:
65- jj_consume_token(E);
66- jj_consume_token(26);
67- child = OrExpr();
68- jj_consume_token(U);
69- child2 = OrExpr();
70- jj_consume_token(27);
71- {if (true) return new TCTLEUNode(child, child2);}
72- break;
73- case AF:
74- jj_consume_token(AF);
75- child = OrExpr();
76- {if (true) return new TCTLAFNode(child);}
77- break;
78- case AG:
79- jj_consume_token(AG);
80- child = OrExpr();
81- {if (true) return new TCTLAGNode(child);}
82- break;
83- case A:
84- jj_consume_token(A);
85- jj_consume_token(26);
86- child = OrExpr();
87- jj_consume_token(U);
88- child2 = OrExpr();
89- jj_consume_token(27);
90- {if (true) return new TCTLAUNode(child, child2);}
91- break;
92- case AX:
93- jj_consume_token(AX);
94- child = OrExpr();
95- {if (true) return new TCTLAXNode(child);}
96- break;
97- default:
98- jj_la1[0] = jj_gen;
99- child = OrExpr();
100- {if (true) return new TCTLStateToPathConverter(child);}
101+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
102+ case EF:{
103+ jj_consume_token(EF);
104+ child = OrExpr();
105+ {if ("" != null) return new TCTLEFNode(child);}
106+ break;
107+ }
108+ case EG:{
109+ jj_consume_token(EG);
110+ child = OrExpr();
111+ {if ("" != null) return new TCTLEGNode(child);}
112+ break;
113+ }
114+ case EX:{
115+ jj_consume_token(EX);
116+ child = OrExpr();
117+ {if ("" != null) return new TCTLEXNode(child);}
118+ break;
119+ }
120+ case E:{
121+ jj_consume_token(E);
122+ jj_consume_token(26);
123+ child = OrExpr();
124+ jj_consume_token(U);
125+ child2 = OrExpr();
126+ jj_consume_token(27);
127+ {if ("" != null) return new TCTLEUNode(child, child2);}
128+ break;
129+ }
130+ case AF:{
131+ jj_consume_token(AF);
132+ child = OrExpr();
133+ {if ("" != null) return new TCTLAFNode(child);}
134+ break;
135+ }
136+ case AG:{
137+ jj_consume_token(AG);
138+ child = OrExpr();
139+ {if ("" != null) return new TCTLAGNode(child);}
140+ break;
141+ }
142+ case A:{
143+ jj_consume_token(A);
144+ jj_consume_token(26);
145+ child = OrExpr();
146+ jj_consume_token(U);
147+ child2 = OrExpr();
148+ jj_consume_token(27);
149+ {if ("" != null) return new TCTLAUNode(child, child2);}
150+ break;
151+ }
152+ case AX:{
153+ jj_consume_token(AX);
154+ child = OrExpr();
155+ {if ("" != null) return new TCTLAXNode(child);}
156+ break;
157+ }
158+ default:
159+ jj_la1[0] = jj_gen;
160+ child = OrExpr();
161+ {if ("" != null) return new TCTLStateToPathConverter(child);}
162+ }
163+ throw new Error("Missing return statement in function");
164 }
165- throw new Error("Missing return statement in function");
166- }
167
168- final public TCTLAbstractStateProperty OrExpr() throws ParseException {
169- TCTLAbstractStateProperty currentChild;
170+ final public TCTLAbstractStateProperty OrExpr() throws ParseException {TCTLAbstractStateProperty currentChild;
171 ArrayList<TCTLAbstractStateProperty> disjunctions = new ArrayList<TCTLAbstractStateProperty>();
172- currentChild = AndExpr();
173- disjunctions.add(currentChild);
174- label_1:
175- while (true) {
176- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
177- case OR:
178- ;
179- break;
180- default:
181- jj_la1[1] = jj_gen;
182- break label_1;
183- }
184- jj_consume_token(OR);
185- currentChild = AndExpr();
186- disjunctions.add(currentChild);
187+ currentChild = AndExpr();
188+ disjunctions.add(currentChild);
189+ label_1:
190+ while (true) {
191+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
192+ case OR:{
193+ ;
194+ break;
195+ }
196+ default:
197+ jj_la1[1] = jj_gen;
198+ break label_1;
199+ }
200+ jj_consume_token(OR);
201+ currentChild = AndExpr();
202+ disjunctions.add(currentChild);
203+ }
204+ {if ("" != null) return disjunctions.size() == 1 ? currentChild : new TCTLOrListNode(disjunctions);}
205+ throw new Error("Missing return statement in function");
206 }
207- {if (true) return disjunctions.size() == 1 ? currentChild : new TCTLOrListNode(disjunctions);}
208- throw new Error("Missing return statement in function");
209- }
210
211- final public TCTLAbstractStateProperty AndExpr() throws ParseException {
212- TCTLAbstractStateProperty currentChild;
213+ final public TCTLAbstractStateProperty AndExpr() throws ParseException {TCTLAbstractStateProperty currentChild;
214 ArrayList<TCTLAbstractStateProperty> conjunctions = new ArrayList<TCTLAbstractStateProperty>();
215- currentChild = NotExpr();
216- conjunctions.add(currentChild);
217- label_2:
218- while (true) {
219- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
220- case AND:
221- ;
222- break;
223- default:
224- jj_la1[2] = jj_gen;
225- break label_2;
226- }
227- jj_consume_token(AND);
228- currentChild = NotExpr();
229- conjunctions.add(currentChild);
230+ currentChild = NotExpr();
231+ conjunctions.add(currentChild);
232+ label_2:
233+ while (true) {
234+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
235+ case AND:{
236+ ;
237+ break;
238+ }
239+ default:
240+ jj_la1[2] = jj_gen;
241+ break label_2;
242+ }
243+ jj_consume_token(AND);
244+ currentChild = NotExpr();
245+ conjunctions.add(currentChild);
246+ }
247+ {if ("" != null) return conjunctions.size() == 1 ? currentChild : new TCTLAndListNode(conjunctions);}
248+ throw new Error("Missing return statement in function");
249 }
250- {if (true) return conjunctions.size() == 1 ? currentChild : new TCTLAndListNode(conjunctions);}
251- throw new Error("Missing return statement in function");
252- }
253
254- final public TCTLAbstractStateProperty NotExpr() throws ParseException {
255- TCTLAbstractStateProperty child;
256+ final public TCTLAbstractStateProperty NotExpr() throws ParseException {TCTLAbstractStateProperty child;
257 TCTLAbstractPathProperty childConverter;
258- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
259- case NOT:
260- jj_consume_token(NOT);
261- jj_consume_token(26);
262- child = OrExpr();
263- jj_consume_token(27);
264- {if (true) return new TCTLNotNode(child);}
265- break;
266- default:
267- jj_la1[3] = jj_gen;
268- child = Factor();
269- {if (true) return child;}
270+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
271+ case NOT:{
272+ jj_consume_token(NOT);
273+ jj_consume_token(26);
274+ child = OrExpr();
275+ jj_consume_token(27);
276+ {if ("" != null) return new TCTLNotNode(child);}
277+ break;
278+ }
279+ default:
280+ jj_la1[3] = jj_gen;
281+ child = Factor();
282+ {if ("" != null) return child;}
283+ }
284+ throw new Error("Missing return statement in function");
285 }
286- throw new Error("Missing return statement in function");
287- }
288
289- final public TCTLAbstractStateProperty Factor() throws ParseException {
290- TCTLAbstractStateProperty thisProp;
291+ final public TCTLAbstractStateProperty Factor() throws ParseException {TCTLAbstractStateProperty thisProp;
292 Token temp = null;
293 Token transition;
294- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
295- case TRUE:
296- jj_consume_token(TRUE);
297- thisProp = new TCTLTrueNode();
298- break;
299- case FALSE:
300- jj_consume_token(FALSE);
301- thisProp = new TCTLFalseNode();
302- break;
303- case DEADLOCK:
304- jj_consume_token(DEADLOCK);
305- thisProp = new TCTLDeadlockNode();
306- break;
307- default:
308- jj_la1[4] = jj_gen;
309- if (jj_2_2(2147483647)) {
310- thisProp = AtomicProposition();
311- } else {
312- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
313- case IDENT:
314- if (jj_2_1(2)) {
315- temp = jj_consume_token(IDENT);
316- jj_consume_token(28);
317- } else {
318- ;
319- }
320- transition = jj_consume_token(IDENT);
321- thisProp = new TCTLTransitionNode(temp == null ? "" : temp.image, transition.image);
322- break;
323- case 26:
324- jj_consume_token(26);
325- thisProp = OrExpr();
326- jj_consume_token(27);
327- break;
328- default:
329- jj_la1[5] = jj_gen;
330- thisProp = new TCTLPathToStateConverter(AbstractPathProperty());
331+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
332+ case TRUE:{
333+ jj_consume_token(TRUE);
334+ thisProp = new TCTLTrueNode();
335+ break;
336+ }
337+ case FALSE:{
338+ jj_consume_token(FALSE);
339+ thisProp = new TCTLFalseNode();
340+ break;
341+ }
342+ case DEADLOCK:{
343+ jj_consume_token(DEADLOCK);
344+ thisProp = new TCTLDeadlockNode();
345+ break;
346+ }
347+ default:
348+ jj_la1[4] = jj_gen;
349+ if (jj_2_2(2147483647)) {
350+ thisProp = AtomicProposition();
351+ } else {
352+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
353+ case IDENT:{
354+ if (jj_2_1(2)) {
355+ temp = jj_consume_token(IDENT);
356+ jj_consume_token(28);
357+ } else {
358+ ;
359+ }
360+ transition = jj_consume_token(IDENT);
361+ thisProp = new TCTLTransitionNode(temp == null ? "" : temp.image, transition.image);
362+ break;
363+ }
364+ case 26:{
365+ jj_consume_token(26);
366+ thisProp = OrExpr();
367+ jj_consume_token(27);
368+ break;
369+ }
370+ default:
371+ jj_la1[5] = jj_gen;
372+ thisProp = new TCTLPathToStateConverter(AbstractPathProperty());
373+ }
374+ }
375 }
376- }
377+ {if ("" != null) return thisProp;}
378+ throw new Error("Missing return statement in function");
379 }
380- {if (true) return thisProp;}
381- throw new Error("Missing return statement in function");
382- }
383
384- final public TCTLAbstractStateProperty AtomicProposition() throws ParseException {
385- TCTLAbstractStateProperty left;
386+ final public TCTLAbstractStateProperty AtomicProposition() throws ParseException {TCTLAbstractStateProperty left;
387 TCTLAbstractStateProperty right;
388 Token op;
389- left = AritmeticExpr();
390- op = jj_consume_token(OP);
391- right = AritmeticExpr();
392- {if (true) return new TCTLAtomicPropositionNode(left, op.image, right);}
393- throw new Error("Missing return statement in function");
394- }
395-
396- final public TCTLAbstractStateProperty AritmeticExpr() throws ParseException {
397- TCTLAbstractStateProperty currentChild;
398- ArrayList<TCTLAbstractStateProperty> terms = new ArrayList<TCTLAbstractStateProperty>();
399- Token op;
400- currentChild = AritmeticMinusExpr();
401- terms.add(currentChild);
402- label_3:
403- while (true) {
404- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
405- case PLUS:
406- ;
407- break;
408- default:
409- jj_la1[6] = jj_gen;
410- break label_3;
411- }
412- op = jj_consume_token(PLUS);
413- currentChild = AritmeticMinusExpr();
414- terms.add(new AritmeticOperator(op.image));
415- terms.add(currentChild);
416- }
417- {if (true) return terms.size() == 1 ? currentChild : new TCTLTermListNode(terms);}
418- throw new Error("Missing return statement in function");
419- }
420-
421- final public TCTLAbstractStateProperty AritmeticMinusExpr() throws ParseException {
422- TCTLAbstractStateProperty currentChild;
423- ArrayList<TCTLAbstractStateProperty> terms = new ArrayList<TCTLAbstractStateProperty>();
424- Token op;
425- currentChild = AritmeticTerm();
426- terms.add(currentChild);
427- label_4:
428- while (true) {
429- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
430- case MINUS:
431- ;
432- break;
433- default:
434- jj_la1[7] = jj_gen;
435- break label_4;
436- }
437- op = jj_consume_token(MINUS);
438- currentChild = AritmeticTerm();
439- terms.add(new AritmeticOperator(op.image));
440- terms.add(currentChild);
441- }
442- {if (true) return terms.size() == 1 ? currentChild : new TCTLTermListNode(terms);}
443- throw new Error("Missing return statement in function");
444- }
445-
446- final public TCTLAbstractStateProperty AritmeticTerm() throws ParseException {
447- TCTLAbstractStateProperty currentChild;
448+ left = AritmeticExpr();
449+ op = jj_consume_token(OP);
450+ right = AritmeticExpr();
451+ {if ("" != null) return new TCTLAtomicPropositionNode(left, op.image, right);}
452+ throw new Error("Missing return statement in function");
453+ }
454+
455+ final public TCTLAbstractStateProperty AritmeticExpr() throws ParseException {TCTLAbstractStateProperty currentChild;
456+ ArrayList<TCTLAbstractStateProperty> terms = new ArrayList<TCTLAbstractStateProperty>();
457+ Token op;
458+ currentChild = AritmeticMinusExpr();
459+ terms.add(currentChild);
460+ label_3:
461+ while (true) {
462+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
463+ case PLUS:{
464+ ;
465+ break;
466+ }
467+ default:
468+ jj_la1[6] = jj_gen;
469+ break label_3;
470+ }
471+ op = jj_consume_token(PLUS);
472+ currentChild = AritmeticMinusExpr();
473+ terms.add(new AritmeticOperator(op.image));
474+ terms.add(currentChild);
475+ }
476+ {if ("" != null) return terms.size() == 1 ? currentChild : new TCTLTermListNode(terms);}
477+ throw new Error("Missing return statement in function");
478+ }
479+
480+ final public TCTLAbstractStateProperty AritmeticMinusExpr() throws ParseException {TCTLAbstractStateProperty currentChild;
481+ ArrayList<TCTLAbstractStateProperty> terms = new ArrayList<TCTLAbstractStateProperty>();
482+ Token op;
483+ currentChild = AritmeticTerm();
484+ terms.add(currentChild);
485+ label_4:
486+ while (true) {
487+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
488+ case MINUS:{
489+ ;
490+ break;
491+ }
492+ default:
493+ jj_la1[7] = jj_gen;
494+ break label_4;
495+ }
496+ op = jj_consume_token(MINUS);
497+ currentChild = AritmeticTerm();
498+ terms.add(new AritmeticOperator(op.image));
499+ terms.add(currentChild);
500+ }
501+ {if ("" != null) return terms.size() == 1 ? currentChild : new TCTLTermListNode(terms);}
502+ throw new Error("Missing return statement in function");
503+ }
504+
505+ final public TCTLAbstractStateProperty AritmeticTerm() throws ParseException {TCTLAbstractStateProperty currentChild;
506 ArrayList<TCTLAbstractStateProperty> factors = new ArrayList<TCTLAbstractStateProperty>();
507 Token op;
508- currentChild = AritmeticFactor();
509- factors.add(currentChild);
510- label_5:
511- while (true) {
512- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
513- case MULT:
514- ;
515- break;
516- default:
517- jj_la1[8] = jj_gen;
518- break label_5;
519- }
520- op = jj_consume_token(MULT);
521- currentChild = AritmeticFactor();
522- factors.add(new AritmeticOperator(op.image));
523- factors.add(currentChild);
524+ currentChild = AritmeticFactor();
525+ factors.add(currentChild);
526+ label_5:
527+ while (true) {
528+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
529+ case MULT:{
530+ ;
531+ break;
532+ }
533+ default:
534+ jj_la1[8] = jj_gen;
535+ break label_5;
536+ }
537+ op = jj_consume_token(MULT);
538+ currentChild = AritmeticFactor();
539+ factors.add(new AritmeticOperator(op.image));
540+ factors.add(currentChild);
541+ }
542+ {if ("" != null) return factors.size() == 1 ? currentChild : new TCTLTermListNode(factors);}
543+ throw new Error("Missing return statement in function");
544 }
545- {if (true) return factors.size() == 1 ? currentChild : new TCTLTermListNode(factors);}
546- throw new Error("Missing return statement in function");
547- }
548
549- final public TCTLAbstractStateProperty AritmeticFactor() throws ParseException {
550- TCTLAbstractStateProperty thisProp;
551+ final public TCTLAbstractStateProperty AritmeticFactor() throws ParseException {TCTLAbstractStateProperty thisProp;
552 Token temp = null;
553 Token place;
554 Token op;
555 Token num;
556- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
557- case IDENT:
558- if (jj_2_3(2)) {
559- temp = jj_consume_token(IDENT);
560- jj_consume_token(28);
561- } else {
562- ;
563- }
564- place = jj_consume_token(IDENT);
565- thisProp = new TCTLPlaceNode(temp == null ? "" : temp.image, place.image);
566- break;
567- case NUM:
568- num = jj_consume_token(NUM);
569- thisProp = new TCTLConstNode(Integer.parseInt(num.image));
570- break;
571- case 26:
572- jj_consume_token(26);
573- thisProp = AritmeticExpr();
574- jj_consume_token(27);
575- break;
576- default:
577- jj_la1[9] = jj_gen;
578- jj_consume_token(-1);
579- throw new ParseException();
580- }
581- {if (true) return thisProp;}
582- throw new Error("Missing return statement in function");
583- }
584-
585- private boolean jj_2_1(int xla) {
586- jj_la = xla; jj_lastpos = jj_scanpos = token;
587- try { return !jj_3_1(); }
588- catch(LookaheadSuccess ls) { return true; }
589- finally { jj_save(0, xla); }
590- }
591-
592- private boolean jj_2_2(int xla) {
593- jj_la = xla; jj_lastpos = jj_scanpos = token;
594- try { return !jj_3_2(); }
595- catch(LookaheadSuccess ls) { return true; }
596- finally { jj_save(1, xla); }
597- }
598-
599- private boolean jj_2_3(int xla) {
600- jj_la = xla; jj_lastpos = jj_scanpos = token;
601- try { return !jj_3_3(); }
602- catch(LookaheadSuccess ls) { return true; }
603- finally { jj_save(2, xla); }
604- }
605-
606- private boolean jj_3R_16() {
607- if (jj_scan_token(26)) return true;
608- if (jj_3R_7()) return true;
609- if (jj_scan_token(27)) return true;
610- return false;
611- }
612-
613- private boolean jj_3R_13() {
614- if (jj_scan_token(MULT)) return true;
615- if (jj_3R_12()) return true;
616- return false;
617- }
618-
619- private boolean jj_3_1() {
620- if (jj_scan_token(IDENT)) return true;
621- if (jj_scan_token(28)) return true;
622- return false;
623- }
624-
625- private boolean jj_3R_15() {
626- if (jj_scan_token(NUM)) return true;
627- return false;
628- }
629-
630- private boolean jj_3_3() {
631- if (jj_scan_token(IDENT)) return true;
632- if (jj_scan_token(28)) return true;
633- return false;
634- }
635-
636- private boolean jj_3R_7() {
637- if (jj_3R_8()) return true;
638- Token xsp;
639- while (true) {
640- xsp = jj_scanpos;
641- if (jj_3R_9()) { jj_scanpos = xsp; break; }
642- }
643- return false;
644- }
645-
646- private boolean jj_3R_14() {
647- Token xsp;
648- xsp = jj_scanpos;
649- if (jj_3_3()) jj_scanpos = xsp;
650- if (jj_scan_token(IDENT)) return true;
651- return false;
652- }
653-
654- private boolean jj_3R_8() {
655- if (jj_3R_10()) return true;
656- Token xsp;
657- while (true) {
658- xsp = jj_scanpos;
659- if (jj_3R_11()) { jj_scanpos = xsp; break; }
660- }
661- return false;
662- }
663-
664- private boolean jj_3R_10() {
665- if (jj_3R_12()) return true;
666- Token xsp;
667- while (true) {
668- xsp = jj_scanpos;
669- if (jj_3R_13()) { jj_scanpos = xsp; break; }
670- }
671- return false;
672- }
673-
674- private boolean jj_3R_12() {
675- Token xsp;
676- xsp = jj_scanpos;
677- if (jj_3R_14()) {
678- jj_scanpos = xsp;
679- if (jj_3R_15()) {
680- jj_scanpos = xsp;
681- if (jj_3R_16()) return true;
682- }
683- }
684- return false;
685- }
686-
687- private boolean jj_3R_9() {
688- if (jj_scan_token(PLUS)) return true;
689- if (jj_3R_8()) return true;
690- return false;
691- }
692-
693- private boolean jj_3_2() {
694- if (jj_3R_6()) return true;
695- return false;
696- }
697-
698- private boolean jj_3R_6() {
699- if (jj_3R_7()) return true;
700- if (jj_scan_token(OP)) return true;
701- if (jj_3R_7()) return true;
702- return false;
703- }
704-
705- private boolean jj_3R_11() {
706- if (jj_scan_token(MINUS)) return true;
707- if (jj_3R_10()) return true;
708- return false;
709- }
710-
711- /** Generated Token Manager. */
712- public TAPAALCTLQueryParserTokenManager token_source;
713- SimpleCharStream jj_input_stream;
714- /** Current token. */
715- public Token token;
716- /** Next token. */
717- public Token jj_nt;
718- private int jj_ntk;
719- private Token jj_scanpos, jj_lastpos;
720- private int jj_la;
721- private int jj_gen;
722- final private int[] jj_la1 = new int[10];
723- static private int[] jj_la1_0;
724- static {
725- jj_la1_init_0();
726- }
727- private static void jj_la1_init_0() {
728- jj_la1_0 = new int[] {0x1ef0,0x2000,0x4000,0x8000,0xe,0x4100000,0x10000,0x20000,0x40000,0x4180000,};
729- }
730- final private JJCalls[] jj_2_rtns = new JJCalls[3];
731- private boolean jj_rescan = false;
732- private int jj_gc = 0;
733-
734- /** Constructor with InputStream. */
735- public TAPAALCTLQueryParser(java.io.InputStream stream) {
736- this(stream, null);
737- }
738- /** Constructor with InputStream and supplied encoding */
739- public TAPAALCTLQueryParser(java.io.InputStream stream, String encoding) {
740- try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
741- token_source = new TAPAALCTLQueryParserTokenManager(jj_input_stream);
742- token = new Token();
743- jj_ntk = -1;
744- jj_gen = 0;
745- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
746- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
747- }
748-
749- /** Reinitialise. */
750- public void ReInit(java.io.InputStream stream) {
751- ReInit(stream, null);
752- }
753- /** Reinitialise. */
754- public void ReInit(java.io.InputStream stream, String encoding) {
755- try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
756- token_source.ReInit(jj_input_stream);
757- token = new Token();
758- jj_ntk = -1;
759- jj_gen = 0;
760- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
761- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
762- }
763-
764- /** Constructor. */
765- public TAPAALCTLQueryParser(java.io.Reader stream) {
766- jj_input_stream = new SimpleCharStream(stream, 1, 1);
767- token_source = new TAPAALCTLQueryParserTokenManager(jj_input_stream);
768- token = new Token();
769- jj_ntk = -1;
770- jj_gen = 0;
771- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
772- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
773- }
774-
775- /** Reinitialise. */
776- public void ReInit(java.io.Reader stream) {
777- jj_input_stream.ReInit(stream, 1, 1);
778- token_source.ReInit(jj_input_stream);
779- token = new Token();
780- jj_ntk = -1;
781- jj_gen = 0;
782- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
783- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
784- }
785-
786- /** Constructor with generated Token Manager. */
787- public TAPAALCTLQueryParser(TAPAALCTLQueryParserTokenManager tm) {
788- token_source = tm;
789- token = new Token();
790- jj_ntk = -1;
791- jj_gen = 0;
792- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
793- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
794- }
795-
796- /** Reinitialise. */
797- public void ReInit(TAPAALCTLQueryParserTokenManager tm) {
798- token_source = tm;
799- token = new Token();
800- jj_ntk = -1;
801- jj_gen = 0;
802- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
803- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
804- }
805-
806- private Token jj_consume_token(int kind) throws ParseException {
807- Token oldToken;
808- if ((oldToken = token).next != null) token = token.next;
809- else token = token.next = token_source.getNextToken();
810- jj_ntk = -1;
811- if (token.kind == kind) {
812- jj_gen++;
813- if (++jj_gc > 100) {
814- jj_gc = 0;
815- for (int i = 0; i < jj_2_rtns.length; i++) {
816- JJCalls c = jj_2_rtns[i];
817- while (c != null) {
818- if (c.gen < jj_gen) c.first = null;
819- c = c.next;
820- }
821- }
822- }
823- return token;
824- }
825- token = oldToken;
826- jj_kind = kind;
827- throw generateParseException();
828- }
829-
830- static private final class LookaheadSuccess extends java.lang.Error { }
831- final private LookaheadSuccess jj_ls = new LookaheadSuccess();
832- private boolean jj_scan_token(int kind) {
833- if (jj_scanpos == jj_lastpos) {
834- jj_la--;
835- if (jj_scanpos.next == null) {
836- jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
837- } else {
838- jj_lastpos = jj_scanpos = jj_scanpos.next;
839- }
840- } else {
841- jj_scanpos = jj_scanpos.next;
842- }
843- if (jj_rescan) {
844- int i = 0; Token tok = token;
845- while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
846- if (tok != null) jj_add_error_token(kind, i);
847- }
848- if (jj_scanpos.kind != kind) return true;
849- if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
850- return false;
851- }
852-
853-
854-/** Get the next Token. */
855- final public Token getNextToken() {
856- if (token.next != null) token = token.next;
857- else token = token.next = token_source.getNextToken();
858- jj_ntk = -1;
859- jj_gen++;
860- return token;
861- }
862-
863-/** Get the specific Token. */
864- final public Token getToken(int index) {
865- Token t = token;
866- for (int i = 0; i < index; i++) {
867- if (t.next != null) t = t.next;
868- else t = t.next = token_source.getNextToken();
869- }
870- return t;
871- }
872-
873- private int jj_ntk() {
874- if ((jj_nt=token.next) == null)
875- return (jj_ntk = (token.next=token_source.getNextToken()).kind);
876- else
877- return (jj_ntk = jj_nt.kind);
878- }
879-
880- private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
881- private int[] jj_expentry;
882- private int jj_kind = -1;
883- private int[] jj_lasttokens = new int[100];
884- private int jj_endpos;
885-
886- private void jj_add_error_token(int kind, int pos) {
887- if (pos >= 100) return;
888- if (pos == jj_endpos + 1) {
889- jj_lasttokens[jj_endpos++] = kind;
890- } else if (jj_endpos != 0) {
891- jj_expentry = new int[jj_endpos];
892- for (int i = 0; i < jj_endpos; i++) {
893- jj_expentry[i] = jj_lasttokens[i];
894- }
895- boolean exists = false;
896- for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
897- exists = true;
898- int[] oldentry = (int[])(it.next());
899- if (oldentry.length == jj_expentry.length) {
900- for (int i = 0; i < jj_expentry.length; i++) {
901- if (oldentry[i] != jj_expentry[i]) {
902- exists = false;
903- break;
904- }
905- }
906- if (exists) break;
907- }
908- }
909- if (!exists) jj_expentries.add(jj_expentry);
910- if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
911- }
912- }
913-
914- /** Generate ParseException. */
915- public ParseException generateParseException() {
916- jj_expentries.clear();
917- boolean[] la1tokens = new boolean[29];
918- if (jj_kind >= 0) {
919- la1tokens[jj_kind] = true;
920- jj_kind = -1;
921- }
922- for (int i = 0; i < 10; i++) {
923- if (jj_la1[i] == jj_gen) {
924- for (int j = 0; j < 32; j++) {
925- if ((jj_la1_0[i] & (1<<j)) != 0) {
926- la1tokens[j] = true;
927- }
928- }
929- }
930- }
931- for (int i = 0; i < 29; i++) {
932- if (la1tokens[i]) {
933- jj_expentry = new int[1];
934- jj_expentry[0] = i;
935- jj_expentries.add(jj_expentry);
936- }
937- }
938- jj_endpos = 0;
939- jj_rescan_token();
940- jj_add_error_token(0, 0);
941- int[][] exptokseq = new int[jj_expentries.size()][];
942- for (int i = 0; i < jj_expentries.size(); i++) {
943- exptokseq[i] = jj_expentries.get(i);
944- }
945- return new ParseException(token, exptokseq, tokenImage);
946- }
947-
948- /** Enable tracing. */
949- final public void enable_tracing() {
950- }
951-
952- /** Disable tracing. */
953- final public void disable_tracing() {
954- }
955-
956- private void jj_rescan_token() {
957- jj_rescan = true;
958- for (int i = 0; i < 3; i++) {
959- try {
960- JJCalls p = jj_2_rtns[i];
961- do {
962- if (p.gen > jj_gen) {
963- jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
964- switch (i) {
965- case 0: jj_3_1(); break;
966- case 1: jj_3_2(); break;
967- case 2: jj_3_3(); break;
968- }
969- }
970- p = p.next;
971- } while (p != null);
972- } catch(LookaheadSuccess ls) { }
973- }
974- jj_rescan = false;
975- }
976-
977- private void jj_save(int index, int xla) {
978- JJCalls p = jj_2_rtns[index];
979- while (p.gen > jj_gen) {
980- if (p.next == null) { p = p.next = new JJCalls(); break; }
981- p = p.next;
982- }
983- p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
984- }
985-
986- static final class JJCalls {
987- int gen;
988- Token first;
989- int arg;
990- JJCalls next;
991- }
992+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
993+ case IDENT:{
994+ if (jj_2_3(2)) {
995+ temp = jj_consume_token(IDENT);
996+ jj_consume_token(28);
997+ } else {
998+ ;
999+ }
1000+ place = jj_consume_token(IDENT);
1001+ thisProp = new TCTLPlaceNode(temp == null ? "" : temp.image, place.image);
1002+ break;
1003+ }
1004+ case NUM:{
1005+ num = jj_consume_token(NUM);
1006+ thisProp = new TCTLConstNode(Integer.parseInt(num.image));
1007+ break;
1008+ }
1009+ case 26:{
1010+ jj_consume_token(26);
1011+ thisProp = AritmeticExpr();
1012+ jj_consume_token(27);
1013+ break;
1014+ }
1015+ default:
1016+ jj_la1[9] = jj_gen;
1017+ jj_consume_token(-1);
1018+ throw new ParseException();
1019+ }
1020+ {if ("" != null) return thisProp;}
1021+ throw new Error("Missing return statement in function");
1022+ }
1023+
1024+ private boolean jj_2_1(int xla)
1025+ {
1026+ jj_la = xla; jj_lastpos = jj_scanpos = token;
1027+ try { return (!jj_3_1()); }
1028+ catch(LookaheadSuccess ls) { return true; }
1029+ finally { jj_save(0, xla); }
1030+ }
1031+
1032+ private boolean jj_2_2(int xla)
1033+ {
1034+ jj_la = xla; jj_lastpos = jj_scanpos = token;
1035+ try { return (!jj_3_2()); }
1036+ catch(LookaheadSuccess ls) { return true; }
1037+ finally { jj_save(1, xla); }
1038+ }
1039+
1040+ private boolean jj_2_3(int xla)
1041+ {
1042+ jj_la = xla; jj_lastpos = jj_scanpos = token;
1043+ try { return (!jj_3_3()); }
1044+ catch(LookaheadSuccess ls) { return true; }
1045+ finally { jj_save(2, xla); }
1046+ }
1047+
1048+ private boolean jj_3R_AritmeticTerm_287_9_10()
1049+ {
1050+ if (jj_3R_AritmeticFactor_308_9_12()) return true;
1051+ Token xsp;
1052+ while (true) {
1053+ xsp = jj_scanpos;
1054+ if (jj_3R_AritmeticTerm_290_17_13()) { jj_scanpos = xsp; break; }
1055+ }
1056+ return false;
1057+ }
1058+
1059+ private boolean jj_3R_AritmeticFactor_308_9_12()
1060+ {
1061+ Token xsp;
1062+ xsp = jj_scanpos;
1063+ if (jj_3R_AritmeticFactor_309_17_14()) {
1064+ jj_scanpos = xsp;
1065+ if (jj_3R_AritmeticFactor_310_19_15()) {
1066+ jj_scanpos = xsp;
1067+ if (jj_3R_AritmeticFactor_311_19_16()) return true;
1068+ }
1069+ }
1070+ return false;
1071+ }
1072+
1073+ private boolean jj_3R_AritmeticExpr_252_17_9()
1074+ {
1075+ if (jj_scan_token(PLUS)) return true;
1076+ if (jj_3R_AritmeticMinusExpr_268_9_8()) return true;
1077+ return false;
1078+ }
1079+
1080+ private boolean jj_3_2()
1081+ {
1082+ if (jj_3R_AtomicProposition_234_9_6()) return true;
1083+ return false;
1084+ }
1085+
1086+ private boolean jj_3R_AtomicProposition_234_9_6()
1087+ {
1088+ if (jj_3R_AritmeticExpr_249_9_7()) return true;
1089+ if (jj_scan_token(OP)) return true;
1090+ if (jj_3R_AritmeticExpr_249_9_7()) return true;
1091+ return false;
1092+ }
1093+
1094+ private boolean jj_3R_AritmeticMinusExpr_271_17_11()
1095+ {
1096+ if (jj_scan_token(MINUS)) return true;
1097+ if (jj_3R_AritmeticTerm_287_9_10()) return true;
1098+ return false;
1099+ }
1100+
1101+ private boolean jj_3R_AritmeticFactor_311_19_16()
1102+ {
1103+ if (jj_scan_token(26)) return true;
1104+ if (jj_3R_AritmeticExpr_249_9_7()) return true;
1105+ if (jj_scan_token(27)) return true;
1106+ return false;
1107+ }
1108+
1109+ private boolean jj_3R_AritmeticTerm_290_17_13()
1110+ {
1111+ if (jj_scan_token(MULT)) return true;
1112+ if (jj_3R_AritmeticFactor_308_9_12()) return true;
1113+ return false;
1114+ }
1115+
1116+ private boolean jj_3_1()
1117+ {
1118+ if (jj_scan_token(IDENT)) return true;
1119+ if (jj_scan_token(28)) return true;
1120+ return false;
1121+ }
1122+
1123+ private boolean jj_3R_AritmeticFactor_310_19_15()
1124+ {
1125+ if (jj_scan_token(NUM)) return true;
1126+ return false;
1127+ }
1128+
1129+ private boolean jj_3_3()
1130+ {
1131+ if (jj_scan_token(IDENT)) return true;
1132+ if (jj_scan_token(28)) return true;
1133+ return false;
1134+ }
1135+
1136+ private boolean jj_3R_AritmeticExpr_249_9_7()
1137+ {
1138+ if (jj_3R_AritmeticMinusExpr_268_9_8()) return true;
1139+ Token xsp;
1140+ while (true) {
1141+ xsp = jj_scanpos;
1142+ if (jj_3R_AritmeticExpr_252_17_9()) { jj_scanpos = xsp; break; }
1143+ }
1144+ return false;
1145+ }
1146+
1147+ private boolean jj_3R_AritmeticFactor_309_17_14()
1148+ {
1149+ Token xsp;
1150+ xsp = jj_scanpos;
1151+ if (jj_3_3()) jj_scanpos = xsp;
1152+ if (jj_scan_token(IDENT)) return true;
1153+ return false;
1154+ }
1155+
1156+ private boolean jj_3R_AritmeticMinusExpr_268_9_8()
1157+ {
1158+ if (jj_3R_AritmeticTerm_287_9_10()) return true;
1159+ Token xsp;
1160+ while (true) {
1161+ xsp = jj_scanpos;
1162+ if (jj_3R_AritmeticMinusExpr_271_17_11()) { jj_scanpos = xsp; break; }
1163+ }
1164+ return false;
1165+ }
1166+
1167+ /** Generated Token Manager. */
1168+ public TAPAALCTLQueryParserTokenManager token_source;
1169+ SimpleCharStream jj_input_stream;
1170+ /** Current token. */
1171+ public Token token;
1172+ /** Next token. */
1173+ public Token jj_nt;
1174+ private int jj_ntk;
1175+ private Token jj_scanpos, jj_lastpos;
1176+ private int jj_la;
1177+ private int jj_gen;
1178+ final private int[] jj_la1 = new int[10];
1179+ static private int[] jj_la1_0;
1180+ static {
1181+ jj_la1_init_0();
1182+ }
1183+ private static void jj_la1_init_0() {
1184+ jj_la1_0 = new int[] {0x1ef0,0x2000,0x4000,0x8000,0xe,0x4100000,0x10000,0x20000,0x40000,0x4180000,};
1185+ }
1186+ final private JJCalls[] jj_2_rtns = new JJCalls[3];
1187+ private boolean jj_rescan = false;
1188+ private int jj_gc = 0;
1189+
1190+ /** Constructor with InputStream. */
1191+ public TAPAALCTLQueryParser(java.io.InputStream stream) {
1192+ this(stream, null);
1193+ }
1194+ /** Constructor with InputStream and supplied encoding */
1195+ public TAPAALCTLQueryParser(java.io.InputStream stream, String encoding) {
1196+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
1197+ token_source = new TAPAALCTLQueryParserTokenManager(jj_input_stream);
1198+ token = new Token();
1199+ jj_ntk = -1;
1200+ jj_gen = 0;
1201+ for (int i = 0; i < 10; i++) jj_la1[i] = -1;
1202+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1203+ }
1204+
1205+ /** Reinitialise. */
1206+ public void ReInit(java.io.InputStream stream) {
1207+ ReInit(stream, null);
1208+ }
1209+ /** Reinitialise. */
1210+ public void ReInit(java.io.InputStream stream, String encoding) {
1211+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
1212+ token_source.ReInit(jj_input_stream);
1213+ token = new Token();
1214+ jj_ntk = -1;
1215+ jj_gen = 0;
1216+ for (int i = 0; i < 10; i++) jj_la1[i] = -1;
1217+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1218+ }
1219+
1220+ /** Constructor. */
1221+ public TAPAALCTLQueryParser(java.io.Reader stream) {
1222+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
1223+ token_source = new TAPAALCTLQueryParserTokenManager(jj_input_stream);
1224+ token = new Token();
1225+ jj_ntk = -1;
1226+ jj_gen = 0;
1227+ for (int i = 0; i < 10; i++) jj_la1[i] = -1;
1228+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1229+ }
1230+
1231+ /** Reinitialise. */
1232+ public void ReInit(java.io.Reader stream) {
1233+ if (jj_input_stream == null) {
1234+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
1235+ } else {
1236+ jj_input_stream.ReInit(stream, 1, 1);
1237+ }
1238+ if (token_source == null) {
1239+ token_source = new TAPAALCTLQueryParserTokenManager(jj_input_stream);
1240+ }
1241+
1242+ token_source.ReInit(jj_input_stream);
1243+ token = new Token();
1244+ jj_ntk = -1;
1245+ jj_gen = 0;
1246+ for (int i = 0; i < 10; i++) jj_la1[i] = -1;
1247+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1248+ }
1249+
1250+ /** Constructor with generated Token Manager. */
1251+ public TAPAALCTLQueryParser(TAPAALCTLQueryParserTokenManager tm) {
1252+ token_source = tm;
1253+ token = new Token();
1254+ jj_ntk = -1;
1255+ jj_gen = 0;
1256+ for (int i = 0; i < 10; i++) jj_la1[i] = -1;
1257+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1258+ }
1259+
1260+ /** Reinitialise. */
1261+ public void ReInit(TAPAALCTLQueryParserTokenManager tm) {
1262+ token_source = tm;
1263+ token = new Token();
1264+ jj_ntk = -1;
1265+ jj_gen = 0;
1266+ for (int i = 0; i < 10; i++) jj_la1[i] = -1;
1267+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1268+ }
1269+
1270+ private Token jj_consume_token(int kind) throws ParseException {
1271+ Token oldToken;
1272+ if ((oldToken = token).next != null) token = token.next;
1273+ else token = token.next = token_source.getNextToken();
1274+ jj_ntk = -1;
1275+ if (token.kind == kind) {
1276+ jj_gen++;
1277+ if (++jj_gc > 100) {
1278+ jj_gc = 0;
1279+ for (int i = 0; i < jj_2_rtns.length; i++) {
1280+ JJCalls c = jj_2_rtns[i];
1281+ while (c != null) {
1282+ if (c.gen < jj_gen) c.first = null;
1283+ c = c.next;
1284+ }
1285+ }
1286+ }
1287+ return token;
1288+ }
1289+ token = oldToken;
1290+ jj_kind = kind;
1291+ throw generateParseException();
1292+ }
1293+
1294+ @SuppressWarnings("serial")
1295+ static private final class LookaheadSuccess extends java.lang.Error {
1296+ @Override
1297+ public Throwable fillInStackTrace() {
1298+ return this;
1299+ }
1300+ }
1301+ static private final LookaheadSuccess jj_ls = new LookaheadSuccess();
1302+ private boolean jj_scan_token(int kind) {
1303+ if (jj_scanpos == jj_lastpos) {
1304+ jj_la--;
1305+ if (jj_scanpos.next == null) {
1306+ jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
1307+ } else {
1308+ jj_lastpos = jj_scanpos = jj_scanpos.next;
1309+ }
1310+ } else {
1311+ jj_scanpos = jj_scanpos.next;
1312+ }
1313+ if (jj_rescan) {
1314+ int i = 0; Token tok = token;
1315+ while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
1316+ if (tok != null) jj_add_error_token(kind, i);
1317+ }
1318+ if (jj_scanpos.kind != kind) return true;
1319+ if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
1320+ return false;
1321+ }
1322+
1323+
1324+ /** Get the next Token. */
1325+ final public Token getNextToken() {
1326+ if (token.next != null) token = token.next;
1327+ else token = token.next = token_source.getNextToken();
1328+ jj_ntk = -1;
1329+ jj_gen++;
1330+ return token;
1331+ }
1332+
1333+ /** Get the specific Token. */
1334+ final public Token getToken(int index) {
1335+ Token t = token;
1336+ for (int i = 0; i < index; i++) {
1337+ if (t.next != null) t = t.next;
1338+ else t = t.next = token_source.getNextToken();
1339+ }
1340+ return t;
1341+ }
1342+
1343+ private int jj_ntk_f() {
1344+ if ((jj_nt=token.next) == null)
1345+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
1346+ else
1347+ return (jj_ntk = jj_nt.kind);
1348+ }
1349+
1350+ private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
1351+ private int[] jj_expentry;
1352+ private int jj_kind = -1;
1353+ private int[] jj_lasttokens = new int[100];
1354+ private int jj_endpos;
1355+
1356+ private void jj_add_error_token(int kind, int pos) {
1357+ if (pos >= 100) {
1358+ return;
1359+ }
1360+
1361+ if (pos == jj_endpos + 1) {
1362+ jj_lasttokens[jj_endpos++] = kind;
1363+ } else if (jj_endpos != 0) {
1364+ jj_expentry = new int[jj_endpos];
1365+
1366+ for (int i = 0; i < jj_endpos; i++) {
1367+ jj_expentry[i] = jj_lasttokens[i];
1368+ }
1369+
1370+ for (int[] oldentry : jj_expentries) {
1371+ if (oldentry.length == jj_expentry.length) {
1372+ boolean isMatched = true;
1373+
1374+ for (int i = 0; i < jj_expentry.length; i++) {
1375+ if (oldentry[i] != jj_expentry[i]) {
1376+ isMatched = false;
1377+ break;
1378+ }
1379+
1380+ }
1381+ if (isMatched) {
1382+ jj_expentries.add(jj_expentry);
1383+ break;
1384+ }
1385+ }
1386+ }
1387+
1388+ if (pos != 0) {
1389+ jj_lasttokens[(jj_endpos = pos) - 1] = kind;
1390+ }
1391+ }
1392+ }
1393+
1394+ /** Generate ParseException. */
1395+ public ParseException generateParseException() {
1396+ jj_expentries.clear();
1397+ boolean[] la1tokens = new boolean[29];
1398+ if (jj_kind >= 0) {
1399+ la1tokens[jj_kind] = true;
1400+ jj_kind = -1;
1401+ }
1402+ for (int i = 0; i < 10; i++) {
1403+ if (jj_la1[i] == jj_gen) {
1404+ for (int j = 0; j < 32; j++) {
1405+ if ((jj_la1_0[i] & (1<<j)) != 0) {
1406+ la1tokens[j] = true;
1407+ }
1408+ }
1409+ }
1410+ }
1411+ for (int i = 0; i < 29; i++) {
1412+ if (la1tokens[i]) {
1413+ jj_expentry = new int[1];
1414+ jj_expentry[0] = i;
1415+ jj_expentries.add(jj_expentry);
1416+ }
1417+ }
1418+ jj_endpos = 0;
1419+ jj_rescan_token();
1420+ jj_add_error_token(0, 0);
1421+ int[][] exptokseq = new int[jj_expentries.size()][];
1422+ for (int i = 0; i < jj_expentries.size(); i++) {
1423+ exptokseq[i] = jj_expentries.get(i);
1424+ }
1425+ return new ParseException(token, exptokseq, tokenImage);
1426+ }
1427+
1428+ private boolean trace_enabled;
1429+
1430+ /** Trace enabled. */
1431+ final public boolean trace_enabled() {
1432+ return trace_enabled;
1433+ }
1434+
1435+ /** Enable tracing. */
1436+ final public void enable_tracing() {
1437+ }
1438+
1439+ /** Disable tracing. */
1440+ final public void disable_tracing() {
1441+ }
1442+
1443+ private void jj_rescan_token() {
1444+ jj_rescan = true;
1445+ for (int i = 0; i < 3; i++) {
1446+ try {
1447+ JJCalls p = jj_2_rtns[i];
1448+
1449+ do {
1450+ if (p.gen > jj_gen) {
1451+ jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
1452+ switch (i) {
1453+ case 0: jj_3_1(); break;
1454+ case 1: jj_3_2(); break;
1455+ case 2: jj_3_3(); break;
1456+ }
1457+ }
1458+ p = p.next;
1459+ } while (p != null);
1460+
1461+ } catch(LookaheadSuccess ls) { }
1462+ }
1463+ jj_rescan = false;
1464+ }
1465+
1466+ private void jj_save(int index, int xla) {
1467+ JJCalls p = jj_2_rtns[index];
1468+ while (p.gen > jj_gen) {
1469+ if (p.next == null) { p = p.next = new JJCalls(); break; }
1470+ p = p.next;
1471+ }
1472+
1473+ p.gen = jj_gen + xla - jj_la;
1474+ p.first = token;
1475+ p.arg = xla;
1476+ }
1477+
1478+ static final class JJCalls {
1479+ int gen;
1480+ Token first;
1481+ int arg;
1482+ JJCalls next;
1483+ }
1484
1485 }
1486
1487=== modified file 'src/dk/aau/cs/TCTL/Parsing/TAPAALQueryParser.java'
1488--- src/dk/aau/cs/TCTL/Parsing/TAPAALQueryParser.java 2014-05-22 20:26:41 +0000
1489+++ src/dk/aau/cs/TCTL/Parsing/TAPAALQueryParser.java 2021-09-14 20:13:17 +0000
1490@@ -1,3 +1,4 @@
1491+/* TAPAALQueryParser.java */
1492 /* Generated By:JavaCC: Do not edit this line. TAPAALQueryParser.java */
1493 package dk.aau.cs.TCTL.Parsing;
1494
1495@@ -25,624 +26,691 @@
1496
1497 public class TAPAALQueryParser implements TAPAALQueryParserConstants {
1498
1499- private static final String ERROR_PARSING_QUERY_MESSAGE = "TAPAAL countered an error trying to parse the query";
1500-
1501- public static TCTLAbstractProperty parse(String query) throws ParseException {
1502- TAPAALQueryParser parser = new TAPAALQueryParser(new StringReader(query));
1503- return parser.AbstractProperty();
1504+ private static final String ERROR_PARSING_QUERY_MESSAGE = "TAPAAL countered an error trying to parse the query";
1505+
1506+ public static TCTLAbstractProperty parse(String query) throws ParseException {
1507+ TAPAALQueryParser parser = new TAPAALQueryParser(new StringReader(query));
1508+ return parser.Start();
1509+ }
1510+
1511+ /** Root production. */
1512+ final public TCTLAbstractProperty Start() throws ParseException {TCTLAbstractProperty child = null;
1513+ child = AbstractProperty();
1514+ jj_consume_token(0);
1515+ {if ("" != null) return child;}
1516+ throw new Error("Missing return statement in function");
1517+ }
1518+
1519+ final public TCTLAbstractProperty AbstractProperty() throws ParseException {TCTLAbstractStateProperty child = null;
1520+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1521+ case EF:{
1522+ jj_consume_token(EF);
1523+ child = OrExpr();
1524+ {if ("" != null) return new TCTLEFNode(child);}
1525+ break;
1526+ }
1527+ case EG:{
1528+ jj_consume_token(EG);
1529+ child = OrExpr();
1530+ {if ("" != null) return new TCTLEGNode(child);}
1531+ break;
1532+ }
1533+ case AF:{
1534+ jj_consume_token(AF);
1535+ child = OrExpr();
1536+ {if ("" != null) return new TCTLAFNode(child);}
1537+ break;
1538+ }
1539+ case AG:{
1540+ jj_consume_token(AG);
1541+ child = OrExpr();
1542+ {if ("" != null) return new TCTLAGNode(child);}
1543+ break;
1544+ }
1545+ default:
1546+ jj_la1[0] = jj_gen;
1547+ jj_consume_token(-1);
1548+ throw new ParseException();
1549 }
1550-
1551-/** Root production. */
1552- final public TCTLAbstractProperty AbstractProperty() throws ParseException {
1553- TCTLAbstractStateProperty child = null;
1554- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1555- case EF:
1556- jj_consume_token(EF);
1557- child = OrExpr();
1558- {if (true) return new TCTLEFNode(child);}
1559- break;
1560- case EG:
1561- jj_consume_token(EG);
1562- child = OrExpr();
1563- {if (true) return new TCTLEGNode(child);}
1564- break;
1565- case AF:
1566- jj_consume_token(AF);
1567- child = OrExpr();
1568- {if (true) return new TCTLAFNode(child);}
1569- break;
1570- case AG:
1571- jj_consume_token(AG);
1572- child = OrExpr();
1573- {if (true) return new TCTLAGNode(child);}
1574- break;
1575- default:
1576- jj_la1[0] = jj_gen;
1577- jj_consume_token(-1);
1578- throw new ParseException();
1579+ throw new Error("Missing return statement in function");
1580 }
1581- throw new Error("Missing return statement in function");
1582- }
1583
1584- final public TCTLAbstractStateProperty OrExpr() throws ParseException {
1585- TCTLAbstractStateProperty currentChild;
1586+ final public TCTLAbstractStateProperty OrExpr() throws ParseException {TCTLAbstractStateProperty currentChild;
1587 ArrayList<TCTLAbstractStateProperty> disjunctions = new ArrayList<TCTLAbstractStateProperty>();
1588- currentChild = AndExpr();
1589- disjunctions.add(currentChild);
1590- label_1:
1591- while (true) {
1592- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1593- case OR:
1594- ;
1595- break;
1596- default:
1597- jj_la1[1] = jj_gen;
1598- break label_1;
1599- }
1600- jj_consume_token(OR);
1601- currentChild = AndExpr();
1602- disjunctions.add(currentChild);
1603+ currentChild = AndExpr();
1604+ disjunctions.add(currentChild);
1605+ label_1:
1606+ while (true) {
1607+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1608+ case OR:{
1609+ ;
1610+ break;
1611+ }
1612+ default:
1613+ jj_la1[1] = jj_gen;
1614+ break label_1;
1615+ }
1616+ jj_consume_token(OR);
1617+ currentChild = AndExpr();
1618+ disjunctions.add(currentChild);
1619+ }
1620+ {if ("" != null) return disjunctions.size() == 1 ? currentChild : new TCTLOrListNode(disjunctions);}
1621+ throw new Error("Missing return statement in function");
1622 }
1623- {if (true) return disjunctions.size() == 1 ? currentChild : new TCTLOrListNode(disjunctions);}
1624- throw new Error("Missing return statement in function");
1625- }
1626
1627- final public TCTLAbstractStateProperty AndExpr() throws ParseException {
1628- TCTLAbstractStateProperty currentChild;
1629+ final public TCTLAbstractStateProperty AndExpr() throws ParseException {TCTLAbstractStateProperty currentChild;
1630 ArrayList<TCTLAbstractStateProperty> conjunctions = new ArrayList<TCTLAbstractStateProperty>();
1631- currentChild = NotExpr();
1632- conjunctions.add(currentChild);
1633- label_2:
1634- while (true) {
1635- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1636- case AND:
1637- ;
1638- break;
1639- default:
1640- jj_la1[2] = jj_gen;
1641- break label_2;
1642- }
1643- jj_consume_token(AND);
1644- currentChild = NotExpr();
1645- conjunctions.add(currentChild);
1646- }
1647- {if (true) return conjunctions.size() == 1 ? currentChild : new TCTLAndListNode(conjunctions);}
1648- throw new Error("Missing return statement in function");
1649- }
1650-
1651- final public TCTLAbstractStateProperty NotExpr() throws ParseException {
1652- TCTLAbstractStateProperty child;
1653- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1654- case NOT:
1655- jj_consume_token(NOT);
1656- jj_consume_token(20);
1657- child = OrExpr();
1658- jj_consume_token(21);
1659- {if (true) return new TCTLNotNode(child);}
1660- break;
1661- case TRUE:
1662- case FALSE:
1663- case DEADLOCK:
1664- case NUM:
1665- case IDENT:
1666- case 20:
1667- child = Factor();
1668- {if (true) return child;}
1669- break;
1670- default:
1671- jj_la1[3] = jj_gen;
1672- jj_consume_token(-1);
1673- throw new ParseException();
1674- }
1675- throw new Error("Missing return statement in function");
1676- }
1677-
1678- final public TCTLAbstractStateProperty Factor() throws ParseException {
1679- TCTLAbstractStateProperty thisProp;
1680- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1681- case TRUE:
1682- jj_consume_token(TRUE);
1683- thisProp = new TCTLTrueNode();
1684- break;
1685- case FALSE:
1686- jj_consume_token(FALSE);
1687- thisProp = new TCTLFalseNode();
1688- break;
1689- case DEADLOCK:
1690- jj_consume_token(DEADLOCK);
1691- thisProp = new TCTLDeadlockNode();
1692- break;
1693- default:
1694- jj_la1[4] = jj_gen;
1695- if (jj_2_1(2147483647)) {
1696- thisProp = AtomicProposition();
1697- } else {
1698- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1699- case 20:
1700- jj_consume_token(20);
1701- thisProp = OrExpr();
1702- jj_consume_token(21);
1703- break;
1704- default:
1705- jj_la1[5] = jj_gen;
1706- jj_consume_token(-1);
1707- throw new ParseException();
1708- }
1709- }
1710- }
1711- {if (true) return thisProp;}
1712- throw new Error("Missing return statement in function");
1713- }
1714-
1715- final public TCTLAbstractStateProperty AtomicProposition() throws ParseException {
1716- TCTLAbstractStateProperty left;
1717+ currentChild = NotExpr();
1718+ conjunctions.add(currentChild);
1719+ label_2:
1720+ while (true) {
1721+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1722+ case AND:{
1723+ ;
1724+ break;
1725+ }
1726+ default:
1727+ jj_la1[2] = jj_gen;
1728+ break label_2;
1729+ }
1730+ jj_consume_token(AND);
1731+ currentChild = NotExpr();
1732+ conjunctions.add(currentChild);
1733+ }
1734+ {if ("" != null) return conjunctions.size() == 1 ? currentChild : new TCTLAndListNode(conjunctions);}
1735+ throw new Error("Missing return statement in function");
1736+ }
1737+
1738+ final public TCTLAbstractStateProperty NotExpr() throws ParseException {TCTLAbstractStateProperty child;
1739+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1740+ case NOT:{
1741+ jj_consume_token(NOT);
1742+ jj_consume_token(20);
1743+ child = OrExpr();
1744+ jj_consume_token(21);
1745+ {if ("" != null) return new TCTLNotNode(child);}
1746+ break;
1747+ }
1748+ case TRUE:
1749+ case FALSE:
1750+ case DEADLOCK:
1751+ case NUM:
1752+ case IDENT:
1753+ case 20:{
1754+ child = Factor();
1755+ {if ("" != null) return child;}
1756+ break;
1757+ }
1758+ default:
1759+ jj_la1[3] = jj_gen;
1760+ jj_consume_token(-1);
1761+ throw new ParseException();
1762+ }
1763+ throw new Error("Missing return statement in function");
1764+ }
1765+
1766+ final public TCTLAbstractStateProperty Factor() throws ParseException {TCTLAbstractStateProperty thisProp;
1767+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1768+ case TRUE:{
1769+ jj_consume_token(TRUE);
1770+ thisProp = new TCTLTrueNode();
1771+ break;
1772+ }
1773+ case FALSE:{
1774+ jj_consume_token(FALSE);
1775+ thisProp = new TCTLFalseNode();
1776+ break;
1777+ }
1778+ case DEADLOCK:{
1779+ jj_consume_token(DEADLOCK);
1780+ thisProp = new TCTLDeadlockNode();
1781+ break;
1782+ }
1783+ default:
1784+ jj_la1[4] = jj_gen;
1785+ if (jj_2_1(2147483647)) {
1786+ thisProp = AtomicProposition();
1787+ } else {
1788+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1789+ case 20:{
1790+ jj_consume_token(20);
1791+ thisProp = OrExpr();
1792+ jj_consume_token(21);
1793+ break;
1794+ }
1795+ default:
1796+ jj_la1[5] = jj_gen;
1797+ jj_consume_token(-1);
1798+ throw new ParseException();
1799+ }
1800+ }
1801+ }
1802+ {if ("" != null) return thisProp;}
1803+ throw new Error("Missing return statement in function");
1804+ }
1805+
1806+ final public TCTLAbstractStateProperty AtomicProposition() throws ParseException {TCTLAbstractStateProperty left;
1807 TCTLAbstractStateProperty right;
1808 Token op;
1809- left = AritmeticExpr();
1810- op = jj_consume_token(OP);
1811- right = AritmeticExpr();
1812- {if (true) return new TCTLAtomicPropositionNode(left, op.image, right);}
1813- throw new Error("Missing return statement in function");
1814- }
1815+ left = AritmeticExpr();
1816+ op = jj_consume_token(OP);
1817+ right = AritmeticExpr();
1818+ {if ("" != null) return new TCTLAtomicPropositionNode(left, op.image, right);}
1819+ throw new Error("Missing return statement in function");
1820+ }
1821
1822- final public TCTLAbstractStateProperty AritmeticExpr() throws ParseException {
1823- TCTLAbstractStateProperty currentChild;
1824+ final public TCTLAbstractStateProperty AritmeticExpr() throws ParseException {TCTLAbstractStateProperty currentChild;
1825 ArrayList<TCTLAbstractStateProperty> terms = new ArrayList<TCTLAbstractStateProperty>();
1826 Token op;
1827- currentChild = AritmeticTerm();
1828- terms.add(currentChild);
1829- label_3:
1830- while (true) {
1831- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1832- case PLUS:
1833- ;
1834- break;
1835- default:
1836- jj_la1[6] = jj_gen;
1837- break label_3;
1838- }
1839- op = jj_consume_token(PLUS);
1840- currentChild = AritmeticTerm();
1841- terms.add(new AritmeticOperator(op.image));
1842- terms.add(currentChild);
1843+ currentChild = AritmeticTerm();
1844+ terms.add(currentChild);
1845+ label_3:
1846+ while (true) {
1847+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1848+ case PLUS:{
1849+ ;
1850+ break;
1851+ }
1852+ default:
1853+ jj_la1[6] = jj_gen;
1854+ break label_3;
1855+ }
1856+ op = jj_consume_token(PLUS);
1857+ currentChild = AritmeticTerm();
1858+ terms.add(new AritmeticOperator(op.image));
1859+ terms.add(currentChild);
1860+ }
1861+ {if ("" != null) return terms.size() == 1 ? currentChild : new TCTLPlusListNode(terms);}
1862+ throw new Error("Missing return statement in function");
1863 }
1864- {if (true) return terms.size() == 1 ? currentChild : new TCTLPlusListNode(terms);}
1865- throw new Error("Missing return statement in function");
1866- }
1867
1868- final public TCTLAbstractStateProperty AritmeticTerm() throws ParseException {
1869- TCTLAbstractStateProperty currentChild;
1870+ final public TCTLAbstractStateProperty AritmeticTerm() throws ParseException {TCTLAbstractStateProperty currentChild;
1871 ArrayList<TCTLAbstractStateProperty> factors = new ArrayList<TCTLAbstractStateProperty>();
1872 Token op;
1873- currentChild = AritmeticFactor();
1874- factors.add(currentChild);
1875- label_4:
1876- while (true) {
1877- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1878- case MULT:
1879- ;
1880- break;
1881- default:
1882- jj_la1[7] = jj_gen;
1883- break label_4;
1884- }
1885- op = jj_consume_token(MULT);
1886- currentChild = AritmeticFactor();
1887- factors.add(new AritmeticOperator(op.image));
1888- factors.add(currentChild);
1889+ currentChild = AritmeticFactor();
1890+ factors.add(currentChild);
1891+ label_4:
1892+ while (true) {
1893+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
1894+ case MULT:{
1895+ ;
1896+ break;
1897+ }
1898+ default:
1899+ jj_la1[7] = jj_gen;
1900+ break label_4;
1901+ }
1902+ op = jj_consume_token(MULT);
1903+ currentChild = AritmeticFactor();
1904+ factors.add(new AritmeticOperator(op.image));
1905+ factors.add(currentChild);
1906+ }
1907+ {if ("" != null) return factors.size() == 1 ? currentChild : new TCTLTermListNode(factors);}
1908+ throw new Error("Missing return statement in function");
1909 }
1910- {if (true) return factors.size() == 1 ? currentChild : new TCTLTermListNode(factors);}
1911- throw new Error("Missing return statement in function");
1912- }
1913
1914- final public TCTLAbstractStateProperty AritmeticFactor() throws ParseException {
1915- TCTLAbstractStateProperty thisProp;
1916+ final public TCTLAbstractStateProperty AritmeticFactor() throws ParseException {TCTLAbstractStateProperty thisProp;
1917 Token template = null;
1918 Token place;
1919 Token op;
1920 Token num;
1921- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1922- case IDENT:
1923- if (jj_2_2(2)) {
1924- template = jj_consume_token(IDENT);
1925- jj_consume_token(22);
1926- } else {
1927- ;
1928- }
1929- place = jj_consume_token(IDENT);
1930- thisProp = new TCTLPlaceNode(template == null ? "" : template.image, place.image);
1931- break;
1932- case NUM:
1933- num = jj_consume_token(NUM);
1934- thisProp = new TCTLConstNode(Integer.parseInt(num.image));
1935- break;
1936- case 20:
1937- jj_consume_token(20);
1938- thisProp = AritmeticExpr();
1939- jj_consume_token(21);
1940- break;
1941- default:
1942- jj_la1[8] = jj_gen;
1943- jj_consume_token(-1);
1944- throw new ParseException();
1945- }
1946- {if (true) return thisProp;}
1947- throw new Error("Missing return statement in function");
1948- }
1949-
1950- private boolean jj_2_1(int xla) {
1951- jj_la = xla; jj_lastpos = jj_scanpos = token;
1952- try { return !jj_3_1(); }
1953- catch(LookaheadSuccess ls) { return true; }
1954- finally { jj_save(0, xla); }
1955- }
1956-
1957- private boolean jj_2_2(int xla) {
1958- jj_la = xla; jj_lastpos = jj_scanpos = token;
1959- try { return !jj_3_2(); }
1960- catch(LookaheadSuccess ls) { return true; }
1961- finally { jj_save(1, xla); }
1962- }
1963-
1964- private boolean jj_3_1() {
1965- if (jj_3R_5()) return true;
1966- return false;
1967- }
1968-
1969- private boolean jj_3R_8() {
1970- if (jj_scan_token(PLUS)) return true;
1971- if (jj_3R_7()) return true;
1972- return false;
1973- }
1974-
1975- private boolean jj_3R_5() {
1976- if (jj_3R_6()) return true;
1977- if (jj_scan_token(OP)) return true;
1978- if (jj_3R_6()) return true;
1979- return false;
1980- }
1981-
1982- private boolean jj_3R_13() {
1983- if (jj_scan_token(20)) return true;
1984- if (jj_3R_6()) return true;
1985- if (jj_scan_token(21)) return true;
1986- return false;
1987- }
1988-
1989- private boolean jj_3R_10() {
1990- if (jj_scan_token(MULT)) return true;
1991- if (jj_3R_9()) return true;
1992- return false;
1993- }
1994-
1995- private boolean jj_3R_12() {
1996- if (jj_scan_token(NUM)) return true;
1997- return false;
1998- }
1999-
2000- private boolean jj_3_2() {
2001- if (jj_scan_token(IDENT)) return true;
2002- if (jj_scan_token(22)) return true;
2003- return false;
2004- }
2005-
2006- private boolean jj_3R_11() {
2007- Token xsp;
2008- xsp = jj_scanpos;
2009- if (jj_3_2()) jj_scanpos = xsp;
2010- if (jj_scan_token(IDENT)) return true;
2011- return false;
2012- }
2013-
2014- private boolean jj_3R_6() {
2015- if (jj_3R_7()) return true;
2016- Token xsp;
2017- while (true) {
2018- xsp = jj_scanpos;
2019- if (jj_3R_8()) { jj_scanpos = xsp; break; }
2020- }
2021- return false;
2022- }
2023-
2024- private boolean jj_3R_7() {
2025- if (jj_3R_9()) return true;
2026- Token xsp;
2027- while (true) {
2028- xsp = jj_scanpos;
2029- if (jj_3R_10()) { jj_scanpos = xsp; break; }
2030- }
2031- return false;
2032- }
2033-
2034- private boolean jj_3R_9() {
2035- Token xsp;
2036- xsp = jj_scanpos;
2037- if (jj_3R_11()) {
2038- jj_scanpos = xsp;
2039- if (jj_3R_12()) {
2040- jj_scanpos = xsp;
2041- if (jj_3R_13()) return true;
2042- }
2043- }
2044- return false;
2045- }
2046-
2047- /** Generated Token Manager. */
2048- public TAPAALQueryParserTokenManager token_source;
2049- SimpleCharStream jj_input_stream;
2050- /** Current token. */
2051- public Token token;
2052- /** Next token. */
2053- public Token jj_nt;
2054- private int jj_ntk;
2055- private Token jj_scanpos, jj_lastpos;
2056- private int jj_la;
2057- private int jj_gen;
2058- final private int[] jj_la1 = new int[9];
2059- static private int[] jj_la1_0;
2060- static {
2061- jj_la1_init_0();
2062- }
2063- private static void jj_la1_init_0() {
2064- jj_la1_0 = new int[] {0xf0,0x100,0x200,0x10640e,0xe,0x100000,0x800,0x1000,0x106000,};
2065- }
2066- final private JJCalls[] jj_2_rtns = new JJCalls[2];
2067- private boolean jj_rescan = false;
2068- private int jj_gc = 0;
2069-
2070- /** Constructor with InputStream. */
2071- public TAPAALQueryParser(java.io.InputStream stream) {
2072- this(stream, null);
2073- }
2074- /** Constructor with InputStream and supplied encoding */
2075- public TAPAALQueryParser(java.io.InputStream stream, String encoding) {
2076- try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
2077- token_source = new TAPAALQueryParserTokenManager(jj_input_stream);
2078- token = new Token();
2079- jj_ntk = -1;
2080- jj_gen = 0;
2081- for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2082- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2083- }
2084-
2085- /** Reinitialise. */
2086- public void ReInit(java.io.InputStream stream) {
2087- ReInit(stream, null);
2088- }
2089- /** Reinitialise. */
2090- public void ReInit(java.io.InputStream stream, String encoding) {
2091- try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
2092- token_source.ReInit(jj_input_stream);
2093- token = new Token();
2094- jj_ntk = -1;
2095- jj_gen = 0;
2096- for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2097- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2098- }
2099-
2100- /** Constructor. */
2101- public TAPAALQueryParser(java.io.Reader stream) {
2102- jj_input_stream = new SimpleCharStream(stream, 1, 1);
2103- token_source = new TAPAALQueryParserTokenManager(jj_input_stream);
2104- token = new Token();
2105- jj_ntk = -1;
2106- jj_gen = 0;
2107- for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2108- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2109- }
2110-
2111- /** Reinitialise. */
2112- public void ReInit(java.io.Reader stream) {
2113- jj_input_stream.ReInit(stream, 1, 1);
2114- token_source.ReInit(jj_input_stream);
2115- token = new Token();
2116- jj_ntk = -1;
2117- jj_gen = 0;
2118- for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2119- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2120- }
2121-
2122- /** Constructor with generated Token Manager. */
2123- public TAPAALQueryParser(TAPAALQueryParserTokenManager tm) {
2124- token_source = tm;
2125- token = new Token();
2126- jj_ntk = -1;
2127- jj_gen = 0;
2128- for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2129- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2130- }
2131-
2132- /** Reinitialise. */
2133- public void ReInit(TAPAALQueryParserTokenManager tm) {
2134- token_source = tm;
2135- token = new Token();
2136- jj_ntk = -1;
2137- jj_gen = 0;
2138- for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2139- for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2140- }
2141-
2142- private Token jj_consume_token(int kind) throws ParseException {
2143- Token oldToken;
2144- if ((oldToken = token).next != null) token = token.next;
2145- else token = token.next = token_source.getNextToken();
2146- jj_ntk = -1;
2147- if (token.kind == kind) {
2148- jj_gen++;
2149- if (++jj_gc > 100) {
2150- jj_gc = 0;
2151- for (int i = 0; i < jj_2_rtns.length; i++) {
2152- JJCalls c = jj_2_rtns[i];
2153- while (c != null) {
2154- if (c.gen < jj_gen) c.first = null;
2155- c = c.next;
2156- }
2157- }
2158- }
2159- return token;
2160- }
2161- token = oldToken;
2162- jj_kind = kind;
2163- throw generateParseException();
2164- }
2165-
2166- static private final class LookaheadSuccess extends java.lang.Error { }
2167- final private LookaheadSuccess jj_ls = new LookaheadSuccess();
2168- private boolean jj_scan_token(int kind) {
2169- if (jj_scanpos == jj_lastpos) {
2170- jj_la--;
2171- if (jj_scanpos.next == null) {
2172- jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
2173- } else {
2174- jj_lastpos = jj_scanpos = jj_scanpos.next;
2175- }
2176- } else {
2177- jj_scanpos = jj_scanpos.next;
2178- }
2179- if (jj_rescan) {
2180- int i = 0; Token tok = token;
2181- while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
2182- if (tok != null) jj_add_error_token(kind, i);
2183- }
2184- if (jj_scanpos.kind != kind) return true;
2185- if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
2186- return false;
2187- }
2188-
2189-
2190-/** Get the next Token. */
2191- final public Token getNextToken() {
2192- if (token.next != null) token = token.next;
2193- else token = token.next = token_source.getNextToken();
2194- jj_ntk = -1;
2195- jj_gen++;
2196- return token;
2197- }
2198-
2199-/** Get the specific Token. */
2200- final public Token getToken(int index) {
2201- Token t = token;
2202- for (int i = 0; i < index; i++) {
2203- if (t.next != null) t = t.next;
2204- else t = t.next = token_source.getNextToken();
2205- }
2206- return t;
2207- }
2208-
2209- private int jj_ntk() {
2210- if ((jj_nt=token.next) == null)
2211- return (jj_ntk = (token.next=token_source.getNextToken()).kind);
2212- else
2213- return (jj_ntk = jj_nt.kind);
2214- }
2215-
2216- private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
2217- private int[] jj_expentry;
2218- private int jj_kind = -1;
2219- private int[] jj_lasttokens = new int[100];
2220- private int jj_endpos;
2221-
2222- private void jj_add_error_token(int kind, int pos) {
2223- if (pos >= 100) return;
2224- if (pos == jj_endpos + 1) {
2225- jj_lasttokens[jj_endpos++] = kind;
2226- } else if (jj_endpos != 0) {
2227- jj_expentry = new int[jj_endpos];
2228- for (int i = 0; i < jj_endpos; i++) {
2229- jj_expentry[i] = jj_lasttokens[i];
2230- }
2231- jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
2232- int[] oldentry = (int[])(it.next());
2233- if (oldentry.length == jj_expentry.length) {
2234- for (int i = 0; i < jj_expentry.length; i++) {
2235- if (oldentry[i] != jj_expentry[i]) {
2236- continue jj_entries_loop;
2237- }
2238- }
2239- jj_expentries.add(jj_expentry);
2240- break jj_entries_loop;
2241- }
2242- }
2243- if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
2244- }
2245- }
2246-
2247- /** Generate ParseException. */
2248- public ParseException generateParseException() {
2249- jj_expentries.clear();
2250- boolean[] la1tokens = new boolean[23];
2251- if (jj_kind >= 0) {
2252- la1tokens[jj_kind] = true;
2253- jj_kind = -1;
2254- }
2255- for (int i = 0; i < 9; i++) {
2256- if (jj_la1[i] == jj_gen) {
2257- for (int j = 0; j < 32; j++) {
2258- if ((jj_la1_0[i] & (1<<j)) != 0) {
2259- la1tokens[j] = true;
2260- }
2261- }
2262- }
2263- }
2264- for (int i = 0; i < 23; i++) {
2265- if (la1tokens[i]) {
2266- jj_expentry = new int[1];
2267- jj_expentry[0] = i;
2268- jj_expentries.add(jj_expentry);
2269- }
2270- }
2271- jj_endpos = 0;
2272- jj_rescan_token();
2273- jj_add_error_token(0, 0);
2274- int[][] exptokseq = new int[jj_expentries.size()][];
2275- for (int i = 0; i < jj_expentries.size(); i++) {
2276- exptokseq[i] = jj_expentries.get(i);
2277- }
2278- return new ParseException(token, exptokseq, tokenImage);
2279- }
2280-
2281- /** Enable tracing. */
2282- final public void enable_tracing() {
2283- }
2284-
2285- /** Disable tracing. */
2286- final public void disable_tracing() {
2287- }
2288-
2289- private void jj_rescan_token() {
2290- jj_rescan = true;
2291- for (int i = 0; i < 2; i++) {
2292- try {
2293- JJCalls p = jj_2_rtns[i];
2294- do {
2295- if (p.gen > jj_gen) {
2296- jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
2297- switch (i) {
2298- case 0: jj_3_1(); break;
2299- case 1: jj_3_2(); break;
2300- }
2301- }
2302- p = p.next;
2303- } while (p != null);
2304- } catch(LookaheadSuccess ls) { }
2305- }
2306- jj_rescan = false;
2307- }
2308-
2309- private void jj_save(int index, int xla) {
2310- JJCalls p = jj_2_rtns[index];
2311- while (p.gen > jj_gen) {
2312- if (p.next == null) { p = p.next = new JJCalls(); break; }
2313- p = p.next;
2314- }
2315- p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
2316- }
2317-
2318- static final class JJCalls {
2319- int gen;
2320- Token first;
2321- int arg;
2322- JJCalls next;
2323- }
2324+ switch ((jj_ntk==-1)?jj_ntk_f():jj_ntk) {
2325+ case IDENT:{
2326+ if (jj_2_2(2)) {
2327+ template = jj_consume_token(IDENT);
2328+ jj_consume_token(22);
2329+ } else {
2330+ ;
2331+ }
2332+ place = jj_consume_token(IDENT);
2333+ thisProp = new TCTLPlaceNode(template == null ? "" : template.image, place.image);
2334+ break;
2335+ }
2336+ case NUM:{
2337+ num = jj_consume_token(NUM);
2338+ thisProp = new TCTLConstNode(Integer.parseInt(num.image));
2339+ break;
2340+ }
2341+ case 20:{
2342+ jj_consume_token(20);
2343+ thisProp = AritmeticExpr();
2344+ jj_consume_token(21);
2345+ break;
2346+ }
2347+ default:
2348+ jj_la1[8] = jj_gen;
2349+ jj_consume_token(-1);
2350+ throw new ParseException();
2351+ }
2352+ {if ("" != null) return thisProp;}
2353+ throw new Error("Missing return statement in function");
2354+ }
2355+
2356+ private boolean jj_2_1(int xla)
2357+ {
2358+ jj_la = xla; jj_lastpos = jj_scanpos = token;
2359+ try { return (!jj_3_1()); }
2360+ catch(LookaheadSuccess ls) { return true; }
2361+ finally { jj_save(0, xla); }
2362+ }
2363+
2364+ private boolean jj_2_2(int xla)
2365+ {
2366+ jj_la = xla; jj_lastpos = jj_scanpos = token;
2367+ try { return (!jj_3_2()); }
2368+ catch(LookaheadSuccess ls) { return true; }
2369+ finally { jj_save(1, xla); }
2370+ }
2371+
2372+ private boolean jj_3_2()
2373+ {
2374+ if (jj_scan_token(IDENT)) return true;
2375+ if (jj_scan_token(22)) return true;
2376+ return false;
2377+ }
2378+
2379+ private boolean jj_3R_AritmeticFactor_256_17_11()
2380+ {
2381+ Token xsp;
2382+ xsp = jj_scanpos;
2383+ if (jj_3_2()) jj_scanpos = xsp;
2384+ if (jj_scan_token(IDENT)) return true;
2385+ return false;
2386+ }
2387+
2388+ private boolean jj_3R_AritmeticExpr_215_9_6()
2389+ {
2390+ if (jj_3R_AritmeticTerm_234_9_7()) return true;
2391+ Token xsp;
2392+ while (true) {
2393+ xsp = jj_scanpos;
2394+ if (jj_3R_AritmeticExpr_218_17_8()) { jj_scanpos = xsp; break; }
2395+ }
2396+ return false;
2397+ }
2398+
2399+ private boolean jj_3R_AritmeticTerm_234_9_7()
2400+ {
2401+ if (jj_3R_AritmeticFactor_255_9_9()) return true;
2402+ Token xsp;
2403+ while (true) {
2404+ xsp = jj_scanpos;
2405+ if (jj_3R_AritmeticTerm_237_17_10()) { jj_scanpos = xsp; break; }
2406+ }
2407+ return false;
2408+ }
2409+
2410+ private boolean jj_3R_AritmeticFactor_255_9_9()
2411+ {
2412+ Token xsp;
2413+ xsp = jj_scanpos;
2414+ if (jj_3R_AritmeticFactor_256_17_11()) {
2415+ jj_scanpos = xsp;
2416+ if (jj_3R_AritmeticFactor_257_19_12()) {
2417+ jj_scanpos = xsp;
2418+ if (jj_3R_AritmeticFactor_258_19_13()) return true;
2419+ }
2420+ }
2421+ return false;
2422+ }
2423+
2424+ private boolean jj_3_1()
2425+ {
2426+ if (jj_3R_AtomicProposition_200_9_5()) return true;
2427+ return false;
2428+ }
2429+
2430+ private boolean jj_3R_AritmeticExpr_218_17_8()
2431+ {
2432+ if (jj_scan_token(PLUS)) return true;
2433+ if (jj_3R_AritmeticTerm_234_9_7()) return true;
2434+ return false;
2435+ }
2436+
2437+ private boolean jj_3R_AtomicProposition_200_9_5()
2438+ {
2439+ if (jj_3R_AritmeticExpr_215_9_6()) return true;
2440+ if (jj_scan_token(OP)) return true;
2441+ if (jj_3R_AritmeticExpr_215_9_6()) return true;
2442+ return false;
2443+ }
2444+
2445+ private boolean jj_3R_AritmeticFactor_258_19_13()
2446+ {
2447+ if (jj_scan_token(20)) return true;
2448+ if (jj_3R_AritmeticExpr_215_9_6()) return true;
2449+ if (jj_scan_token(21)) return true;
2450+ return false;
2451+ }
2452+
2453+ private boolean jj_3R_AritmeticTerm_237_17_10()
2454+ {
2455+ if (jj_scan_token(MULT)) return true;
2456+ if (jj_3R_AritmeticFactor_255_9_9()) return true;
2457+ return false;
2458+ }
2459+
2460+ private boolean jj_3R_AritmeticFactor_257_19_12()
2461+ {
2462+ if (jj_scan_token(NUM)) return true;
2463+ return false;
2464+ }
2465+
2466+ /** Generated Token Manager. */
2467+ public TAPAALQueryParserTokenManager token_source;
2468+ SimpleCharStream jj_input_stream;
2469+ /** Current token. */
2470+ public Token token;
2471+ /** Next token. */
2472+ public Token jj_nt;
2473+ private int jj_ntk;
2474+ private Token jj_scanpos, jj_lastpos;
2475+ private int jj_la;
2476+ private int jj_gen;
2477+ final private int[] jj_la1 = new int[9];
2478+ static private int[] jj_la1_0;
2479+ static {
2480+ jj_la1_init_0();
2481+ }
2482+ private static void jj_la1_init_0() {
2483+ jj_la1_0 = new int[] {0xf0,0x100,0x200,0x10640e,0xe,0x100000,0x800,0x1000,0x106000,};
2484+ }
2485+ final private JJCalls[] jj_2_rtns = new JJCalls[2];
2486+ private boolean jj_rescan = false;
2487+ private int jj_gc = 0;
2488+
2489+ /** Constructor with InputStream. */
2490+ public TAPAALQueryParser(java.io.InputStream stream) {
2491+ this(stream, null);
2492+ }
2493+ /** Constructor with InputStream and supplied encoding */
2494+ public TAPAALQueryParser(java.io.InputStream stream, String encoding) {
2495+ try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
2496+ token_source = new TAPAALQueryParserTokenManager(jj_input_stream);
2497+ token = new Token();
2498+ jj_ntk = -1;
2499+ jj_gen = 0;
2500+ for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2501+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2502+ }
2503+
2504+ /** Reinitialise. */
2505+ public void ReInit(java.io.InputStream stream) {
2506+ ReInit(stream, null);
2507+ }
2508+ /** Reinitialise. */
2509+ public void ReInit(java.io.InputStream stream, String encoding) {
2510+ try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
2511+ token_source.ReInit(jj_input_stream);
2512+ token = new Token();
2513+ jj_ntk = -1;
2514+ jj_gen = 0;
2515+ for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2516+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2517+ }
2518+
2519+ /** Constructor. */
2520+ public TAPAALQueryParser(java.io.Reader stream) {
2521+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
2522+ token_source = new TAPAALQueryParserTokenManager(jj_input_stream);
2523+ token = new Token();
2524+ jj_ntk = -1;
2525+ jj_gen = 0;
2526+ for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2527+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2528+ }
2529+
2530+ /** Reinitialise. */
2531+ public void ReInit(java.io.Reader stream) {
2532+ if (jj_input_stream == null) {
2533+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
2534+ } else {
2535+ jj_input_stream.ReInit(stream, 1, 1);
2536+ }
2537+ if (token_source == null) {
2538+ token_source = new TAPAALQueryParserTokenManager(jj_input_stream);
2539+ }
2540+
2541+ token_source.ReInit(jj_input_stream);
2542+ token = new Token();
2543+ jj_ntk = -1;
2544+ jj_gen = 0;
2545+ for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2546+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2547+ }
2548+
2549+ /** Constructor with generated Token Manager. */
2550+ public TAPAALQueryParser(TAPAALQueryParserTokenManager tm) {
2551+ token_source = tm;
2552+ token = new Token();
2553+ jj_ntk = -1;
2554+ jj_gen = 0;
2555+ for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2556+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2557+ }
2558+
2559+ /** Reinitialise. */
2560+ public void ReInit(TAPAALQueryParserTokenManager tm) {
2561+ token_source = tm;
2562+ token = new Token();
2563+ jj_ntk = -1;
2564+ jj_gen = 0;
2565+ for (int i = 0; i < 9; i++) jj_la1[i] = -1;
2566+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2567+ }
2568+
2569+ private Token jj_consume_token(int kind) throws ParseException {
2570+ Token oldToken;
2571+ if ((oldToken = token).next != null) token = token.next;
2572+ else token = token.next = token_source.getNextToken();
2573+ jj_ntk = -1;
2574+ if (token.kind == kind) {
2575+ jj_gen++;
2576+ if (++jj_gc > 100) {
2577+ jj_gc = 0;
2578+ for (int i = 0; i < jj_2_rtns.length; i++) {
2579+ JJCalls c = jj_2_rtns[i];
2580+ while (c != null) {
2581+ if (c.gen < jj_gen) c.first = null;
2582+ c = c.next;
2583+ }
2584+ }
2585+ }
2586+ return token;
2587+ }
2588+ token = oldToken;
2589+ jj_kind = kind;
2590+ throw generateParseException();
2591+ }
2592+
2593+ @SuppressWarnings("serial")
2594+ static private final class LookaheadSuccess extends java.lang.Error {
2595+ @Override
2596+ public Throwable fillInStackTrace() {
2597+ return this;
2598+ }
2599+ }
2600+ static private final LookaheadSuccess jj_ls = new LookaheadSuccess();
2601+ private boolean jj_scan_token(int kind) {
2602+ if (jj_scanpos == jj_lastpos) {
2603+ jj_la--;
2604+ if (jj_scanpos.next == null) {
2605+ jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
2606+ } else {
2607+ jj_lastpos = jj_scanpos = jj_scanpos.next;
2608+ }
2609+ } else {
2610+ jj_scanpos = jj_scanpos.next;
2611+ }
2612+ if (jj_rescan) {
2613+ int i = 0; Token tok = token;
2614+ while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
2615+ if (tok != null) jj_add_error_token(kind, i);
2616+ }
2617+ if (jj_scanpos.kind != kind) return true;
2618+ if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
2619+ return false;
2620+ }
2621+
2622+
2623+ /** Get the next Token. */
2624+ final public Token getNextToken() {
2625+ if (token.next != null) token = token.next;
2626+ else token = token.next = token_source.getNextToken();
2627+ jj_ntk = -1;
2628+ jj_gen++;
2629+ return token;
2630+ }
2631+
2632+ /** Get the specific Token. */
2633+ final public Token getToken(int index) {
2634+ Token t = token;
2635+ for (int i = 0; i < index; i++) {
2636+ if (t.next != null) t = t.next;
2637+ else t = t.next = token_source.getNextToken();
2638+ }
2639+ return t;
2640+ }
2641+
2642+ private int jj_ntk_f() {
2643+ if ((jj_nt=token.next) == null)
2644+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
2645+ else
2646+ return (jj_ntk = jj_nt.kind);
2647+ }
2648+
2649+ private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
2650+ private int[] jj_expentry;
2651+ private int jj_kind = -1;
2652+ private int[] jj_lasttokens = new int[100];
2653+ private int jj_endpos;
2654+
2655+ private void jj_add_error_token(int kind, int pos) {
2656+ if (pos >= 100) {
2657+ return;
2658+ }
2659+
2660+ if (pos == jj_endpos + 1) {
2661+ jj_lasttokens[jj_endpos++] = kind;
2662+ } else if (jj_endpos != 0) {
2663+ jj_expentry = new int[jj_endpos];
2664+
2665+ for (int i = 0; i < jj_endpos; i++) {
2666+ jj_expentry[i] = jj_lasttokens[i];
2667+ }
2668+
2669+ for (int[] oldentry : jj_expentries) {
2670+ if (oldentry.length == jj_expentry.length) {
2671+ boolean isMatched = true;
2672+
2673+ for (int i = 0; i < jj_expentry.length; i++) {
2674+ if (oldentry[i] != jj_expentry[i]) {
2675+ isMatched = false;
2676+ break;
2677+ }
2678+
2679+ }
2680+ if (isMatched) {
2681+ jj_expentries.add(jj_expentry);
2682+ break;
2683+ }
2684+ }
2685+ }
2686+
2687+ if (pos != 0) {
2688+ jj_lasttokens[(jj_endpos = pos) - 1] = kind;
2689+ }
2690+ }
2691+ }
2692+
2693+ /** Generate ParseException. */
2694+ public ParseException generateParseException() {
2695+ jj_expentries.clear();
2696+ boolean[] la1tokens = new boolean[23];
2697+ if (jj_kind >= 0) {
2698+ la1tokens[jj_kind] = true;
2699+ jj_kind = -1;
2700+ }
2701+ for (int i = 0; i < 9; i++) {
2702+ if (jj_la1[i] == jj_gen) {
2703+ for (int j = 0; j < 32; j++) {
2704+ if ((jj_la1_0[i] & (1<<j)) != 0) {
2705+ la1tokens[j] = true;
2706+ }
2707+ }
2708+ }
2709+ }
2710+ for (int i = 0; i < 23; i++) {
2711+ if (la1tokens[i]) {
2712+ jj_expentry = new int[1];
2713+ jj_expentry[0] = i;
2714+ jj_expentries.add(jj_expentry);
2715+ }
2716+ }
2717+ jj_endpos = 0;
2718+ jj_rescan_token();
2719+ jj_add_error_token(0, 0);
2720+ int[][] exptokseq = new int[jj_expentries.size()][];
2721+ for (int i = 0; i < jj_expentries.size(); i++) {
2722+ exptokseq[i] = jj_expentries.get(i);
2723+ }
2724+ return new ParseException(token, exptokseq, tokenImage);
2725+ }
2726+
2727+ private boolean trace_enabled;
2728+
2729+ /** Trace enabled. */
2730+ final public boolean trace_enabled() {
2731+ return trace_enabled;
2732+ }
2733+
2734+ /** Enable tracing. */
2735+ final public void enable_tracing() {
2736+ }
2737+
2738+ /** Disable tracing. */
2739+ final public void disable_tracing() {
2740+ }
2741+
2742+ private void jj_rescan_token() {
2743+ jj_rescan = true;
2744+ for (int i = 0; i < 2; i++) {
2745+ try {
2746+ JJCalls p = jj_2_rtns[i];
2747+
2748+ do {
2749+ if (p.gen > jj_gen) {
2750+ jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
2751+ switch (i) {
2752+ case 0: jj_3_1(); break;
2753+ case 1: jj_3_2(); break;
2754+ }
2755+ }
2756+ p = p.next;
2757+ } while (p != null);
2758+
2759+ } catch(LookaheadSuccess ls) { }
2760+ }
2761+ jj_rescan = false;
2762+ }
2763+
2764+ private void jj_save(int index, int xla) {
2765+ JJCalls p = jj_2_rtns[index];
2766+ while (p.gen > jj_gen) {
2767+ if (p.next == null) { p = p.next = new JJCalls(); break; }
2768+ p = p.next;
2769+ }
2770+
2771+ p.gen = jj_gen + xla - jj_la;
2772+ p.first = token;
2773+ p.arg = xla;
2774+ }
2775+
2776+ static final class JJCalls {
2777+ int gen;
2778+ Token first;
2779+ int arg;
2780+ JJCalls next;
2781+ }
2782
2783 }
2784
2785=== modified file 'src/dk/aau/cs/TCTL/TCTLEFNode.java'
2786--- src/dk/aau/cs/TCTL/TCTLEFNode.java 2020-11-06 19:41:50 +0000
2787+++ src/dk/aau/cs/TCTL/TCTLEFNode.java 2021-09-14 20:13:17 +0000
2788@@ -2,6 +2,8 @@
2789
2790 import dk.aau.cs.TCTL.visitors.ITCTLVisitor;
2791
2792+import java.util.HashMap;
2793+
2794 public class TCTLEFNode extends TCTLAbstractPathProperty {
2795
2796 private TCTLAbstractStateProperty property;
2797@@ -104,7 +106,6 @@
2798 @Override
2799 public TCTLAbstractProperty findFirstPlaceHolder() {
2800 return property.findFirstPlaceHolder();
2801-
2802 }
2803
2804 }
2805
2806=== modified file 'src/pipe/gui/widgets/QueryDialog.java'
2807--- src/pipe/gui/widgets/QueryDialog.java 2021-09-11 17:11:34 +0000
2808+++ src/pipe/gui/widgets/QueryDialog.java 2021-09-14 20:13:17 +0000
2809@@ -2349,7 +2349,7 @@
2810 if (lens.isTimed() || lens.isGame()) {
2811 isResultFalse = !c.getResult();
2812 } else {
2813- isResultFalse = checkUntimedResult(newQuery) && !c.getResult();
2814+ isResultFalse = checkUntimedResult(newQuery) || !c.getResult();
2815 }
2816
2817 if (isResultFalse) {
2818
2819=== modified file 'src/resources/TCTLParser/TAPAALCTLQueryParser.jj'
2820--- src/resources/TCTLParser/TAPAALCTLQueryParser.jj 2017-09-05 21:24:23 +0000
2821+++ src/resources/TCTLParser/TAPAALCTLQueryParser.jj 2021-09-14 20:13:17 +0000
2822@@ -56,7 +56,7 @@
2823
2824 public static TCTLAbstractPathProperty parse(String query) throws ParseException {
2825 TAPAALCTLQueryParser parser = new TAPAALCTLQueryParser(new StringReader(query));
2826- return parser.AbstractPathProperty();
2827+ return parser.Start();
2828 }
2829 }
2830
2831@@ -131,6 +131,16 @@
2832 }
2833
2834 /** Root production. */
2835+TCTLAbstractPathProperty Start() :
2836+{
2837+ TCTLAbstractPathProperty child = null;
2838+}
2839+{
2840+ (
2841+ child = AbstractPathProperty() <EOF> {return child;}
2842+ )
2843+}
2844+
2845 TCTLAbstractPathProperty AbstractPathProperty() :
2846 {
2847 TCTLAbstractStateProperty child = null;
2848
2849=== modified file 'src/resources/TCTLParser/TAPAALQueryParser.jj'
2850--- src/resources/TCTLParser/TAPAALQueryParser.jj 2014-05-22 20:26:41 +0000
2851+++ src/resources/TCTLParser/TAPAALQueryParser.jj 2021-09-14 20:13:17 +0000
2852@@ -49,7 +49,7 @@
2853
2854 public static TCTLAbstractProperty parse(String query) throws ParseException {
2855 TAPAALQueryParser parser = new TAPAALQueryParser(new StringReader(query));
2856- return parser.AbstractProperty();
2857+ return parser.Start();
2858 }
2859 }
2860
2861@@ -112,6 +112,16 @@
2862 }
2863
2864 /** Root production. */
2865+TCTLAbstractProperty Start() :
2866+{
2867+ TCTLAbstractProperty child = null;
2868+}
2869+{
2870+ (
2871+ child = AbstractProperty() <EOF> {return child;}
2872+ )
2873+}
2874+
2875 TCTLAbstractProperty AbstractProperty() :
2876 {
2877 TCTLAbstractStateProperty child = null;

Subscribers

People subscribed via source and target branches