1
0
forked from GitHub/gf-core

added Ann-Charlotte's grammars

This commit is contained in:
aarne
2005-06-27 12:20:33 +00:00
parent 10d6757558
commit ec444e9e7e
122 changed files with 687204 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
-- A file with PreReq and PostReq etc...
resource GenResEng = {
param Form = Ques | Req | ReqNeg ;
oper choosePre : Form => Str
= table {
Ques => ["can i"];
Req => variants{ ["i want to"] ; ["i would like to"] };
ReqNeg => variants{ ["i do not want to"] ; ["i would not like to"] }
};
oper choosePost : Form => Str
= table {
Ques => "";
Req => "please";
ReqNeg => "please"
};
}

View File

@@ -0,0 +1,26 @@
-- A file with PreReq and PostReq etc...
resource GenResSwe = {
param Form = Ques | Req | ReqNeg;
oper choosePre : Form => Str
= table {
Ques => ["kan jag"];
Req => variants{ ["jag vill"] ; ["jag skulle vilja"] };
ReqNeg => variants{ ["jag vill inte"] ; ["jag skulle inte vilja"] }
};
oper choosePost : Form => Str
= table {
Ques => "";
Req => "tack";
ReqNeg => "tack"
};
}

View File

@@ -0,0 +1,133 @@
-- general grammar
--# -path=.:../
abstract sharedCore = {
cat
-- Nuance needs a S category, easiest fix.
S;
-- Simple Dialogue Moves
DMove;
-- Basic forms
Action Task;
SingleAction;
Proposition Task;
Task;
-- Dialogue moves (DMove) are: ask, answer, greet, quit, request, confirm, report
-- Greet
-- Simple greet move...
Greet ;
-- Quit
-- Simple quit move...
Quit;
-- Answer
-- Answers are moves that answer questions, posed or not.
Answer Task;
NegAnswer Task;
-- Ask
-- Ask moves are those moves that ask for plans.
-- "vad vill du göra?" "vad kan jag göra" "hjälp"(?)
-- Hur är det med ja/nej frågor?
Ask Task;
SingleAsk;
-- Request
-- Requests are those moves that have no arguments and
-- generate no specific informationfilled answers.
Request;
-- ICM
ICM;
Per_ICM;
Per_ICM_Followed;
Acc_ICM;
Acc_ICM_Followed;
fun
makeS : DMove -> S;
-- Greet
makeGreetMove : Greet -> DMove;
-- Quit
makeQuitMove : Quit -> DMove;
-- Answer
makeAnswer : (t : Task) -> Proposition t -> Answer t;
makeAnswerMove : (t : Task) -> Answer t -> DMove;
makeNegAnswer : (t : Task) -> Proposition t -> NegAnswer t;
makeNegAnswerMove : (t : Task) -> NegAnswer t -> DMove;
-- Ask
singleAsk : (t : Task) -> Ask t -> SingleAsk;
makeYesNoAsk : (t : Task) -> Action t -> SingleAsk;
makeAsk : SingleAsk -> DMove;
-- Request
makeRequest : SingleAction -> Request;
makeRequestMove : Request -> DMove;
makeNegRequestMove : Request -> DMove;
-- ICM
makeICMPer : Per_ICM -> ICM;
makeICMAcc : Acc_ICM -> ICM;
makeICMMove : ICM -> DMove;
-- LEXICON
shortAnswer : Task;
top_command : SingleAction;
help_command : SingleAction;
yes : Answer shortAnswer;
no : Answer shortAnswer;
greet_command : Greet;
bye_command : Quit;
-- ICMs
per_pos : Per_ICM_Followed;
per_neg : Per_ICM;
per_int : Per_ICM;
acc_pos : Acc_ICM;
acc_neg_alone : Acc_ICM;
acc_neg : Acc_ICM_Followed;
--acc_int : Acc_ICM;
}

View File

