mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-21 00:52:51 -06:00
godis tram grammars, augmented with Fin
This commit is contained in:
134
examples/godis-tram/Common/GodisLangEng.gf
Normal file
134
examples/godis-tram/Common/GodisLangEng.gf
Normal file
@@ -0,0 +1,134 @@
|
||||
--# -path=.:prelude:resource-1.0/abstract:resource-1.0/common:resource-1.0/english
|
||||
|
||||
instance GodisLangEng of GodisLang =
|
||||
open Prelude, PredefCnc, GrammarEng, ParadigmsEng, (ResEng=ResEng), ParamX, ConstructX,
|
||||
(Lex=LangEng), (Irreg=IrregEng) in {
|
||||
|
||||
oper
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- focus
|
||||
|
||||
embed_NP a b x = {s = \\c => a ++ (x.s ! c) ++ b; a = x.a; lock_NP = <>};
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- user utterances
|
||||
|
||||
userGreet = ss ["hello"];
|
||||
userQuit = ss (variants{ ["goodbye"]; ["quit"] });
|
||||
userNo = ss ["no"];
|
||||
userYes = ss ["yes"];
|
||||
userOkay = variants { ss ["okay"]; ss ["ok"] };
|
||||
|
||||
userCoordinate x y = ss (x.s ++ "and" ++ optStr "then" ++ y.s);
|
||||
|
||||
thank_you_Str = variants {["thank you"]; "great"; ["thanks"]};
|
||||
i_want_to_Str = variants{"i" ++ variants{"want"; ["would like"]} ++ "to";
|
||||
["can you"]};
|
||||
please_Str = "please";
|
||||
this_that_Str = variants{"this"; "that"};
|
||||
|
||||
not_user_prop p = ss ( not_Predet.s ++ p.s );
|
||||
not_user_short a = ss ( not_Predet.s ++ a.s );
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- system utterances
|
||||
|
||||
hello = mkUtt ["The mp3 player is ready to use"];
|
||||
goodbye = mkUtt ["Goodbye"];
|
||||
yes = mkUtt ["Yes"];
|
||||
no = mkUtt ["No"];
|
||||
|
||||
is_that_correct_Post = mkUtt [", is that correct"];
|
||||
returning_to_Pre = mkUtt ["Returning to"];
|
||||
returning_to_act_Pre = mkUtt ["Returning to"];
|
||||
returning_to_issue_Pre = mkUtt ["Returning to the issue of"];
|
||||
what_did_you_say = mkUtt ["What did you say"];
|
||||
what_do_you_mean = mkUtt ["What do you mean"];
|
||||
i_dont_understand = mkUtt ["Sorry, I don't quite understand"];
|
||||
cant_answer_que_Pre = mkUtt ["Sorry, I can't answer questions about"];
|
||||
not_valid_Post = mkUtt ["is not a valid option"];
|
||||
|
||||
icm_acc_pos = variants { mkUtt ["Okay"]; mkUtt thank_you_Str };
|
||||
icm_con_neg = mkUtt ["Hello?"];
|
||||
icm_reraise = mkUtt ["So, "];
|
||||
icm_loadplan = mkUtt ["Let's see"];
|
||||
icm_accommodate = mkUtt ["Alright "];
|
||||
|
||||
icm_per_pos x = mkUtt (["I thought you said"] ++ x.s);
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- noun phrases
|
||||
|
||||
sing_NP s = ResEng.regNP s Sg ** {lock_NP = <>};
|
||||
plur_NP s = ResEng.regNP s Pl ** {lock_NP = <>};
|
||||
|
||||
NPgen_NP = NP_of_NP;
|
||||
|
||||
NP_Cl np = {s = \\t,a,b,o => np.s ! ResEng.Nom; lock_Cl = <>};
|
||||
|
||||
prefix_N n = compoundN (UttNP (DetCN (DetSg MassDet NoOrd) (UseN n))).s;
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- verb phrases, actions
|
||||
|
||||
VPing vp = case vp.clform of {HasDone => vp; IsDoing => ProgrVP vp};
|
||||
vp2Utt vp = mkUtt (ResEng.infVP True vp (ResEng.agrP3 Sg));
|
||||
-- vp2Utt vp = mkUtt (vp.s2 ! (ResEng.agrP3 Sg));i_want_to_Str ++
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- general syntactical operations
|
||||
|
||||
disjunct_QCl q q' =
|
||||
{s = \\t,a,p,x => q.s!t!a!p!x ++ "or" ++ q'.s!t!a!p!x;
|
||||
lock_QCl = <>};
|
||||
|
||||
negate_Cl c =
|
||||
{s = \\t,a,p,o => c.s!t!a!(case p of {ResEng.CNeg _ => ResEng.CPos; ResEng.CPos => ResEng.CNeg Prelude.True})!o;
|
||||
lock_Cl = <>};
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- verbs
|
||||
|
||||
see_V = Irreg.see_V;
|
||||
|
||||
do_V2 = Lex.do_V2;
|
||||
have_V2 = Lex.have_V2;
|
||||
understand_V2 = Lex.understand_V2;
|
||||
|
||||
know_VQ = mkVQ Irreg.know_V;
|
||||
wonder_VQ = Lex.wonder_VQ;
|
||||
|
||||
say_VS = Lex.say_VS;
|
||||
|
||||
fail_VV = mkVV (regV "fail");
|
||||
like_VV = mkVV (regV "like");
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- nouns, proper nouns, common nouns and noun phrases
|
||||
|
||||
information_N = regN "information";
|
||||
|
||||
you_NP = UsePron Lex.youSg_Pron;
|
||||
|
||||
----------------------------------------------------------------------
|
||||
-- closed word categories
|
||||
|
||||
of_på_Prep = mkPrep "of";
|
||||
for_Prep = mkPrep "for";
|
||||
|
||||
not_Predet = ss "not" ** {lock_Predet = <>};
|
||||
|
||||
no_Quant = {s = \\_ => "no"; lock_Quant = <>};
|
||||
all_Quant = {s = "all"; lock_QuantPl = <>};
|
||||
|
||||
|
||||
------------------------------------------------------------------
|
||||
|
||||
i_dont_want_to = variants { ["i do not want to"];
|
||||
["i don't want to"] };
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user