annotate disp.pl @ 19:e1d3145cff7a lite-verifier

*** empty log message ***
author kono
date Thu, 30 Aug 2007 12:44:35 +0900
parents 1c57a78f1d98
children 07d6c4c5654b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2 %%
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
3 %% LITE Tcl/Tk interface
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
4 %%
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
6
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
7 % :- ensure_loaded('../tableau/lite').
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
8 :- module(lite).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
9 :- use_module(library(tcltk)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
10 :- verbose(off).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
11
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
12 :- dynamic r_event/2.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
13
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
14 :- abolish(show_state,2).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
15 % Next command keep check event during verification
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
16 show_state(S,ITL) :-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
17 (tcl_eval(update);true),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
18 bdt2itl(ITL,ITL1),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
19 nl,write('state('),write(S), % (
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
20 (verbose,write(' , '), write(ITL1),write(')'),nl;write(')')),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
21
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
22 event(verbose,'1') :- verbose(on).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
23 event(verbose,'0') :- verbose(off).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
24 event(X,Y) :- assertz(r_event(X,Y)). % ,write((X,Y)),nl.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
25 event(X) :- assertz(r_event(X,[])). % ,write((X)),nl.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
26
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
27 next(X,Y) :- r_event(_,_),retract(r_event(X,Y)),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
28 next(X,Y) :- tk_do_one_event(0),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
29 next(X,Y).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
30
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
31 display :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
32 init_display,!,
19
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
33 event_loop(run),
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
34 tcl_exit.
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
35
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
36 tcl_exit :-
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
37 tcl(X),tcl_delete(X),retract(tcl(X)).
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
38
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
39 tcl_name(L,Name) :-
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
40 concatenate(L,L1),
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
41 name(Name,L1).
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
42
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
43 concatenate([],[]).
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
44 concatenate([H|T],X) :- atomic(H),!,
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
45 name(H,List),concatenate(T,X1),append(List,X1,X).
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
46 concatenate([H|T],X) :- H=[_|_],
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
47 concatenate(T,X1),append(H,X1,X).
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
48
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
49 tcl_eval(E) :- atomic(E),!,
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
50 tcl(Tcl),tcl_eval(Tcl,E,_).
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
51 tcl_eval(E) :- E=[_|_],tcl_name(E,N),
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
52 tcl(Tcl),tcl_eval(Tcl,N,_).
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
53
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
54 init_display :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
55 (retract(r_event(_,_)),fail;true),
19
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
56 tk_new([name('Lite Verifier')], Tcl),
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
57 assert(tcl(Tcl)),
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
58 % tcl_eval('source disp.tcl'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
59 tcl_eval('source xf-disp'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
60 all_disable.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
61 canvas_origin(20,20).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
62
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
63 event_loop(quit):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
64 event_loop(_) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
65 next(X,Y),execute(X,Y),!,event_loop(X).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
66
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
67 execute(verify,X) :- !,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
68 verify(X).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
69
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
70 % !,X=1 -> verbose(on); verbose(off). causes error
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
71 execute(verbose,X) :- X='1' -> verbose(on); verbose(off).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
72 execute(map,X) :- !,name(X,L),name(X1,L),view_state(a,X1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
73 execute(execute,_) :- !,do_execute,!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
74 execute(generate,_) :- !,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
75 generate.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
76 execute(counter,_) :- !,do_diagnosis,!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
77 execute(quit,_) :- !. % ,tcl_eval('destroy .').
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
78 execute(prolog_call,X) :- !,prolog_call(X).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
79 execute(tokio_call,X) :- !,tokio_call(X).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
80 execute(X,_) :- !,write(event(X)),nl,ttyflush.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
81
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
82 generate :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
83 TOKIO = 'tmp.tokio',
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
84 tell(TOKIO),tgen,told,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
85 user:com(TOKIO,'tmp.out').
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
86 gen(X) :- consult(X),specification(Y),ex(Y),generate.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
87 gen(X) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
88 name(X,XL),append(XL,".lite",YL),name(X1,YL),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
89 consult(X1),specification(Y),ex(Y),generate.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
90
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
91 verify(X) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
92 all_disable,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
93 abolish(st,3),abolish(specification,1),abolish(st_variables,2),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
94 t2string(X,X0),s2terms(X0,X1),command(X1,X2,X3),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
95 display_contents(X3),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
96 ex(X2),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
97 ttyflush, display_statistics,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
98 all_enable.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
99 verify(_) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
100 all_disable.
19
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
101
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
102 display_contents(X) :-
19
e1d3145cff7a *** empty log message ***
kono
parents: 2
diff changeset
103 ttyflush,t2string(X,XS0),easy_pp(XS0,XS),
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
104 tcl_eval('$symbolicName(entry) delete 0.0 end'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
105 tcl_eval(['$symbolicName(entry) insert 0.0 {',XS,'}']),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
106 display_update.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
107
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
108 all_disable :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
109 tcl_eval('$symbolicName(map) configure -state disabled'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
110 tcl_eval('$symbolicName(execute) configure -state disabled'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
111 tcl_eval('$symbolicName(diag) configure -state disabled'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
112 display_update.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
113 all_enable :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
114 tcl_eval('$symbolicName(map) configure -state normal'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
115 tcl_eval('$symbolicName(execute) configure -state normal'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
116 tcl_eval('$symbolicName(diag) configure -state normal'),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
117 display_update.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
118
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
119 % Backtrack Control of example/counter example
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
120
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
121 do_execute :- display_exe('.'),next(X,Y),do_execute(X,Y),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
122 do_execute.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
123
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
124 do_execute(execute,_) :-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
125 fail.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
126 do_execute(X,Y) :- execute(X,Y),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
127
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
128 do_diagnosis :- display_diag(','),next(X,Y),do_diagnosis(X,Y),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
129 do_diagnosis.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
130
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
131 do_diagnosis(diag,_) :-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
132 fail.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
133 do_diagnosis(X,Y) :- execute(X,Y),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
134
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
135 % :- dynamic specification/1.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
136
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
137 % Text Based Commnad
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
138
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
139 command([st(X,Y,Z)|T],Term,[st(X,Y,Z)|T1]):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
140 assertz(st(X,Y,Z)),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
141 command(T,Term,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
142 command([specification(X)|T],X,[specification(X)|T1]):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
143 command(T,X,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
144 command([st_variables(X,Y)|T],Term,[st_variables(X,Y)|T1]):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
145 assertz(st_variables(X,Y)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
146 command(T,Term,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
147 command([],true,[]) :-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
148 command([],_,[]) :-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
149 command([H],Term,[Term1]) :-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
150 command(H,Term),!,Term=Term1.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
151 command([H|T],(Term1,Terms),[Term1|T1]) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
152 command(H,Term1),!,command(T,Terms,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
153
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
154 command(demo(X),Term):-!,lite:demo(X,Term). % predefined examples
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
155 command(ex(X),Term):-!,ex(X,Term).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
156 command(prolog(X,P),X):-!,safe_call(P).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
157 command(prolog(P),true):-!,safe_call(P).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
158 command(tokio(P),true):-!,safe_call(tokio(P)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
159 command(consult(P),Term):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
160 command(file(P),Term).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
161 command(file(P),Term):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
162 on_exception(Er,(consult(P),specification(Term)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
163 read_error(Term,Er,user,user)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
164 command(A,A) :- atomic(A),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
165 command(P,R) :- functor(P,H,N),functor(R,H,N),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
166 command_arg(N,P,R).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
167 command_arg(0,_P,_R):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
168 command_arg(N,P,R):-arg(N,P,PA),arg(N,R,RA),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
169 N1 is N-1,command(PA,RA),command_arg(N1,P,R).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
170
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
171 prolog_call(X) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
172 t2string(X,X0),s2terms(X0,[X1|_]),safe_call(X1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
173 tokio_call(X) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
174 t2string(X,X0),s2terms(X0,[X1|_]),safe_call(tokio(X1)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
175
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
176 safe_call(X) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
177 on_exception(Er,user:call(X),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
178 read_error(X,Er,user,user)),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
179 safe_call(_).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
180
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
181 :-dynamic font/2.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
182
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
183 small :- (retract(font(_,_));true),assert(font("7x14",14)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
184 large :- (retract(font(_,_));true),assert(font("12x24",24)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
185
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
186 :-small.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
187 % font("7x14",14).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
188
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
189 width(W,H):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
190 font(_,Fs),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
191 W is integer(1000/24*Fs), H is integer(500/24*Fs).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
192
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
193 display_statistics :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
194 itl_state_number(S), % number of state
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
195 itl_transition(L), % number of transition
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
196 name(S,Ss),name(L,Ls),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
197 append("State: ",Ss,S0),append(S0," Edge:",S1),append(S1,Ls,S2),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
198 tcl_eval(["$symbolicName(states) configure -text {",S2,"}"]),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
199
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
200 %%---------------------------------------------------------------------
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
201 % display_diagnosis
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
202 display_diag(View) :- diag(X),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
203 write_display_diag(X,View).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
204
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
205 % display_execution exapmle.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
206 display_exe(View) :- exe(Z),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
207 write_display_diag(Z,View).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
208
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
209 write_display_diag(counter_example(Hist),View) :-!,display_ce(Hist,View).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
210 write_display_diag(execution(Hist),View) :-!,display_ce(Hist,View).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
211 write_display_diag(R,_View):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
212 atomic(R),name(R,Text),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
213 clear_display,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
214 tcl_eval(['$symbolicName(canvas) create text 0 0 -text "',Text,'"']).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
215
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
216 % append([],X,X):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
217 % append([H|X],Y,[H|Z]) :- append(X,Y,Z).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
218
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
219 clear_display :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
220 tcl_eval('$symbolicName(canvas) delete all').
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
221 display_ce(Hist,View) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
222 canvas_origin(OX,OY),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
223 font(_,Fs),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
224 clear_display,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
225 X is OX+Fs/2,Y=OY,W is integer(60/24*Fs),H is integer(60/24*Fs),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
226 (variable_list(L);L=[]),append(L,['Time'],L1),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
227 display_var(['State'|L1],View,X,Y,H,X,X1),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
228 X2 is X1+X,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
229 display_ce(Hist,L,View,X2,Y,W,H,0). % ,View=>batchmodeoff.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
230 display_var([],_,_,_,_,X,X):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
231 display_var([Var|L],View,X,Y,H,X1,X2):- atomic(Var),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
232 Y1 is Y+H, font(_Fn,Fs),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
233 name(Var,VarText),length(VarText,Len0),Len is Len0*Fs,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
234 % View=>stringlength(VarText,Len),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
235 (X1>X+Len,X3=X1;X3 is X+Len),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
236 display_string(X,Y,VarText),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
237 display_var(L,View,X,Y1,H,X3,X2).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
238 display_var([Var|L],View,X,Y,H,X1,X2):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
239 functor(Var,VarH,2),member(VarH,[(^)]),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
240 arg(1,Var,VarA),arg(2,Var,VarB),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
241 % infix operator
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
242 Y1 is Y+H, font(_Fn,Fs),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
243 name(VarH,VarTextH),name(VarA,VarTextA),name(VarB,VarTextB),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
244 append(VarTextA,VarTextH,VarText0),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
245 append(VarText0,VarTextB,VarText),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
246 length(VarText,Len0),Len is Len0*Fs,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
247 % View=>stringlength(VarText,Len),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
248 (X1>X+Len,X3=X1;X3 is X+Len),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
249 display_string(X,Y,VarText),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
250 display_var(L,View,X,Y1,H,X3,X2).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
251 display_var([Var|L],View,X,Y,H,X1,X2):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
252 functor(Var,VarH,2),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
253 arg(1,Var,VarA),arg(2,Var,VarB),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
254 Y1 is Y+H, font(_Fn,Fs),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
255 name(VarH,VarTextH),name(VarA,VarTextA),name(VarB,VarTextB),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
256 CB is "(",CE is ")",CC is ",",
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
257 append(VarTextH,[CB|VarTextA],VarText0),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
258 append(VarText0,[CC|VarTextB],VarText1),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
259 append(VarText1,[CE],VarText),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
260 length(VarText,Len0),Len is Len0*Fs,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
261 % View=>stringlength(VarText,Len),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
262 (X1>X+Len,X3=X1;X3 is X+Len),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
263 display_string(X,Y,VarText),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
264 display_var(L,View,X,Y1,H,X3,X2).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
265
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
266 display_string(X,Y,Text) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
267 font(Fn,_),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
268 name(X,XL),name(Y,YL),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
269 tcl_eval(['$symbolicName(canvas) create text ',XL,' ',YL,' -font ',Fn,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
270 ' -text "', Text,'"'
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
271 ]).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
272 display_ce([],_,_,_,_,_,_,_):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
273 display_ce([(S->[_|Cond])|Hist],L,View,X,Y,W,H,T) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
274 X1 is X+W,Y1 is Y+H,T1 is T+1,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
275 name(S,SText),display_string(X1,Y,SText),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
276 display_now(L,Cond,View,X1,Y1,W,H,T),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
277 display_ce(Hist,L,View,X1,Y,W,H,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
278
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
279 display_now([],_,_View,X,Y,_,_,T):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
280 name(T,SText),display_string(X,Y,SText).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
281 display_now([V|Vr],Cond,View,X,Y,W,H,T):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
282 XS is X-H/2,YS is Y-H/2,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
283 display_state(Cond,V,View,XS,YS,W,H),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
284 Y1 is Y+H,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
285 display_now(Vr,Cond,View,X,Y1,W,H,T).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
286
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
287 rectangle(1,X,Y,X2,Y2) :-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
288 name(X,XL),name(Y,YL), name(X2,XL2),name(Y2,YL2),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
289 tcl_eval(['$symbolicName(canvas) create rectangle ',
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
290 XL,' ',YL,' ', XL2,' ',YL2,' ',
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
291 '-stipple gray50 -fill black'
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
292 ]).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
293 rectangle(0,X,Y,X2,Y2) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
294 name(X,XL),name(Y,YL), name(X2,XL2),name(Y2,YL2),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
295 tcl_eval(['$symbolicName(canvas) create rectangle ',
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
296 XL,' ',YL,' ', XL2,' ',YL2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
297 ]).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
298 display_state([V|_],V,_View,X,Y,W,H) :-!, % true
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
299 X2 is X+W,Y2 is Y+H,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
300 rectangle(1,X,Y,X2,Y2).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
301 display_state([not(V)|_],V,_View,X,Y,W,H) :-!, % false
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
302 X2 is X+W,Y2 is Y+H,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
303 rectangle(0,X,Y,X2,Y2).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
304 display_state([_|T],V,View,X,Y,W,H) :-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
305 display_state(T,V,View,X,Y,W,H).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
306 display_state([],_,_View,X,Y,W,H) :-!, % unknown
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
307 X2 is X+W,Y2 is Y+H/2,Y3 is Y2+3,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
308 rectangle(0,X,Y2,X2,Y3).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
309
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
310 display_update :- tcl_eval('update').
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
311
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
312 view_state(View,W) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
313 itl_state_number(S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
314 clear_display,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
315 canvas_origin(OX,OY),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
316 calc_view_size(W,S,D,W0),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
317 % write(calc_view_size(W,S,D,W0)),nl,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
318 W1 is OX + W0 + D, H1 is OY + W0 + D,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
319 rectangle(0,OX,OY,W1,H1),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
320 view_state_write(View,W0,S,D).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
321
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
322 calc_view_size(W,S,D,W1) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
323 D0 is integer(W/(S+1)),(D0<2,D=2;D=D0),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
324 W0 is D*(S+1),(W0=<W,!,W1 = W0; W1 is integer(W)),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
325
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
326 view_state_write(_View,W,S,D) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
327 canvas_origin(OX,OY),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
328 links(X,Y), link_translate(X,Y,X1,Y1,W,S),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
329 X2 is OX+X1+D,Y2 is OY+Y1+D,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
330 X11 is OX+X1,Y11 is OY+Y1,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
331 rectangle(1,X11,Y11,X2,Y2),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
332 display_update,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
333 fail.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
334 view_state_write(_View,_,_,_):-true.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
335
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
336 link_translate(false,Y,X1,Y1,W,S) :- !,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
337 link_translate(S,Y,X1,Y1,W,S).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
338 link_translate(X,false,X1,Y1,W,S) :- !,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
339 link_translate(X,S,X1,Y1,W,S).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
340 link_translate(X,Y,X1,Y1,W,S) :- number(X),number(Y),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
341 X1 is integer(X*W/(S+1))+1, Y1 is integer(Y*W/(S+1)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
342 link_translate(X,_,X1,0,W,S) :- number(X),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
343 X1 is integer(X*W/(S+1)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
344 link_translate(_,Y,0,Y1,W,S) :- number(Y),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
345 Y1 is integer(Y*W/(S+1)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
346 link_translate(_,_,0,0,_,_).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
347
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
348 %%
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
349
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
350 s2term("",true):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
351 s2term(Text,Term) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
352 telling(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
353 tell(tmp),format("~s.~n",[Text]),told,tell(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
354 seeing(I),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
355 see(tmp),on_exception(Er,read(Term),read_error(Term,Er,I,O)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
356 see(tmp),seen,see(I),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
357 s2term(_,true):-tell(tmp),told,see(tmp),seen.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
358
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
359 s2terms("",true):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
360 s2terms(Text,Terms) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
361 check_period(Text,0,Text1),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
362 telling(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
363 tell(tmp),format("~s~n",[Text1]),told,tell(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
364 seeing(I),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
365 see(tmp),on_exception(Er,s2terms0(Terms),read_error(Terms,Er,I,O)),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
366 see(tmp),seen,see(I),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
367 s2terms(_,true):-tell(tmp),told,see(tmp),seen.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
368
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
369 s2terms0(Terms) :-read(X),s2terms0(X,Terms).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
370 s2terms0(end_of_file,[]):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
371 s2terms0(H,[H|T]):-read(X),s2terms0(X,T).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
372
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
373 read_error(true,Er,I,O) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
374 tell(tmp),told,see(tmp),seen,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
375 see(I),tell(O), % unix(system('rm tmp')),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
376 write('read error:'),write(Er),nl.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
377
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
378 t2string(Term,Text) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
379 telling(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
380 tell(tmp),write(Term),told,tell(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
381 seeing(I),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
382 see(tmp),get0(C),read_string(C,Text),see(tmp),seen,see(I),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
383 t2string(_,true):-tell(tmp),told,see(tmp),seen.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
384
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
385 t2strings(Terms,Text):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
386 telling(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
387 t2strings(Terms),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
388 told,tell(O),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
389 seeing(I),
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
390 see(tmp),get0(C),read_string(C,Text),see(tmp),seen,see(I),!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
391 t2strings(_,true):-tell(tmp),told,see(tmp),seen.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
392
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
393 t2strings([]):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
394 t2strings([Term|T]):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
395 tell(tmp),write(Term),put("."),put(10),t2strings(T).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
396
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
397 read_string(-1,[]) :- !.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
398 read_string(C,[C|T]) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
399 get0(C1),read_string(C1,T).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
400
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
401 check_period([],0,[32,46]):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
402 check_period([],1,[]):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
403 check_period([46],_,[46]):-!.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
404 check_period([46,X|T],_,[46,X|T1]):-(X=32;X=10;X=37),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
405 check_period(T,1,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
406 check_period([37|T],X,[37|T1]):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
407 skip_line(T,X,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
408 check_period([X|T],P,[X|T1]):-(X=32;X=10),!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
409 check_period(T,P,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
410 check_period([X|T],_,[X|T1]):-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
411 check_period(T,0,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
412
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
413 skip_line([],X,[]):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
414 check_period([],X,_).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
415 skip_line([10|T],X,[10|T1]):-!,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
416 check_period(T,X,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
417 skip_line([_|T],X,T1):-skip_line(T,X,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
418
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
419 % sicstus dependent
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
420 easy_pp(X,X1) :- easy_pp(X,X1,0).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
421 easy_pp([],[10],_) :- !.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
422 easy_pp([C|T],[C1,10|T0],_) :- C is ".",!,C1 = C,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
423 easy_pp(T,T0,0).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
424 easy_pp([C|T],[C1,10|T0],N) :- C is ",",!,C1 = C,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
425 easy_tab(N,T0,T1),easy_pp(T,T1,N).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
426 easy_pp([C|T],[C1,10|T0],N) :- C is ";",!,C1 = C,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
427 easy_tab(N,T0,T1),easy_pp(T,T1,N).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
428 easy_pp([C,C|T],[C1,C1,10|T0],N) :- C is "&",!,C1 = C, % &&
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
429 easy_tab(N,T0,T1),easy_pp(T,T1,N).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
430 easy_pp([C|T],[C1,10|T0],N) :- C is "&",!,C1 = C, % &
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
431 easy_tab(N,T0,T1),easy_pp(T,T1,N).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
432 easy_pp([C,C1,C2,CB|T],C3,N) :- [C,_,C2,CB]="[a](",!, % quote '[a]'
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
433 CQ is "'", C3 = [CQ,C,C1,C2,CQ,CB|T1],
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
434 easy_pp(T,T1,N).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
435 easy_pp([10|T],[10|T0],N) :- !,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
436 easy_tab(N,T0,T1),easy_pp(T,T1,N).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
437 easy_pp([Par|T],[Par1|T0],N) :- Par is "(",!,Par1 = Par,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
438 N1 is N+1,easy_pp(T,T0,N1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
439 easy_pp([Par|T],[Par1|T0],N) :- Par is ")",!,Par1 = Par,
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
440 N1 is N-1,easy_pp(T,T0,N1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
441 easy_pp([H|T],[H|T0],N) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
442 easy_pp(T,T0,N).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
443
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
444 easy_tab(N,T,T1):-N =< 0,!,T=T1.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
445 easy_tab(N,[32,32|T],T1) :-
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
446 N1 is N-1,easy_tab(N1,T,T1).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
447
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
448 % end %