@@ -0,0 +1,55 @@
concrete sharedCoreEng of sharedCore = open GenResEng in {
--flags lexer=codelit ; unlexer=codelit ; startcat=DMoveList ;
flags conversion=finite;
--# -path=.:../
lin
makeS s = {s = s.s};
-- Linearization of Greet, Quit, Answer, Ask and Request are moved to
-- System and User respectively because of differing linearizations
-- ICM
makeICMPer perI = {s = perI.s};
makeICMAcc accI = {s = accI.s};
makeICMMove icm = {s = icm.s};
-- LEXICON
pattern
top_command = (variants {["top"] ; ["forget everything"] ; ["start over"]});
-- end_command = "quit";
help_command = variants {"get" ; ""} ++ "help" ;
yes = variants {"yes" ; "yup" ; "yeppers"};
no = variants {"no" ; "nope" };
greet_command = variants { "hello" ; "hi" ; "yo"};
bye_command = variants { ["goodbye"] ; "bye" ; "end" };
-- ICMs
-- Moved to User and System respectively because of differing linearisations
-- for user and system.
}

View File

@@ -0,0 +1,92 @@
--# -path=.:../
concrete sharedCorePro of sharedCore = {
flags lexer=code ; unlexer=concat ;
flags conversion=finite;
lin
-- Borde inte request, question, etc.. ligga i en
-- generell resursfil så att man kan komma åt dem.
-- Det är inte speciellt snyggt att skriva ut det
-- ibland här och ibland i den specifika filen..
-- Det känns som om det borde vara en "resurs"fråga.
-- Det ÄR en resursgrej... titta i video grammatiken:
-- prologResource.gf och generalProlog.gf
-- som Aarne fixade till från Karins pyssel.
-- Hakparanteserna borde också fixas till på samma sätt...
makeS s = {s = "[" ++ s.s ++ "]"};
-- Greet
makeGreetMove gre = {s = gre.s };
-- Quit
makeQuitMove qui = {s = qui.s };
-- Answer
makeAnswer _ ans = {s = "answer" ++ "(" ++ ans.s ++ ")"};
makeNegAnswer _ ans = {s = "answer" ++ "(" ++ "not" ++ "(" ++ ans.s ++ ")" ++ ")"};
makeAnswerMove _ sha = {s = sha.s };
makeNegAnswerMove _ sha = {s = sha.s};
-- Ask
singleAsk _ ask = {s = "X" ++ "^" ++ ask.s ++ "(" ++ "X" ++ ")"};
makeYesNoAsk _ action = {s = action.s};
makeAsk ask = {s = "ask" ++ "(" ++ ask.s ++ ")"};
-- Request
makeRequest req = {s = "request" ++ "(" ++ req.s ++ ")" };
makeRequestMove reqM = {s = reqM.s};
makeNegRequestMove reqM = {s = "not" ++ "(" ++ reqM.s ++ ")"};
-- ICM
makeICMPer perI = {s = perI.s};
makeICMAcc accI = {s = accI.s};
-- makeICMAccProp accI prop = {s = accI.s ++ ":" ++ prop.s};
makeICMMove icm = {s = "icm" ++ ":" ++ icm.s};
-- LEXICON
pattern
top_command = "top";
-- end_command = "quit";
help_command = "help";
yes = "yes";
no = "no";
greet_command = "greet";
bye_command = "quit";
-- ICMs
per_pos = ["per * pos"];
per_neg = ["per * neg"];
per_int = ["per * int"];
acc_pos = ["acc * pos"];
acc_neg = ["acc * neg"];
acc_neg_alone = ["acc * neg"];
--acc_int = "acc*int";
}

View File

@@ -0,0 +1,54 @@
concrete sharedCoreSwe of sharedCore = open GenResSwe in {
--flags lexer=codelit ; unlexer=codelit ;
flags conversion=finite;
--# -path=.:../
lin
makeS s = {s = s.s};
-- Linearizations of Greet, Quit, Answer, Ask and Request
-- are moved to User and System respectively because of punctuation.
-- ICM
makeICMPer perI = {s = perI.s};
makeICMAcc accI = {s = accI.s};
makeICMMove icm = {s = icm.s};
-- LEXICON
pattern
top_command = (variants {["glömma allt"] ; ["börja om"]});
-- end_command = "avsluta";
help_command = variants {"få" ; "ha"} ++ "hjälp" ;
yes = variants {"ja" ; "japp" ; "jajamen"};
no = variants {"nej" ; "nepp" };
greet_command = variants { "hej" ; "tjena" ; "hallå"};
bye_command = variants { ["hejdå"] ; "sluta" ; "avbryt" };
-- ICMs
-- Linearization of ICMs are moved to User and System
-- respectively because of differing linearizations.
}

