annotate tf.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 filter for partial compile
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 Sun Oct 13 18:35:19 JST 1985
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 Sun Nov 17 00:03:22 JST 1985 :-static
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 Wed Mar 25 23:00:23 JST 1987 rewrite
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 $Header$
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 pcom(File,Name) :- reset_macro,tokiopcompile(File,Name).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 pcom(File,Name,Out) :- reset_macro,tokiopcompile(File,Out,Name),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 (Out = user,!;reconsult(Out)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 tokiopcompile(S,Names) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 tokiopcompile(S, '#temp.tokio', Names),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 reconsult('#temp.tokio'). % I suppose we are in debugging.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 tokiopcompile(S, O,Names) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 cputime(Time),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 init_tokiocomp,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 tell(O),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 tokiopcomp(S, [], _L, Names), told,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 cputime(Time1),Time0 is Time1-Time,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 c_error((write('END '), nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 write(Time0), write(' sec.'),nl)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36 tokiopcomp([], L, L, _Names) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 tokiopcomp([H|T], L0, L, Names) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 tokiopcomp(H, L0, L1, Names), tokiopcomp(T, L1, L, Names).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 tokiopcomp(F, L, L, Names) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 seeing(O), nofileerrors,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 tokiofile(F,F1),see(F1), !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 tokiopcomp1('$$$$',Names), seen, see(O), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 tokiopcomp(F, _, _, _) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 fileerrors,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45 c_error((
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 display('Cannot open file: '), display(F), ttynl)),fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 tokiopcomp1(X,_Names) :- tokiocomp2(X),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 tokiopcomp1(_,Names) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 read_filter(Next,Names),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 tokiopcomp1(Next,Names).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 tokiopcomp1(_,_Names) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 c_error((nl,write('read error'),nl)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 read_filter(X,Name) :- repeat,read(X),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 filter(X,Name).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58 filter(end_of_file,_):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 filter((:-_X),_):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60 filter((?-_X),_):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 filter(('$function'(_X)),_):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 filter(('$define'(_X)),_):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 filter((H:-_),Name) :- !,functor(H,HH,_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 (HH=Name ; member(HH,Name)),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 filter(X,Name) :- functor(X,HH,_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66 (HH=Name ; member(HH,Name)),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68 cputime(T) :- 'r_cputime'(T).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 /* Macro Level Only Output */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71 mcom(File) :- reset_macro,tokiomcompile(File).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72 mcom(File,Out) :- reset_macro,tokiomcompile(File,Out).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 tokiomcompile(S) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75 tokiomcompile(S, '#temp.tokio').
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77 tokiomcompile(S, O) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 cputime(Time),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79 init_tokiocomp,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
80 tell(O),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
81 tokiomcomp(S, [], _L), told,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
82 cputime(Time1),Time0 is Time1-Time,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
83 c_error((write('END '), nl,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
84 write(Time0), write(' sec.'),nl)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
85
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
86 tokiomcomp([], L, L) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
87 tokiomcomp([H|T], L0, L) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
88 tokiomcomp(H, L0, L1), tokiomcomp(T, L1, L).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
89 tokiomcomp(F, L, L) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
90 seeing(O), nofileerrors,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
91 tokiofile(F,F1),see(F1), !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
92 tokiomcomp1('$$$$'), seen, see(O), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
93 tokiomcomp(F, _, _) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
94 fileerrors,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
95 c_error((
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
96 display('Cannot open file: '), display(F), ttynl)),fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
97
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
98 tokiomcomp1(X) :- tokiomcomp2(X),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
99 tokiomcomp1(_) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
100 read(Next),!,tokiomcomp1(Next).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
101 tokiomcomp1(_) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
102 c_error((nl,write('read error'),nl)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
103
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
104 tokiomcomp2(end_of_file) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
105 tokiomcomp2('$$$$') :- !,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
106 tokiomcomp2('$define'(Macro)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
107 read_macro(Macro),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
108 tokiomcomp2('$function'(Function)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
109 read_function(Function),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
110 tokiomcomp2((:- X)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
111 call(X), write_clause((:- X)),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
112 tokiomcomp2((?- X)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
113 call(X), write_clause((:- X)),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
114 % tokiomcomp2(Head) :- compiling_message(Head),fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
115 tokiomcomp2(X) :- preprocess(X,X1),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
116 numbervars(X1,0,_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
117 write_clause(X1),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
118
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
119 /* end */