annotate td.pl @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children 61743469ee56
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
1 /*
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
2 Copyright (C) 1988,2005, Shinji Kono
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
3 Everyone is permitted to copy and distribute verbatim copies
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
4 of this license, but changing it is not allowed. You can also
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 use this wording to make the terms for other programs.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7 send your comments to kono@ie.u-ryukyu.ac.jp
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11 tokiodebug_on :- recorded(tokiodebug, on, _), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12 tokiodebug_on :- recorda(tokiodebug, on, _),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 write('Tokio debug mode switched on.'), nl.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 tokiodebug_off :- recorded(tokiodebug, _, R), !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 erase(R), write('Tokio debug mode switched off.'), nl.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 tokiodebug_off.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 'tokiodebugon?' :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 recorded(tokiodebug, on, _), !, uhihi.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22 uhihi :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 recorded(tokiotraceat, _, _), !, fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 uhihi.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 % Clocked Stepping
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 r_tokioDebug(Q,Now) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 r_skip(S),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 r_tokioDebug(S,Q,Now).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 r_tokioDebug(S,_Q,Now) :- S > Now,!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 r_tokioDebug(S,_Q,Now) :- 0<S,S < Now,!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 r_tokioDebug(_,Q,Now) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 abolish(r_skip,1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 assert(r_skip(-1)),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 r_select(Q,Now),!,r_skip(S),(S>Now;S= -1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 r_select(Q,Now) :- repeat,nl,write('Tokio Trace t'),write(Now),write(:),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 read(Key),r_menu(Key,Key1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 r_tokioDebug_menu(Key1,Q,Now),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 r_menu(n,next):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 r_menu(d,dump):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 r_menu(s(N),skip(N)):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 r_menu(+(N),skip(N)):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 r_menu(a,abort):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 r_menu(b,break):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 r_menu(v(N),value(N)):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 r_menu(*(N),value(N)):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 r_menu(q,queue):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 r_menu(t,trace):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 r_menu(N,skip(N)):-number(N),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 r_menu(h,help):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 r_menu(?,help):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57 r_menu(V,V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 r_tokioDebug_menu(help,_,_) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60 write('help/h/? '),put(9), write(' print this'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 write('next/n '),put(9), write(' skip to next clock'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 write('dump/d '),put(9), write(' dump current static value'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 write('all '),put(9), write(' all history of static value'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 write('save(file) '),put(9), write(' save current state'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 write('skip(n)/s(n)/+-Number'),put(9),write(' goto +-Number clock'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66 write('abort/a '),put(9), write(' abort tokio execution'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67 write('break/b '),put(9), write(' break to prolog'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68 write('value(Name)/*Name '),put(9),write(' examine static value'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69 write('queue/q '),put(9), write(' show current process queue'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 write('trace/t '),put(9), write(' enter prolog tracer'),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71 nl,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72 r_tokioDebug_menu(dump,_,_) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73 recorded(r_static,Name,_),record1(Name,(Name,Value,Time),_Ref),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 write(at),write(Time),write(': '),put(9),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75 write(*Name),write( = ),write(Value),nl,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76 r_tokioDebug_menu(abort,_,_Time):- !,abort.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77 r_tokioDebug_menu(break,_,_Time):- !,break,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 r_tokioDebug_menu(next,_,_Time):- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79 r_tokioDebug_menu(trace,_,_Time):- !,trace.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
80 r_tokioDebug_menu(all,_,Time) :- % recorded(time,Now,_),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
81 r_inc_time(Now,Time), assert(r_fififi),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
82 recorded(r_static,Name,_),recorded(Name,(Name,Value,Now),_Ref),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
83 (r_fififi,write(Now),write(': '),retract(r_fififi),fail; put(9)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
84 write(*),write(Name),write(' = '),write(Value),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
85 nl,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
86 r_tokioDebug_menu(queue,Q,_Time) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
87 numbervars(Q,0,_),r_save_queue(Q),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
88 r_tokioDebug_menu(value(Name),_Q,_) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
89 recorded(Name,(Name,Value,Time),_Ref),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
90 write(*),write(Name),write(' = '),write(Value),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
91 write(' at: '),write(Time),nl,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
92 r_tokioDebug_menu(save(File),Q,_Time) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
93 tell(File),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
94 write((:- init_static)),write('.'),nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
95 r_save_static,numbervars(Q,0,_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
96 r_save_queue(Q),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
97 told,!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
98 r_tokioDebug_menu(skip(N),_,Time) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
99 M is N+Time,abolish(r_skip,1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
100 assert(r_skip(M)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
101 r_tokioDebug_menu(_,_,_Time) :- !,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
102
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
103 r_inc_time(X,Now) :- r_inc_time(X,Now,0).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
104 r_inc_time(N,_Now,N).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
105 r_inc_time(N,Now,M) :- M1 is M+1,M1 =< Now, r_inc_time(N,Now,M1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
106
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
107 r_save_static :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
108 recorded(r_static,Name,_),recorded(Name,(Value,Time),_Ref),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
109 write_term((:- recordz(Name,(Value,Time),_)),[numbervars(true),quoted(true)]),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
110 % writeq((:- recordz(Name,(Value,Time),_))),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
111 write('.'),nl,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
112 r_save_static.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
113
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
114 r_save_queue(t(Empty,X,Fin,Now,F,K,Next,Futures,True)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
115 nl,write((:- abolish(restart,1),recorda(time,Now,_))),write('.'),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
116 nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
117 OO = ( restart
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
118 :- r_solve_t(X,Fin,Now,['$t'(Next,F,K,'$'(Fin,Now,Empty))|Futures],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
119 ['$t'(true,true,true,'$'(Fin,Now,Empty))|True]) ),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
120 % writeq(OO),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
121 write_term(OO,[numbervars(true),quoted(true)]),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
122 write('.'),nl.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
123
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
124 restart(File) :- [-File],restart.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
125
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
126 record1(Name,Value,Ref) :- recorded(Name,Value,Ref),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
127
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
128 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
129 % Clause Tracer (N.Y.I)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
130 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
131 tokiospied(G) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
132 functor(G, F, A), A2 is A-2, recorded(tokiospy, F/A2, _), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
133
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
134 tokiofailed1(_G) :- recorded(tokiofail, _, _), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
135 tokiofailed(G) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
136 functor(G, F, A), A2 is A-2, recorded(tokiofail, F/A2, _), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
137
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
138 % tokiodebug :- recorded(tokiospy, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
139 % tokiodebug :- recorded(tokiofail, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
140 tokiodebug :- tokiodebug_on,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
141 recorda(tokiospy, _, _), recorda(tokiofail, _, _),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
142 write('All computation will be traced.'), ttynl.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
143
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
144 % tokionodebug :- recorded(tokiospy, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
145 % tokionodebug :- recorded(tokiofail, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
146 % tokionodebug :- recorded(tokiotraceat, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
147 tokionodebug :- tokiodebug_off.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
148
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
149 (tokiospy) :- recorded(tokiospy, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
150 (tokiospy) :- recorded(tokiofail, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
151 (tokiospy) :- tokiodebug_on, recorda(tokiospy, _, _),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
152 write('All Tokio reductions will be traced.'), ttynl.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
153
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
154 tokiospy(X) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
155 tokiodebug_on,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
156 ( X=_F/_A, !, recorda(tokiospy, X, _); recorda(tokiospy, X/_, _) ),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
157 write('Tokio spy-point placed on '), write(X), put("."), nl.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
158
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
159 (tokionospy) :- recorded(tokiospy, _, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
160 (tokionospy) :- tokiodebug_off.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
161
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
162 tokionospy(F/A) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
163 recorded(tokiospy, F/A, R), erase(R),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
164 write('Tokio spy-point on '), write(F/A), write(' removed.'), nl, fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
165 tokionospy(X) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
166 recorded(tokiospy, X/_, R), erase(R),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
167 write('Tokio spy-point on '), write(X), write(' removed.'), nl, fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
168 tokionospy(_X) :- recorded(tokiospy, _, _), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
169 tokionospy(_) :- tokiodebug_off.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
170
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
171 tokiodebugging :- recorded(tokiodebug, on, _), !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
172 write('Tokio debug mode is switched on.'), nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
173 tokiodebugging1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
174 tokiodebugging :- write('Tokio debug mode is switched off.'), nl.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
175
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
176 tokiodebugging1 :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
177 ( setof(X, R^recorded(tokiospy, X, R), S), !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
178 ( S=[V|_], var(V), !, write('All Tokio reductions are traced.');
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
179 write('Tokio spy-points set on: '), write(S) ), nl;
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
180 true ).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
181
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
182 /* end td */