View File

@@ -0,0 +1,158 @@
-- general grammar
--# -path=.:../Shared
abstract systemCore = sharedCore ** {
cat
DMoves;
-- internal forms
--Proposition;
Other_ICM;
Other_ICM_Followed;
Sem_ICM;
Sem_ICM_Followed;
Und_ICM;
Und_ICM_Followed;
-- Confirm
-- This is where the system confirms that the action has been taken.
Confirm;
-- Report
-- This is where the system reports on the actions taken
-- i.e. "The song Leviathan was added to the playlist"
-- The report consists of a Request.
Report;
Status;
-- Asks specific for the System
SystemAsk;
-- Issues
Issue;
PropIssue;
AskIssue;
ListIssue;
IssueList;
ListItem;
fun
-- BASICS
makeSofDMoves : DMoves -> S;
makeDMPair : DMove -> DMove -> DMoves;
makeDMList : DMove -> DMoves -> DMoves;
-- ICM
-- Plus en som tar en strang... oj oj for genereringen.
-- makeICMPerString : Per_ICM_Followed -> String -> ICM;
makeICMPerString : Per_ICM_Followed -> ICM;
makeICMSem : Sem_ICM -> ICM;
makeICMSemMoveReq : Sem_ICM_Followed -> Request -> ICM;
makeICMSemMoveAnswer : (t : Task) -> Sem_ICM_Followed -> Answer t -> ICM;
makeICMSemMoveAsk : (t : Task) -> Sem_ICM_Followed -> Ask t -> ICM;
makeICMUnd : Und_ICM -> ICM;
makeICMUndProp : (t : Task) -> Und_ICM_Followed -> Proposition t -> ICM;
makeICMOther : Other_ICM -> ICM;
makeICMOtherIssue : Other_ICM_Followed -> ListItem -> ICM;
makeICMOtherReq : (t : Task) -> Other_ICM_Followed -> Action t -> ICM;
makeICMAccIssue : Acc_ICM_Followed -> Issue -> ICM;
-- !!! Väldigt rekursivt!!!!
-- Confirm
--makeConfirm : SingleAction -> Confirm;
makeConfirmMove : Confirm -> DMove;
-- Report
-- Behöver en till kategori, en Status...
-- Hmm... undrar hur jag ska gora det här snyggt.
makeReport : SingleAction -> Status -> Report;
makeReportMove : Report -> DMove;
-- Ask
makeSystemAsk : SystemAsk -> DMove;
makeAskSet : IssueList -> SystemAsk;
makeInstantiatedAsk : (t : Task) -> Action t -> SystemAsk;
makeInstantiatedAskSingle : SingleAction -> SystemAsk;
-- Issues
makePropIssue : (t : Task) -> Proposition t -> PropIssue;
makeIssueProp : PropIssue -> Issue;
makeIssueAsk : AskIssue -> Issue;
makeIssueList : ListIssue -> Issue;
makePropIssue : (t : Task) -> Proposition t -> PropIssue;
makeAskIssue : (t : Task) -> Ask t -> AskIssue;
--makeListItemProp : PropIssue -> ListItem;
makeListItemAsk : AskIssue -> ListItem;
makeListItemAction : (t : Task) -> Action t -> ListItem;
makeListItemSingleAction : SingleAction -> ListItem;
makeListIssue : ListItem -> ListItem -> ListIssue;
makeListIssue2 : ListItem -> ListIssue ->ListIssue;
makeActualListIssue : ListIssue -> IssueList;
-- Lexicon
makeBasicAsk : SystemAsk;
sem_pos : Sem_ICM;
sem_pos_followed : Sem_ICM_Followed;
sem_neg : Sem_ICM;
--sem_int : Sem_ICM;
und_pos : Und_ICM;
und_pos_followed : Und_ICM_Followed;
und_neg : Und_ICM;
und_int : Und_ICM_Followed;
reraise : Other_ICM;
reraise_followed : Other_ICM_Followed;
loadplan : Other_ICM;
accomodate : Other_ICM_Followed;
reaccomodate : Other_ICM_Followed;
a_String : String;
status_done : Status;
status_initiated : Status;
status_pending : Status;
status_failed : Status;
}

