annotate to.pl @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children
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
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12 Tokio compiler to prolog
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 Thu Aug 15 12:17:04 JST 1985
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 Fri Jan 10 16:11:31 JST 1986
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 Fri Sep 5 09:51:36 JST 1986 for 1.2a
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 Thu Mar 26 16:19:10 JST 1987
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 Wed Oct 14 13:35:54 JST 1987 full time F
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 Fri Oct 16 11:28:26 JST 1987 Sicstus
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 $Header$
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 compiler main routine
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 com(X) :- reset_macro,tokiocompile(X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 com(X,Y) :- reset_macro,tokiocompile(X, Y),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 (Y = user,!;reconsult(Y)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 tokiocompile(S) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 tokiocompile(S, '#temp.tokio'),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 % reconsult('#temp.tokio').
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 compile0('#temp.tokio').
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 tokiocompile(S, O) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 cputime(Time),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 init_tokiocomp,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 tell(O),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 tokiocomp(S, [], _L), told,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 cputime(Time1),Time0 is Time1-Time,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 c_error((write('END '), nl, write(Time0), write(' sec.'),nl)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 init_tokiocomp :- recorded('$uskel', _X, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 init_tokiocomp :- recorded('$mnum', _X, R), erase(R), fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 init_tokiocomp.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 tokiocomp([], L, L) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 tokiocomp([H|T], L0, L) :- !, tokiocomp(H, L0, L1), tokiocomp(T, L1, L).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 tokiocomp(F, _L0, _L) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 seeing(O), nofileerrors, tokiofile(F,F1),see(F1), !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 tokiocomp1('$$$$'), seen, see(O), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 tokiocomp(F, _, _) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 fileerrors,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 c_error((write('Cannot open file: '), write(F), nl)), !, fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 tokiofile(F,F).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 tokiofile(F,F1) :- name(F,FL),concatenate([FL,".tokio"],NewL),name(F1,NewL).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 tokiofile(F,F1) :- name(F,FL),concatenate([FL,".t"],NewL),name(F1,NewL).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58 /* tokiocomp1
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 read loop (fail loop)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 tokiocomp1(X) :- tokiocomp2(X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 tokiocomp1(_) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 read(Next), !, tokiocomp1(Next).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 tokiocomp1(_) :- c_error((nl,write('read error'),nl)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67 /* tokocomp2
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68 compiler directive
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69 this predicate never success except file end.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72 tokiocomp2(end_of_file) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73 tokiocomp2('$$$$') :- !,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 tokiocomp2('$define'(Macro)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75 read_macro(Macro),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76 tokiocomp2('$function'(Function)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77 read_function(Function),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 tokiocomp2((:- X)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79 call(X), write_clause((:- X)),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
80 tokiocomp2((?- X)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
81 call(X), write_clause((:- X)),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
82 tokiocomp2(Head) :- compiling_message(Head),fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
83 tokiocomp2(X) :- preprocess(X,X1),!,tokiocomp3(X1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
84
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
85 compiling_message((Head :- _Body)) :- !,compiling_message(Head).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
86 compiling_message(Head) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
87 (systemp(Head);Head = (_,_);Head = [_|_];functor(Head,'{}',_)),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
88 functor(Head,H,A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
89 c_error((
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
90 write('Compiling System Predicate: '),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
91 write(H/A),nl)),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
92 compiling_message(Head) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
93 functor(Head,H,A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
94 c_error((
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
95 write('Compiling: '),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
96 write(H/A),nl)),!,!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
97
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
98 /* tokiocomp3
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
99 if end_of_file then success otherwise fail
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
100 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
101
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
102 tokiocomp3((X,_Y)) :- tokiocomp3(X),fail. % fail and fall into next line
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
103 tokiocomp3((_X,Y)) :- !,tokiocomp3(Y).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
104 tokiocomp3(X) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
105 c_clause(X, C), write_clause(C),!, fail. % to reduce stack
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
106 tokiocomp3(X) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
107 c_error((nl,write('compiler error on '),write(X),nl)),fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
108
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
109 % preprocess(X,X). % no development
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
110
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
111 display_fa(F/A) :- display(F), display('/'), display(A), display(',').
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
112
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
113 writel([]) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
114 writel([X|L]) :- writel(L), write(X), write(', ').
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
115
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
116 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
117 %
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
118 % varialble type
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
119 %
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
120 % '$REF' full referenced variable
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
121 % '$TMP' both now and next are referenced
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
122 % '$NOW','$NXT' either now or next is referenced
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
123 % '$CNT' this variable is constnat in time transition
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
124 %
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
125 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
126
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
127 variable(X) :- var(X), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
128 variable('$REF'(_)) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
129 variable('$CNT'(_)) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
130 variable('$NOW'(_,_)) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
131 variable('$NXT'(_,_)) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
132 variable('$TMP'(_,_,_)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
133
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
134
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
135 % c_post(Vname, Vname, V0, V) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
136 % var(Vname),!, V is V0+1,name(V0,Lv),name(Vname,[95|Lv]). %%% _001
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
137 c_post(Vname, Vname, V0, V) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
138 var(Vname),!, V is V0+1,Vname = '$VAR'(V0). %%% _001
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
139 c_post('$VAR'(X), '$VAR'(X), V, V) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
140 c_post('$CNT'(X), XX, V0, V) :- !, c_post(X, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
141 c_post('$REF'(X), XX, V0, V) :- !, c_post(X, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
142 c_post('$TMP'(X,Now,Nxt), XX, V0, V) :- !, c_post_tvar(X,Now,Nxt, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
143 c_post('$NOW'(X,Now), XX, V0, V) :- !, c_post_tvar(X,Now,_Nxt, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
144 c_post('$NXT'(X,Nxt), XX, V0, V) :- !, c_post_tvar(X,_Now,Nxt, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
145 c_post(Atomic,Qatomic,V,V) :- atomic(Atomic),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
146 c_post_atomic(Atomic,Qatomic).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
147 c_post([A|B],[AA|BB], V0, V) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
148 c_post(A,AA,V0,V1),c_post(B,BB,V1,V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
149 c_post((A,B),(AA,BB), V0, V) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
150 c_post(A,AA,V0,V1),c_post(B,BB,V1,V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
151 % Special Hack.... ( nonvar for C-Prolog)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
152 c_post('r_eq'(A,B,Q1,Q2), B1=A1, V0, V) :- nonvar(A),nonvar(B),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
153 functor(A,'$CNT',_),functor(B,'$CNT',_),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
154 c_post(A,A1,V0,V1),c_post(B,B1,V1,V2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
155 c_post(Q1,Q11,V2,V3),c_post(Q2,Q12,V3,V),Q11=Q12.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
156 c_post('r_eq'(A,B,Q1,Q2), 'r_eqn'(B1,A1,Q11,Q12), V0, V) :- nonvar(A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
157 functor(A,'$CNT',_),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
158 c_post(A,A1,V0,V1),c_post(B,B1,V1,V2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
159 c_post(Q1,Q11,V2,V3),c_post(Q2,Q12,V3,V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
160 c_post('r_eq'(A,B,Q1,Q2), 'r_eqn'(A1,B1,Q11,Q12), V0, V) :- nonvar(B),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
161 functor(B,'$CNT',_),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
162 c_post(A,A1,V0,V1),c_post(B,B1,V1,V2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
163 c_post(Q1,Q11,V2,V3),c_post(Q2,Q12,V3,V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
164 c_post('r_eq'(A,B,Q1,Q2), 'r_eq'(A1,B1,Q11,Q12), V0, V) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
165 c_post(A,A1,V0,V1),c_post(B,B1,V1,V2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
166 c_post(Q1,Q11,V2,V3),c_post(Q2,Q12,V3,V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
167 c_post(X, XX, V0, V) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
168 functor(X, F, A), c_post_atomic(F,F1),!, functor(XX, F1, A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
169 c_post_args(0, A, X, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
170
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
171 c_post_atomic(X,X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
172 % c_post_atomic([],[]) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
173 % c_post_atomic(Number,Number) :- number(Number),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
174 % c_post_atomic(Atomic,Qatomic):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
175 % name(Atomic,La),La=[H|_],[H]\="'",[H]\="_",!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
176 % concatenate(["'",La,"'"],Nla),name(Qatomic,Nla).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
177 % c_post_atomic(Atomic,Atomic).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
178
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
179 c_post_args(N, N, _, _, V, V) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
180 c_post_args(K, N, X, XX, V0, V) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
181 K1 is K+1, arg(K1, X, XK), c_post(XK, XXK, V0, V1), arg(K1, XX, XXK),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
182 c_post_args(K1, N, X, XX, V1, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
183
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
184 c_post_tvar(X, Now, Nxt, '$t'(Now1,Nxt1), V0, V) :- var(X),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
185 X='$TMP'(_,Now,Nxt),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
186 c_post(Now, Now1, V0, V1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
187 c_post(Nxt, Nxt1, V1, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
188 c_post_tvar('$REF'(X), _Now, _Nxt, XX, V0, V) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
189 c_post(X, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
190 c_post_tvar('$CNT'(X), _Now, _Nxt, XX, V0, V) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
191 c_post(X, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
192 c_post_tvar('$TMP'(X,Now,Nxt), Now, Nxt, XX, V0, V) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
193 c_post_tvar(X, Now, Nxt, XX, V0, V).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
194
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
195 write_clause(X) :- recorded('r_assert',_,_),assert_clause0(X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
196 write_clause(_) :- recorded('r_assert',_,_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
197 write_clause(X) :- write_clause0(X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
198 write_clause(_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
199
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
200 write_clause0((X:-true)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
201 c_post(X, XX, 0, _),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
202 write_term(XX,[numbervars(true),quoted(true)]),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
203 % writeq(XX),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
204 put("."), nl,!,fail. %%% writeq --> write
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
205 write_clause0(X) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
206 c_post(X, XX, 0, _), writeq1(XX), put("."), nl,!,fail. %%% writeq --> write
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
207
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
208 % a little pretty print
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
209 writeq1((A,B)) :- !,writeq1(A),put("."), nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
210 writeq1(B).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
211 writeq1((H:-B)) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
212 % writeq(H),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
213 write_term(H,[numbervars(true),quoted(true)]),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
214 write((:-)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
215 writeq2(B).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
216 writeq1(X) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
217 % writeq(X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
218 write_term(X,[numbervars(true),quoted(true)]).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
219 writeq2((A,B)) :- !,nl,tab(4),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
220 % writeq(A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
221 write_term(A,[numbervars(true),quoted(true)]),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
222 put(","),writeq2(B).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
223 writeq2(X) :- nl,tab(4),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
224 write_term(X,[numbervars(true),quoted(true)]).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
225 % writeq(X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
226
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
227
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
228 assert_clause(X) :- assert_clause0(X).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
229 assert_clause(_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
230
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
231 %assert_clause0((X:-true)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
232 % c_post(X, XX, 0, _), c_melt(XX,XXX,_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
233 % recorda('r_run',XXX,Ref),assertz(XXX), !,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
234 assert_clause0(X) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
235 c_post(X, XX, 0, _), c_melt(XX,((XXX:-Y)),_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
236 recorda('r_run',((XXX:-_)),_Ref),assertz((XXX:-Y)), !,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
237
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
238 /* end */