*** empty log message ***
This commit is contained in:
1 parent
8be82a3936
commit
8aa05c9736
4 files changed
+490
-373
No files matched your search
+287
-287
@@ -1,287 +1,287 @@
|
|||||||
concrete Russian of Letter = open ResRusU in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;flags coding = utf8 ;lincat Author = {s : (ResRusU.Num => (ResRusU.Gen => Str)) ;n : ResRusU.DepNum ;g : ResRusU.DepGen }= {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }} ;n = <ResRusU.depnum>;g = <ResRusU.depgen>} ;"Author" ;
|
concrete Russian of Letter = open ResRusU in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;flags coding = utf8 ;lincat Author = {s : (ResRusU.Num => (ResRusU.Gen => Str)) ;n : ResRusU.DepNum ;g : ResRusU.DepGen }= {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }} ;n = <ResRusU.depnum>;g = <ResRusU.depgen>} ;"Author" ;
|
||||||
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "вы" ++ "были" ++ ("назначены" ++ Position @ 0.s ! <ResRusU.pl>! <ResRusU.fem>) ;(ResRusU.masc)=> "вы" ++ "были" ++ ("назначены" ++ Position @ 0.s ! <ResRusU.pl>! <ResRusU.masc>) } ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)=> "ты" ++ "был" ++ ("назначен" ++ Position @ 0.s ! <ResRusU.sg>! <ResRusU.masc>) ;(ResRusU.fem)=> "ты" ++ "была" ++ ("назначена" ++ Position @ 0.s ! <ResRusU.sg>! <ResRusU.fem>) }}}}} ;"(ты был)назначен Position_0" ;
|
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "вы" ++ "были" ++ ("назначены" ++ Position @ 0.s ! <ResRusU.pl>! <ResRusU.fem>) ;(ResRusU.masc)=> "вы" ++ "были" ++ ("назначены" ++ Position @ 0.s ! <ResRusU.pl>! <ResRusU.masc>) } ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)=> "ты" ++ "был" ++ ("назначен" ++ Position @ 0.s ! <ResRusU.sg>! <ResRusU.masc>) ;(ResRusU.fem)=> "ты" ++ "была" ++ ("назначена" ++ Position @ 0.s ! <ResRusU.sg>! <ResRusU.fem>) }}}}} ;"(ты был)назначен Position_0" ;
|
||||||
lin ColleagueHe : Letter.Recipient = \ -> {s = "коллега" ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"коллега" ;
|
lin ColleagueHe : Letter.Recipient = \ -> {s = "коллега" ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"коллега" ;
|
||||||
lin ColleagueShe : Letter.Recipient = \ -> {s = "коллега" ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"коллега" ;
|
lin ColleagueShe : Letter.Recipient = \ -> {s = "коллега" ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"коллега" ;
|
||||||
lin ColleaguesHe : Letter.Recipient = \ -> {s = "коллеги" ;n = <ResRusU.pl>;g = <ResRusU.masc>} ;"коллеги" ;
|
lin ColleaguesHe : Letter.Recipient = \ -> {s = "коллеги" ;n = <ResRusU.pl>;g = <ResRusU.masc>} ;"коллеги" ;
|
||||||
lin ColleaguesShe : Letter.Recipient = \ -> {s = "коллеги" ;n = <ResRusU.pl>;g = <ResRusU.fem>} ;"коллеги" ;
|
lin ColleaguesShe : Letter.Recipient = \ -> {s = "коллеги" ;n = <ResRusU.pl>;g = <ResRusU.fem>} ;"коллеги" ;
|
||||||
lin Company : Letter.NounPhrase = \ -> {s = "наше" ++ "предпри�тие" ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"наше предпри�тие" ;
|
lin Company : Letter.NounPhrase = \ -> {s = "наше" ++ "предпри�тие" ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"наше предпри�тие" ;
|
||||||
lin Competitor : Letter.NounPhrase = \ -> {s = "наш" ++ "конкурент" ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"наш конкурент" ;
|
lin Competitor : Letter.NounPhrase = \ -> {s = "наш" ++ "конкурент" ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"наш конкурент" ;
|
||||||
lin DarlingHe : Letter.Recipient = \ -> {s = "любимый" ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"любимый" ;
|
lin DarlingHe : Letter.Recipient = \ -> {s = "любимый" ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"любимый" ;
|
||||||
lin DarlingShe : Letter.Recipient = \ -> {s = "любима�" ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"любима�" ;
|
lin DarlingShe : Letter.Recipient = \ -> {s = "любима�" ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"любима�" ;
|
||||||
lin Dean : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "декан" }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.masc>> } ;"декан" ;
|
lin Dean : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "декан" }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.masc>> } ;"декан" ;
|
||||||
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "Дорога�" ;(ResRusU.masc)=> "Дорогой" }! (Recipient @ 0.g);(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "Дорогие" }! (Recipient @ 0.g)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Дорогой Recipient_0" ;
|
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "Дорога�" ;(ResRusU.masc)=> "Дорогой" }! (Recipient @ 0.g);(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "Дорогие" }! (Recipient @ 0.g)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Дорогой Recipient_0" ;
|
||||||
lincat Ending = {s : (ResRusU.Num => (ResRusU.Gen => Str)) ;n : ResRusU.DepNum ;g : ResRusU.DepGen }= {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }} ;n = <ResRusU.depnum>;g = <ResRusU.depgen>} ;"Ending" ;
|
lincat Ending = {s : (ResRusU.Num => (ResRusU.Gen => Str)) ;n : ResRusU.DepNum ;g : ResRusU.DepGen }= {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }} ;n = <ResRusU.depnum>;g = <ResRusU.depgen>} ;"Ending" ;
|
||||||
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.fem>) ;(ResRusU.masc)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.masc>) } ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.fem>) ;(ResRusU.masc)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.masc>) }} ;n = Author @ 0.n ;g = Author @ 0.g } ;"С (наилучшими пожелани�ми, &-)Author_0" ;
|
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.fem>) ;(ResRusU.masc)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.masc>) } ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.fem>) ;(ResRusU.masc)=> "С" ++ ("наилучшими" ++ ("пожелани�ми," ++ "&-")++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.masc>) }} ;n = Author @ 0.n ;g = Author @ 0.g } ;"С (наилучшими пожелани�ми, &-)Author_0" ;
|
||||||
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> NounPhrase @ 0.s ++ table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "обанкротило�ь" ;(ResRusU.masc)=> "обанкротил��" }! (NounPhrase @ 0.g);(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "обанкротили�ь" }! (NounPhrase @ 0.g)}! (NounPhrase @ 0.n)}}}}} ;"NounPhrase_0 обанкротил��" ;
|
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> NounPhrase @ 0.s ++ table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "обанкротило�ь" ;(ResRusU.masc)=> "обанкротил��" }! (NounPhrase @ 0.g);(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "обанкротили�ь" }! (NounPhrase @ 0.g)}! (NounPhrase @ 0.n)}}}}} ;"NounPhrase_0 обанкротил��" ;
|
||||||
lincat Heading = {s : Str ;n : ResRusU.Num ;g : ResRusU.Gen }= {s = str @ 0 ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"Heading" ;
|
lincat Heading = {s : Str ;n : ResRusU.Num ;g : ResRusU.Gen }= {s = str @ 0 ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"Heading" ;
|
||||||
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)=> "Здрав�твуй" ;(ResRusU.pl)=> "Здрав�твуйте" }! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Здрав�твуй Recipient_0" ;
|
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)=> "Здрав�твуй" ;(ResRusU.pl)=> "Здрав�твуйте" }! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Здрав�твуй Recipient_0" ;
|
||||||
lin Honour : Letter.Mode = \ -> {s = table ResRusU.DepNum {(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ "имеем" ++ ("че�ть" ++ ("�ообщить" ++ "вам" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ "имеем" ++ ("че�ть" ++ ("�ообщить" ++ "тебе" ++ ("," ++ "что")))}}} ;(ResRusU.depnum)=> table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ "имеем" ++ ("че�ть" ++ ("�ообщить" ++ "вам" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ "имею" ++ ("че�ть" ++ ("�ообщить" ++ "тебе" ++ ("," ++ "что")))}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ "имею" ++ ("че�ть" ++ ("�ообщить" ++ "вам" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ "имею" ++ ("че�ть" ++ ("�ообщить" ++ "тебе" ++ ("," ++ "что")))}}}}} ;"(� имею)че�ть (�ообщить тебе), что" ;
|
lin Honour : Letter.Mode = \ -> {s = table ResRusU.DepNum {(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ "имеем" ++ ("че�ть" ++ ("�ообщить" ++ "вам" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ "имеем" ++ ("че�ть" ++ ("�ообщить" ++ "тебе" ++ ("," ++ "что")))}}} ;(ResRusU.depnum)=> table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ "имеем" ++ ("че�ть" ++ ("�ообщить" ++ "вам" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ "имею" ++ ("че�ть" ++ ("�ообщить" ++ "тебе" ++ ("," ++ "что")))}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ "имею" ++ ("че�ть" ++ ("�ообщить" ++ "вам" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ "имею" ++ ("че�ть" ++ ("�ообщить" ++ "тебе" ++ ("," ++ "что")))}}}}} ;"(� имею)че�ть (�ообщить тебе), что" ;
|
||||||
lin ILoveYou : Letter.Sentence = \ -> {s = table ResRusU.DepNum {(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ ("ва�" ++ "любим")} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ ("теб�" ++ "любим")}}} ;(ResRusU.depnum)=> table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ ("ва�" ++ "любим")} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("теб�" ++ "люблю")}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("ва�" ++ "люблю")} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("теб�" ++ "люблю")}}}}} ;"� теб� люблю" ;
|
lin ILoveYou : Letter.Sentence = \ -> {s = table ResRusU.DepNum {(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ ("ва�" ++ "любим")} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ ("теб�" ++ "любим")}}} ;(ResRusU.depnum)=> table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мы" ++ ("ва�" ++ "любим")} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("теб�" ++ "люблю")}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("ва�" ++ "люблю")} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("теб�" ++ "люблю")}}}}} ;"� теб� люблю" ;
|
||||||
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(С друже�ким приветом, &-)Author_0" ;
|
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> "С" ++ ("друже�ким" ++ ("приветом," ++ "&-")) ++ Author @ 0.s ! <ResRusU.sg>! <ResRusU.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(С друже�ким приветом, &-)Author_0" ;
|
||||||
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)=> "Здрав�твуй" ;(ResRusU.pl)=> "Здрав�твуйте" }! (Recipient @ 0.n);n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Здрав�твуй" ;
|
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)=> "Здрав�твуй" ;(ResRusU.pl)=> "Здрав�твуйте" }! (Recipient @ 0.n);n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Здрав�твуй" ;
|
||||||
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
||||||
lincat Message = {s : (ResRusU.DepNum => (ResRusU.DepGen => (ResRusU.Num => (ResRusU.Gen => Str)))) }= {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}}}} ;"Message" ;
|
lincat Message = {s : (ResRusU.DepNum => (ResRusU.DepGen => (ResRusU.Num => (ResRusU.Gen => Str)))) }= {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}}}} ;"Message" ;
|
||||||
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.g)! (Heading @ 0.n)! (Heading @ 0.g)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.g)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.g)! (Heading @ 0.n)! (Heading @ 0.g)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.g)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
||||||
lincat Mode = {s : (ResRusU.DepNum => (ResRusU.DepGen => (ResRusU.Num => (ResRusU.Gen => Str)))) }= {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}}}} ;"Mode" ;
|
lincat Mode = {s : (ResRusU.DepNum => (ResRusU.DepGen => (ResRusU.Num => (ResRusU.Gen => Str)))) }= {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}}}} ;"Mode" ;
|
||||||
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResRusU.DepNum {(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>}} ;(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.masc>}} ;(ResRusU.depgen)=> table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.masc>}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>}} ;(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>Line truncated
|
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResRusU.DepNum {(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>}} ;(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.masc>}} ;(ResRusU.depgen)=> table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.pl>> ! <ResRusU.depgen>! <ResRusU.sg>! <ResRusU.masc>}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.fem>> ! <ResRusU.sg>! <ResRusU.masc>}} ;(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.fem>;(ResRusU.masc)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.pl>! <ResRusU.masc>} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> Mode @ 0.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>> ! <ResRusU.sg>! <ResRusU.fem>++ Sentence @ 1.s ! <ResRusU.cnum <ResRusU.sg>> ! <ResRusU.cgen <ResRusU.masc>Line truncated
|
||||||
lin Mother : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мама" }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.fem>> } ;"мама" ;
|
lin Mother : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "мама" }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.fem>> } ;"мама" ;
|
||||||
lin Name : Letter.Author = \ String @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> String @ 0.s }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.masc>> } ;"String_0" ;
|
lin Name : Letter.Author = \ String @ 0 -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> String @ 0.s }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.masc>> } ;"String_0" ;
|
||||||
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"String_0" ;
|
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"String_0" ;
|
||||||
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"String_0" ;
|
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResRusU.sg>;g = <ResRusU.fem>} ;"String_0" ;
|
||||||
lincat NounPhrase = {s : Str ;n : ResRusU.Num ;g : ResRusU.Gen }= {s = str @ 0 ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"NounPhrase" ;
|
lincat NounPhrase = {s : Str ;n : ResRusU.Num ;g : ResRusU.Gen }= {s = str @ 0 ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"NounPhrase" ;
|
||||||
lin OurCustomers : Letter.NounPhrase = \ -> {s = "наши" ++ "клиенты" ;n = <ResRusU.pl>;g = <ResRusU.masc>} ;"наши клиенты" ;
|
lin OurCustomers : Letter.NounPhrase = \ -> {s = "наши" ++ "клиенты" ;n = <ResRusU.pl>;g = <ResRusU.masc>} ;"наши клиенты" ;
|
||||||
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Recipient_0" ;
|
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Recipient_0" ;
|
||||||
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
||||||
lincat Position = {s : (ResRusU.Num => (ResRusU.Gen => Str)) }= {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}} ;"Position" ;
|
lincat Position = {s : (ResRusU.Num => (ResRusU.Gen => Str)) }= {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}} ;"Position" ;
|
||||||
lin President : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "президент" }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.masc>> } ;"президент" ;
|
lin President : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "президент" }} ;n = <ResRusU.cnum <ResRusU.sg>> ;g = <ResRusU.cgen <ResRusU.masc>> } ;"президент" ;
|
||||||
lin ProjectManager : Letter.Position = \ -> {s = table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "менеджерами" ++ "проектов" } ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "менеджером" ++ "проекта" }}} ;"менеджером проекта" ;
|
lin ProjectManager : Letter.Position = \ -> {s = table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "менеджерами" ++ "проектов" } ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "менеджером" ++ "проекта" }}} ;"менеджером проекта" ;
|
||||||
lincat Recipient = {s : Str ;n : ResRusU.Num ;g : ResRusU.Gen }= {s = str @ 0 ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"Recipient" ;
|
lincat Recipient = {s : Str ;n : ResRusU.Num ;g : ResRusU.Gen }= {s = str @ 0 ;n = <ResRusU.sg>;g = <ResRusU.masc>} ;"Recipient" ;
|
||||||
lin Regret : Letter.Mode = \ -> {s = table ResRusU.DepNum {(ResRusU.depnum)=> table ResRusU.DepGen {(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.depgen)=> table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")));(ResRusU.masc)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))} ;(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.depgen)=> table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")));(ResRusU.masc)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))}}} ;(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))}}}}} ;"� вынуждена �ообщить , что" ;
|
lin Regret : Letter.Mode = \ -> {s = table ResRusU.DepNum {(ResRusU.depnum)=> table ResRusU.DepGen {(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))} ;(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.depgen)=> table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")));(ResRusU.masc)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))} ;(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))}}} ;(ResRusU.cnum (ResRusU.sg)) => table ResRusU.DepGen {(ResRusU.depgen)=> table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")));(ResRusU.masc)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.cgen (ResRusU.masc)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынужден" ++ ("�ообщить" ++ ("," ++ "что")))}} ;(ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�" ++ ("вынуждена" ++ ("�ообщить" ++ ("," ++ "что")))}}} ;(ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "вы" ++ ("вынуждены" ++ ("�ообщить" ++ ("," ++ "что")))}}}}} ;"� вынуждена �ообщить , что" ;
|
||||||
lin Senior : Letter.Position = \ -> {s = table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�таршим" ++ ("научным" ++ "�отрудником")} ;(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�таршими" ++ ("научными" ++ "�отрудниками")}}} ;"�таршим научным �отрудником" ;
|
lin Senior : Letter.Position = \ -> {s = table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�таршим" ++ ("научным" ++ "�отрудником")} ;(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> "�таршими" ++ ("научными" ++ "�отрудниками")}}} ;"�таршим научным �отрудником" ;
|
||||||
lincat Sentence = {s : (ResRusU.DepNum => (ResRusU.DepGen => (ResRusU.Num => (ResRusU.Gen => Str)))) }= {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
lincat Sentence = {s : (ResRusU.DepNum => (ResRusU.DepGen => (ResRusU.Num => (ResRusU.Gen => Str)))) }= {s = table ResRusU.DepNum {(ResRusU.depnum)(ResRusU.cnum (ResRusU.sg)) (ResRusU.cnum (ResRusU.pl)) => table ResRusU.DepGen {(ResRusU.depgen)(ResRusU.cgen (ResRusU.masc)) (ResRusU.cgen (ResRusU.fem)) => table ResRusU.Num {(ResRusU.sg)(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)(ResRusU.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
||||||
lin Spouse : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "твой" ++ "муж" ;(ResRusU.masc)=> "тво�" ++ "жена" } ;(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)=> "ваши" ++ "жены" ;(ResRusU.fem)=> "ваши" ++ "мужь�" }} ;n = <ResRusU.depnum>;g = <ResRusU.depgen>} ;"тво� жена" ;
|
lin Spouse : Letter.Author = \ -> {s = table ResRusU.Num {(ResRusU.sg)=> table ResRusU.Gen {(ResRusU.fem)=> "твой" ++ "муж" ;(ResRusU.masc)=> "тво�" ++ "жена" } ;(ResRusU.pl)=> table ResRusU.Gen {(ResRusU.masc)=> "ваши" ++ "жены" ;(ResRusU.fem)=> "ваши" ++ "мужь�" }} ;n = <ResRusU.depnum>;g = <ResRusU.depgen>} ;"тво� жена" ;
|
||||||
}
|
}
|
||||||
resource ResRusU = {param DepGen = depgen | cgen ResRusU.Gen ;
|
resource ResRusU = {param DepGen = depgen | cgen ResRusU.Gen ;
|
||||||
param DepNum = depnum | cnum ResRusU.Num ;
|
param DepNum = depnum | cnum ResRusU.Num ;
|
||||||
param Gen = masc | fem ;
|
param Gen = masc | fem ;
|
||||||
param Kas = nom | acc ;
|
param Kas = nom | acc ;
|
||||||
param Num = sg | pl ;
|
param Num = sg | pl ;
|
||||||
}
|
}
|
||||||
abstract Letter = {cat Author [] = ;
|
abstract Letter = {cat Author [] = ;
|
||||||
fun BePromoted : (h_ : Letter.Position)-> Letter.Sentence = {} ;
|
fun BePromoted : (h_ : Letter.Position)-> Letter.Sentence = {} ;
|
||||||
fun ColleagueHe : Letter.Recipient = {} ;
|
fun ColleagueHe : Letter.Recipient = {} ;
|
||||||
fun ColleagueShe : Letter.Recipient = {} ;
|
fun ColleagueShe : Letter.Recipient = {} ;
|
||||||
fun ColleaguesHe : Letter.Recipient = {} ;
|
fun ColleaguesHe : Letter.Recipient = {} ;
|
||||||
fun ColleaguesShe : Letter.Recipient = {} ;
|
fun ColleaguesShe : Letter.Recipient = {} ;
|
||||||
fun Company : Letter.NounPhrase = {} ;
|
fun Company : Letter.NounPhrase = {} ;
|
||||||
fun Competitor : Letter.NounPhrase = {} ;
|
fun Competitor : Letter.NounPhrase = {} ;
|
||||||
fun DarlingHe : Letter.Recipient = {} ;
|
fun DarlingHe : Letter.Recipient = {} ;
|
||||||
fun DarlingShe : Letter.Recipient = {} ;
|
fun DarlingShe : Letter.Recipient = {} ;
|
||||||
fun Dean : Letter.Author = {} ;
|
fun Dean : Letter.Author = {} ;
|
||||||
fun DearRec : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
fun DearRec : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
||||||
cat Ending [] = ;
|
cat Ending [] = ;
|
||||||
fun FormalEnding : (h_ : Letter.Author)-> Letter.Ending = {} ;
|
fun FormalEnding : (h_ : Letter.Author)-> Letter.Ending = {} ;
|
||||||
fun GoBankrupt : (h_ : Letter.NounPhrase)-> Letter.Sentence = {} ;
|
fun GoBankrupt : (h_ : Letter.NounPhrase)-> Letter.Sentence = {} ;
|
||||||
cat Heading [] = ;
|
cat Heading [] = ;
|
||||||
fun HelloRec : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
fun HelloRec : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
||||||
fun Honour : Letter.Mode = {} ;
|
fun Honour : Letter.Mode = {} ;
|
||||||
fun ILoveYou : Letter.Sentence = {} ;
|
fun ILoveYou : Letter.Sentence = {} ;
|
||||||
fun InformalEnding : (h_ : Letter.Author)-> Letter.Ending = {} ;
|
fun InformalEnding : (h_ : Letter.Author)-> Letter.Ending = {} ;
|
||||||
fun JustHello : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
fun JustHello : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
||||||
cat Letter [] = ;
|
cat Letter [] = ;
|
||||||
cat Message [] = ;
|
cat Message [] = ;
|
||||||
fun MkLetter : (h_ : Letter.Heading)-> (h_ : Letter.Message)-> (h_ : Letter.Ending)-> Letter.Letter = {} ;
|
fun MkLetter : (h_ : Letter.Heading)-> (h_ : Letter.Message)-> (h_ : Letter.Ending)-> Letter.Letter = {} ;
|
||||||
cat Mode [] = ;
|
cat Mode [] = ;
|
||||||
fun ModeSent : (h_ : Letter.Mode)-> (h_ : Letter.Sentence)-> Letter.Message = {} ;
|
fun ModeSent : (h_ : Letter.Mode)-> (h_ : Letter.Sentence)-> Letter.Message = {} ;
|
||||||
fun Mother : Letter.Author = {} ;
|
fun Mother : Letter.Author = {} ;
|
||||||
fun Name : (h_ : PredefAbs.String)-> Letter.Author = {} ;
|
fun Name : (h_ : PredefAbs.String)-> Letter.Author = {} ;
|
||||||
fun NameHe : (h_ : PredefAbs.String)-> Letter.Recipient = {} ;
|
fun NameHe : (h_ : PredefAbs.String)-> Letter.Recipient = {} ;
|
||||||
fun NameShe : (h_ : PredefAbs.String)-> Letter.Recipient = {} ;
|
fun NameShe : (h_ : PredefAbs.String)-> Letter.Recipient = {} ;
|
||||||
cat NounPhrase [] = ;
|
cat NounPhrase [] = ;
|
||||||
fun OurCustomers : Letter.NounPhrase = {} ;
|
fun OurCustomers : Letter.NounPhrase = {} ;
|
||||||
fun PlainRec : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
fun PlainRec : (h_ : Letter.Recipient)-> Letter.Heading = {} ;
|
||||||
fun PlainSent : (h_ : Letter.Sentence)-> Letter.Message = {} ;
|
fun PlainSent : (h_ : Letter.Sentence)-> Letter.Message = {} ;
|
||||||
cat Position [] = ;
|
cat Position [] = ;
|
||||||
fun President : Letter.Author = {} ;
|
fun President : Letter.Author = {} ;
|
||||||
fun ProjectManager : Letter.Position = {} ;
|
fun ProjectManager : Letter.Position = {} ;
|
||||||
cat Recipient [] = ;
|
cat Recipient [] = ;
|
||||||
fun Regret : Letter.Mode = {} ;
|
fun Regret : Letter.Mode = {} ;
|
||||||
fun Senior : Letter.Position = {} ;
|
fun Senior : Letter.Position = {} ;
|
||||||
cat Sentence [] = ;
|
cat Sentence [] = ;
|
||||||
fun Spouse : Letter.Author = {} ;
|
fun Spouse : Letter.Author = {} ;
|
||||||
}
|
}
|
||||||
concrete Finnish of Letter = open ResFin in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResFin.Num => (ResFin.Gen => Str)) ;n : ResFin.DepNum ;g : ResFin.DepGen }= {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }} ;n = <ResFin.depnum>;g = <ResFin.depgen>} ;"Author" ;
|
concrete Finnish of Letter = open ResFin in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResFin.Num => (ResFin.Gen => Str)) ;n : ResFin.DepNum ;g : ResFin.DepGen }= {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }} ;n = <ResFin.depnum>;g = <ResFin.depgen>} ;"Author" ;
|
||||||
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "sinut" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.sg>! <ResFin.fem>) ;(ResFin.masc)=> "sinut" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.sg>! <ResFin.masc>) } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "teidät" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.pl>! <ResFin.fem>) ;(ResFin.masc)=> "teidät" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.pl>! <ResFin.masc>) }}}}} ;"(sinut on)ylennetty Position_0" ;
|
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "sinut" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.sg>! <ResFin.fem>) ;(ResFin.masc)=> "sinut" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.sg>! <ResFin.masc>) } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "teidät" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.pl>! <ResFin.fem>) ;(ResFin.masc)=> "teidät" ++ "on" ++ ("ylennetty" ++ Position @ 0.s ! <ResFin.pl>! <ResFin.masc>) }}}}} ;"(sinut on)ylennetty Position_0" ;
|
||||||
lin ColleagueHe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResFin.sg>;g = <ResFin.masc>} ;"kollega" ;
|
lin ColleagueHe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResFin.sg>;g = <ResFin.masc>} ;"kollega" ;
|
||||||
lin ColleagueShe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResFin.sg>;g = <ResFin.fem>} ;"kollega" ;
|
lin ColleagueShe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResFin.sg>;g = <ResFin.fem>} ;"kollega" ;
|
||||||
lin ColleaguesHe : Letter.Recipient = \ -> {s = "kollegat" ;n = <ResFin.pl>;g = <ResFin.masc>} ;"kollegat" ;
|
lin ColleaguesHe : Letter.Recipient = \ -> {s = "kollegat" ;n = <ResFin.pl>;g = <ResFin.masc>} ;"kollegat" ;
|
||||||
lin ColleaguesShe : Letter.Recipient = \ -> {s = "kollegat" ;n = <ResFin.pl>;g = <ResFin.fem>} ;"kollegat" ;
|
lin ColleaguesShe : Letter.Recipient = \ -> {s = "kollegat" ;n = <ResFin.pl>;g = <ResFin.fem>} ;"kollegat" ;
|
||||||
lin Company : Letter.NounPhrase = \ -> {s = "yrityksemme" ;n = <ResFin.sg>;g = <ResFin.fem>} ;"yrityksemme" ;
|
lin Company : Letter.NounPhrase = \ -> {s = "yrityksemme" ;n = <ResFin.sg>;g = <ResFin.fem>} ;"yrityksemme" ;
|
||||||
lin Competitor : Letter.NounPhrase = \ -> {s = "pahin" ++ "kilpailijamme" ;n = <ResFin.sg>;g = <ResFin.masc>} ;"pahin kilpailijamme" ;
|
lin Competitor : Letter.NounPhrase = \ -> {s = "pahin" ++ "kilpailijamme" ;n = <ResFin.sg>;g = <ResFin.masc>} ;"pahin kilpailijamme" ;
|
||||||
lin DarlingHe : Letter.Recipient = \ -> {s = "kulta" ;n = <ResFin.sg>;g = <ResFin.masc>} ;"kulta" ;
|
lin DarlingHe : Letter.Recipient = \ -> {s = "kulta" ;n = <ResFin.sg>;g = <ResFin.masc>} ;"kulta" ;
|
||||||
lin DarlingShe : Letter.Recipient = \ -> {s = "kulta" ;n = <ResFin.sg>;g = <ResFin.fem>} ;"kulta" ;
|
lin DarlingShe : Letter.Recipient = \ -> {s = "kulta" ;n = <ResFin.sg>;g = <ResFin.fem>} ;"kulta" ;
|
||||||
lin Dean : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "dekaani" }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.masc>> } ;"dekaani" ;
|
lin Dean : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "dekaani" }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.masc>> } ;"dekaani" ;
|
||||||
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakas" }! (Recipient @ 0.g);(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakkaat" }! (Recipient @ 0.g)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"rakas Recipient_0" ;
|
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakas" }! (Recipient @ 0.g);(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakkaat" }! (Recipient @ 0.g)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"rakas Recipient_0" ;
|
||||||
lincat Ending = {s : (ResFin.Num => (ResFin.Gen => Str)) ;n : ResFin.DepNum ;g : ResFin.DepGen }= {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }} ;n = <ResFin.depnum>;g = <ResFin.depgen>} ;"Ending" ;
|
lincat Ending = {s : (ResFin.Num => (ResFin.Gen => Str)) ;n : ResFin.DepNum ;g : ResFin.DepGen }= {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }} ;n = <ResFin.depnum>;g = <ResFin.depgen>} ;"Ending" ;
|
||||||
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.sg>! <ResFin.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(parhain terveisin &-)Author_0" ;
|
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> "parhain" ++ ("terveisin" ++ "&-")++ Author @ 0.s ! <ResFin.sg>! <ResFin.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(parhain terveisin &-)Author_0" ;
|
||||||
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> NounPhrase @ 0.s ++ (table ResFin.Num {(ResFin.sg)=> "on" ;(ResFin.pl)=> "ovat" }! (NounPhrase @ 0.n)++ (table ResFin.Num {(ResFin.pl)=> "menneet" ;(ResFin.sg)=> "mennyt" }! (NounPhrase @ 0.n)++ "konkurssiin")) }}}}} ;"NounPhrase_0 on mennyt konkurssiin" ;
|
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> NounPhrase @ 0.s ++ (table ResFin.Num {(ResFin.sg)=> "on" ;(ResFin.pl)=> "ovat" }! (NounPhrase @ 0.n)++ (table ResFin.Num {(ResFin.pl)=> "menneet" ;(ResFin.sg)=> "mennyt" }! (NounPhrase @ 0.n)++ "konkurssiin")) }}}}} ;"NounPhrase_0 on mennyt konkurssiin" ;
|
||||||
lincat Heading = {s : Str ;n : ResFin.Num ;g : ResFin.Gen }= {s = str @ 0 ;n = <ResFin.sg>;g = <ResFin.masc>} ;"Heading" ;
|
lincat Heading = {s : Str ;n : ResFin.Num ;g : ResFin.Gen }= {s = str @ 0 ;n = <ResFin.sg>;g = <ResFin.masc>} ;"Heading" ;
|
||||||
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Terve" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Terve Recipient_0" ;
|
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Terve" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Terve Recipient_0" ;
|
||||||
lin Honour : Letter.Mode = \ -> {s = table ResFin.DepNum {(ResFin.depnum)=> table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meillä" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "teille" ++ "että")) } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minulla" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "sinulle" ++ "että")) }}} ;(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meillä" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "sinulle" ++ "että")) } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meillä" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "teille" ++ "että")) }}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minulla" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "sinulle" ++ "että")) } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minulla" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "teille" ++ "että")) }}}}} ;"(minulla on)kunnia (ilmoittaa sinulle)että" ;
|
lin Honour : Letter.Mode = \ -> {s = table ResFin.DepNum {(ResFin.depnum)=> table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meillä" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "teille" ++ "että")) } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minulla" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "sinulle" ++ "että")) }}} ;(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meillä" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "sinulle" ++ "että")) } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meillä" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "teille" ++ "että")) }}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minulla" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "sinulle" ++ "että")) } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minulla" ++ "on" ++ ("kunnia" ++ ("ilmoittaa" ++ "teille" ++ "että")) }}}}} ;"(minulla on)kunnia (ilmoittaa sinulle)että" ;
|
||||||
lin ILoveYou : Letter.Sentence = \ -> {s = table ResFin.DepNum {(ResFin.depnum)=> table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastamme" ++ "teitä" } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastan" ++ "sinua" }}} ;(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastamme" ++ "sinua" } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastamme" ++ "teitä" }}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastan" ++ "sinua" } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastan" ++ "teitä" }}}}} ;"rakastan sinua" ;
|
lin ILoveYou : Letter.Sentence = \ -> {s = table ResFin.DepNum {(ResFin.depnum)=> table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastamme" ++ "teitä" } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastan" ++ "sinua" }}} ;(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastamme" ++ "sinua" } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastamme" ++ "teitä" }}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastan" ++ "sinua" } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "rakastan" ++ "teitä" }}}}} ;"rakastan sinua" ;
|
||||||
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.sg>! <ResFin.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(terveisin &-)Author_0" ;
|
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> "terveisin" ++ "&-" ++ Author @ 0.s ! <ResFin.sg>! <ResFin.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(terveisin &-)Author_0" ;
|
||||||
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Terve" ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Terve" ;
|
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Terve" ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Terve" ;
|
||||||
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
||||||
lincat Message = {s : (ResFin.DepNum => (ResFin.DepGen => (ResFin.Num => (ResFin.Gen => Str)))) }= {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}}}} ;"Message" ;
|
lincat Message = {s : (ResFin.DepNum => (ResFin.DepGen => (ResFin.Num => (ResFin.Gen => Str)))) }= {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}}}} ;"Message" ;
|
||||||
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.g)! (Heading @ 0.n)! (Heading @ 0.g)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.g)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.g)! (Heading @ 0.n)! (Heading @ 0.g)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.g)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
||||||
lincat Mode = {s : (ResFin.DepNum => (ResFin.DepGen => (ResFin.Num => (ResFin.Gen => Str)))) }= {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}}}} ;"Mode" ;
|
lincat Mode = {s : (ResFin.DepNum => (ResFin.DepGen => (ResFin.Num => (ResFin.Gen => Str)))) }= {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}}}} ;"Mode" ;
|
||||||
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResFin.DepNum {(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.cgen (ResFin.masc)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.depgen)=> table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.masc>}}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.cgen (ResFin.masc)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.depgen)=> table ResLine truncated
|
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResFin.DepNum {(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.cgen (ResFin.masc)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.depgen)=> table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.pl>> ! <ResFin.depgen>! <ResFin.sg>! <ResFin.masc>}}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.fem>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.cgen (ResFin.masc)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.pl>! <ResFin.masc>} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.fem>;(ResFin.masc)=> Mode @ 0.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>++ Sentence @ 1.s ! <ResFin.cnum <ResFin.sg>> ! <ResFin.cgen <ResFin.masc>> ! <ResFin.sg>! <ResFin.masc>}} ;(ResFin.depgen)=> table ResLine truncated
|
||||||
lin Mother : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "äiti" }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.fem>> } ;"äiti" ;
|
lin Mother : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "äiti" }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.fem>> } ;"äiti" ;
|
||||||
lin Name : Letter.Author = \ String @ 0 -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> String @ 0.s }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.masc>> } ;"String_0" ;
|
lin Name : Letter.Author = \ String @ 0 -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> String @ 0.s }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.masc>> } ;"String_0" ;
|
||||||
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFin.sg>;g = <ResFin.masc>} ;"String_0" ;
|
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFin.sg>;g = <ResFin.masc>} ;"String_0" ;
|
||||||
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFin.sg>;g = <ResFin.fem>} ;"String_0" ;
|
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFin.sg>;g = <ResFin.fem>} ;"String_0" ;
|
||||||
lincat NounPhrase = {s : Str ;n : ResFin.Num ;g : ResFin.Gen }= {s = str @ 0 ;n = <ResFin.sg>;g = <ResFin.masc>} ;"NounPhrase" ;
|
lincat NounPhrase = {s : Str ;n : ResFin.Num ;g : ResFin.Gen }= {s = str @ 0 ;n = <ResFin.sg>;g = <ResFin.masc>} ;"NounPhrase" ;
|
||||||
lin OurCustomers : Letter.NounPhrase = \ -> {s = "asiakkaamme" ;n = <ResFin.pl>;g = <ResFin.masc>} ;"asiakkaamme" ;
|
lin OurCustomers : Letter.NounPhrase = \ -> {s = "asiakkaamme" ;n = <ResFin.pl>;g = <ResFin.masc>} ;"asiakkaamme" ;
|
||||||
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Recipient_0" ;
|
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Recipient_0" ;
|
||||||
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
||||||
lincat Position = {s : (ResFin.Num => (ResFin.Gen => Str)) }= {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}} ;"Position" ;
|
lincat Position = {s : (ResFin.Num => (ResFin.Gen => Str)) }= {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}} ;"Position" ;
|
||||||
lin President : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "presidentti" }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.masc>> } ;"presidentti" ;
|
lin President : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "presidentti" }} ;n = <ResFin.cnum <ResFin.sg>> ;g = <ResFin.cgen <ResFin.masc>> } ;"presidentti" ;
|
||||||
lin ProjectManager : Letter.Position = \ -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "projektipäälliköiksi" } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "projektipäälliköksi" }}} ;"projektipäälliköksi" ;
|
lin ProjectManager : Letter.Position = \ -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "projektipäälliköiksi" } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "projektipäälliköksi" }}} ;"projektipäälliköksi" ;
|
||||||
lincat Recipient = {s : Str ;n : ResFin.Num ;g : ResFin.Gen }= {s = str @ 0 ;n = <ResFin.sg>;g = <ResFin.masc>} ;"Recipient" ;
|
lincat Recipient = {s : Str ;n : ResFin.Num ;g : ResFin.Gen }= {s = str @ 0 ;n = <ResFin.sg>;g = <ResFin.masc>} ;"Recipient" ;
|
||||||
lin Regret : Letter.Mode = \ -> {s = table ResFin.DepNum {(ResFin.depnum)=> table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meidän" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minun" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")}}} ;(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meidän" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")}}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minun" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")}}}}} ;"minun (on valitettavasti ilmoitettava)että" ;
|
lin Regret : Letter.Mode = \ -> {s = table ResFin.DepNum {(ResFin.depnum)=> table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meidän" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")} ;(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minun" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")}}} ;(ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "meidän" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")}}} ;(ResFin.cnum (ResFin.sg)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "minun" ++ ("on" ++ ("valitettavasti" ++ "ilmoitettava")++ "että")}}}}} ;"minun (on valitettavasti ilmoitettava)että" ;
|
||||||
lin Senior : Letter.Position = \ -> {s = table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "vanhemmaksi" ++ "tutkijaksi" } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "vanhemmiksi" ++ "tutkijoiksi" }}} ;"vanhemmaksi tutkijaksi" ;
|
lin Senior : Letter.Position = \ -> {s = table ResFin.Num {(ResFin.sg)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "vanhemmaksi" ++ "tutkijaksi" } ;(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> "vanhemmiksi" ++ "tutkijoiksi" }}} ;"vanhemmaksi tutkijaksi" ;
|
||||||
lincat Sentence = {s : (ResFin.DepNum => (ResFin.DepGen => (ResFin.Num => (ResFin.Gen => Str)))) }= {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
lincat Sentence = {s : (ResFin.DepNum => (ResFin.DepGen => (ResFin.Num => (ResFin.Gen => Str)))) }= {s = table ResFin.DepNum {(ResFin.depnum)(ResFin.cnum (ResFin.sg)) (ResFin.cnum (ResFin.pl)) => table ResFin.DepGen {(ResFin.depgen)(ResFin.cgen (ResFin.masc)) (ResFin.cgen (ResFin.fem)) => table ResFin.Num {(ResFin.sg)(ResFin.pl)=> table ResFin.Gen {(ResFin.masc)(ResFin.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
||||||
lin Spouse : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "miehenne" ;(ResFin.masc)=> "vaimonne" } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "miehesi" ;(ResFin.masc)=> "vaimosi" }} ;n = <ResFin.depnum>;g = <ResFin.depgen>} ;"vaimosi" ;
|
lin Spouse : Letter.Author = \ -> {s = table ResFin.Num {(ResFin.pl)=> table ResFin.Gen {(ResFin.fem)=> "miehenne" ;(ResFin.masc)=> "vaimonne" } ;(ResFin.sg)=> table ResFin.Gen {(ResFin.fem)=> "miehesi" ;(ResFin.masc)=> "vaimosi" }} ;n = <ResFin.depnum>;g = <ResFin.depgen>} ;"vaimosi" ;
|
||||||
}
|
}
|
||||||
resource ResFin = {param DepGen = depgen | cgen ResFin.Gen ;
|
resource ResFin = {param DepGen = depgen | cgen ResFin.Gen ;
|
||||||
param DepNum = depnum | cnum ResFin.Num ;
|
param DepNum = depnum | cnum ResFin.Num ;
|
||||||
param Gen = masc | fem ;
|
param Gen = masc | fem ;
|
||||||
param Kas = nom | acc ;
|
param Kas = nom | acc ;
|
||||||
param Num = sg | pl ;
|
param Num = sg | pl ;
|
||||||
}
|
}
|
||||||
concrete Swedish of Letter = open ResSve in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResSve.Num => (ResSve.Sex => Str)) ;n : ResSve.DepNum ;x : ResSve.Sex }= {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }} ;n = <ResSve.depnum>;x = <ResSve.masc>} ;"Author" ;
|
concrete Swedish of Letter = open ResSve in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResSve.Num => (ResSve.Sex => Str)) ;n : ResSve.DepNum ;x : ResSve.Sex }= {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }} ;n = <ResSve.depnum>;x = <ResSve.masc>} ;"Author" ;
|
||||||
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "du" ++ ("har" ++ "blivit" ++ ("befordrad" ++ ("till" ++ Position @ 0.s ! <ResSve.sg>! <ResSve.fem>))) ;(ResSve.masc)=> "du" ++ ("har" ++ "blivit" ++ ("befordrad" ++ ("till" ++ Position @ 0.s ! <ResSve.sg>! <ResSve.masc>))) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> "ni" ++ ("har" ++ "blivit" ++ ("befordrade" ++ ("till" ++ Position @ 0.s ! <ResSve.pl>! <ResSve.fem>))) ;(ResSve.masc)=> "ni" ++ ("har" ++ "blivit" ++ ("befordrade" ++ ("till" ++ Position @ 0.s ! <ResSve.pl>! <ResSve.masc>))) }}}}} ;"du (har blivit)befordrad till Position_0" ;
|
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "du" ++ ("har" ++ "blivit" ++ ("befordrad" ++ ("till" ++ Position @ 0.s ! <ResSve.sg>! <ResSve.fem>))) ;(ResSve.masc)=> "du" ++ ("har" ++ "blivit" ++ ("befordrad" ++ ("till" ++ Position @ 0.s ! <ResSve.sg>! <ResSve.masc>))) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> "ni" ++ ("har" ++ "blivit" ++ ("befordrade" ++ ("till" ++ Position @ 0.s ! <ResSve.pl>! <ResSve.fem>))) ;(ResSve.masc)=> "ni" ++ ("har" ++ "blivit" ++ ("befordrade" ++ ("till" ++ Position @ 0.s ! <ResSve.pl>! <ResSve.masc>))) }}}}} ;"du (har blivit)befordrad till Position_0" ;
|
||||||
lin ColleagueHe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResSve.sg>;x = <ResSve.masc>} ;"kollega" ;
|
lin ColleagueHe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResSve.sg>;x = <ResSve.masc>} ;"kollega" ;
|
||||||
lin ColleagueShe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResSve.sg>;x = <ResSve.fem>} ;"kollega" ;
|
lin ColleagueShe : Letter.Recipient = \ -> {s = "kollega" ;n = <ResSve.sg>;x = <ResSve.fem>} ;"kollega" ;
|
||||||
lin ColleaguesHe : Letter.Recipient = \ -> {s = "kollegor" ;n = <ResSve.pl>;x = <ResSve.masc>} ;"kollegor" ;
|
lin ColleaguesHe : Letter.Recipient = \ -> {s = "kollegor" ;n = <ResSve.pl>;x = <ResSve.masc>} ;"kollegor" ;
|
||||||
lin ColleaguesShe : Letter.Recipient = \ -> {s = "kollegor" ;n = <ResSve.pl>;x = <ResSve.fem>} ;"kollegor" ;
|
lin ColleaguesShe : Letter.Recipient = \ -> {s = "kollegor" ;n = <ResSve.pl>;x = <ResSve.fem>} ;"kollegor" ;
|
||||||
lin Company : Letter.NounPhrase = \ -> {s = "vårt" ++ "företag" ;n = <ResSve.sg>;g = <ResSve.ett>} ;"vårt företag" ;
|
lin Company : Letter.NounPhrase = \ -> {s = "vårt" ++ "företag" ;n = <ResSve.sg>;g = <ResSve.ett>} ;"vårt företag" ;
|
||||||
lin Competitor : Letter.NounPhrase = \ -> {s = "vår" ++ ("värsta" ++ "konkurrent");n = <ResSve.sg>;g = <ResSve.en>} ;"vår värsta konkurrent" ;
|
lin Competitor : Letter.NounPhrase = \ -> {s = "vår" ++ ("värsta" ++ "konkurrent");n = <ResSve.sg>;g = <ResSve.en>} ;"vår värsta konkurrent" ;
|
||||||
lin DarlingHe : Letter.Recipient = \ -> {s = "älskling" ;n = <ResSve.sg>;x = <ResSve.masc>} ;"älskling" ;
|
lin DarlingHe : Letter.Recipient = \ -> {s = "älskling" ;n = <ResSve.sg>;x = <ResSve.masc>} ;"älskling" ;
|
||||||
lin DarlingShe : Letter.Recipient = \ -> {s = "älskling" ;n = <ResSve.sg>;x = <ResSve.fem>} ;"älskling" ;
|
lin DarlingShe : Letter.Recipient = \ -> {s = "älskling" ;n = <ResSve.sg>;x = <ResSve.fem>} ;"älskling" ;
|
||||||
lin Dean : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Dekanus" }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.masc>} ;"Dekanus" ;
|
lin Dean : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Dekanus" }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.masc>} ;"Dekanus" ;
|
||||||
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "Kära" ;(ResSve.masc)=> "Käre" }! (Recipient @ 0.x);(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Kära" }! (Recipient @ 0.x)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Käre Recipient_0" ;
|
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "Kära" ;(ResSve.masc)=> "Käre" }! (Recipient @ 0.x);(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Kära" }! (Recipient @ 0.x)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Käre Recipient_0" ;
|
||||||
lincat Ending = {s : (ResSve.Num => (ResSve.Sex => Str)) ;n : ResSve.DepNum ;x : ResSve.Sex }= {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }} ;n = <ResSve.depnum>;x = <ResSve.masc>} ;"Ending" ;
|
lincat Ending = {s : (ResSve.Num => (ResSve.Sex => Str)) ;n : ResSve.DepNum ;x : ResSve.Sex }= {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }} ;n = <ResSve.depnum>;x = <ResSve.masc>} ;"Ending" ;
|
||||||
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.sg>! <ResSve.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(Med vänlig hälsning &-)Author_0" ;
|
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("vänlig" ++ ("hälsning" ++ "&-")) ++ Author @ 0.s ! <ResSve.sg>! <ResSve.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(Med vänlig hälsning &-)Author_0" ;
|
||||||
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> NounPhrase @ 0.s ++ ("har" ++ ("gått" ++ ("i" ++ "konkurs")))}}}}} ;"NounPhrase_0 har gått i konkurs" ;
|
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> NounPhrase @ 0.s ++ ("har" ++ ("gått" ++ ("i" ++ "konkurs")))}}}}} ;"NounPhrase_0 har gått i konkurs" ;
|
||||||
lincat Heading = {s : Str ;n : ResSve.Num ;x : ResSve.Sex }= {s = str @ 0 ;n = <ResSve.sg>;x = <ResSve.masc>} ;"Heading" ;
|
lincat Heading = {s : Str ;n : ResSve.Num ;x : ResSve.Sex }= {s = str @ 0 ;n = <ResSve.sg>;x = <ResSve.masc>} ;"Heading" ;
|
||||||
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Hej" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hej Recipient_0" ;
|
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Hej" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hej Recipient_0" ;
|
||||||
lin Honour : Letter.Mode = \ -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("er" ++ "att")) }}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("er" ++ "att")) }}} ;(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("er" ++ "att")) }}}}} ;"jag (har äran att meddela)dig att" ;
|
lin Honour : Letter.Mode = \ -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("er" ++ "att")) }}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("er" ++ "att")) }}} ;(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("har" ++ ("äran" ++ ("att" ++ "meddela")) ++ ("er" ++ "att")) }}}}} ;"jag (har äran att meddela)dig att" ;
|
||||||
lin ILoveYou : Letter.Sentence = \ -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("älskar" ++ "dig")} ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("älskar" ++ "er")}}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("älskar" ++ "dig")} ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("älskar" ++ "er")}}} ;(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("älskar" ++ "dig")} ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("älskar" ++ "er")}}}}} ;"jag älskar dig" ;
|
lin ILoveYou : Letter.Sentence = \ -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("älskar" ++ "dig")} ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("älskar" ++ "er")}}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("älskar" ++ "dig")} ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("älskar" ++ "er")}}} ;(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("älskar" ++ "dig")} ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("älskar" ++ "er")}}}}} ;"jag älskar dig" ;
|
||||||
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.sg>! <ResSve.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(Med hälsningar &-)Author_0" ;
|
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> "Med" ++ ("hälsningar" ++ "&-")++ Author @ 0.s ! <ResSve.sg>! <ResSve.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(Med hälsningar &-)Author_0" ;
|
||||||
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Hej" ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hej" ;
|
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Hej" ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hej" ;
|
||||||
lincat Letter = {s : Str }= {s = str @ 0 } ;"Brev" ;
|
lincat Letter = {s : Str }= {s = str @ 0 } ;"Brev" ;
|
||||||
lincat Message = {s : (ResSve.DepNum => (ResSve.Sex => (ResSve.Num => (ResSve.Sex => Str)))) }= {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}}}} ;"Message" ;
|
lincat Message = {s : (ResSve.DepNum => (ResSve.Sex => (ResSve.Num => (ResSve.Sex => Str)))) }= {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}}}} ;"Message" ;
|
||||||
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.x)! (Heading @ 0.n)! (Heading @ 0.x)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.x)))))) } ;"brevmall" ;
|
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.x)! (Heading @ 0.n)! (Heading @ 0.x)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.x)))))) } ;"brevmall" ;
|
||||||
lincat Mode = {s : (ResSve.DepNum => (ResSve.Sex => (ResSve.Num => (ResSve.Sex => Str)))) }= {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}}}} ;"Mode" ;
|
lincat Mode = {s : (ResSve.DepNum => (ResSve.Sex => (ResSve.Num => (ResSve.Sex => Str)))) }= {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}}}} ;"Mode" ;
|
||||||
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.fem)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>}} ;(ResSve.masc)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>}}} ;(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.fem)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>}} ;(ResSve.masc)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>}}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.fem)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>}} ;(ResSve.masc)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>Line truncated
|
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.fem)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>}} ;(ResSve.masc)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.pl>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>}}} ;(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.fem)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>}} ;(ResSve.masc)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.cnum <ResSve.sg>> ! <ResSve.masc>! <ResSve.sg>! <ResSve.masc>}}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.fem)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.fem>! <ResSve.sg>! <ResSve.masc>}} ;(ResSve.masc)=> table ResSve.Num {(ResSve.pl)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.pl>! <ResSve.masc>} ;(ResSve.sg)=> table ResSve.Sex {(ResSve.fem)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>++ Sentence @ 1.s ! <ResSve.depnum>! <ResSve.masc>! <ResSve.sg>! <ResSve.fem>;(ResSve.masc)=> Mode @ 0.s ! <ResSve.depnum>! <ResSve.masc>Line truncated
|
||||||
lin Mother : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Mamma" }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.fem>} ;"Mamma" ;
|
lin Mother : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Mamma" }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.fem>} ;"Mamma" ;
|
||||||
lin Name : Letter.Author = \ String @ 0 -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> String @ 0.s }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.masc>} ;"String_0" ;
|
lin Name : Letter.Author = \ String @ 0 -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> String @ 0.s }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.masc>} ;"String_0" ;
|
||||||
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResSve.sg>;x = <ResSve.masc>} ;"String_0" ;
|
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResSve.sg>;x = <ResSve.masc>} ;"String_0" ;
|
||||||
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResSve.sg>;x = <ResSve.fem>} ;"String_0" ;
|
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResSve.sg>;x = <ResSve.fem>} ;"String_0" ;
|
||||||
lincat NounPhrase = {s : Str ;n : ResSve.Num ;g : ResSve.Gen }= {s = str @ 0 ;n = <ResSve.sg>;g = <ResSve.en>} ;"NounPhrase" ;
|
lincat NounPhrase = {s : Str ;n : ResSve.Num ;g : ResSve.Gen }= {s = str @ 0 ;n = <ResSve.sg>;g = <ResSve.en>} ;"NounPhrase" ;
|
||||||
lin OurCustomers : Letter.NounPhrase = \ -> {s = "våra" ++ "kunder" ;n = <ResSve.pl>;g = <ResSve.en>} ;"våra kunder" ;
|
lin OurCustomers : Letter.NounPhrase = \ -> {s = "våra" ++ "kunder" ;n = <ResSve.pl>;g = <ResSve.en>} ;"våra kunder" ;
|
||||||
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Recipient_0" ;
|
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Recipient_0" ;
|
||||||
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
||||||
lincat Position = {s : (ResSve.Num => (ResSve.Sex => Str)) }= {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}} ;"Position" ;
|
lincat Position = {s : (ResSve.Num => (ResSve.Sex => Str)) }= {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}} ;"Position" ;
|
||||||
lin President : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Presidenten" }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.masc>} ;"Presidenten" ;
|
lin President : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "Presidenten" }} ;n = <ResSve.cnum <ResSve.sg>> ;x = <ResSve.masc>} ;"Presidenten" ;
|
||||||
lin ProjectManager : Letter.Position = \ -> {s = table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "projektchef" } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "projektchefer" }}} ;"projektchef" ;
|
lin ProjectManager : Letter.Position = \ -> {s = table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "projektchef" } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "projektchefer" }}} ;"projektchef" ;
|
||||||
lincat Recipient = {s : Str ;n : ResSve.Num ;x : ResSve.Sex }= {s = str @ 0 ;n = <ResSve.sg>;x = <ResSve.masc>} ;"Recipient" ;
|
lincat Recipient = {s : Str ;n : ResSve.Num ;x : ResSve.Sex }= {s = str @ 0 ;n = <ResSve.sg>;x = <ResSve.masc>} ;"Recipient" ;
|
||||||
lin Regret : Letter.Mode = \ -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("er" ++ "att")) }}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("er" ++ "att")) }}} ;(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("er" ++ "att")) }}}}} ;"jag (måste tyvärr meddela)dig att" ;
|
lin Regret : Letter.Mode = \ -> {s = table ResSve.DepNum {(ResSve.cnum (ResSve.sg)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("er" ++ "att")) }}} ;(ResSve.depnum)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "jag" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("er" ++ "att")) }}} ;(ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("dig" ++ "att")) } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "vi" ++ ("måste" ++ ("tyvärr" ++ "meddela")++ ("er" ++ "att")) }}}}} ;"jag (måste tyvärr meddela)dig att" ;
|
||||||
lin Senior : Letter.Position = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "äldre" ++ "forskare" }}} ;"äldre forskare" ;
|
lin Senior : Letter.Position = \ -> {s = table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> "äldre" ++ "forskare" }}} ;"äldre forskare" ;
|
||||||
lincat Sentence = {s : (ResSve.DepNum => (ResSve.Sex => (ResSve.Num => (ResSve.Sex => Str)))) }= {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
lincat Sentence = {s : (ResSve.DepNum => (ResSve.Sex => (ResSve.Num => (ResSve.Sex => Str)))) }= {s = table ResSve.DepNum {(ResSve.depnum)(ResSve.cnum (ResSve.sg)) (ResSve.cnum (ResSve.pl)) => table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> table ResSve.Num {(ResSve.sg)(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)(ResSve.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
||||||
lin Spouse : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)=> "din" ++ "hustru" ;(ResSve.fem)=> "din" ++ "man" } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)=> "era" ++ "hustrur" ;(ResSve.fem)=> "era" ++ "män" }} ;n = <ResSve.depnum>;x = <ResSve.masc>} ;"din hustru" ;
|
lin Spouse : Letter.Author = \ -> {s = table ResSve.Num {(ResSve.sg)=> table ResSve.Sex {(ResSve.masc)=> "din" ++ "hustru" ;(ResSve.fem)=> "din" ++ "man" } ;(ResSve.pl)=> table ResSve.Sex {(ResSve.masc)=> "era" ++ "hustrur" ;(ResSve.fem)=> "era" ++ "män" }} ;n = <ResSve.depnum>;x = <ResSve.masc>} ;"din hustru" ;
|
||||||
}
|
}
|
||||||
resource ResSve = {param DepNum = depnum | cnum ResSve.Num ;
|
resource ResSve = {param DepNum = depnum | cnum ResSve.Num ;
|
||||||
param Gen = en | ett ;
|
param Gen = en | ett ;
|
||||||
param Kas = nom | acc ;
|
param Kas = nom | acc ;
|
||||||
param Num = sg | pl ;
|
param Num = sg | pl ;
|
||||||
param Sex = masc | fem ;
|
param Sex = masc | fem ;
|
||||||
}
|
}
|
||||||
concrete French of Letter = open ResFra in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResFra.Num => (ResFra.Gen => Str)) ;n : ResFra.DepNum ;g : ResFra.DepGen }= {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }} ;n = <ResFra.depnum>;g = <ResFra.depgen>} ;"Author" ;
|
concrete French of Letter = open ResFra in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResFra.Num => (ResFra.Gen => Str)) ;n : ResFra.DepNum ;g : ResFra.DepGen }= {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }} ;n = <ResFra.depnum>;g = <ResFra.depgen>} ;"Author" ;
|
||||||
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "vous" ++ ("avez" ++ "été")++ ("promues" ++ Position @ 0.s ! <ResFra.pl>! <ResFra.fem>) ;(ResFra.masc)=> "vous" ++ ("avez" ++ "été")++ ("promus" ++ Position @ 0.s ! <ResFra.pl>! <ResFra.masc>) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)=> "tu" ++ ("as" ++ "été")++ ("promu" ++ Position @ 0.s ! <ResFra.sg>! <ResFra.masc>) ;(ResFra.fem)=> "tu" ++ ("as" ++ "été")++ ("promue" ++ Position @ 0.s ! <ResFra.sg>! <ResFra.fem>) }}}}} ;"(tu as été)promu Position_0" ;
|
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "vous" ++ ("avez" ++ "été")++ ("promues" ++ Position @ 0.s ! <ResFra.pl>! <ResFra.fem>) ;(ResFra.masc)=> "vous" ++ ("avez" ++ "été")++ ("promus" ++ Position @ 0.s ! <ResFra.pl>! <ResFra.masc>) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)=> "tu" ++ ("as" ++ "été")++ ("promu" ++ Position @ 0.s ! <ResFra.sg>! <ResFra.masc>) ;(ResFra.fem)=> "tu" ++ ("as" ++ "été")++ ("promue" ++ Position @ 0.s ! <ResFra.sg>! <ResFra.fem>) }}}}} ;"(tu as été)promu Position_0" ;
|
||||||
lin ColleagueHe : Letter.Recipient = \ -> {s = "collègue" ;n = <ResFra.sg>;g = <ResFra.masc>} ;"collègue" ;
|
lin ColleagueHe : Letter.Recipient = \ -> {s = "collègue" ;n = <ResFra.sg>;g = <ResFra.masc>} ;"collègue" ;
|
||||||
lin ColleagueShe : Letter.Recipient = \ -> {s = "collègue" ;n = <ResFra.sg>;g = <ResFra.fem>} ;"collègue" ;
|
lin ColleagueShe : Letter.Recipient = \ -> {s = "collègue" ;n = <ResFra.sg>;g = <ResFra.fem>} ;"collègue" ;
|
||||||
lin ColleaguesHe : Letter.Recipient = \ -> {s = "collègues" ;n = <ResFra.pl>;g = <ResFra.masc>} ;"collègues" ;
|
lin ColleaguesHe : Letter.Recipient = \ -> {s = "collègues" ;n = <ResFra.pl>;g = <ResFra.masc>} ;"collègues" ;
|
||||||
lin ColleaguesShe : Letter.Recipient = \ -> {s = "collègues" ;n = <ResFra.pl>;g = <ResFra.fem>} ;"collègues" ;
|
lin ColleaguesShe : Letter.Recipient = \ -> {s = "collègues" ;n = <ResFra.pl>;g = <ResFra.fem>} ;"collègues" ;
|
||||||
lin Company : Letter.NounPhrase = \ -> {s = "notre" ++ "entreprise" ;n = <ResFra.sg>;g = <ResFra.fem>} ;"notre entreprise" ;
|
lin Company : Letter.NounPhrase = \ -> {s = "notre" ++ "entreprise" ;n = <ResFra.sg>;g = <ResFra.fem>} ;"notre entreprise" ;
|
||||||
lin Competitor : Letter.NounPhrase = \ -> {s = "notre" ++ ("pire" ++ "compétiteur");n = <ResFra.sg>;g = <ResFra.masc>} ;"notre pire compétiteur" ;
|
lin Competitor : Letter.NounPhrase = \ -> {s = "notre" ++ ("pire" ++ "compétiteur");n = <ResFra.sg>;g = <ResFra.masc>} ;"notre pire compétiteur" ;
|
||||||
lin DarlingHe : Letter.Recipient = \ -> {s = "chéri" ;n = <ResFra.sg>;g = <ResFra.masc>} ;"chéri" ;
|
lin DarlingHe : Letter.Recipient = \ -> {s = "chéri" ;n = <ResFra.sg>;g = <ResFra.masc>} ;"chéri" ;
|
||||||
lin DarlingShe : Letter.Recipient = \ -> {s = "chérie" ;n = <ResFra.sg>;g = <ResFra.fem>} ;"chérie" ;
|
lin DarlingShe : Letter.Recipient = \ -> {s = "chérie" ;n = <ResFra.sg>;g = <ResFra.fem>} ;"chérie" ;
|
||||||
lin Dean : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "le" ++ "doyen" }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.masc>> } ;"le doyen" ;
|
lin Dean : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "le" ++ "doyen" }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.masc>> } ;"le doyen" ;
|
||||||
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)=> "cher" ;(ResFra.fem)=> "chère" }! (Recipient @ 0.g);(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "chers" ;(ResFra.fem)=> "chères" }! (Recipient @ 0.g)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"cher Recipient_0" ;
|
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)=> "cher" ;(ResFra.fem)=> "chère" }! (Recipient @ 0.g);(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "chers" ;(ResFra.fem)=> "chères" }! (Recipient @ 0.g)}! (Recipient @ 0.n)++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"cher Recipient_0" ;
|
||||||
lincat Ending = {s : (ResFra.Num => (ResFra.Gen => Str)) ;n : ResFra.DepNum ;g : ResFra.DepGen }= {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }} ;n = <ResFra.depnum>;g = <ResFra.depgen>} ;"Ending" ;
|
lincat Ending = {s : (ResFra.Num => (ResFra.Gen => Str)) ;n : ResFra.DepNum ;g : ResFra.DepGen }= {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }} ;n = <ResFra.depnum>;g = <ResFra.depgen>} ;"Ending" ;
|
||||||
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.depnum)(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.sg>! <ResFra.fem>));(ResFra.masc)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.depnum)(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.sg>! <ResFra.masc>))} ;(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.pl>! <ResFra.fem>));(ResFra.masc)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.pl>! <ResFra.masc>))}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"avec mes (salutations distinguées &-)Author_0" ;
|
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.depnum)(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.sg>! <ResFra.fem>));(ResFra.masc)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.depnum)(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.sg>! <ResFra.masc>))} ;(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.pl>! <ResFra.fem>));(ResFra.masc)=> "avec" ++ (table ResFra.Num {(ResFra.sg)=> "mes" ;(ResFra.pl)=> "nos" }! (table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.pl)) => <ResFra.pl>;(ResFra.cnum (ResFra.sg)) => <ResFra.sg>}! (Author @ 0.n)) ++ ("salutations" ++ ("distinguées" ++ "&-")++ Author @ 0.s ! <ResFra.pl>! <ResFra.masc>))}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"avec mes (salutations distinguées &-)Author_0" ;
|
||||||
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> NounPhrase @ 0.s ++ (table ResFra.Num {(ResFra.sg)=> "a" ;(ResFra.pl)=> "ont" }! (NounPhrase @ 0.n)++ ("fait" ++ "banqueroute")) }}}}} ;"NounPhrase_0 a fait banqueroute" ;
|
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> NounPhrase @ 0.s ++ (table ResFra.Num {(ResFra.sg)=> "a" ;(ResFra.pl)=> "ont" }! (NounPhrase @ 0.n)++ ("fait" ++ "banqueroute")) }}}}} ;"NounPhrase_0 a fait banqueroute" ;
|
||||||
lincat Heading = {s : Str ;n : ResFra.Num ;g : ResFra.Gen }= {s = str @ 0 ;n = <ResFra.sg>;g = <ResFra.masc>} ;"Heading" ;
|
lincat Heading = {s : Str ;n : ResFra.Num ;g : ResFra.Gen }= {s = str @ 0 ;n = <ResFra.sg>;g = <ResFra.masc>} ;"Heading" ;
|
||||||
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Bonjour" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Bonjour Recipient_0" ;
|
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Bonjour" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Bonjour Recipient_0" ;
|
||||||
lin Honour : Letter.Mode = \ -> {s = table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "avons" ++ ("l'honneur" ++ "de" ++ ("vous" ++ "informer" ++ "que")) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "avons" ++ ("l'honneur" ++ "de" ++ ("t'informer" ++ "que")) }}} ;(ResFra.depnum)=> table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "avons" ++ ("l'honneur" ++ "de" ++ ("vous" ++ "informer" ++ "que")) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "j'ai" ++ ("l'honneur" ++ "de" ++ ("t'informer" ++ "que")) }}} ;(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "j'ai" ++ ("l'honneur" ++ "de" ++ ("vous" ++ "informer" ++ "que")) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "j'ai" ++ ("l'honneur" ++ "de" ++ ("t'informer" ++ "que")) }}}}} ;"j'ai (l'honneur de)t'informer que" ;
|
lin Honour : Letter.Mode = \ -> {s = table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "avons" ++ ("l'honneur" ++ "de" ++ ("vous" ++ "informer" ++ "que")) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "avons" ++ ("l'honneur" ++ "de" ++ ("t'informer" ++ "que")) }}} ;(ResFra.depnum)=> table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "avons" ++ ("l'honneur" ++ "de" ++ ("vous" ++ "informer" ++ "que")) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "j'ai" ++ ("l'honneur" ++ "de" ++ ("t'informer" ++ "que")) }}} ;(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "j'ai" ++ ("l'honneur" ++ "de" ++ ("vous" ++ "informer" ++ "que")) } ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "j'ai" ++ ("l'honneur" ++ "de" ++ ("t'informer" ++ "que")) }}}}} ;"j'ai (l'honneur de)t'informer que" ;
|
||||||
lin ILoveYou : Letter.Sentence = \ -> {s = table ResFra.DepNum {(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ ("vous" ++ "aime")} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "t'aime" }}} ;(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ ("vous" ++ "aimons")} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "t'aimons" }}} ;(ResFra.depnum)=> table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "t'aime" } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ ("vous" ++ "aimons")}}}}} ;"je t'aime" ;
|
lin ILoveYou : Letter.Sentence = \ -> {s = table ResFra.DepNum {(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ ("vous" ++ "aime")} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "t'aime" }}} ;(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ ("vous" ++ "aimons")} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "t'aimons" }}} ;(ResFra.depnum)=> table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "t'aime" } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ ("vous" ++ "aimons")}}}}} ;"je t'aime" ;
|
||||||
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.sg>! <ResFra.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(Amicalement &-)Author_0" ;
|
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> "Amicalement" ++ "&-" ++ Author @ 0.s ! <ResFra.sg>! <ResFra.masc>}} ;n = Author @ 0.n ;g = Author @ 0.g } ;"(Amicalement &-)Author_0" ;
|
||||||
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Bonjour" ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Bonjour" ;
|
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Bonjour" ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Bonjour" ;
|
||||||
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
||||||
lincat Message = {s : (ResFra.DepNum => (ResFra.DepGen => (ResFra.Num => (ResFra.Gen => Str)))) }= {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}}}} ;"Message" ;
|
lincat Message = {s : (ResFra.DepNum => (ResFra.DepGen => (ResFra.Num => (ResFra.Gen => Str)))) }= {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}}}} ;"Message" ;
|
||||||
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.g)! (Heading @ 0.n)! (Heading @ 0.g)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.g)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.g)! (Heading @ 0.n)! (Heading @ 0.g)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.g)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
||||||
lincat Mode = {s : (ResFra.DepNum => (ResFra.DepGen => (ResFra.Num => (ResFra.Gen => Str)))) }= {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}}}} ;"Mode" ;
|
lincat Mode = {s : (ResFra.DepNum => (ResFra.DepGen => (ResFra.Num => (ResFra.Gen => Str)))) }= {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}}}} ;"Mode" ;
|
||||||
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.depgen)=> table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.masc>}}} ;(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.depgen)=> table ResLine truncated
|
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResFra.DepNum {(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.depgen)=> table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.pl>> ! <ResFra.depgen>! <ResFra.sg>! <ResFra.masc>}}} ;(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.fem>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.pl>! <ResFra.masc>} ;(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.fem>;(ResFra.masc)=> Mode @ 0.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>++ Sentence @ 1.s ! <ResFra.cnum <ResFra.sg>> ! <ResFra.cgen <ResFra.masc>> ! <ResFra.sg>! <ResFra.masc>}} ;(ResFra.depgen)=> table ResLine truncated
|
||||||
lin Mother : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "maman" }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.fem>> } ;"maman" ;
|
lin Mother : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "maman" }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.fem>> } ;"maman" ;
|
||||||
lin Name : Letter.Author = \ String @ 0 -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> String @ 0.s }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.masc>> } ;"String_0" ;
|
lin Name : Letter.Author = \ String @ 0 -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> String @ 0.s }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.masc>> } ;"String_0" ;
|
||||||
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFra.sg>;g = <ResFra.masc>} ;"String_0" ;
|
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFra.sg>;g = <ResFra.masc>} ;"String_0" ;
|
||||||
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFra.sg>;g = <ResFra.fem>} ;"String_0" ;
|
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResFra.sg>;g = <ResFra.fem>} ;"String_0" ;
|
||||||
lincat NounPhrase = {s : Str ;n : ResFra.Num ;g : ResFra.Gen }= {s = str @ 0 ;n = <ResFra.sg>;g = <ResFra.masc>} ;"NounPhrase" ;
|
lincat NounPhrase = {s : Str ;n : ResFra.Num ;g : ResFra.Gen }= {s = str @ 0 ;n = <ResFra.sg>;g = <ResFra.masc>} ;"NounPhrase" ;
|
||||||
lin OurCustomers : Letter.NounPhrase = \ -> {s = "nos" ++ "clients" ;n = <ResFra.pl>;g = <ResFra.masc>} ;"nos clients" ;
|
lin OurCustomers : Letter.NounPhrase = \ -> {s = "nos" ++ "clients" ;n = <ResFra.pl>;g = <ResFra.masc>} ;"nos clients" ;
|
||||||
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Recipient_0" ;
|
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;g = Recipient @ 0.g } ;"Recipient_0" ;
|
||||||
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
||||||
lincat Position = {s : (ResFra.Num => (ResFra.Gen => Str)) }= {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}} ;"Position" ;
|
lincat Position = {s : (ResFra.Num => (ResFra.Gen => Str)) }= {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}} ;"Position" ;
|
||||||
lin President : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "le" ++ "président" }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.masc>> } ;"le président" ;
|
lin President : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "le" ++ "président" }} ;n = <ResFra.cnum <ResFra.sg>> ;g = <ResFra.cgen <ResFra.masc>> } ;"le président" ;
|
||||||
lin ProjectManager : Letter.Position = \ -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "chef" ++ ("de" ++ "projet")} ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "chefs" ++ ("de" ++ "projets")}}} ;"chef de projet" ;
|
lin ProjectManager : Letter.Position = \ -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "chef" ++ ("de" ++ "projet")} ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "chefs" ++ ("de" ++ "projets")}}} ;"chef de projet" ;
|
||||||
lincat Recipient = {s : Str ;n : ResFra.Num ;g : ResFra.Gen }= {s = str @ 0 ;n = <ResFra.sg>;g = <ResFra.masc>} ;"Recipient" ;
|
lincat Recipient = {s : Str ;n : ResFra.Num ;g : ResFra.Gen }= {s = str @ 0 ;n = <ResFra.sg>;g = <ResFra.masc>} ;"Recipient" ;
|
||||||
lin Regret : Letter.Mode = \ -> {s = table ResFra.DepNum {(ResFra.depnum)=> table ResFra.DepGen {(ResFra.depgen)=> table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) ;(ResFra.masc)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) ;(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) }}} ;(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.depgen)=> table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) ;(ResFra.masc)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) }}} ;(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)=> table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) ;(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }}}}} ;"(je suis)désolée d'informer que" ;
|
lin Regret : Letter.Mode = \ -> {s = table ResFra.DepNum {(ResFra.depnum)=> table ResFra.DepGen {(ResFra.depgen)=> table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) ;(ResFra.masc)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) ;(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) }}} ;(ResFra.cnum (ResFra.sg)) => table ResFra.DepGen {(ResFra.depgen)=> table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) ;(ResFra.masc)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolé" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "je" ++ "suis" ++ ("désolée" ++ ("d'informer" ++ "que")) }}} ;(ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)=> table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) ;(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolées" ++ ("d'informer" ++ "que")) }} ;(ResFra.cgen (ResFra.masc)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "nous" ++ "sommes" ++ ("désolés" ++ ("d'informer" ++ "que")) }}}}} ;"(je suis)désolée d'informer que" ;
|
||||||
lin Senior : Letter.Position = \ -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "responsable" ++ "scientifique" } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "responsables" ++ "scientifiques" }}} ;"responsable scientifique" ;
|
lin Senior : Letter.Position = \ -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "responsable" ++ "scientifique" } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> "responsables" ++ "scientifiques" }}} ;"responsable scientifique" ;
|
||||||
lincat Sentence = {s : (ResFra.DepNum => (ResFra.DepGen => (ResFra.Num => (ResFra.Gen => Str)))) }= {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
lincat Sentence = {s : (ResFra.DepNum => (ResFra.DepGen => (ResFra.Num => (ResFra.Gen => Str)))) }= {s = table ResFra.DepNum {(ResFra.depnum)(ResFra.cnum (ResFra.sg)) (ResFra.cnum (ResFra.pl)) => table ResFra.DepGen {(ResFra.depgen)(ResFra.cgen (ResFra.masc)) (ResFra.cgen (ResFra.fem)) => table ResFra.Num {(ResFra.sg)(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)(ResFra.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
||||||
lin Spouse : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)=> "ta" ++ "femme" ;(ResFra.fem)=> "ton" ++ "mari" } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "vos" ++ "femmes" ;(ResFra.fem)=> "vos" ++ "maris" }} ;n = <ResFra.depnum>;g = <ResFra.depgen>} ;"ta femme" ;
|
lin Spouse : Letter.Author = \ -> {s = table ResFra.Num {(ResFra.sg)=> table ResFra.Gen {(ResFra.masc)=> "ta" ++ "femme" ;(ResFra.fem)=> "ton" ++ "mari" } ;(ResFra.pl)=> table ResFra.Gen {(ResFra.masc)=> "vos" ++ "femmes" ;(ResFra.fem)=> "vos" ++ "maris" }} ;n = <ResFra.depnum>;g = <ResFra.depgen>} ;"ta femme" ;
|
||||||
}
|
}
|
||||||
resource ResFra = {param DepGen = depgen | cgen ResFra.Gen ;
|
resource ResFra = {param DepGen = depgen | cgen ResFra.Gen ;
|
||||||
param DepNum = depnum | cnum ResFra.Num ;
|
param DepNum = depnum | cnum ResFra.Num ;
|
||||||
param Gen = masc | fem ;
|
param Gen = masc | fem ;
|
||||||
param Kas = nom | acc ;
|
param Kas = nom | acc ;
|
||||||
param Num = sg | pl ;
|
param Num = sg | pl ;
|
||||||
}
|
}
|
||||||
concrete English of Letter = open ResEng in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResEng.Num => (ResEng.Sex => Str)) ;n : ResEng.DepNum ;x : ResEng.Sex }= {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }} ;n = <ResEng.depnum>;x = <ResEng.masc>} ;"Author" ;
|
concrete English of Letter = open ResEng in {flags startcat = Letter ;flags lexer = textlit ;flags unlexer = textlit ;lincat Author = {s : (ResEng.Num => (ResEng.Sex => Str)) ;n : ResEng.DepNum ;x : ResEng.Sex }= {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }} ;n = <ResEng.depnum>;x = <ResEng.masc>} ;"Author" ;
|
||||||
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.sg>! <ResEng.masc>}}}}} ;"(you have been promoted to)Position_0" ;
|
lin BePromoted : Letter.Sentence = \ Position @ 0 -> {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> "you" ++ ("have" ++ ("been" ++ ("promoted" ++ "to")))++ Position @ 0.s ! <ResEng.sg>! <ResEng.masc>}}}}} ;"(you have been promoted to)Position_0" ;
|
||||||
lin ColleagueHe : Letter.Recipient = \ -> {s = "colleague" ;n = <ResEng.sg>;x = <ResEng.masc>} ;"colleague" ;
|
lin ColleagueHe : Letter.Recipient = \ -> {s = "colleague" ;n = <ResEng.sg>;x = <ResEng.masc>} ;"colleague" ;
|
||||||
lin ColleagueShe : Letter.Recipient = \ -> {s = "colleague" ;n = <ResEng.sg>;x = <ResEng.fem>} ;"colleague" ;
|
lin ColleagueShe : Letter.Recipient = \ -> {s = "colleague" ;n = <ResEng.sg>;x = <ResEng.fem>} ;"colleague" ;
|
||||||
lin ColleaguesHe : Letter.Recipient = \ -> {s = "colleagues" ;n = <ResEng.pl>;x = <ResEng.masc>} ;"colleagues" ;
|
lin ColleaguesHe : Letter.Recipient = \ -> {s = "colleagues" ;n = <ResEng.pl>;x = <ResEng.masc>} ;"colleagues" ;
|
||||||
lin ColleaguesShe : Letter.Recipient = \ -> {s = "colleagues" ;n = <ResEng.pl>;x = <ResEng.fem>} ;"colleagues" ;
|
lin ColleaguesShe : Letter.Recipient = \ -> {s = "colleagues" ;n = <ResEng.pl>;x = <ResEng.fem>} ;"colleagues" ;
|
||||||
lin Company : Letter.NounPhrase = \ -> {s = "our" ++ "company" ;n = <ResEng.sg>} ;"our company" ;
|
lin Company : Letter.NounPhrase = \ -> {s = "our" ++ "company" ;n = <ResEng.sg>} ;"our company" ;
|
||||||
lin Competitor : Letter.NounPhrase = \ -> {s = "our" ++ ("worst" ++ "competitor");n = <ResEng.sg>} ;"our worst competitor" ;
|
lin Competitor : Letter.NounPhrase = \ -> {s = "our" ++ ("worst" ++ "competitor");n = <ResEng.sg>} ;"our worst competitor" ;
|
||||||
lin DarlingHe : Letter.Recipient = \ -> {s = "darling" ;n = <ResEng.sg>;x = <ResEng.masc>} ;"darling" ;
|
lin DarlingHe : Letter.Recipient = \ -> {s = "darling" ;n = <ResEng.sg>;x = <ResEng.masc>} ;"darling" ;
|
||||||
lin DarlingShe : Letter.Recipient = \ -> {s = "darling" ;n = <ResEng.sg>;x = <ResEng.fem>} ;"darling" ;
|
lin DarlingShe : Letter.Recipient = \ -> {s = "darling" ;n = <ResEng.sg>;x = <ResEng.fem>} ;"darling" ;
|
||||||
lin Dean : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "the" ++ "Dean" }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.masc>} ;"the Dean" ;
|
lin Dean : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "the" ++ "Dean" }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.masc>} ;"the Dean" ;
|
||||||
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = "Dear" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Dear Recipient_0" ;
|
lin DearRec : Letter.Heading = \ Recipient @ 0 -> {s = "Dear" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Dear Recipient_0" ;
|
||||||
lincat Ending = {s : (ResEng.Num => (ResEng.Sex => Str)) ;n : ResEng.DepNum ;x : ResEng.Sex }= {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }} ;n = <ResEng.depnum>;x = <ResEng.masc>} ;"Ending" ;
|
lincat Ending = {s : (ResEng.Num => (ResEng.Sex => Str)) ;n : ResEng.DepNum ;x : ResEng.Sex }= {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }} ;n = <ResEng.depnum>;x = <ResEng.masc>} ;"Ending" ;
|
||||||
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.sg>! <ResEng.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(Sincerely yours &-)Author_0" ;
|
lin FormalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> "Sincerely" ++ ("yours" ++ "&-")++ Author @ 0.s ! <ResEng.sg>! <ResEng.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(Sincerely yours &-)Author_0" ;
|
||||||
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> NounPhrase @ 0.s ++ (table ResEng.Num {(ResEng.sg)=> "has" ;(ResEng.pl)=> "have" }! (NounPhrase @ 0.n)++ ("gone" ++ "bankrupt")) }}}}} ;"NounPhrase_0 has gone bankrupt" ;
|
lin GoBankrupt : Letter.Sentence = \ NounPhrase @ 0 -> {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> NounPhrase @ 0.s ++ (table ResEng.Num {(ResEng.sg)=> "has" ;(ResEng.pl)=> "have" }! (NounPhrase @ 0.n)++ ("gone" ++ "bankrupt")) }}}}} ;"NounPhrase_0 has gone bankrupt" ;
|
||||||
lincat Heading = {s : Str ;n : ResEng.Num ;x : ResEng.Sex }= {s = str @ 0 ;n = <ResEng.sg>;x = <ResEng.masc>} ;"Heading" ;
|
lincat Heading = {s : Str ;n : ResEng.Num ;x : ResEng.Sex }= {s = str @ 0 ;n = <ResEng.sg>;x = <ResEng.masc>} ;"Heading" ;
|
||||||
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Hello" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hello Recipient_0" ;
|
lin HelloRec : Letter.Heading = \ Recipient @ 0 -> {s = "Hello" ++ Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hello Recipient_0" ;
|
||||||
lin Honour : Letter.Mode = \ -> {s = table ResEng.DepNum {(ResEng.depnum)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) } ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) }}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) }}} ;(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) }}}}} ;"I have the honour to inform you that" ;
|
lin Honour : Letter.Mode = \ -> {s = table ResEng.DepNum {(ResEng.depnum)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) } ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) }}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) }}} ;(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("have" ++ ("the" ++ ("honour" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))) }}}}} ;"I have the honour to inform you that" ;
|
||||||
lin ILoveYou : Letter.Sentence = \ -> {s = table ResEng.DepNum {(ResEng.depnum)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("love" ++ "you")} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("love" ++ "you")}}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("love" ++ "you")}}} ;(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("love" ++ "you")}}}}} ;"I love you" ;
|
lin ILoveYou : Letter.Sentence = \ -> {s = table ResEng.DepNum {(ResEng.depnum)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("love" ++ "you")} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("love" ++ "you")}}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("love" ++ "you")}}} ;(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("love" ++ "you")}}}}} ;"I love you" ;
|
||||||
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.sg>! <ResEng.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(With best regards &-)Author_0" ;
|
lin InformalEnding : Letter.Ending = \ Author @ 0 -> {s = table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> "With" ++ ("best" ++ ("regards" ++ "&-")) ++ Author @ 0.s ! <ResEng.sg>! <ResEng.masc>}} ;n = Author @ 0.n ;x = Author @ 0.x } ;"(With best regards &-)Author_0" ;
|
||||||
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Hello" ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hello" ;
|
lin JustHello : Letter.Heading = \ Recipient @ 0 -> {s = "Hello" ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Hello" ;
|
||||||
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
lincat Letter = {s : Str }= {s = str @ 0 } ;"Letter" ;
|
||||||
lincat Message = {s : (ResEng.DepNum => (ResEng.Sex => (ResEng.Num => (ResEng.Sex => Str)))) }= {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}}}} ;"Message" ;
|
lincat Message = {s : (ResEng.DepNum => (ResEng.Sex => (ResEng.Num => (ResEng.Sex => Str)))) }= {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}}}} ;"Message" ;
|
||||||
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.x)! (Heading @ 0.n)! (Heading @ 0.x)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.x)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
lin MkLetter : Letter.Letter = \ Heading @ 0, Message @ 1, Ending @ 2 -> {s = Heading @ 0.s ++ ("," ++ ("&-" ++ (Message @ 1.s ! (Ending @ 2.n)! (Ending @ 2.x)! (Heading @ 0.n)! (Heading @ 0.x)++ ("." ++ ("&-" ++ Ending @ 2.s ! (Heading @ 0.n)! (Heading @ 0.x)))))) } ;"Heading_0 , &- Message_1 . &- Ending_2" ;
|
||||||
lincat Mode = {s : (ResEng.DepNum => (ResEng.Sex => (ResEng.Num => (ResEng.Sex => Str)))) }= {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}}}} ;"Mode" ;
|
lincat Mode = {s : (ResEng.DepNum => (ResEng.Sex => (ResEng.Num => (ResEng.Sex => Str)))) }= {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}}}} ;"Mode" ;
|
||||||
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResEng.DepNum {(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>}} ;(ResEng.masc)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>}}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>}} ;(ResEng.masc)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>}}} ;(ResEng.depnum)=> table ResEng.Sex {(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>}} ;(ResEng.masc)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>Line truncated
|
lin ModeSent : Letter.Message = \ Mode @ 0, Sentence @ 1 -> {s = table ResEng.DepNum {(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>}} ;(ResEng.masc)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.pl>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>}}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>}} ;(ResEng.masc)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.cnum <ResEng.sg>> ! <ResEng.masc>! <ResEng.sg>! <ResEng.masc>}}} ;(ResEng.depnum)=> table ResEng.Sex {(ResEng.fem)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.fem>! <ResEng.sg>! <ResEng.masc>}} ;(ResEng.masc)=> table ResEng.Num {(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.pl>! <ResEng.masc>} ;(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>++ Sentence @ 1.s ! <ResEng.depnum>! <ResEng.masc>! <ResEng.sg>! <ResEng.fem>;(ResEng.masc)=> Mode @ 0.s ! <ResEng.depnum>! <ResEng.masc>Line truncated
|
||||||
lin Mother : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "Mom" }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.fem>} ;"Mom" ;
|
lin Mother : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "Mom" }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.fem>} ;"Mom" ;
|
||||||
lin Name : Letter.Author = \ String @ 0 -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> String @ 0.s }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.masc>} ;"String_0" ;
|
lin Name : Letter.Author = \ String @ 0 -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> String @ 0.s }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.masc>} ;"String_0" ;
|
||||||
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResEng.sg>;x = <ResEng.masc>} ;"String_0" ;
|
lin NameHe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResEng.sg>;x = <ResEng.masc>} ;"String_0" ;
|
||||||
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResEng.sg>;x = <ResEng.fem>} ;"String_0" ;
|
lin NameShe : Letter.Recipient = \ String @ 0 -> {s = String @ 0.s ;n = <ResEng.sg>;x = <ResEng.fem>} ;"String_0" ;
|
||||||
lincat NounPhrase = {s : Str ;n : ResEng.Num }= {s = str @ 0 ;n = <ResEng.sg>} ;"NounPhrase" ;
|
lincat NounPhrase = {s : Str ;n : ResEng.Num }= {s = str @ 0 ;n = <ResEng.sg>} ;"NounPhrase" ;
|
||||||
lin OurCustomers : Letter.NounPhrase = \ -> {s = "our" ++ "customers" ;n = <ResEng.pl>} ;"our customers" ;
|
lin OurCustomers : Letter.NounPhrase = \ -> {s = "our" ++ "customers" ;n = <ResEng.pl>} ;"our customers" ;
|
||||||
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Recipient_0" ;
|
lin PlainRec : Letter.Heading = \ Recipient @ 0 -> {s = Recipient @ 0.s ;n = Recipient @ 0.n ;x = Recipient @ 0.x } ;"Recipient_0" ;
|
||||||
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
lin PlainSent : Letter.Message = \ Sentence @ 0 -> {s = Sentence @ 0.s } ;"Sentence_0" ;
|
||||||
lincat Position = {s : (ResEng.Num => (ResEng.Sex => Str)) }= {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}} ;"Position" ;
|
lincat Position = {s : (ResEng.Num => (ResEng.Sex => Str)) }= {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}} ;"Position" ;
|
||||||
lin President : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "the" ++ "President" }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.masc>} ;"the President" ;
|
lin President : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "the" ++ "President" }} ;n = <ResEng.cnum <ResEng.sg>> ;x = <ResEng.masc>} ;"the President" ;
|
||||||
lin ProjectManager : Letter.Position = \ -> {s = table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "a" ++ ("project" ++ "manager")} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "project" ++ "managers" }}} ;"a project manager" ;
|
lin ProjectManager : Letter.Position = \ -> {s = table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "a" ++ ("project" ++ "manager")} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "project" ++ "managers" }}} ;"a project manager" ;
|
||||||
lincat Recipient = {s : Str ;n : ResEng.Num ;x : ResEng.Sex }= {s = str @ 0 ;n = <ResEng.sg>;x = <ResEng.masc>} ;"Recipient" ;
|
lincat Recipient = {s : Str ;n : ResEng.Num ;x : ResEng.Sex }= {s = str @ 0 ;n = <ResEng.sg>;x = <ResEng.masc>} ;"Recipient" ;
|
||||||
lin Regret : Letter.Mode = \ -> {s = table ResEng.DepNum {(ResEng.depnum)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("am" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("are" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))}}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("am" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))}}} ;(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("are" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))}}}}} ;"I am sorry to inform you that" ;
|
lin Regret : Letter.Mode = \ -> {s = table ResEng.DepNum {(ResEng.depnum)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("am" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("are" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))}}} ;(ResEng.cnum (ResEng.sg)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "I" ++ ("am" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))}}} ;(ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "we" ++ ("are" ++ ("sorry" ++ ("to" ++ ("inform" ++ ("you" ++ "that")))))}}}}} ;"I am sorry to inform you that" ;
|
||||||
lin Senior : Letter.Position = \ -> {s = table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "a" ++ ("senior" ++ "fellow")} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "senior" ++ "fellows" }}} ;"a senior fellow" ;
|
lin Senior : Letter.Position = \ -> {s = table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "a" ++ ("senior" ++ "fellow")} ;(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> "senior" ++ "fellows" }}} ;"a senior fellow" ;
|
||||||
lincat Sentence = {s : (ResEng.DepNum => (ResEng.Sex => (ResEng.Num => (ResEng.Sex => Str)))) }= {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
lincat Sentence = {s : (ResEng.DepNum => (ResEng.Sex => (ResEng.Num => (ResEng.Sex => Str)))) }= {s = table ResEng.DepNum {(ResEng.depnum)(ResEng.cnum (ResEng.sg)) (ResEng.cnum (ResEng.pl)) => table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> table ResEng.Num {(ResEng.sg)(ResEng.pl)=> table ResEng.Sex {(ResEng.masc)(ResEng.fem)=> str @ 0 }}}}} ;"Sentence" ;
|
||||||
lin Spouse : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "your" ++ "husband" ;(ResEng.masc)=> "your" ++ "wife" } ;(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "your" ++ "husbands" ;(ResEng.masc)=> "your" ++ "wives" }} ;n = <ResEng.depnum>;x = <ResEng.masc>} ;"your wife" ;
|
lin Spouse : Letter.Author = \ -> {s = table ResEng.Num {(ResEng.sg)=> table ResEng.Sex {(ResEng.fem)=> "your" ++ "husband" ;(ResEng.masc)=> "your" ++ "wife" } ;(ResEng.pl)=> table ResEng.Sex {(ResEng.fem)=> "your" ++ "husbands" ;(ResEng.masc)=> "your" ++ "wives" }} ;n = <ResEng.depnum>;x = <ResEng.masc>} ;"your wife" ;
|
||||||
}
|
}
|
||||||
resource ResEng = {param DepNum = depnum | cnum ResEng.Num ;
|
resource ResEng = {param DepNum = depnum | cnum ResEng.Num ;
|
||||||
param Kas = nom | acc ;
|
param Kas = nom | acc ;
|
||||||
param Num = sg | pl ;
|
param Num = sg | pl ;
|
||||||
param Sex = masc | fem ;
|
param Sex = masc | fem ;
|
||||||
}
|
}
|
||||||
+187
-84
@@ -14,6 +14,7 @@ import java.util.*;
|
|||||||
public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
||||||
KeyListener, FocusListener {
|
KeyListener, FocusListener {
|
||||||
|
|
||||||
|
private static Color color = Color.green;
|
||||||
private int[] sizes = {14,18,22,26,30};
|
private int[] sizes = {14,18,22,26,30};
|
||||||
private String[] envfonts;
|
private String[] envfonts;
|
||||||
private Font font;
|
private Font font;
|
||||||
@@ -31,12 +32,13 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
public MouseEvent m2;
|
public MouseEvent m2;
|
||||||
public static String selectedText="";
|
public static String selectedText="";
|
||||||
|
|
||||||
public static boolean debug = true;
|
public static boolean debug = false;
|
||||||
public static boolean debug3 = false;
|
public static boolean debug3 = false;
|
||||||
public static boolean debug2 = true;
|
public static boolean debug2 = true;
|
||||||
public static boolean selectionCheck = false;
|
public static boolean selectionCheck = false;
|
||||||
public static String focusPosition = "";
|
public static LinPosition focusPosition ;
|
||||||
public static String stringToAppend = "";
|
public static String stringToAppend = "";
|
||||||
|
//stack for storing the current position:
|
||||||
public static Vector currentPosition = new Vector();
|
public static Vector currentPosition = new Vector();
|
||||||
public static int selStart = -1;
|
public static int selStart = -1;
|
||||||
public static int selEnd = -1;
|
public static int selEnd = -1;
|
||||||
@@ -811,12 +813,24 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void outputAppend(){
|
public void outputAppend(){
|
||||||
int i, j, k, l, l2, selectionLength, m=0, n=0;
|
int i, j, j2, k, l, l2, selectionLength, m=0, n=0;
|
||||||
|
result=result.replace('\n',' ');
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("INPUT:"+result);
|
System.out.println("INPUT:"+result);
|
||||||
l = result.indexOf("<focus");
|
l = result.indexOf("<focus");
|
||||||
i=result.indexOf("type=",l);
|
i=result.indexOf("type=",l);
|
||||||
j=result.indexOf('>',i);
|
j=result.indexOf('>',i);
|
||||||
|
// status incorrect ?:
|
||||||
|
if (result.substring(i,j).indexOf("incorrect")!=-1)
|
||||||
|
{
|
||||||
|
j2 = result.indexOf("status");
|
||||||
|
color = Color.red;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
j2 = j;
|
||||||
|
color = Color.green;
|
||||||
|
}
|
||||||
l2 = result.indexOf("focus");
|
l2 = result.indexOf("focus");
|
||||||
if (l2!=-1){
|
if (l2!=-1){
|
||||||
// in case focus tag is cut into two lines:
|
// in case focus tag is cut into two lines:
|
||||||
@@ -827,8 +841,9 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
if (debug2) System.out.println("POSITION END: "+n);
|
if (debug2) System.out.println("POSITION END: "+n);
|
||||||
if (debug)
|
if (debug)
|
||||||
System.out.println("form Lin1: "+result);
|
System.out.println("form Lin1: "+result);
|
||||||
focusPosition = result.substring(m+9,n+1);
|
focusPosition = new LinPosition(result.substring(m+9,n+1),
|
||||||
statusLabel.setText(" "+result.substring(i+5,j));
|
result.substring(m,j).indexOf("incorrect")==-1);
|
||||||
|
statusLabel.setText(" "+result.substring(i+5,j2));
|
||||||
//cutting <focus>
|
//cutting <focus>
|
||||||
result= result.substring(0,l)+result.substring(j+2);
|
result= result.substring(0,l)+result.substring(j+2);
|
||||||
i=result.indexOf("/focus",l);
|
i=result.indexOf("/focus",l);
|
||||||
@@ -932,7 +947,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
}
|
}
|
||||||
if (visible) {
|
if (visible) {
|
||||||
if (!firstLin)
|
if (!firstLin)
|
||||||
appendMarked("************"+'\n',-1,-1);
|
appendMarked("\n************"+'\n',-1,-1);
|
||||||
if (debug) System.out.println("linearization for the language: "+result);
|
if (debug) System.out.println("linearization for the language: "+result);
|
||||||
outputAppend();
|
outputAppend();
|
||||||
}
|
}
|
||||||
@@ -952,6 +967,18 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
lin = lin.substring(lin.indexOf("</lin>"));
|
lin = lin.substring(lin.indexOf("</lin>"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i<outputVector.size(); i++)
|
||||||
|
{
|
||||||
|
MarkedArea ma = (MarkedArea)outputVector.elementAt(i) ;
|
||||||
|
int begin = ma.begin ;
|
||||||
|
int end = ma.end ;
|
||||||
|
System.out.println("BEGIN: "+ begin +" END: "+end+" "+ma.words+" "+ma.position.position);
|
||||||
|
if (!ma.position.correctPosition)
|
||||||
|
try {
|
||||||
|
output.getHighlighter().addHighlight(begin, end, new DefaultHighlighter.DefaultHighlightPainter(Color.red));
|
||||||
|
System.out.println("HIGHLIGHT: "+output.getText().substring(begin, end));
|
||||||
|
} catch (Exception e) {System.out.println("highlighting problem!");}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fontEveryWhere(Font font)
|
public void fontEveryWhere(Font font)
|
||||||
@@ -1053,6 +1080,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
if (!filter.getSelectedItem().equals("Filter"))
|
if (!filter.getSelectedItem().equals("Filter"))
|
||||||
{
|
{
|
||||||
send("f " + filter.getSelectedItem());
|
send("f " + filter.getSelectedItem());
|
||||||
|
System.out.println("sending f " + filter.getSelectedItem());
|
||||||
filter.setSelectedIndex(0);
|
filter.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1278,6 +1306,11 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
|
|
||||||
fileString="";
|
fileString="";
|
||||||
grammar.setText("No Topic ");
|
grammar.setText("No Topic ");
|
||||||
|
|
||||||
|
System.out.println("new Topic is working");
|
||||||
|
// bug in GF, do reset manually:
|
||||||
|
send("e");
|
||||||
|
|
||||||
send("e "+ file.getPath().replace('\\','/'));
|
send("e "+ file.getPath().replace('\\','/'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1649,11 +1682,12 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
}
|
}
|
||||||
public String findMax(int begin, int end)
|
public String findMax(int begin, int end)
|
||||||
{
|
{
|
||||||
String max = ((MarkedArea)outputVector.elementAt(begin)).position;
|
String max = (((MarkedArea)outputVector.elementAt(begin)).position).position;
|
||||||
for (int i = begin+1; i <= end; i++)
|
for (int i = begin+1; i <= end; i++)
|
||||||
max = comparePositions(max,((MarkedArea)outputVector.elementAt(i)).position);
|
max = comparePositions(max,(((MarkedArea)outputVector.elementAt(i)).position).position);
|
||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void caretUpdate(CaretEvent e)
|
public void caretUpdate(CaretEvent e)
|
||||||
{
|
{
|
||||||
String jPosition ="", iPosition="", position="";
|
String jPosition ="", iPosition="", position="";
|
||||||
@@ -1679,7 +1713,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
{
|
{
|
||||||
System.out.print("element: "+k+" begin "+((MarkedArea)outputVector.elementAt(k)).begin+" ");
|
System.out.print("element: "+k+" begin "+((MarkedArea)outputVector.elementAt(k)).begin+" ");
|
||||||
System.out.print(" end: "+((MarkedArea)outputVector.elementAt(k)).end+" ");
|
System.out.print(" end: "+((MarkedArea)outputVector.elementAt(k)).end+" ");
|
||||||
System.out.print(" position: "+((MarkedArea)outputVector.elementAt(k)).position+" ");
|
System.out.print(" position: "+(((MarkedArea)outputVector.elementAt(k)).position).position+" ");
|
||||||
System.out.println(" words: "+((MarkedArea)outputVector.elementAt(k)).words);
|
System.out.println(" words: "+((MarkedArea)outputVector.elementAt(k)).words);
|
||||||
}
|
}
|
||||||
// localizing end:
|
// localizing end:
|
||||||
@@ -1693,14 +1727,14 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
if ((j<outputVector.size()))
|
if ((j<outputVector.size()))
|
||||||
{
|
{
|
||||||
jElement = (MarkedArea)outputVector.elementAt(j);
|
jElement = (MarkedArea)outputVector.elementAt(j);
|
||||||
jPosition = jElement.position;
|
jPosition = jElement.position.position;
|
||||||
// less & before:
|
// less & before:
|
||||||
if (i==-1)
|
if (i==-1)
|
||||||
{ // less:
|
{ // less:
|
||||||
if (end>=jElement.begin)
|
if (end>=jElement.begin)
|
||||||
{
|
{
|
||||||
iElement = (MarkedArea)outputVector.elementAt(0);
|
iElement = (MarkedArea)outputVector.elementAt(0);
|
||||||
iPosition = iElement.position;
|
iPosition = iElement.position.position;
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("Less: "+jPosition+" and "+iPosition);
|
System.out.println("Less: "+jPosition+" and "+iPosition);
|
||||||
position = findMax(0,j);
|
position = findMax(0,j);
|
||||||
@@ -1718,7 +1752,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
iElement = (MarkedArea)outputVector.elementAt(i);
|
iElement = (MarkedArea)outputVector.elementAt(i);
|
||||||
iPosition = iElement.position;
|
iPosition = iElement.position.position;
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("SELECTED TEXT Just: "+iPosition +" and "+jPosition+"\n");
|
System.out.println("SELECTED TEXT Just: "+iPosition +" and "+jPosition+"\n");
|
||||||
position = findMax(i,j);
|
position = findMax(i,j);
|
||||||
@@ -1733,12 +1767,12 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
if (i>=0)
|
if (i>=0)
|
||||||
{
|
{
|
||||||
iElement = (MarkedArea)outputVector.elementAt(i);
|
iElement = (MarkedArea)outputVector.elementAt(i);
|
||||||
iPosition = iElement.position;
|
iPosition = iElement.position.position;
|
||||||
// more
|
// more
|
||||||
if (start<=iElement.end)
|
if (start<=iElement.end)
|
||||||
{
|
{
|
||||||
jElement = (MarkedArea)outputVector.elementAt(outputVector.size()-1);
|
jElement = (MarkedArea)outputVector.elementAt(outputVector.size()-1);
|
||||||
jPosition = jElement.position;
|
jPosition = jElement.position.position;
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("MORE: "+iPosition+ " and "+jPosition);
|
System.out.println("MORE: "+iPosition+ " and "+jPosition);
|
||||||
position = findMax(i,outputVector.size()-1);
|
position = findMax(i,outputVector.size()-1);
|
||||||
@@ -1756,9 +1790,9 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
// bigger:
|
// bigger:
|
||||||
{
|
{
|
||||||
iElement = (MarkedArea)outputVector.elementAt(0);
|
iElement = (MarkedArea)outputVector.elementAt(0);
|
||||||
iPosition = iElement.position;
|
iPosition = iElement.position.position;
|
||||||
jElement = (MarkedArea)outputVector.elementAt(outputVector.size()-1);
|
jElement = (MarkedArea)outputVector.elementAt(outputVector.size()-1);
|
||||||
jPosition = jElement.position;
|
jPosition = jElement.position.position;
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("BIGGER: "+iPosition +" and "+jPosition+"\n");
|
System.out.println("BIGGER: "+iPosition +" and "+jPosition+"\n");
|
||||||
if (debug2)
|
if (debug2)
|
||||||
@@ -1778,13 +1812,15 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
System.out.println("where selection start is: "+selectionStart);
|
System.out.println("where selection start is: "+selectionStart);
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("where selection end is: "+selectionEnd);
|
System.out.println("where selection end is: "+selectionEnd);
|
||||||
|
if (debug2&&(selectionStart>-1))
|
||||||
|
System.out.println("where selection is: "+s.substring(selectionStart,selectionEnd));
|
||||||
currentLength = 0;
|
currentLength = 0;
|
||||||
newLength=0;
|
newLength=0;
|
||||||
oldLength = output.getText().length();
|
oldLength = output.getText().length();
|
||||||
int j, l, l2, n, pos, selStartTotal, selEndTotal, selEndT;
|
int j, l, l2, n, pos, selStartTotal, selEndTotal, selEndT;
|
||||||
restString = s;
|
restString = s;
|
||||||
int m2, m1;
|
int m2, m1;
|
||||||
String position = "";
|
LinPosition position ;
|
||||||
// if ((selectionStart>-1)&&(selectionEnd>=selectionStart))
|
// if ((selectionStart>-1)&&(selectionEnd>=selectionStart))
|
||||||
if (selectionStart>-1)
|
if (selectionStart>-1)
|
||||||
{
|
{
|
||||||
@@ -1796,25 +1832,28 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
selectionCheck = (s.substring(selStart, selEnd).indexOf("<")==-1);
|
selectionCheck = (s.substring(selStart, selEnd).indexOf("<")==-1);
|
||||||
l = restString.indexOf("<subtree");
|
l = restString.indexOf("<subtree");
|
||||||
l2 = restString.indexOf("</subtree");
|
l2 = restString.indexOf("</subtree");
|
||||||
|
// cutting subtree-tags:
|
||||||
while ((l2>-1)||(l>-1))
|
while ((l2>-1)||(l>-1))
|
||||||
{
|
{
|
||||||
if ((l2==-1)||((l<l2)&&(l>-1)))
|
if ((l2==-1)||((l<l2)&&(l>-1)))
|
||||||
{
|
{
|
||||||
j = restString.indexOf(">",l);
|
j = restString.indexOf('>',l);
|
||||||
n = restString.indexOf("<",j);
|
n = restString.indexOf("<",j);
|
||||||
m1 = restString.indexOf("[",l);
|
m1 = restString.indexOf('[',l);
|
||||||
m2 = restString.indexOf("]",l);
|
m2 = restString.indexOf(']',l);
|
||||||
//getting position:
|
//getting position:
|
||||||
position = restString.substring(m1,m2+1);
|
position = new LinPosition(restString.substring(m1,m2+1),
|
||||||
|
restString.substring(l,j).indexOf("incorrect")==-1);
|
||||||
// something before the tag:
|
// something before the tag:
|
||||||
if (l-currentLength>1)
|
if (l-currentLength>1)
|
||||||
{
|
{
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("SOMETHING BEFORE THE TAG");
|
System.out.println("SOMETHING BEFORE THE TAG");
|
||||||
if (currentPosition.size()>0)
|
if (currentPosition.size()>0)
|
||||||
register(currentLength, l, (String)currentPosition.elementAt(currentPosition.size()-1));
|
register(currentLength, l, (LinPosition)currentPosition.elementAt(currentPosition.size()-1));
|
||||||
else
|
else
|
||||||
register(currentLength, l, "[]");
|
register(currentLength, l, new LinPosition("[]",
|
||||||
|
restString.substring(l,j).indexOf("incorrect")==-1));
|
||||||
}
|
}
|
||||||
// nothing before the tag:
|
// nothing before the tag:
|
||||||
else
|
else
|
||||||
@@ -1837,9 +1876,10 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("SOMETHING BEFORE THE </subtree> TAG");
|
System.out.println("SOMETHING BEFORE THE </subtree> TAG");
|
||||||
if (currentPosition.size()>0)
|
if (currentPosition.size()>0)
|
||||||
register(currentLength, l2, (String)currentPosition.elementAt(currentPosition.size()-1));
|
register(currentLength, l2, (LinPosition)currentPosition.elementAt(currentPosition.size()-1));
|
||||||
else
|
else
|
||||||
register(currentLength, l2, "[]");
|
register(currentLength, l2, new LinPosition("[]",
|
||||||
|
restString.substring(l,l2).indexOf("incorrect")==-1));
|
||||||
currentLength += newLength ;
|
currentLength += newLength ;
|
||||||
}
|
}
|
||||||
// nothing before the tag:
|
// nothing before the tag:
|
||||||
@@ -1862,12 +1902,13 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
((MarkedArea)outputVector.elementAt(outputVector.size()-1)).end -=1;
|
((MarkedArea)outputVector.elementAt(outputVector.size()-1)).end -=1;
|
||||||
if (currentLength>0) currentLength -=1;
|
if (currentLength>0) currentLength -=1;
|
||||||
}
|
}
|
||||||
if (debug2) System.out.println("currentLength: "+currentLength +" old length " +oldLength);
|
if (debug2) System.out.println("currentLength: "+currentLength +" old length " +oldLength);
|
||||||
// register the punctuation:
|
// register the punctuation:
|
||||||
if (currentPosition.size()>0)
|
if (currentPosition.size()>0)
|
||||||
register(currentLength, currentLength+2, (String)currentPosition.elementAt(currentPosition.size()-1));
|
register(currentLength, currentLength+2, (LinPosition)currentPosition.elementAt(currentPosition.size()-1));
|
||||||
else
|
else
|
||||||
register(currentLength, currentLength+2, "[]");
|
register(currentLength, currentLength+2, new LinPosition("[]",
|
||||||
|
true));
|
||||||
currentLength += newLength ;
|
currentLength += newLength ;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1880,8 +1921,8 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
// System.out.println("/subtree index: "+l2 + "<subtree"+l);
|
// System.out.println("/subtree index: "+l2 + "<subtree"+l);
|
||||||
if (debug2)
|
if (debug2)
|
||||||
{
|
{
|
||||||
//System.out.print("<-POSITION: "+l+" CURRLENGTH: "+currentLength);
|
System.out.print("<-POSITION: "+l+" CURRLENGTH: "+currentLength);
|
||||||
//System.out.println(" STRING: "+restString.substring(currentLength));
|
System.out.println(" STRING: "+restString.substring(currentLength));
|
||||||
}
|
}
|
||||||
} //while
|
} //while
|
||||||
if ((selEnd>=selStart)&&(outputVector.size()>0))
|
if ((selEnd>=selStart)&&(outputVector.size()>0))
|
||||||
@@ -1934,19 +1975,20 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// appending:
|
// appending:
|
||||||
output.append(restString);
|
// output.append(restString);
|
||||||
|
output.append(restString.replaceAll("&-","\n "));
|
||||||
if ((selectionEnd>=selectionStart)&&(selectionStart>-1))
|
if ((selectionEnd>=selectionStart)&&(selectionStart>-1))
|
||||||
try {
|
try {
|
||||||
output.getHighlighter().addHighlight(selStart+oldLength, selEnd+oldLength+1, new DefaultHighlighter.DefaultHighlightPainter(Color.green) );
|
output.getHighlighter().addHighlight(selStart+oldLength, selEnd+oldLength+1, new DefaultHighlighter.DefaultHighlightPainter(color) );
|
||||||
selectedText = output.getText().substring(selStart+oldLength, selEnd+oldLength+1);
|
selectedText = output.getText().substring(selStart+oldLength, selEnd+oldLength+1);
|
||||||
// output.getHighlighter().addHighlight(selStart+oldLength, selEnd+oldLength+1, new DefaultHighlighter.DefaultHighlightPainter(Color.white) );
|
// output.getHighlighter().addHighlight(selStart+oldLength, selEnd+oldLength+1, new DefaultHighlighter.DefaultHighlightPainter(Color.white) );
|
||||||
} catch (Exception e) {System.out.println("highlighting problem!");}
|
} catch (Exception e) {System.out.println("highlighting problem!");}
|
||||||
}// s.length()>0
|
}// s.length()>0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void register(int start, int end, String position)
|
public static void register(int start, int end, LinPosition position)
|
||||||
{
|
{
|
||||||
oldLength = output.getText().length();
|
oldLength = output.getText().length();
|
||||||
addedLength = 0;
|
addedLength = 0;
|
||||||
@@ -1957,61 +1999,51 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
if (newLength>0)
|
if (newLength>0)
|
||||||
{
|
{
|
||||||
//focus has a separate position:
|
//focus has a separate position:
|
||||||
if (selectionCheck&&(selEnd<end))
|
if (selectionCheck&&(end>selStart))
|
||||||
{
|
{
|
||||||
selectionCheck=false;
|
selectionCheck=false;
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("SELECTION HAS A SEPARATE POSITION");
|
System.out.println("SELECTION HAS A SEPARATE POSITION");
|
||||||
// selection Second:
|
if (debug2)
|
||||||
if (end-selEnd<=3)
|
System.out.println("SELECTION: "+ selStart+" "+selEnd);
|
||||||
if (selStart-start<=1)
|
if (debug2)
|
||||||
{ // only selection is to register:
|
System.out.println("TEXT to REGISTER: "+ start+" "+end);
|
||||||
resultCurrent = currentLength + oldLength ;
|
if (debug2)
|
||||||
resultNew = newLength + resultCurrent - 1;
|
System.out.println("CURRLENGTH: "+ currentLength);
|
||||||
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, focusPosition,restString.substring(selStart,selEnd+2)));
|
|
||||||
if (debug2)
|
|
||||||
System.out.println("APPENDING SelectedZONE ONLy:"+restString.substring(selStart,selEnd+2)+
|
|
||||||
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// register the rest:
|
|
||||||
resultCurrent = currentLength+oldLength;
|
|
||||||
resultNew = resultCurrent+ selStart-start -1;
|
|
||||||
addedLength = selStart -start;
|
|
||||||
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position,restString.substring(start,start+addedLength)));
|
|
||||||
if (debug2)
|
|
||||||
System.out.println("APPENDING ZONE First:"+restString.substring(start,start+addedLength)+
|
|
||||||
"Length: "+addedLength+" POSITION: "+resultCurrent + " "+resultNew);
|
|
||||||
currentLength += addedLength;
|
|
||||||
|
|
||||||
//selection second:
|
resultCurrent = currentLength+oldLength;
|
||||||
newLength = selEnd - selStart+2;
|
|
||||||
resultCurrent = currentLength+oldLength;
|
if (selStart>start+1)
|
||||||
resultNew = resultCurrent+ newLength -1;
|
{
|
||||||
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, focusPosition,restString.substring(selStart,selEnd+2)));
|
// register text before selection:
|
||||||
if (debug2)
|
addedLength = selStart - start;
|
||||||
System.out.println("APPENDING SelectedZONE Second:"+restString.substring(selStart,selEnd+2)+
|
resultNew = resultCurrent+ addedLength -1;
|
||||||
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position, restString.substring(start,start+addedLength)));
|
||||||
}
|
|
||||||
else
|
|
||||||
{ // selection first:
|
|
||||||
addedLength = selEnd - selStart +2;
|
|
||||||
resultCurrent = currentLength+oldLength;
|
|
||||||
resultNew = resultCurrent + addedLength-1;
|
|
||||||
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, focusPosition,restString.substring(selStart,selEnd+2)));
|
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("APPENDING SelectedZONE First:"+restString.substring(selStart,selEnd+2)+
|
System.out.println("APPENDING ZONE Before selection:"+restString.substring(start,start+addedLength)+
|
||||||
"Length: "+addedLength+" POSITION: "+resultCurrent + " "+resultNew);
|
"Length: "+addedLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
currentLength += addedLength;
|
}
|
||||||
|
|
||||||
|
//selection:
|
||||||
|
resultCurrent += addedLength;
|
||||||
|
addedLength = selEnd - selStart + 2;
|
||||||
|
resultNew = resultCurrent + addedLength - 1;
|
||||||
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, focusPosition,restString.substring(selStart,selEnd+2)));
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("APPENDING SelectedZONE: "+restString.substring(selStart,selEnd+2)+
|
||||||
|
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
|
|
||||||
|
|
||||||
|
if (end>selEnd+2)
|
||||||
|
{
|
||||||
// register the rest:
|
// register the rest:
|
||||||
newLength = end-selEnd-2;
|
resultCurrent += addedLength;
|
||||||
resultCurrent = currentLength+oldLength;
|
addedLength = end-selEnd-2;
|
||||||
resultNew = resultCurrent + newLength -1;
|
resultNew = resultCurrent + addedLength -1;
|
||||||
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position,restString.substring(selEnd+2,end)));
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position,restString.substring(selEnd+2,end)));
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("APPENDING ZONE Second:"+restString.substring(selEnd+2,end)+
|
System.out.println("APPENDING ZONE after:"+
|
||||||
|
restString.substring(selEnd+2,end)+
|
||||||
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
}
|
}
|
||||||
}// focus has a separate position
|
}// focus has a separate position
|
||||||
@@ -2027,7 +2059,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position,stringToAppend));
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position,stringToAppend));
|
||||||
if (debug2)
|
if (debug2)
|
||||||
System.out.println("APPENDING ZONE:"+stringToAppend+
|
System.out.println("APPENDING ZONE:"+stringToAppend+
|
||||||
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew+" "+position);
|
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew+" "+position.position);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (debug2)
|
if (debug2)
|
||||||
@@ -2047,7 +2079,10 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
{
|
{
|
||||||
positionStart = restString.indexOf("[", start);
|
positionStart = restString.indexOf("[", start);
|
||||||
positionEnd = restString.indexOf("]", start);
|
positionEnd = restString.indexOf("]", start);
|
||||||
currentPosition.addElement(restString.substring(positionStart, positionEnd+1));
|
|
||||||
|
currentPosition.addElement(new LinPosition(
|
||||||
|
restString.substring(positionStart, positionEnd+1),
|
||||||
|
restString.substring(start,end).indexOf("incorrect")==-1));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (currentPosition.size()>0)
|
if (currentPosition.size()>0)
|
||||||
@@ -2136,3 +2171,71 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
|
|||||||
repaint();
|
repaint();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*focus has a separate position:
|
||||||
|
if (selectionCheck&&(selEnd<end))
|
||||||
|
{
|
||||||
|
selectionCheck=false;
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("SELECTION HAS A SEPARATE POSITION");
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("SELECTION: "+ selStart+" "+selEnd);
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("TEXT to REGISTER: "+ start+" "+end);
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("CURRLENGTH: "+ currentLength);
|
||||||
|
|
||||||
|
// selection Second:
|
||||||
|
if (end-selEnd<=3)
|
||||||
|
if (selStart-start<=1)
|
||||||
|
{ // only selection is to register:
|
||||||
|
resultCurrent = currentLength + oldLength ;
|
||||||
|
resultNew = newLength + resultCurrent - 1;
|
||||||
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, focusPosition,restString.substring(selStart,selEnd+2)));
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("APPENDING SelectedZONE ONLy:"+restString.substring(selStart,selEnd+2)+
|
||||||
|
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// register the rest:
|
||||||
|
resultCurrent = currentLength+oldLength;
|
||||||
|
resultNew = resultCurrent+ selStart-start -1;
|
||||||
|
addedLength = selStart -start;
|
||||||
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position, restString.substring(start,start+addedLength)));
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("APPENDING ZONE First:"+restString.substring(start,start+addedLength)+
|
||||||
|
"Length: "+addedLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
|
currentLength += addedLength;
|
||||||
|
|
||||||
|
//selection second:
|
||||||
|
newLength = selEnd - selStart+2;
|
||||||
|
resultCurrent = currentLength+oldLength;
|
||||||
|
resultNew = resultCurrent+ newLength -1;
|
||||||
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, focusPosition,restString.substring(selStart,selEnd+2)));
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("APPENDING SelectedZONE Second:"+restString.substring(selStart,selEnd+2)+
|
||||||
|
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // selection first:
|
||||||
|
addedLength = selEnd - selStart +2;
|
||||||
|
resultCurrent = currentLength+oldLength;
|
||||||
|
resultNew = resultCurrent + addedLength-1;
|
||||||
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, focusPosition,restString.substring(selStart,selEnd+2)));
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("APPENDING SelectedZONE First:"+restString.substring(selStart,selEnd+2)+
|
||||||
|
"Length: "+addedLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
|
currentLength += addedLength;
|
||||||
|
|
||||||
|
// register the rest:
|
||||||
|
newLength = end-selEnd-2;
|
||||||
|
resultCurrent = currentLength+oldLength;
|
||||||
|
resultNew = resultCurrent + newLength -1;
|
||||||
|
outputVector.addElement(new MarkedArea(resultCurrent, resultNew, position,restString.substring(selEnd+2,end)));
|
||||||
|
if (debug2)
|
||||||
|
System.out.println("APPENDING ZONE Second:"+restString.substring(selEnd+2,end)+
|
||||||
|
"Length: "+newLength+" POSITION: "+resultCurrent + " "+resultNew);
|
||||||
|
}
|
||||||
|
}// focus has a separate position
|
||||||
|
*/
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
//package javaGUI;
|
||||||
|
public class LinPosition
|
||||||
|
{
|
||||||
|
public String position;
|
||||||
|
public boolean correctPosition = true;
|
||||||
|
|
||||||
|
LinPosition(String p, boolean cor)
|
||||||
|
{
|
||||||
|
position = p;
|
||||||
|
correctPosition = cor ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -3,15 +3,16 @@
|
|||||||
{
|
{
|
||||||
public int begin;
|
public int begin;
|
||||||
public int end;
|
public int end;
|
||||||
public String position;
|
public LinPosition position;
|
||||||
public String words;
|
public String words;
|
||||||
|
|
||||||
MarkedArea(int b, int e, String p, String w)
|
MarkedArea(int b, int e, LinPosition p, String w)
|
||||||
{
|
{
|
||||||
begin = b;
|
begin = b;
|
||||||
end = e;
|
end = e;
|
||||||
position = p;
|
position = p;
|
||||||
words = w;
|
words = w;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in new issue
Block a user