View File

@@ -0,0 +1,146 @@
concrete systemCoreEng of systemCore = sharedCoreEng ** {
--flags lexer=text ; unlexer=text ; startcat=DMoveList ;
--# -path=.:../:../Shared
flags conversion=finite;
lin
-- Greet
makeGreetMove gre = {s = gre.s ++ "!"};
-- Quit
makeQuitMove qui = {s = qui.s ++ "!"};
-- Answer
makeAnswer _ ans = {s = ans.s};
makeNegAnswer _ ans = {s = "not" ++ ans.s};
makeAnswerMove _ sha = {s = sha.s ++ "."};
makeNegAnswerMove _ sha = {s = sha.s ++ "."};
-- Ask
singleAsk _ ask = {s = ask.s};
makeYesNoAsk _ action = {s = action.s};
makeAsk ask = {s = ask.s ++ "."};
-- Request
-- makeRequestMove moved to System and User respectively
-- because of differing linearizations
makeRequest req = {s = req.s ++ "."};
makeRequestMove req = {s = req.s };
makeNegRequestMove req = {s = req.s};
-- BASICS
makeSofDMoves dms = {s = dms.s};
makeDMPair dm1 dm2 = {s = dm1.s ++ dm2.s};
makeDMList dm dms = {s = dm.s ++ dms.s};
-- Confirm
--makeConfirm req = {s = ["managed to"] ++ req.s ++ "."};
makeConfirmMove conM = {s = conM.s ++ "."};
-- Report
makeReport req status = {s = status.s ++ req.s ++ "." };
makeReportMove repM = {s = repM.s};
-- ICM
-- makeICMPerString perI string = {s = perI.s ++ string.s ++ "."};
makeICMPerString perI = {s = perI.s};
makeICMSem semI = {s = semI.s};
makeICMSemMoveReq semI req = {s = semI.s ++ req.s ++ "."};
makeICMSemMoveAnswer _ semI ans = {s = semI.s ++ ans.s ++ "."};
makeICMSemMoveAsk _ semI ask = {s = semI.s ++ ask.s ++ "."};
makeICMUnd undI = {s = undI.s};
makeICMUndProp _ undI prop = {s = prop.s ++ undI.s };
makeICMAccIssue accI issue = {s = accI.s ++ [", i cannot answer questions about"] ++ issue.s ++ "."};
makeICMOther otherI = {s = otherI.s };
makeICMOtherIssue otherI issue = {s = otherI.s ++ issue.s ++ "."};
makeICMOtherReq _ other req = {s = other.s ++ req.s ++ "."};
-- Ask
makeSystemAsk sysA = {s = sysA.s ++ "?"};
makeAskSet set = {s = ["do you want to"] ++ set.s};
makeInstantiatedAsk _ insA = {s = ["do you want to"] ++ insA.s };
makeInstantiatedAskSingle insA = {s = ["do you want to"] ++ insA.s};
-- Isues
makePropIssue _ prop = {s = prop.s};
makeIssueProp pi = {s = pi.s};
makeIssueAsk ai = {s = ai.s};
makeIssueList li = {s = li.s};
--makePropIssue _ prop = {s = prop.s};
makeAskIssue _ ask = {s = ask.s};
-- makeListItemProp propI = {s = propI.s};
makeListItemAsk askI = {s = "ask" ++ "about" ++ askI.s};
makeListItemAction _ action = {s = action.s};
makeListItemSingleAction action = {s = action.s};
makeListIssue prop1 prop2 = {s = prop1.s ++ "or" ++ prop2.s};
makeListIssue2 prop list = {s = prop.s ++ "," ++ list.s};
makeActualListIssue list = {s = list.s};
pattern
makeBasicAsk = ["what can i do for you"];
sem_pos = "okay";
sem_pos_followed = [""];
sem_neg = ["i am sorry i do not understand ."];
-- sem_int = ["what do you mean with"];
und_pos = ["okay ."];
und_pos_followed = ["."];
und_neg = ["i do not understand what you mean ."];
und_int = [", is this correct ?"]; -- följer yttrandet!!!
per_pos = ["i thought you said"]; -- följs av en sträng
reraise = ["so ,"];
reraise_followed = ["so ,"];
loadplan = ["lets see ."];
accomodate = ["i assume you mean"];
reaccomodate = ["returning to "];
-- ICMs
-- Moved from General because of differing linearisations user and system.
per_neg = variants {["pardon i did not hear what you said ."] ; ["pardon ?"]; ["sorry ?"]};
per_int = variants { ["pardon ?"] ; ["what did you say ?"] };
acc_pos = "okay";
acc_neg = "sorry";
acc_neg_alone = "sorry";
status_done = ["managed to"];
status_initiated = ["started to"];
status_pending = ["waiting to"];
status_failed = ["failed to"];
}

