fznslurp.pl 403 Bytes
% == No, Emacs this is -*-Prolog-*- code, not what you thought... =============

load_ast(AST) :- load_ast(_>[], [], AST).

load_ast(end_of_file, AST, AST).
load_ast(IN > INT,    IN,  OUT) :- read(OP), !,
				   ( g_read(ast_debug, true) -> 
					 write(OP), nl
				    ; true ),
				   load_ast(OP, INT, OUT).

slurp(FILE, AST)      :- see(FILE), load_ast(AST), !, seen.
slurp(_, end_of_file) :- seen.