33 lines
		
	
	
		
			616 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			616 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/local/bin/yap
							 | 
						||
| 
								 | 
							
								#.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								:- use_module(library(system)).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								main :-
							 | 
						||
| 
								 | 
							
								      source_dir( Dir ),
							 | 
						||
| 
								 | 
							
								      directory_files(Dir/input/parse,[_,_|Files]),
							 | 
						||
| 
								 | 
							
								      member( File, Files ),
							 | 
						||
| 
								 | 
							
								      atom_concat(test_, Number, File),
							 | 
						||
| 
								 | 
							
								      run( File ),
							 | 
						||
| 
								 | 
							
								      match( File ),
							 | 
						||
| 
								 | 
							
								      fail.
							 | 
						||
| 
								 | 
							
								main.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								run(File) :-
							 | 
						||
| 
								 | 
							
									open( Dir/in/File, read, Stream ),
							 | 
						||
| 
								 | 
							
									tmp_dir( Tmp ),
							 | 
						||
| 
								 | 
							
									open( Tmp/File, Write, Output ),
							 | 
						||
| 
								 | 
							
									parse( Stream, Output ).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								parse( Stream, Output ) :-
							 | 
						||
| 
								 | 
							
									catch( take(Stream, Term ), ERR, TERM = err__(ERR) ),
							 | 
						||
| 
								 | 
							
									show( Stream, Output, Term ).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								take( Stream, Term ) :-
							 | 
						||
| 
								 | 
							
									repeat,
							 | 
						||
| 
								 | 
							
									read_term( Stream, Term ),
							 | 
						||
| 
								 | 
							
									( Term == end_of_file -> ! ; true ).
							 | 
						||
| 
								 | 
							
								
							 |