
:- use_module(library(pio)).

log_to_tree(File) :-
	writeln('input trees;'),
	writeln('input boxes;'),
	writeln('beginfig(1);'),
        phrase_from_file(log(Ls), File),
        writeln("tree.s (btex $root$ etex) ("),
        phrase(tree, Ls),
        writeln(");\n"),
	writeln('drawtrees(s);'),
	writeln('endfig;'),
	writeln('end'),!.


log([])     --> [].
log([T|Ts]) --> token(T), !, ws, log(Ts).

token(left)  --> "left".
token(right) --> "right".
token(false) --> "false".
token(depth) --> "depth".
token(solution) --> "solution".

ws --> [W], { code_type(W, space) }, ws.
ws --> [].

tree --> [].
tree --> [left,depth,false], !, { write("tree (btex ! etex) ()") }, tree.
tree --> [left,solution,false], !, { write("tree (btex $\\top$ etex) ()") }, tree.
tree --> [left,false], !, { write("tree (btex $\\bot$ etex) ()") }, tree.
tree --> [left], { write("tree (btex l etex) (") }, tree.
tree --> [right,depth,false], !, { write(", tree (btex ! etex) ()") }, tree.
tree --> [right,solution,false], !, { write(", tree (btex $\\top$ etex) ()") }, tree.
tree --> [right,false], !, { write(", tree(btex $\\bot$ etex) ()") }, tree.
tree --> [right], { write(", tree(btex r etex) (") }, tree.
tree --> [false], { write(")") }, tree.

% maybe_next, [val(X)] --> [val(X)], !, { format(", ") }.
% maybe_next, [X]      --> [X], !.
% maybe_next           --> [], !, { format(";\n") }.

%?- log_to_tree("log0.txt").
%@ tree (btex v etex) (tree (btex 1 etex) (tree (btex v etex) ((leaf(btex 1 etex)), (leaf(btex 2 etex)))), tree (btex 2 etex) (tree (btex v etex) ((leaf(btex 1 etex)), (leaf(btex 2 etex)))));
%@ true .

%?- log_to_tree("log1.txt").

%?- log_to_tree("qlog4.txt").

%?- log_to_tree("qlog4enum.txt").
%@ tree.s (btex $root$ etex) (tree (btex l etex) (tree (btex l etex) (), tree(btex r etex) (tree (btex l etex) (), tree(btex r etex) ())), tree(btex r etex) (tree (btex l etex) ();
%@ true .

%?- log_to_tree("qlog8-4.txt").

%@ true ;
%@ false.

%?- log_to_tree("qlog8-6.txt").

%?- log_to_tree("qlog8-7.txt").

%?- log_to_tree("log3.txt").

%@ true ;
%@ false.

%@ tree.s (btex r etex) (tree (btex l etex) (tree (btex l etex) (), tree(btex r etex) ()), tree(btex r etex) (tree (btex l etex) ()));
%@ true .

%?- log_to_tree("qlog5.txt").
