:- style_check(-discontiguous).
:- [grammatik], 
   ['Semantik/datenbank.pl',
    'Semantik/auswertung.pl',
    'Semantik/lambdaTerme.pl',
    'Semantik/sem.pl'].

parses :-
    write('Beende die Eingabe mit <Punkt><Return>'),
    nl,read_sentence(user,Sentence,[]),
    tokenize(Sentence,Atomlist),
    startsymbol(S),
    addTree:translate1(S,Term,Baum),
    addDifflists:translate(Term,ExpTerm,Atomlist,[]),
    nl,write('Aufruf: '), portray_clause(ExpTerm),
    call(ExpTerm), write('Baum:   '),
    nl,writeTrLam(Baum,4),nl, 
    fail.
parses.

frage :-
    write('Beende die Frage mit <Punkt><Return>'),
    nl,read_sentence(user,Sentence,[]),
    tokenize(Sentence,Atomlist),
    Startsymbol = s([qu],[_Temp,ind,Vst]), 
    addTree:translate1(Startsymbol,Term,Baum),
    addDifflists:translate(Term,ExpTerm,Atomlist,[]),
    nl,write('Aufruf: '), portray_clause(ExpTerm),
    (call(ExpTerm) ->
        (sem(Baum,LamTerm) -> 
            (Vst = ve -> beantworte(LamTerm,Wert)
            ; antworten(LamTerm,Wert)),
            nl,write('Antwort: '),write(Wert)
        ; write('\nDie Frage kann leider noch nicht \
               in eine Formel umgewandelt werden.'),
            nl,nl,write('Baum:   '), writeq(Baum)
        )
    ; 
        nl, write('\nDie Eingabe wurde \
                 syntaktisch nicht erkannt.\n')
    ).

