proframe.pro

来自「prolog开发工具」· PRO 代码 · 共 43 行

PRO
43
字号
% Code which I think converts Prolog to Frame notation.


convert :-
	abolish(frame,2),
	member(Level,[order,family,bird]),
	H =.. [Level,Thing],
	clause(H,B),
	change(B,AList),
	write_frame(frame(Thing,[level-[val Level]|AList])),
	fail.

change([],[]).
change([G|X],[S|Y]) :-
	ch(G,S),!,
	change(X,Y).

ch(G,ako-[val Val]) :-
	G =.. [L,Val],
	member(L,[order,family,bird]).
ch(G,Attr-[val Val]) :-
	G =.. [Attr,Val].
	
write_frame(frame(Thing,AList)) :-
	write_line([frame,'(',Thing,', [' ]),nl,
	write_alist(AList),
	write(' ]).'),nl,nl.

write_line([]).
write_line([H|T]) :-
	write(H),
	write_line(T).

write_alist([L]) :-
	tab(5),write_slot(L), !.
write_alist([H|T]) :-
	tab(5),write_slot(H),write(','),nl,
	write_alist(T).

write_slot(S-[val V]) :-
	write_line([S,-,'[',val,' ',V,']']).                                                                                                        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?