diff --git a/examples/messages/Messages.gf b/examples/messages/Messages.gf new file mode 100644 index 000000000..1a822b9d1 --- /dev/null +++ b/examples/messages/Messages.gf @@ -0,0 +1,45 @@ +abstract Messages = + Words - [IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale, YouPolFemale], + Greetings ** { + +flags startcat = Message ; + +cat + Message ; + Heading ; + Body ; + Ending ; + Statement ; + Recipient ; + Sender ; + Title ; + Role ; + +fun + Msg : Heading -> Body -> Ending -> Message ; + + HHello : Recipient -> Heading ; + HDear : Recipient -> Heading ; + + BOne : Statement -> Body ; + BMore : Statement -> Body -> Body ; + + ERegards : Sender -> Ending ; + + SSentence : Sentence -> Statement ; + SQuestion : Question -> Statement ; + SGreeting : Greeting -> Statement ; + + RName : Name -> Recipient ; + RTitle : Title -> Name -> Recipient ; + SName : Name -> Sender ; + + TMr : Title ; + TMs : Title ; + + RI : Role ; -- generic: Gender and Politeness from context + RYou : Role ; + + PRole : Role -> Person ; + +} \ No newline at end of file diff --git a/examples/messages/MessagesEng.gf b/examples/messages/MessagesEng.gf new file mode 100644 index 000000000..f45fca90f --- /dev/null +++ b/examples/messages/MessagesEng.gf @@ -0,0 +1,54 @@ +--# -path=.:../phrasebook:present + +concrete MessagesEng of Messages = + WordsEng - + [IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale, YouPolFemale], + GreetingsEng ** open + SyntaxEng, + ParadigmsEng, + (Phr = PhrasebookEng) + in { + +lincat + Message = Text ; + Heading = Text ; + Body = Text ; + Ending = Text ; + Statement = Text ; + Recipient = NP ; + Sender = NP ; + Title = CN ; + Role = Phr.NPPerson ; + +lin + Msg h b e = mkText h (mkText b e) ; + + HHello n = + mkText (strText "hello") (mkText (mkPhrase (mkUtt n)) (strText ",")) ; + HDear n = + mkText (strText "dear") (mkText (mkPhrase (mkUtt n)) (strText ",")) ; + + BOne p = p ; + BMore p b = mkText p b ; + + ERegards n = mkText (strText "regards") (mkPhrase (mkUtt n)) ; + + SSentence s = mkText s ; + SQuestion s = mkText s ; + SGreeting s = mkText s exclMarkPunct ; + + RName n = n ; + RTitle t n = mkNP (mkCN t n) ; + SName n = n ; + + TMr = mkCN (mkN "Mr") ; + TMs = mkCN (mkN "Ms") ; + + RI = Phr.IMale ; -- gender and politeness don't matter in English + RYou = Phr.YouFamMale ; + + PRole r = r ; + +oper + strText : Str -> Text = \s -> lin Text {s = s} ; +} \ No newline at end of file diff --git a/examples/messages/MessagesFre.gf b/examples/messages/MessagesFre.gf new file mode 100644 index 000000000..a94588b0f --- /dev/null +++ b/examples/messages/MessagesFre.gf @@ -0,0 +1,74 @@ +--# -path=.:../phrasebook:present + +concrete MessagesFre of Messages = + WordsFre - + [IMale, IFemale, YouFamMale, YouFamFemale, YouPolMale, YouPolFemale], + GreetingsFre ** + open + SyntaxFre, + ParadigmsFre, + Prelude, + (Phr = PhrasebookFre) + in { + +lincat + Message = Text ; + Heading = {s : Text ; g : Gender ; isPol : Bool} ; + Body = {s : Gender => Gender => Bool => Text} ; + Ending = {s : Text ; g : Gender} ; + Statement = {s : Gender => Gender => Bool => Text} ; + Recipient = NP ; + Sender = NP ; + Title = CN ; + Role = Phr.NPPerson ; + +lin + Msg h b e = mkText h.s (mkText (b.s ! h.g ! e.g ! h.isPol) e.s) ; + + HHello n = { + s = mkText (strText "bonjour") (mkText (mkPhrase (mkUtt n)) (strText ",")) ; + g = n.a.g ; ----Res + isPol = n.isPol ----Res + } ; + HDear r = { + s = mkText + (mkPhrase (mkUtt (mkCN (prefixA (mkA "cher")) (nameCN r)))) + (strText ",") ; + g = r.a.g ; ----Res + isPol = r.isPol ----Res + } ; + + BOne p = p ; + BMore s b = {s = \\i,y,p => mkText (s.s ! i ! y ! p) (b.s ! i ! y ! p)} ; + + ERegards n = { + s = mkText (strText "avec salutations") (mkPhrase (mkUtt n)) ; + g = n.a.g ----Res + } ; + + SSentence s = {s = \\i,y,p => mkText s} ; + SQuestion s = {s = \\i,y,p => mkText s} ; + SGreeting s = {s = \\i,y,p => mkText s exclMarkPunct} ; + + RName n = n ; + RTitle t n = cnNP (mkCN t n) ; + SName n = n ; + + TMr = mkCN (mkN "monsieur" "messieurs" masculine) ; + TMs = mkCN (mkN "madame" "mesdames" feminine) ; + + RI = Phr.IMale ; + RYou = Phr.YouFamMale ; + + PRole r = r ; + +oper + strText : Str -> Text = \s -> lin Text {s = s} ; + + +---- TODO in RG and its API + + nameCN : NP -> CN = \n -> mkCN (mkN "") n ; + cnNP : CN -> NP = \cn -> mkNP (mkPN (cn.s ! singular) cn.g) ; + +} \ No newline at end of file