View File

@@ -0,0 +1,128 @@
concrete systemCorePro of systemCore = sharedCorePro ** {
flags lexer=codelit ; unlexer=concat ;
flags conversion=finite;
lincat
-- Confirm
-- This is where the system confirms that the action has been taken.
Confirm = {s : Str};
-- Report
-- This is where the system reports on the actions taken
-- i.e. "The song Leviathan was added to the playlist"
-- The report consists of a Request.
Report = {s : Str};
lin
-- BASICS
makeSofDMoves dms = {s = "[" ++ dms.s ++ "]"};
makeDMPair dm1 dm2 = {s = dm1.s ++ "," ++ dm2.s};
makeDMList dm dms = {s = dm.s ++ "," ++ dms.s};
-- Confirm
--makeConfirm req = { s = "confirm" ++ "(" ++ req.s ++ ")"};
makeConfirmMove conM = {s = "confirm" ++ "(" ++ conM.s ++ ")"};
-- Report
makeReport req status = { s = "report" ++ "(" ++ req.s ++ "," ++ status.s ++ ")"};
makeReportMove repM = {s = repM.s};
-- Ask
makeSystemAsk sysA = {s = "ask" ++ "(" ++ sysA.s ++ ")"};
makeAskSet set = {s = set.s};
makeInstantiatedAsk _ insA = {s = "action" ++ "(" ++ insA.s ++ ")"};
makeInstantiatedAskSingle insA = {s = "action" ++ "(" ++ insA.s ++ ")"};
-- ICM
-- Plus en som tar en strang... oj oj for genereringen.
-- makeICMPerString perI string = {s = perI.s ++ string.s};
makeICMPerString perI = {s = perI.s };
makeICMSem semI = {s = semI.s};
makeICMSemMoveReq semI req = {s = semI.s ++ ":" ++ req.s};
makeICMSemMoveAnswer _ semI ans = {s = semI.s ++ ":" ++ ans.s};
makeICMSemMoveAsk _ semI ask = {s = semI.s ++ ":" ++ ask.s};
makeICMUnd undI = {s = undI.s};
makeICMUndProp _ undI prop = {s = undI.s ++ ":" ++ "usr" ++ "*" ++ prop.s};
makeICMOther otherI = {s = otherI.s};
makeICMOtherIssue otherI issue = {s = otherI.s ++ ":" ++ issue.s};
makeICMOtherReq _ other req = {s = other.s ++ ":" ++ req.s};
makeICMAccIssue otherI issue = {s = otherI.s ++ ":" ++ issue.s};
-- !!! Väldigt rekursivt!!!!
-- Isues
makePropIssue _ prop = {s = prop.s};
makeIssueProp pi = {s = pi.s};
makeIssueAsk ai = {s = ai.s};
makeIssueList li = {s = li.s};
makePropIssue _ prop = {s = prop.s};
makeAskIssue _ ask = {s = "X" ++ "^" ++ ask.s ++ "(" ++ "X" ++ ")"};
--makeListItemProp propI = {s = propI.s};
makeListItemAsk askI = {s = "issue" ++ "(" ++ askI.s ++ ")"};
makeListItemAction _ action = {s = variants {("action" ++ "(" ++ action.s ++ ")") ;
action.s }};
makeListItemSingleAction action = {s = variants { ("action" ++ "(" ++ action.s ++ ")") ;
action.s }};
makeListIssue prop1 prop2 = {s = prop1.s ++ "," ++ prop2.s};
makeListIssue2 prop list = {s = prop.s ++ "," ++ list.s};
makeActualListIssue list = {s = "set" ++ "(" ++ "[" ++ list.s ++ "]" ++ ")"};
pattern
-- LEXICON
makeBasicAsk = ["x ^ action ( x )"]; -- OBS OBS!!!
sem_pos = ["sem * pos"];
sem_pos_followed = ["sem * pos"];
sem_neg = ["sem * neg"];
--sem_int = ["sem * int"];
und_pos = ["und * pos"];
und_pos_followed = ["und * pos"];
und_neg = ["und * neg"];
und_int = ["und * int"];
reraise = "reraise";
reraise_followed = "reraise";
loadplan = "loadplan";
accomodate = "accomodate";
reaccomodate = "reaccomodate";
status_done = "done";
status_initiated = "initiated";
status_pending = "pending";
status_failed = "failed";
}

