annotate src/lite/ITLNodeParser.java @ 88:6b3535ea6958

*** empty log message ***
author kono
date Fri, 18 Jan 2008 16:00:37 +0900
parents e70b8c36ec0a
children 116a6afd11aa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
1 package lite;
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
2
32
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
3 import java.util.LinkedList;
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
4
74
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
5 import parser.Command;
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
6 import parser.Dictionary;
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
7 import parser.LogicNodeScope;
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
8 import parser.MacroNodeParser;
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
9 import parser.Token;
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
10 import parser.TokenID;
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
11
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
12 import sbdd.SBDDFactory;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
13
7
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
14
31
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
15 public class ITLNodeParser<Node extends ITLSolver> extends MacroNodeParser<Node> {
7
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
16
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
17 public ITLNodeFactoryInterface<Node> logicNodeFactory;
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
18 public ITLNodeScanner<Node> scanner;
59
f97d0d631992 *** empty log message ***
kono
parents: 58
diff changeset
19 public ITLCommander<Node> parseCommand;
55
99abe1d8fe69 small example works.
kono
parents: 43
diff changeset
20 public Node emptyNode;
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
21 private Node periodNode;
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
22 public String help = "";
7
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
23
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
24 public ITLNodeParser(ITLNodeFactoryInterface<Node> lf) {
33
4e66a6dfc787 ITL Satisfier on one clock first try.
kono
parents: 32
diff changeset
25
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
26 super(lf);
7
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
27 logicNodeFactory = lf;
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
28 initialize();
33
4e66a6dfc787 ITL Satisfier on one clock first try.
kono
parents: 32
diff changeset
29
4e66a6dfc787 ITL Satisfier on one clock first try.
kono
parents: 32
diff changeset
30 Token<Node> emptyToken = dict.reserve("empty",TokenID.Empty);
55
99abe1d8fe69 small example works.
kono
parents: 43
diff changeset
31 emptyNode = emptyToken.value = logicNodeFactory.emptyNode();
23
872c78fb3a00 *** empty log message ***
kono
parents: 21
diff changeset
32
57
e416e9def04d *** empty log message ***
kono
parents: 55
diff changeset
33 parseCommand = new ITLCommander<Node>(lf,this);
23
872c78fb3a00 *** empty log message ***
kono
parents: 21
diff changeset
34
31
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
35 define("not(P)","~P"); // not
84
e70b8c36ec0a Almost completed.
kono
parents: 74
diff changeset
36 define("P->Q","(not(P);Q))",101); // imply
31
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
37 define("P<->Q","((not(P);Q),(P; not(Q)))"); // equiv
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
38 define("P=Q","((not(P);Q),(P; not(Q)))"); // equiv
84
e70b8c36ec0a Almost completed.
kono
parents: 74
diff changeset
39 // P&&Q have to be left associative ( xfy i.e. a&&b&&c = a&&(b&&c)
e70b8c36ec0a Almost completed.
kono
parents: 74
diff changeset
40 // odd order means xfy associativity. & is right associative (yfx) in this
e70b8c36ec0a Almost completed.
kono
parents: 74
diff changeset
41 // parser, but & has associative, so it is alright. (&& is not assosicative)
e70b8c36ec0a Almost completed.
kono
parents: 74
diff changeset
42 define("P && Q","((not(empty),P) & Q))",901); // strong chop
19
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
43 define("'<>'(Q)","(true & Q))"); // sometime
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
44 define("'#'(Q)"," not(true & not(Q)))"); // always
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
45 define("'[]'(Q)"," not(true & not(Q)))"); // always
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
46 define("'[a]'(Q)"," not(true & not(Q) & true))"); // always with arbitary fin
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
47 define("'<a>'(Q)"," (true & Q & true))"); // sometime with arbitary fin
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
48 define("fin(Q)","(true & (empty,Q)))"); // final state in the interval
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
49 define("keep(Q)"," not(true & not((empty ; Q))))"); // except final state
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
50 define("halt(Q)"," '[]'(empty=Q))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
51 define("more"," not(empty))"); // non empty interval
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
52 // discrete stuff
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
53 define("skip"," @(empty))"); // 1 length interval
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
54 define("infinite"," (true & false))"); //
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
55 define("finite"," ~((true & false)))"); //
59
f97d0d631992 *** empty log message ***
kono
parents: 58
diff changeset
56 // define("length(I)", "true",50,command); // length operator
f97d0d631992 *** empty log message ***
kono
parents: 58
diff changeset
57 define("length(I)", "empty",50, // length operator
58
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
58 new Command<Node>() {
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
59 public Node exec(Node predicate, Node value, LinkedList<Node> args) {
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
60 Node n = value;
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
61 int length = Integer.parseInt(args.get(0).toString());
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
62 for(int i =0;i<length;i++) {
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
63 n = logicNodeFactory.nextNode(n);
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
64 n=logicNodeFactory.andNode(
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
65 logicNodeFactory.notNode(
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
66 logicNodeFactory.emptyNode())
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
67 ,n);
58
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
68 }
65
48db54d3129b *** empty log message ***
kono
parents: 64
diff changeset
69 return n;
58
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
70 }
4102a550bd52 *** empty log message ***
kono
parents: 57
diff changeset
71 });
59
f97d0d631992 *** empty log message ***
kono
parents: 58
diff changeset
72 define("less(I)","false",50,parseCommand); // less than N length
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
73 define("@(P)","(~empty, next(P)))");
19
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
74 // temporal assignments
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
75 define("gets(A,B)","keep(@A<->B))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
76 define("stable(A)","keep(@A<->A))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
77 // define("state(A)","(share(A),'[]'(L))):- def_state(A,L)");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
78 // def(Q=>P,exists(R,(Q = R,stable(R),fin(P = R))))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
79 // easier one
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
80 define("Q=>P","(Q & (empty,P); ~Q & (empty, ~P)))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
81 // def(P<=Q,Q=>P)");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
82 // loop stuff and quantifiers
65
48db54d3129b *** empty log message ***
kono
parents: 64
diff changeset
83 define("*(A) ","proj(A,true),fin(A)"); // weak closure
69
5fd456b0a073 *** empty log message ***
kono
parents: 67
diff changeset
84 // define("+(A) ","A& *(empty;A)"); // strong closure (difficult one)
5fd456b0a073 *** empty log message ***
kono
parents: 67
diff changeset
85 define("+(A) ","A & proj(A,true)"); // strong closure
19
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
86 define("while(Cond,Do)"," *(((Cond->Do) , (~Cond->empty))))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
87 define("repeat(Do,until,Cond)"," (*((Do;empty)) ,@ halt(Cond)))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
88 define("all(P,Q)","not(exists(P,not(Q)))");
31
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
89 define("local(P)"," (P = (P&true))");
19
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
90 // test predicates
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
91 // define("trace(X,List),L) :- !,make_trace(List,X,L)");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
92 define("even(P)","exists(Q,(Q, keep( @Q = ~Q),'[]'((Q->P)))))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
93 define("evenp(P)","(*(((P,skip) & skip;empty,P)) & (empty;skip)))");
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
94 define("phil(L,R)","+('[]'((~L, ~R)) & @ (L, ~R,@ (L,R, @ (R,'[]'( ~L)))) ))");
65
48db54d3129b *** empty log message ***
kono
parents: 64
diff changeset
95
27
6bfc0d1c84b8 *** empty log message ***
kono
parents: 24
diff changeset
96 define("ex(N,Exp)","true",50,parseCommand);
70
416e4d272e79 *** empty log message ***
kono
parents: 69
diff changeset
97 define("do(N)","true",50,parseCommand);
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
98 define("diag(N)","true",50,parseCommand);
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
99 define("exe(N)","true",50,parseCommand);
71
01356168f25f *** empty log message ***
kono
parents: 70
diff changeset
100 define("def(Head,Body)","true",50,parseCommand);
57
e416e9def04d *** empty log message ***
kono
parents: 55
diff changeset
101 define("include(path)","true",50,parseCommand);
59
f97d0d631992 *** empty log message ***
kono
parents: 58
diff changeset
102
65
48db54d3129b *** empty log message ***
kono
parents: 64
diff changeset
103 define("ex0(N,Exp)","skipped");
48db54d3129b *** empty log message ***
kono
parents: 64
diff changeset
104 define("verbose(I)", "true",50,parseCommand);
48db54d3129b *** empty log message ***
kono
parents: 64
diff changeset
105
59
f97d0d631992 *** empty log message ***
kono
parents: 58
diff changeset
106 define("^(r)","r"); // interval variable (we cannot handle now)
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
107
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
108 periodNode = logicNodeFactory.variableNode(".", true);
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
109 define("help","true",50,parseCommand);
88
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
110 define("show","true",50,parseCommand);
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
111 define("states","true",50,parseCommand);
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
112 define("ls","true",50,parseCommand);
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
113 define("clear","true",50,parseCommand);
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
114 // only one of the is true (should allow all false case?)
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
115 define("share(L)","[](share0(L))");
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
116 define("share0(L)","true",50, new Command<Node>() {
74
147864a924cd *** empty log message ***
kono
parents: 73
diff changeset
117 @SuppressWarnings("unchecked")
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
118 public Node exec(Node predicate, Node value, LinkedList<Node> args) {
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
119 Node allFalse = (Node)SBDDFactory.trueSolver;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
120 value= (Node)SBDDFactory.falseSolver;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
121 LinkedList<ITLSolver> list = args.get(0).arguments();
69
5fd456b0a073 *** empty log message ***
kono
parents: 67
diff changeset
122 if (list==null) {
5fd456b0a073 *** empty log message ***
kono
parents: 67
diff changeset
123 error("sahre: missing [] argument");
5fd456b0a073 *** empty log message ***
kono
parents: 67
diff changeset
124 return value;
5fd456b0a073 *** empty log message ***
kono
parents: 67
diff changeset
125 }
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
126 if (list.isEmpty()) return value;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
127 for(ITLSolver n: list) {
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
128 Node n1 = (Node)n;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
129 value = logicNodeFactory.bddNode(n1, allFalse, value);
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
130 allFalse = logicNodeFactory.bddNode(n1,
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
131 (Node)SBDDFactory.falseSolver,allFalse);
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
132 }
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
133 return value;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
134 }
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
135 });
19
2c81f5f0a575 Infix Macro (1st try)
kono
parents: 12
diff changeset
136
7
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
137 }
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
138
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
139 public ITLNodeParser() {
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
140 super();
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
141 }
11
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
142
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
143
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
144 @Override
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
145 public void initialize() {
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
146 dict = new Dictionary<Node>();
28
b60616bb8931 state less scope cleannup
kono
parents: 27
diff changeset
147 scope = new LogicNodeScope<Node>(null,dict);
11
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
148 initReservedWord();
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
149 scanner = new ITLNodeScanner<Node>(dict);
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
150 super.scanner = scanner;
29
5044991f679d Operator Order Test
kono
parents: 28
diff changeset
151
5044991f679d Operator Order Test
kono
parents: 28
diff changeset
152 dict.reserve("&",TokenID.Chop);
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
153 dict.reserve("next",TokenID.Next);
57
e416e9def04d *** empty log message ***
kono
parents: 55
diff changeset
154 dict.reserve("proj",TokenID.Projection);
31
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
155
88
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
156 // parseCommand requires compile tme reserved word for string comparison
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
157 dict.reserve("less");
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
158 dict.reserve("ex");
70
416e4d272e79 *** empty log message ***
kono
parents: 69
diff changeset
159 dict.reserve("do");
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
160 dict.reserve("include");
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
161 dict.reserve("def");
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
162 dict.reserve("verbose");
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
163 dict.reserve("help");
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
164 dict.reserve("diag");
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
165 dict.reserve("exe");
88
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
166 dict.reserve("show");
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
167 dict.reserve("ls");
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
168 dict.reserve("states");
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
169 dict.reserve("clear");
11
20d8d946cba2 *** empty log message ***
kono
parents: 10
diff changeset
170 }
20
a6b47fa2a99b macro with command
kono
parents: 19
diff changeset
171
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
172 @Override
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
173 public Node expr2() {
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
174 Node n = exprI2();
32
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
175 while(nextToken.type==TokenID.And) {
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
176 nextToken();
32
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
177 n = logicNodeFactory.andNode(n, exprI2()) ;
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
178 }
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
179 return n;
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
180 }
31
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
181
60
ff125345619d exists does not terminate...
kono
parents: 59
diff changeset
182 @Override
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
183 public Node expr3() {
71
01356168f25f *** empty log message ***
kono
parents: 70
diff changeset
184 if (nextToken.type == TokenID.Next) {
01356168f25f *** empty log message ***
kono
parents: 70
diff changeset
185 nextToken();
01356168f25f *** empty log message ***
kono
parents: 70
diff changeset
186 return logicNodeFactory.nextNode(expr3());
01356168f25f *** empty log message ***
kono
parents: 70
diff changeset
187 }
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
188 Node n = super.expr3();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
189 while(nextToken.type==TokenID.Question) {
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
190 nextToken();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
191 Node cond = n;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
192 Node high = expr3();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
193 if (nextToken.type!=TokenID.Colon) {
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
194 error(": expected");
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
195 return logicNodeFactory.trueNode();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
196 }
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
197 nextToken();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
198 Node low = expr3();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
199 n = logicNodeFactory.orNode(
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
200 logicNodeFactory.andNode(cond, high),
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
201 logicNodeFactory.andNode(logicNodeFactory.notNode(cond), low));
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
202 }
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
203 return n;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
204 }
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
205
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
206
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
207 @Override
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
208 public Node term() {
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
209 if (nextToken.type==TokenID.BParen) {
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
210 Node predicate = periodNode;
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
211 nextToken();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
212 LinkedList<Node> arg = arguments();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
213 return logicNodeFactory.predicateNode(predicate, arg);
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
214 }
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
215 return super.term();
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
216 }
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
217
34
7c90edfcb4ce ITL one clock working (!!)
kono
parents: 33
diff changeset
218 public Node exprI2() {
60
ff125345619d exists does not terminate...
kono
parents: 59
diff changeset
219 Node n = exprM1();
32
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
220 while(nextToken.type == TokenID.Chop) {
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
221 nextToken();
60
ff125345619d exists does not terminate...
kono
parents: 59
diff changeset
222 n = logicNodeFactory.chopNode(n, exprM1());
30
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
223 }
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
224 return n;
69d6efe82e9b *** empty log message ***
kono
parents: 29
diff changeset
225 }
31
660ff4f1a901 *** empty log message ***
kono
parents: 30
diff changeset
226
32
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
227
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
228 @Override
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
229 protected LinkedList<Node> arguments() {
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
230 Node n;
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
231 LinkedList<Node> arg = new LinkedList<Node>();
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
232 while(nextToken.type!=TokenID.CloseParen&&nextToken.type!=TokenID.CloseBParen) {
64
80db395eeb30 *** empty log message ***
kono
parents: 60
diff changeset
233 if (nextToken.type==TokenID.NULL) break;
32
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
234 n = exprI2();
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
235 arg.add(n);
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
236 if (nextToken.type == TokenID.And)
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
237 nextToken();
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
238 }
67
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
239 if (nextToken.type==TokenID.CloseParen||
4ced2af1ff09 BDD Order fix
kono
parents: 66
diff changeset
240 nextToken.type==TokenID.CloseBParen) nextToken();
32
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
241 else {
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
242 scanner.error(") expected");
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
243 }
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
244 return arg;
4cdda1a017ec *** empty log message ***
kono
parents: 31
diff changeset
245 }
71
01356168f25f *** empty log message ***
kono
parents: 70
diff changeset
246
33
4e66a6dfc787 ITL Satisfier on one clock first try.
kono
parents: 32
diff changeset
247 public ITLSolver emptyNode() {
4e66a6dfc787 ITL Satisfier on one clock first try.
kono
parents: 32
diff changeset
248 return emptyNode;
4e66a6dfc787 ITL Satisfier on one clock first try.
kono
parents: 32
diff changeset
249 }
57
e416e9def04d *** empty log message ***
kono
parents: 55
diff changeset
250
73
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
251 public void addHelp(String string) {
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
252 help += string;
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
253 }
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
254
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
255 public void help() {
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
256 System.out.println(help);
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
257 }
034c573af8ea Diagnosis Routine
kono
parents: 71
diff changeset
258
70
416e4d272e79 *** empty log message ***
kono
parents: 69
diff changeset
259
88
6b3535ea6958 *** empty log message ***
kono
parents: 84
diff changeset
260
7
c02f12316c01 *** empty log message ***
kono
parents:
diff changeset
261 }