summaryrefslogtreecommitdiff
path: root/examples/messages/MessagesFre.gf
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2010-06-21 16:50:40 +0000
committeraarne <aarne@chalmers.se>2010-06-21 16:50:40 +0000
commit3714a7e3b402d02e3cf3ebdc94b8171cbceb5a33 (patch)
treeebefacc8c9907e8fc8d884220632e65e9471be8f /examples/messages/MessagesFre.gf
parente94a1c74086ef9c75a977e45c28bd4466d64cf1b (diff)
grammar for messages started
Diffstat (limited to 'examples/messages/MessagesFre.gf')
-rw-r--r--examples/messages/MessagesFre.gf74
1 files changed, 74 insertions, 0 deletions
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