View File

@@ -0,0 +1,141 @@
concrete systemCoreSwe of systemCore = sharedCoreSwe ** {
--flags lexer=codelit ; unlexer=codelit ; startcat=DMoveList ;
--# -path=.:../:../Shared
flags conversion=finite;
lin
-- Greet
makeGreetMove gre = {s = gre.s ++ "!"};
-- Quit
makeQuitMove qui = {s = qui.s ++ "!"};
-- Answer
makeAnswer _ ans = {s = ans.s};
makeNegAnswer _ ans = {s = "inte" ++ ans.s};
makeAnswerMove _ sha = {s = sha.s ++ "."};
makeNegAnswerMove _ sha = {s = sha.s ++ "."};
-- Ask
singleAsk _ ask = {s = ask.s};
makeYesNoAsk _ action = {s = action.s};
makeAsk ask = {s = ask.s ++ "."};
-- Request
-- makeRequestMove moved to System and User respectively
-- because of differing linearizations
makeRequest req = {s = req.s ++ "."};
makeRequestMove req = {s = req.s };
makeNegRequestMove req = {s = req.s};
-- BASICS
makeSofDMoves dms = {s = dms.s};
makeDMPair dm1 dm2 = {s = dm1.s ++ dm2.s};
makeDMList dm dms = {s = dm.s ++ dms.s};
-- Confirm
--makeConfirm req = {s = ["lyckades med att"] ++ req.s ++ "."};
makeConfirmMove conM = {s = conM.s};
-- Report
makeReport req status= {s = status.s ++ req.s ++ "."};
makeReportMove repM = {s = repM.s};
-- ICM
--makeICMPerString perI string = {s = perI.s ++ string.s ++ "."};
makeICMPerString perI = {s = perI.s};
makeICMSem semI = {s = semI.s};
makeICMSemMoveReq semI req = {s = semI.s ++ req.s ++ "."};
makeICMSemMoveAnswer _ semI ans = {s = semI.s ++ "med" ++ ans.s ++ "."};
makeICMSemMoveAsk _ semI ask = {s = semI.s ++ ask.s ++ "."};
makeICMUnd undI = {s = undI.s};
makeICMUndProp _ undI prop = {s = prop.s ++ "," ++ undI.s};
makeICMAccIssue accI issue = {s = accI.s ++ issue.s};
makeICMOther otherI = {s = otherI.s ++ "."};
makeICMOtherIssue otherI issue = {s = otherI.s ++ issue.s ++ "."};
-- Ask
makeSystemAsk sysA = {s = sysA.s ++ "?"};
makeAskSet set = {s = ["vill du"] ++ set.s};
makeInstantiatedAsk _ insA = {s = ["vill du"] ++ insA.s};
makeInstantiatedAskSingle insA = {s = ["vill du"] ++ insA.s};
-- Isues
makePropIssue _ prop = {s = prop.s};
makeIssueProp pi = {s = pi.s};
makeIssueAsk ai = {s = ai.s};
makeIssueList li = {s = li.s};
--makePropIssue prop = {s = prop.s};
makeAskIssue _ ask = {s = ask.s};
-- makeListItemProp propI = {s = propI.s};
makeListItemAsk askI = {s = "fråga" ++ "om" ++ askI.s};
makeListItemAction _ action = {s = action.s};
makeListItemSingleAction action = {s = action.s};
makeListIssue prop1 prop2 = {s = prop1.s ++ "eller" ++ prop2.s};
pattern
makeBasicAsk = ["vad kan jag göra för dig"];
sem_pos = "okej";
sem_neg = ["förlåt jag förstår inte vad du menar."];
-- sem_int = ["vad menar du med"];
und_pos = "okej.";
und_neg = ["jag förstår inte vad du menar."];
und_int = ["är det korrekt?"]; -- följer yttrandet!!!
per_pos = ["jag tyckte du sa"]; -- följs av en sträng
reraise = ["så ,"];
reraise_followed = ["så ,"];
loadplan = ["låt oss se ."];
accomodate = ["jag antar att du menar"];
reaccomodate = ["gå tillbaks till"];
-- ICMs
-- Moved from General because of differing linearisations user and system.
per_neg = variants {"ursäkta"; "förlåt" ; ["ursäkta jag hörde inte vad du sa"]};
per_int = variants { "ursäkta" ; ["vad sa du"] };
acc_pos = "okej";
acc_neg = ["ledsen jag kan inte svara på frågor om"];
acc_neg_alone = "ledsen";
status_done = ["lyckades med att"];
status_initiated = ["började med att"];
status_pending = ["avvaktar med att"];
status_failed = ["misslyckades med att"];
}

