:- style_check(-discontiguous).
:- [laden], % 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),
    Term =.. [F|Args],
    append(Args,[Atomlist,[]],NewArgs),
    NewTerm =.. [F|NewArgs],
    nl,write('Aufruf: '), portray_clause(NewTerm),
    call(NewTerm), write('Baum:   '), writeq(Baum),nl,
    sem(Baum,LamTerm),
    write('Lambda: '),
    numbervars(LamTerm,0,_N), % für lesbare Variable
    write_term(LamTerm,[numbervars(true)]),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),
    Term =.. [F|Args],
    append(Args,[Atomlist,[]],NewArgs),
    NewTerm =.. [F|NewArgs],
    nl,write('Aufruf: '), portray_clause(NewTerm),
    (call(NewTerm) ->
        (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')
    ).

