Files
gf-core/examples/godis-tram/Common/GodisSystemSem.gf
2006-11-08 15:08:09 +00:00

135 lines
3.6 KiB
Plaintext

--# -path=.:prelude
concrete GodisSystemSem of GodisSystem = PredefCnc ** open Prolog in {
lincat
Move,
[Move],
S,
ShortAns,
Proposition,
Question,
YNQ, AltQ,
[Proposition],
VPProposition,
[VPProposition],
Action,
Reason = PStr;
lin
-- usr = ss "usr";
-- sys = ss "sys";
----------------------------------------------------------------------
-- questions
action_Q = pWhQ "action";
issue_Q = pWhQ "issue";
ynq q = q;
altq qs = pp1 "set" (pBrackets qs);
BaseProposition = pSeq;
ConsProposition = pSeq;
----------------------------------------------------------------------
-- propositions
not = pp1 "not";
-- done = pp1 "done";
fail = pp2 "fail";
-- und = pp2 "und";
----------------------------------------------------------------------
-- vp-propositions
action = pp1 "action";
issue = pp1 "issue";
vp_ynq p = p;
vp_altq qs = pp1 "set" (pBrackets qs);
BaseVPProposition = pSeq;
ConsVPProposition = pSeq;
----------------------------------------------------------------------
-- short answers
notS = pp1 "not";
----------------------------------------------------------------------
-- dialogue moves
answer_yes = pp1 "answer" (pp0 "yes");
answer_no = pp1 "answer" (pp0 "no");
greet = pp0 "greet";
quit = pp0 "quit";
ask = pp1 "ask";
askYNQ = pp1 "ask";
askAltQ = pp1 "ask";
answer = pp1 "answer";
answerVP = pp1 "answer";
shortAns = pp1 "answer";
request = pp1 "request";
confirm a = variants{ pp1 "confirm" a;
pp2 "report" a (pp0 "done") };
reportFailure a r = pp2 "report" a (pp1 "failed" r);
answerFailure q r = pp1 "answer" (pp2 "fail" q r);
----------------------------------------------------------------------
-- ICM
icm_acc_pos = icmFeedback0 "acc" "pos";
icm_con_neg = icmFeedback0 "con" "neg";
icm_per_neg = icmFeedback0 "per" "neg";
icm_per_int = icmFeedback0 "per" "int";
icm_sem_neg = icmFeedback0 "sem" "neg";
icm_sem_int = icmFeedback0 "sem" "int";
icm_und_neg = icmFeedback0 "und" "neg";
icm_reraise = icmSingle0 "reraise";
icm_loadplan = icmSingle0 "loadplan";
icm_accommodate = icmSingle0 "accomodate";
icm_per_pos = icmFeedback1 "per" "pos";
icm_und_int_prop p = icmFeedback1 "und" "int" (pOper "*" (pp0 "usr") p);
icm_und_pos_prop p = icmFeedback1 "und" "pos" (pOper "*" (pp0 "usr") p);
icm_acc_neg_prop = icmFeedback1 "acc" "neg";
icm_acc_neg_que q = icmFeedback1 "acc" "neg" (pp1 "issue" q);
icm_sem_pos_move = icmFeedback1 "sem" "pos";
icm_sem_pos_shortAns = icmFeedback1 "sem" "pos";
icm_und_pos_vp p = icmFeedback1 "und" "pos" (pOper "*" (pp0 "usr") p);
icm_und_int_vp p = icmFeedback1 "und" "int" (pOper "*" (pp0 "usr") p);
icm_reraise_act = icmSingle1 "reraise";
icm_und_int_altq q = icmFeedback1 "und" "int"(pOper "*" (pp0 "usr") q);
icm_reraise_whq = icmSingle1 "reraise";
icm_reraise_ynq = icmSingle1 "reraise";
icm_reraise_altq = icmSingle1 "reraise";
icm_accommodate_whq = icmSingle1 "accomodate";
icm_accommodate_ynq = icmSingle1 "accomodate";
icm_accommodate_altq = icmSingle1 "accomodate";
icm_reaccommodate_whq = icmSingle1 "reaccomodate";
icm_reaccommodate_ynq = icmSingle1 "reaccomodate";
icm_reaccommodate_altq = icmSingle1 "reaccomodate";
BaseMove m = m;
ConsMove m = pSeq m;
godis_utterance = pBrackets;
oper
icmSingle0 : Str -> PStr = \icm -> pStr ("icm" ++ ":" ++ icm);
icmSingle1 : Str -> PPStr = \icm -> pOper ":" (icmSingle0 icm);
icmFeedback0 : Str -> Str -> PStr = \lvl,pol -> icmSingle0 (lvl ++ "*" ++ pol);
icmFeedback1 : Str -> Str -> PPStr = \lvl,pol -> icmSingle1 (lvl ++ "*" ++ pol);
}