View File

@@ -0,0 +1,27 @@
-- general grammar
abstract userCore = sharedCore ** {
cat
-- A Dialogue Move that consists of a Request and arguments.
CompoundedRequest;
CompoundedAsk;
AnswerList Task;
fun
makeAnswerListS : (t : Task) -> AnswerList t -> DMove;
makeCompoundedRequest : CompoundedRequest -> DMove;
makeNegCompoundedRequest : CompoundedRequest -> DMove;
makeCompoundedAsk : CompoundedAsk -> DMove;
requestCompounded : (t : Task) -> Action t -> Answer t -> CompoundedRequest ;
requestCompoundedMulti : (t : Task) -> Action t -> AnswerList t -> CompoundedRequest;
makeAskMove : (t : Task) -> Ask t -> Answer t -> CompoundedAsk;
}

View File

@@ -0,0 +1,93 @@
concrete userCoreEng of userCore = sharedCoreEng ** open GenResEng in {
flags conversion=finite;
lin
-- Greet
makeGreetMove gre = {s = gre.s};
-- Quit
makeQuitMove qui = {s = qui.s};
-- Answer
makeAnswer _ ans = {s = ans.s};
makeNegAnswer _ ans = {s = "not" ++ ans.s};
makeAnswerMove _ sha = {s = sha.s};
makeNegAnswerMove _ sha = {s = sha.s};
-- Ask
singleAsk _ ask = {s = ask.s};
makeYesNoAsk _ action = {s = action.s};
makeAsk ask = {s = ask.s};
-- Requests
makeAnswerListS _ alist = {s = alist.s};
requestCompounded _ req obj = {s = req.s ++ obj.s};
requestCompoundedMulti _ req obj = {s = req.s ++ obj.s };
makeRequest req = {s = req.s};
makeCompoundedRequest crq = {s = variants {
( (choosePre ! Req) ++ crq.s ++ (choosePost ! Req) );
( (choosePre ! Req) ++ crq.s );
( crq.s ++ (choosePost ! Req) );
( crq.s )
}
};
makeNegCompoundedRequest crq = {s = variants {
( (choosePre ! ReqNeg) ++ crq.s ++ (choosePost ! Req) );
( (choosePre ! ReqNeg) ++ crq.s );
( "not" ++ crq.s ++ (choosePost ! Req) );
( "not" ++ crq.s )
}
};
makeRequestMove req = {s = variants {
( req.s );
( (choosePre ! Req) ++ req.s ++ (choosePost ! Req) );
( (choosePre ! Req) ++ req.s );
( req.s ++ (choosePost ! Req) )
}
};
makeNegRequestMove req = {s = variants {
( "not" ++ req.s );
( (choosePre ! ReqNeg) ++ req.s ++ (choosePost ! Req) );
( (choosePre ! ReqNeg) ++ req.s );
( "not" ++ req.s ++ (choosePost ! Req) )
}
};
-- Asks
makeCompoundedAsk ask = {s = ask.s};
makeAskMove _ ques answer = {s = ques.s ++ answer.s};
pattern
-- ICMs
-- Moved from General because of differing linearisations for user and system.
per_neg = variants {"what" ; "pardon"; ["pardon i did not hear what you said"]};
per_int = variants { "pardon" ; ["what did you say"] };
acc_pos = variants { "okay" ; "ok" ; "sure" ; "yup" ; "right" };
acc_neg = ["i do not know"];
acc_neg_alone = ["i do not know"];
}

