/*******************************************************/ /* GramKit: Load Example Grammar (DCG) */ /* -------------------------- */ /* Syntax: DCG (Definite Clause Grammar) */ /* Semantics: QLF (Quasi-Logical Form) */ /* */ /* Graham Wilcock (graham@ccl.umist.ac.uk) 97/08 */ /*******************************************************/ :- compile('DCG-Grammar1'). :- compile('parse-gen1'). %%%:- compile('input-string'). :- compile('tree-print'). parse :- repeat, input_string(String), (String == end_of_file ; parse(String), fail). parse(String) :- nl,write(String),nl, parse(String,Tree,Sem), nl,print_tree(Tree),nl, nl,numbervars(Sem,0,_),write(Sem),nl,fail. gen(Semantics) :- nl,write(Semantics),nl, generate(Semantics,Tree,String), nl,print_tree(Tree),nl, nl,write(String),nl,fail. echo :- repeat, input_string(String), (String == end_of_file ; echo(String), fail). echo(String) :- parse(String,Tree,Sem), nl,print_tree(Tree),nl, nl,numbervars(Sem,0,_),write(Sem),nl, generate(Sem,GenTree,GenString), nl,print_tree(GenTree),nl, nl,write(GenString),nl,fail. test_parse :- String = ['Kim',gave,a,duck,to,'Sandy'], nl,write(String),nl, parse(String,Tree,Sem), nl,print_tree(Tree),nl, nl,numbervars(Sem,0,_),write(Sem),nl,fail. test_gen :- Sem = [indef(d),name(k,'Kim'),name(s,'Sandy'),duck(d),give(g,k,s,d)], nl,write(Sem),nl, generate(Sem,Tree,String), nl,print_tree(Tree),nl, nl,write(String),nl,fail. test_echo :- String = ['Kim',gave,a,duck,to,'Sandy'], echo(String).