View File

@@ -0,0 +1,22 @@
concrete userCorePro of userCore = sharedCorePro ** {
flags lexer=code ; unlexer=concat ;
flags conversion=finite;
lin
makeAnswerListS _ alist = {s = alist.s};
makeCompoundedRequest crq = {s = crq.s};
makeNegCompoundedRequest crq = { s = "~" ++ crq.s};
makeCompoundedAsk ask = {s = ask.s};
requestCompounded _ req obj = {s = "request(" ++ req.s ++ ")," ++ obj.s };
requestCompoundedMulti _ req obj = {s = "request(" ++ req.s ++ ")," ++ obj.s };
makeAskMove _ ques answer = {s = "ask" ++ "(" ++ "X" ++ "^" ++ ques.s ++
"(" ++ "X" ++ ")" ++ ")," ++ answer.s};
}

View File

@@ -0,0 +1,98 @@
concrete userCoreSwe of userCore = sharedCoreSwe ** open GenResSwe in {
flags conversion=finite;
lin
-- Greet
makeGreetMove gre = {s = gre.s};
-- Quit
makeQuitMove qui = {s = qui.s};
-- Answer
makeAnswer _ ans = {s = ans.s};
makeNegAnswer _ ans = {s = "inte" ++ ans.s};
makeAnswerMove _ sha = {s = sha.s};
makeNegAnswerMove _ sha = {s = sha.s};
-- Ask
singleAsk _ ask = {s = ask.s};
makeYesNoAsk _ action = {s = action.s};
makeAsk ask = {s = ask.s };
-- Request
-- makeRequestMove moved to System and User respectively
-- because of differing linearizations
makeRequest req = {s = req.s};
-- Requests
makeAnswerListS _ alist = {s = alist.s};
requestCompounded _ req obj = {s = req.s ++ obj.s};
requestCompoundedMulti _ req obj = {s = req.s ++ obj.s };
makeRequestMove req = {s = variants {
( req.s );
( (choosePre ! Req) ++ req.s ++ (choosePost ! Req) );
( (choosePre ! Req) ++ req.s );
( req.s ++ (choosePost ! Req) )
}
};
makeNegCompoundedRequest crq = {s = variants {
( (choosePre ! ReqNeg) ++ crq.s ++ (choosePost ! Req) );
( (choosePre ! ReqNeg) ++ crq.s );
( "inte" ++ crq.s ++ (choosePost ! Req) );
( "inte" ++ crq.s )
}
};
makeCompoundedRequest crq = {s = variants {
( (choosePre ! Req) ++ crq.s ++ (choosePost ! Req) );
( (choosePre ! Req) ++ crq.s );
( crq.s ++ (choosePost ! Req) );
( crq.s )
}
};
makeNegRequestMove req = {s = variants {
( "inte" ++ req.s );
( (choosePre ! ReqNeg) ++ req.s ++ (choosePost ! Req) );
( (choosePre ! ReqNeg) ++ req.s );
( "inte" ++ req.s ++ (choosePost ! Req) )
}
};
-- Asks
makeCompoundedAsk ask = {s = ask.s};
makeAskMove _ ques answer = {s = ques.s ++ answer.s};
pattern
-- ICMs
-- Moved from General because of differing linearisations for user and system.
per_neg = variants {"va" ; "ursäkta"; "förlåt" ; ["ursäkta jag hörde inte vad du sa"]};
per_int = variants { "ursäkta" ; ["vad sa du"] };
acc_pos = variants { "okej" ; "ok" ; "visst" ; "japp" ; "jaha" };
acc_neg = ["vet inte"];
}