From e9e80fc389365e24d4300d7d5390c7d833a96c50 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 25 Jun 2008 16:54:35 +0000 Subject: changed names of resource-1.3; added a note on homepage on release --- examples/letter/Letter.gfcm | 412 ----------------------------------------- examples/letter/README | 36 ---- examples/letter/letter.Abs.gf | 80 -------- examples/letter/letter.Eng.gf | 151 --------------- examples/letter/letter.Fin.gf | 179 ------------------ examples/letter/letter.Fra.gf | 168 ----------------- examples/letter/letter.HebU.gf | 212 --------------------- examples/letter/letter.RusU.gf | 178 ------------------ examples/letter/letter.Sve.gf | 161 ---------------- examples/letter/mkLetter.gfs | 14 -- 10 files changed, 1591 deletions(-) delete mode 100644 examples/letter/Letter.gfcm delete mode 100644 examples/letter/README delete mode 100644 examples/letter/letter.Abs.gf delete mode 100644 examples/letter/letter.Eng.gf delete mode 100644 examples/letter/letter.Fin.gf delete mode 100644 examples/letter/letter.Fra.gf delete mode 100644 examples/letter/letter.HebU.gf delete mode 100644 examples/letter/letter.RusU.gf delete mode 100644 examples/letter/letter.Sve.gf delete mode 100644 examples/letter/mkLetter.gfs (limited to 'examples/letter') diff --git a/examples/letter/Letter.gfcm b/examples/letter/Letter.gfcm deleted file mode 100644 index 849461cb2..000000000 --- a/examples/letter/Letter.gfcm +++ /dev/null @@ -1,412 +0,0 @@ -concrete Hebrew of Letter=open ResHebU in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;oper A''114:Str=table ResHebU.Gen[("אןי"++("מצטערת"++("להודיע"++("לך"++"ש"))))("אןי"++("מצטער"++("להודיע"++("לך"++"ש"))))]; -oper A''115:Str=table ResHebU.Gen[("אןחןו"++("מצטערות"++("להודיע"++("לכם"++"ש"))))("אןחןו"++("מצטערים"++("להודיע"++("לכן"++"ש"))))]; -oper A''117:Str=table ResHebU.Gen{p_Regret__3=>"אןי"++("מצטער"++("להודיע"++("לך"++"ש")))}; -oper A''118:Str=table ResHebU.Gen[("אןחןו"++("מצטערים"++("להודיע"++("לכם"++"ש"))))("אןחןו"++("מצטערים"++("להודיע"++("לכן"++"ש"))))]; -oper A''120:Str=table ResHebU.Gen{p_Regret__3=>"אןי"++("מצטערת"++("להודיע"++("לך"++"ש")))}; -oper A''121:Str=table ResHebU.Gen[("אןחןו"++("מצטערות"++("להודיע"++("לכם"++"ש"))))("אןחןו"++("מצטערות"++("להודיע"++("לכן"++"ש"))))]; -oper A''22:Str=table ResHebU.Gen[("הןןי"++("מתכבדת"++("להודיע"++("לך"++"ש"))))("הןןי"++("מתכבד"++("להודיע"++("לך"++"ש"))))]; -oper A''23:Str=table ResHebU.Gen[("הןןו"++("מתכבדות"++("להודיע"++("לכם"++"ש"))))("הןןו"++("מתכבדים"++("להודיע"++("לכן"++"ש"))))]; -oper A''25:Str=table ResHebU.Gen{p_Honour__3=>"הןןי"++("מתכבד"++("להודיע"++("לך"++"ש")))}; -oper A''26:Str=table ResHebU.Gen[("הןןו"++("מתכבדים"++("להודיע"++("לכם"++"ש"))))("הןןו"++("מתכבדים"++("להודיע"++("לכן"++"ש"))))]; -oper A''28:Str=table ResHebU.Gen{p_Honour__3=>"הןןי"++("מתכבדת"++("להודיע"++("לך"++"ש")))}; -oper A''29:Str=table ResHebU.Gen[("הןןו"++("מתכבדות"++("להודיע"++("לכם"++"ש"))))("הןןו"++("מתכבדות"++("להודיע"++("לכן"++"ש"))))]; -oper A''47:Str=table ResHebU.Gen[("אןי"++("אוהבת"++"אותך"))("אןי"++("אוהב"++"אותך"))]; -oper A''48:Str=table ResHebU.Gen[("אןחןו"++("אוהבות"++"אתכם"))("אןחןו"++("אוהבים"++"אתכן"))]; -oper A''5:Str=>; -oper A''50:Str=table ResHebU.Gen{p_ILoveYou__3=>"אןי"++("אוהב"++"אותך")}; -oper A''51:Str=table ResHebU.Gen[("אןחןו"++("אוהבים"++"אתכם"))("אןחןו"++("אוהבים"++"אתכן"))]; -oper A''53:Str=table ResHebU.Gen{p_ILoveYou__3=>"אןי"++("אוהבת"++"אותך")}; -oper A''54:Str=table ResHebU.Gen[("אןחןו"++("אוהבות"++"אתכם"))("אןחןו"++("אוהבות"++"אתכן"))]; -oper A''6:Str=>; -oper A''79:Str=>; -oper A''93:Str=>; -lincat Author={g:ResHebU.DepGen;n:ResHebU.DepNum;s:(ResHebU.Num=>(ResHebU.Gen=>Str))}={g=;n=;s=table ResHebU.Num{p_Author__0=>table ResHebU.Gen{p_Author__1=>str@0}}};"Author"; -lin BePromoted:Letter.Sentence=\Position@0->{s=table ResHebU.DepNum{p_BePromoted__0=>table ResHebU.DepGen{p_BePromoted__1=>table ResHebU.Num[(table ResHebU.Gen{p_BePromoted__3=>"קודמת"++("לתפקיד"++("של"++Position@0.s!!$p_BePromoted__3))})(table ResHebU.Gen[("קודמתם"++("לתפקיד"++("של"++Position@0.s!!)))("קודמתן"++("לתפקיד"++("של"++Position@0.s!!)))])]}}};"קודמת לתפקיד של Position_0"; -lin ColleagueHe:Letter.Recipient=\->{g=;n=;s="עמית"};"{ResHebU.masc}"; -lin ColleagueShe:Letter.Recipient=\->{g=;n=;s="עמיתה"};"{ResHebU.fem}"; -lin ColleaguesHe:Letter.Recipient=\->{g=;n=;s="עמיתים"};"{ResHebU.masc}"; -lin ColleaguesShe:Letter.Recipient=\->{g=;n=;s="עמיתות"};"{ResHebU.fem}"; -lin Company:Letter.NounPhrase=\->{g=;n=;s="חברתןו"};"{ResHebU.fem}"; -lin Competitor:Letter.NounPhrase=\->{g=;n=;s="המתחרה"++("הגרוע"++("ביותר"++"שלןו"))};"{ResHebU.masc}"; -lin DarlingHe:Letter.Recipient=\->{g=;n=;s="אהובי"};"{ResHebU.masc}"; -lin DarlingShe:Letter.Recipient=\->{g=;n=;s="אהובתי"};"{ResHebU.fem}"; -lin Dean:Letter.Author=\->{g=Hebrew.A''5;n=Hebrew.A''6;s=table ResHebU.Num{p_Dean__0=>table ResHebU.Gen{p_Dean__1=>"דיקן"}}};"{ResHebU.cgen} {ResHebU.masc}"; -lin DearRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=Recipient@0.s++table ResHebU.Num[(table ResHebU.Gen["יקר""יקרה"]!(Recipient@0.g))(table ResHebU.Gen["יקרים""יקרות"]!(Recipient@0.g))]!(Recipient@0.n)};"Recipient_0"; -lincat Ending={g:ResHebU.DepGen;n:ResHebU.DepNum;s:(ResHebU.Num=>(ResHebU.Gen=>Str))}={g=;n=;s=table ResHebU.Num{p_Ending__0=>table ResHebU.Gen{p_Ending__1=>str@0}}};"Ending"; -lin FormalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResHebU.Num{p_FormalEnding__0=>table ResHebU.Gen{p_FormalEnding__1=>",בכבוד"++("רב"++"&-")++Author@0.s!$p_FormalEnding__0!$p_FormalEnding__1}}};"Author_0"; -lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResHebU.DepNum{p_GoBankrupt__0=>table ResHebU.DepGen{p_GoBankrupt__1=>table ResHebU.Num{p_GoBankrupt__2=>table ResHebU.Gen{p_GoBankrupt__3=>NounPhrase@0.s++(table ResHebU.Num[(table ResHebU.Gen["פשט""פשטה"]!(NounPhrase@0.g))(table ResHebU.Gen{p_GoBankrupt__5=>"פשטו"}!(NounPhrase@0.g))]!(NounPhrase@0.n)++"רגל")}}}}};"NounPhrase_0 פשט רגל"; -lincat Heading={g:ResHebU.Gen;n:ResHebU.Num;s:Str}={g=;n=;s=str@0};"Heading"; -lin HelloRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=table ResHebU.Num{p_HelloRec__0=>"שלום"}!(Recipient@0.n)++Recipient@0.s};"Recipient_0"; -lin Honour:Letter.Mode=\->{s=table ResHebU.DepNum[(table ResHebU.DepGen[(table ResHebU.Num[Hebrew.A''22 Hebrew.A''23])(table ResHebU.Num[Hebrew.A''25 Hebrew.A''26])(table ResHebU.Num[Hebrew.A''28 Hebrew.A''29])])(table ResHebU.DepGen[(table ResHebU.Num[Hebrew.A''22(table ResHebU.Gen[("הןןי"++("מתכבדת"++("להודיע"++("לכם"++"ש"))))("הןןי"++("מתכבד"++("להודיע"++("לכן"++"ש"))))])])(table ResHebU.Num[Hebrew.A''25(table ResHebU.Gen[("הןןי"++("מתכבד"++("להודיע"++("לכם"++"ש"))))("הןןי"++("מתכבד"++("להודיע"++("לכן"++"ש"))))])])(table ResHebU.Num[Hebrew.A''28(table ResHebU.Gen[("הןןי"++("מתכבדת"++("להודיע"++("לכם"++"ש"))))("הןןי"++("מתכבדת"++("להודיע"++("לכן"++"ש"))))])])])(table ResHebU.DepGen[(table ResHebU.Num[(table ResHebU.Gen[("הןןו"++("מתכבדות"++("להודיע"++("לך"++"ש"))))("הןןו"++("מתכבדים"++("להודיע"++("לך"++"ש"))))])Hebrew.A''23])(table ResHebU.Num[(table ResHebU.Gen{p_Honour__3=>"הןןו"++("מתכבדים"++("להודיע"++("לך"++"ש")))})Hebrew.A''26])(table ResHebU.Num[(table ResHebU.Gen{p_Honour__3=>"הןןו"++("מתכבדות"++("להודיע"++("לך"++"ש")))})Hebrew.A''29])])]};"הןןי מתכבדת להודיע לך ש"; -lin ILoveYou:Letter.Sentence=\->{s=table ResHebU.DepNum[(table ResHebU.DepGen[(table ResHebU.Num[Hebrew.A''47 Hebrew.A''48])(table ResHebU.Num[Hebrew.A''50 Hebrew.A''51])(table ResHebU.Num[Hebrew.A''53 Hebrew.A''54])])(table ResHebU.DepGen[(table ResHebU.Num[Hebrew.A''47(table ResHebU.Gen[("אןי"++("אוהבת"++"אתכם"))("אןי"++("אוהב"++"אתכן"))])])(table ResHebU.Num[Hebrew.A''50(table ResHebU.Gen[("אןי"++("אוהב"++"אתכם"))("אןי"++("אוהב"++"אתכן"))])])(table ResHebU.Num[Hebrew.A''53(table ResHebU.Gen[("אןי"++("אוהבת"++"אתכם"))("אןי"++("אוהבת"++"אתכן"))])])])(table ResHebU.DepGen[(table ResHebU.Num[(table ResHebU.Gen[("אןחןו"++("אוהבות"++"אותך"))("אןחןו"++("אוהבים"++"אותך"))])Hebrew.A''48])(table ResHebU.Num[(table ResHebU.Gen{p_ILoveYou__3=>"אןחןו"++("אוהבים"++"אותך")})Hebrew.A''51])(table ResHebU.Num[(table ResHebU.Gen{p_ILoveYou__3=>"אןחןו"++("אוהבות"++"אותך")})Hebrew.A''54])])]};"אןי אוהבת אותך"; -lin InformalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResHebU.Num{p_InformalEnding__0=>table ResHebU.Gen{p_InformalEnding__1=>",בברכה"++"&-"++Author@0.s!$p_InformalEnding__0!$p_InformalEnding__1}}};"Author_0"; -lin JustHello:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=table ResHebU.Num{p_JustHello__0=>"שלום"}!(Recipient@0.n)};"Recipient_0"; -lincat Letter={s:Str}={s=str@0};"Letter"; -lincat Message={s:(ResHebU.DepNum=>(ResHebU.DepGen=>(ResHebU.Num=>(ResHebU.Gen=>Str))))}={s=table ResHebU.DepNum{p_Message__0=>table ResHebU.DepGen{p_Message__1=>table ResHebU.Num{p_Message__2=>table ResHebU.Gen{p_Message__3=>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"; -lincat Mode={s:(ResHebU.DepNum=>(ResHebU.DepGen=>(ResHebU.Num=>(ResHebU.Gen=>Str))))}={s=table ResHebU.DepNum{p_Mode__0=>table ResHebU.DepGen{p_Mode__1=>table ResHebU.Num{p_Mode__2=>table ResHebU.Gen{p_Mode__3=>str@0}}}}};"Mode"; -lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResHebU.DepNum[(table ResHebU.DepGen[(table ResHebU.Num{p_ModeSent__2=>table ResHebU.Gen{p_ModeSent__3=>Mode@0.s!!!$p_ModeSent__2!$p_ModeSent__3++Sentence@1.s!!!$p_ModeSent__2!$p_ModeSent__3}})(table ResHebU.Num{p_ModeSent__2=>table ResHebU.Gen[(Mode@0.s!!Hebrew.A''5!$p_ModeSent__2!++Sentence@1.s!!Hebrew.A''5!$p_ModeSent__2!)(Mode@0.s!!Hebrew.A''5!$p_ModeSent__2!++Sentence@1.s!!Hebrew.A''5!$p_ModeSent__2!)]})(table ResHebU.Num{p_ModeSent__2=>table ResHebU.Gen[(Mode@0.s!!Hebrew.A''79!$p_ModeSent__2!++Sentence@1.s!!Hebrew.A''79!$p_ModeSent__2!)(Mode@0.s!!Hebrew.A''79!$p_ModeSent__2!++Sentence@1.s!!Hebrew.A''79!$p_ModeSent__2!)]})])(table ResHebU.DepGen[(table ResHebU.Num[(table ResHebU.Gen{p_ModeSent__3=>Mode@0.s!Hebrew.A''6!!!$p_ModeSent__3++Sentence@1.s!Hebrew.A''6!!!$p_ModeSent__3})(table ResHebU.Gen{p_ModeSent__3=>Mode@0.s!Hebrew.A''6!!!$p_ModeSent__3++Sentence@1.s!Hebrew.A''6!!!$p_ModeSent__3})])(table ResHebU.Num[(table ResHebU.Gen[(Mode@0.s!Hebrew.A''6!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''5!!)(Mode@0.s!Hebrew.A''6!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''5!!)])(table ResHebU.Gen[(Mode@0.s!Hebrew.A''6!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''5!!)(Mode@0.s!Hebrew.A''6!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''5!!)])])(table ResHebU.Num[(table ResHebU.Gen[(Mode@0.s!Hebrew.A''6!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''79!!)(Mode@0.s!Hebrew.A''6!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''79!!)])(table ResHebU.Gen[(Mode@0.s!Hebrew.A''6!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''79!!)(Mode@0.s!Hebrew.A''6!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''6!Hebrew.A''79!!)])])])(table ResHebU.DepGen[(table ResHebU.Num[(table ResHebU.Gen{p_ModeSent__3=>Mode@0.s!Hebrew.A''93!!!$p_ModeSent__3++Sentence@1.s!Hebrew.A''93!!!$p_ModeSent__3})(table ResHebU.Gen{p_ModeSent__3=>Mode@0.s!Hebrew.A''93!!!$p_ModeSent__3++Sentence@1.s!Hebrew.A''93!!!$p_ModeSent__3})])(table ResHebU.Num[(table ResHebU.Gen[(Mode@0.s!Hebrew.A''93!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''5!!)(Mode@0.s!Hebrew.A''93!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''5!!)])(table ResHebU.Gen[(Mode@0.s!Hebrew.A''93!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''5!!)(Mode@0.s!Hebrew.A''93!Hebrew.A''5!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''5!!)])])(table ResHebU.Num[(table ResHebU.Gen[(Mode@0.s!Hebrew.A''93!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''79!!)(Mode@0.s!Hebrew.A''93!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''79!!)])(table ResHebU.Gen[(Mode@0.s!Hebrew.A''93!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''79!!)(Mode@0.s!Hebrew.A''93!Hebrew.A''79!!++Sentence@1.s!Hebrew.A''93!Hebrew.A''79!!)])])])]};"Mode_0 Sentence_1"; -lin Mother:Letter.Author=\->{g=Hebrew.A''79;n=Hebrew.A''6;s=table ResHebU.Num{p_Mother__0=>table ResHebU.Gen{p_Mother__1=>"אמא"}}};"{ResHebU.cgen} {ResHebU.fem}"; -lin Name:Letter.Author=\String@0->{g=Hebrew.A''5;n=Hebrew.A''6;s=table ResHebU.Num{p_Name__0=>table ResHebU.Gen{p_Name__1=>String@0.s}}};"{ResHebU.cgen} {ResHebU.masc}"; -lin NameHe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResHebU.masc}"; -lin NameShe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResHebU.fem}"; -lincat NounPhrase={g:ResHebU.Gen;n:ResHebU.Num;s:Str}={g=;n=;s=str@0};"NounPhrase"; -lin OurCustomers:Letter.NounPhrase=\->{g=;n=;s="לקוחותיןו"};"{ResHebU.masc}"; -lin PlainRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=Recipient@0.s};"Recipient_0"; -lin PlainSent:Letter.Message=\Sentence@0->{s=Sentence@0.s};"Sentence_0"; -lincat Position={s:(ResHebU.Num=>(ResHebU.Gen=>Str))}={s=table ResHebU.Num{p_Position__0=>table ResHebU.Gen{p_Position__1=>str@0}}};"Position"; -lin President:Letter.Author=\->{g=Hebrew.A''5;n=Hebrew.A''6;s=table ResHebU.Num{p_President__0=>table ResHebU.Gen{p_President__1=>"ןשיא"}}};"{ResHebU.cgen} {ResHebU.masc}"; -lin ProjectManager:Letter.Position=\->{s=table ResHebU.Num[(table ResHebU.Gen[("מןהל"++"פרוייקט")("מןהלת"++"פרוייקט")])(table ResHebU.Gen[("מןהלי"++"פרוייקט")("מןהלות"++"פרוייקט")])]};"מןהל פרוייקט"; -lincat Recipient={g:ResHebU.Gen;n:ResHebU.Num;s:Str}={g=;n=;s=str@0};"Recipient"; -lin Regret:Letter.Mode=\->{s=table ResHebU.DepNum[(table ResHebU.DepGen[(table ResHebU.Num[Hebrew.A''114 Hebrew.A''115])(table ResHebU.Num[Hebrew.A''117 Hebrew.A''118])(table ResHebU.Num[Hebrew.A''120 Hebrew.A''121])])(table ResHebU.DepGen[(table ResHebU.Num[Hebrew.A''114(table ResHebU.Gen[("אןי"++("מצטערת"++("להודיע"++("לכם"++"ש"))))("אןי"++("מצטער"++("להודיע"++("לכן"++"ש"))))])])(table ResHebU.Num[Hebrew.A''117(table ResHebU.Gen[("אןי"++("מצטער"++("להודיע"++("לכם"++"ש"))))("אןי"++("מצטער"++("להודיע"++("לכן"++"ש"))))])])(table ResHebU.Num[Hebrew.A''120(table ResHebU.Gen[("אןי"++("מצטערת"++("להודיע"++("לכם"++"ש"))))("אןי"++("מצטערת"++("להודיע"++("לכן"++"ש"))))])])])(table ResHebU.DepGen[(table ResHebU.Num[(table ResHebU.Gen[("אןחןו"++("מצטערות"++("להודיע"++("לך"++"ש"))))("אןחןו"++("מצטערים"++("להודיע"++("לך"++"ש"))))])Hebrew.A''115])(table ResHebU.Num[(table ResHebU.Gen{p_Regret__3=>"אןחןו"++("מצטערים"++("להודיע"++("לך"++"ש")))})Hebrew.A''118])(table ResHebU.Num[(table ResHebU.Gen{p_Regret__3=>"אןחןו"++("מצטערות"++("להודיע"++("לך"++"ש")))})Hebrew.A''121])])]};"אןי מצטערת להודיע לך ש"; -lin Senior:Letter.Position=\->{s=table ResHebU.Num[(table ResHebU.Gen{p_Senior__1=>"חבר"++"בכיר"})(table ResHebU.Gen{p_Senior__1=>"חברים"++"בכירים"})]};"חבר בכיר"; -lincat Sentence={s:(ResHebU.DepNum=>(ResHebU.DepGen=>(ResHebU.Num=>(ResHebU.Gen=>Str))))}={s=table ResHebU.DepNum{p_Sentence__0=>table ResHebU.DepGen{p_Sentence__1=>table ResHebU.Num{p_Sentence__2=>table ResHebU.Gen{p_Sentence__3=>str@0}}}}};"Sentence"; -lin Spouse:Letter.Author=\->{g=;n=;s=table ResHebU.Num[(table ResHebU.Gen["אישתך""בעלך"])(table ResHebU.Gen["ןשותיכם""בעליכן"])]};"{ResHebU.depgen}"; -} -resource ResHebU={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResHebU.Gen; -param DepNum=depnum|cnum ResHebU.Num; -param Gen=masc|fem; -param Kas=nom|dat|acc; -param Num=sg|pl; -} -abstract Letter={flags coding=utf8;flags modulesize=n42;cat Author[]=; -fun BePromoted:(h_:Letter.Position)->Letter.Sentence={}; -fun ColleagueHe:Letter.Recipient={}; -fun ColleagueShe:Letter.Recipient={}; -fun ColleaguesHe:Letter.Recipient={}; -fun ColleaguesShe:Letter.Recipient={}; -fun Company:Letter.NounPhrase={}; -fun Competitor:Letter.NounPhrase={}; -fun DarlingHe:Letter.Recipient={}; -fun DarlingShe:Letter.Recipient={}; -fun Dean:Letter.Author={}; -fun DearRec:(h_:Letter.Recipient)->Letter.Heading={}; -cat Ending[]=; -fun FormalEnding:(h_:Letter.Author)->Letter.Ending={}; -fun GoBankrupt:(h_:Letter.NounPhrase)->Letter.Sentence={}; -cat Heading[]=; -fun HelloRec:(h_:Letter.Recipient)->Letter.Heading={}; -fun Honour:Letter.Mode={}; -fun ILoveYou:Letter.Sentence={}; -fun InformalEnding:(h_:Letter.Author)->Letter.Ending={}; -fun JustHello:(h_:Letter.Recipient)->Letter.Heading={}; -cat Letter[]=; -cat Message[]=; -fun MkLetter:(h_:Letter.Heading)->(h_:Letter.Message)->(h_:Letter.Ending)->Letter.Letter={}; -cat Mode[]=; -fun ModeSent:(h_:Letter.Mode)->(h_:Letter.Sentence)->Letter.Message={}; -fun Mother:Letter.Author={}; -fun Name:(h_:PredefAbs.String)->Letter.Author={}; -fun NameHe:(h_:PredefAbs.String)->Letter.Recipient={}; -fun NameShe:(h_:PredefAbs.String)->Letter.Recipient={}; -cat NounPhrase[]=; -fun OurCustomers:Letter.NounPhrase={}; -fun PlainRec:(h_:Letter.Recipient)->Letter.Heading={}; -fun PlainSent:(h_:Letter.Sentence)->Letter.Message={}; -cat Position[]=; -fun President:Letter.Author={}; -fun ProjectManager:Letter.Position={}; -cat Recipient[]=; -fun Regret:Letter.Mode={}; -fun Senior:Letter.Position={}; -cat Sentence[]=; -fun Spouse:Letter.Author={}; -} -concrete Russian of Letter=open ResRusU in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;oper A''21:Str=table ResRusU.Num["Здравствуй""Здравствуйте"]; -oper A''22:Str=table ResRusU.Gen{p_Honour__3=>"я"++"имею"++("честь"++("сообщить"++"тебе"++(","++"что")))}; -oper A''23:Str=table ResRusU.Gen{p_Honour__3=>"мы"++"имеем"++("честь"++("сообщить"++"вам"++(","++"что")))}; -oper A''33:Str=table ResRusU.Gen{p_ILoveYou__3=>"я"++("тебя"++"люблю")}; -oper A''34:Str=table ResRusU.Gen{p_ILoveYou__3=>"мы"++("вас"++"любим")}; -oper A''5:Str=>; -oper A''50:Str=>; -oper A''6:Str=>; -oper A''64:Str=>; -oper A''85:Str=table ResRusU.Gen[("я"++("вынуждена"++("сообщить"++(","++"что"))))("я"++("вынужден"++("сообщить"++(","++"что"))))]; -oper A''86:Str=table ResRusU.Gen{p_Regret__3=>"вы"++("вынуждены"++("сообщить"++(","++"что")))}; -oper A''88:Str=table ResRusU.Gen{p_Regret__3=>"я"++("вынужден"++("сообщить"++(","++"что")))}; -oper A''90:Str=table ResRusU.Gen{p_Regret__3=>"я"++("вынуждена"++("сообщить"++(","++"что")))}; -lincat Author={g:ResRusU.DepGen;n:ResRusU.DepNum;s:(ResRusU.Num=>(ResRusU.Gen=>Str))}={g=;n=;s=table ResRusU.Num{p_Author__0=>table ResRusU.Gen{p_Author__1=>str@0}}};"Author"; -lin BePromoted:Letter.Sentence=\Position@0->{s=table ResRusU.DepNum{p_BePromoted__0=>table ResRusU.DepGen{p_BePromoted__1=>table ResRusU.Num[(table ResRusU.Gen[("ты"++"был"++("назначен"++Position@0.s!!))("ты"++"была"++("назначена"++Position@0.s!!))])(table ResRusU.Gen{p_BePromoted__3=>"вы"++"были"++("назначены"++Position@0.s!!$p_BePromoted__3)})]}}};"(ты был)назначен Position_0"; -lin ColleagueHe:Letter.Recipient=\->{g=;n=;s="коллега"};"{ResRusU.masc}"; -lin ColleagueShe:Letter.Recipient=\->{g=;n=;s="коллега"};"{ResRusU.fem}"; -lin ColleaguesHe:Letter.Recipient=\->{g=;n=;s="коллеги"};"{ResRusU.masc}"; -lin ColleaguesShe:Letter.Recipient=\->{g=;n=;s="коллеги"};"{ResRusU.fem}"; -lin Company:Letter.NounPhrase=\->{g=;n=;s="наше"++"предприятие"};"{ResRusU.fem}"; -lin Competitor:Letter.NounPhrase=\->{g=;n=;s="наш"++"конкурент"};"{ResRusU.masc}"; -lin DarlingHe:Letter.Recipient=\->{g=;n=;s="любимый"};"{ResRusU.masc}"; -lin DarlingShe:Letter.Recipient=\->{g=;n=;s="любимая"};"{ResRusU.fem}"; -lin Dean:Letter.Author=\->{g=Russian.A''5;n=Russian.A''6;s=table ResRusU.Num{p_Dean__0=>table ResRusU.Gen{p_Dean__1=>"декан"}}};"{ResRusU.cgen} {ResRusU.masc}"; -lin DearRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=table ResRusU.Num[(table ResRusU.Gen["Дорогой""Дорогая"]!(Recipient@0.g))(table ResRusU.Gen{p_DearRec__1=>"Дорогие"}!(Recipient@0.g))]!(Recipient@0.n)++Recipient@0.s};"Recipient_0"; -lincat Ending={g:ResRusU.DepGen;n:ResRusU.DepNum;s:(ResRusU.Num=>(ResRusU.Gen=>Str))}={g=;n=;s=table ResRusU.Num{p_Ending__0=>table ResRusU.Gen{p_Ending__1=>str@0}}};"Ending"; -lin FormalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResRusU.Num{p_FormalEnding__0=>table ResRusU.Gen{p_FormalEnding__1=>"С"++("наилучшими"++("пожеланиями,"++"&-")++Author@0.s!$p_FormalEnding__0!$p_FormalEnding__1)}}};"Author_0"; -lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResRusU.DepNum{p_GoBankrupt__0=>table ResRusU.DepGen{p_GoBankrupt__1=>table ResRusU.Num{p_GoBankrupt__2=>table ResRusU.Gen{p_GoBankrupt__3=>NounPhrase@0.s++table ResRusU.Num[(table ResRusU.Gen["обанкротился""обанкротилось"]!(NounPhrase@0.g))(table ResRusU.Gen{p_GoBankrupt__5=>"обанкротились"}!(NounPhrase@0.g))]!(NounPhrase@0.n)}}}}};"NounPhrase_0 обанкротился"; -lincat Heading={g:ResRusU.Gen;n:ResRusU.Num;s:Str}={g=;n=;s=str@0};"Heading"; -lin HelloRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=Russian.A''21!(Recipient@0.n)++Recipient@0.s};"Recipient_0"; -lin Honour:Letter.Mode=\->{s=table ResRusU.DepNum[(table ResRusU.DepGen{p_Honour__1=>table ResRusU.Num[Russian.A''22 Russian.A''23]})(table ResRusU.DepGen{p_Honour__1=>table ResRusU.Num[Russian.A''22(table ResRusU.Gen{p_Honour__3=>"я"++"имею"++("честь"++("сообщить"++"вам"++(","++"что")))})]})(table ResRusU.DepGen{p_Honour__1=>table ResRusU.Num[(table ResRusU.Gen{p_Honour__3=>"мы"++"имеем"++("честь"++("сообщить"++"тебе"++(","++"что")))})Russian.A''23]})]};"(я имею)честь (сообщить тебе), что"; -lin ILoveYou:Letter.Sentence=\->{s=table ResRusU.DepNum[(table ResRusU.DepGen{p_ILoveYou__1=>table ResRusU.Num[Russian.A''33 Russian.A''34]})(table ResRusU.DepGen{p_ILoveYou__1=>table ResRusU.Num[Russian.A''33(table ResRusU.Gen{p_ILoveYou__3=>"я"++("вас"++"люблю")})]})(table ResRusU.DepGen{p_ILoveYou__1=>table ResRusU.Num[(table ResRusU.Gen{p_ILoveYou__3=>"мы"++("тебя"++"любим")})Russian.A''34]})]};"я тебя люблю"; -lin InformalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResRusU.Num{p_InformalEnding__0=>table ResRusU.Gen{p_InformalEnding__1=>"С"++("дружеским"++("приветом,"++"&-"))++Author@0.s!$p_InformalEnding__0!$p_InformalEnding__1}}};"Author_0"; -lin JustHello:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=Russian.A''21!(Recipient@0.n)};"Recipient_0"; -lincat Letter={s:Str}={s=str@0};"Letter"; -lincat Message={s:(ResRusU.DepNum=>(ResRusU.DepGen=>(ResRusU.Num=>(ResRusU.Gen=>Str))))}={s=table ResRusU.DepNum{p_Message__0=>table ResRusU.DepGen{p_Message__1=>table ResRusU.Num{p_Message__2=>table ResRusU.Gen{p_Message__3=>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"; -lincat Mode={s:(ResRusU.DepNum=>(ResRusU.DepGen=>(ResRusU.Num=>(ResRusU.Gen=>Str))))}={s=table ResRusU.DepNum{p_Mode__0=>table ResRusU.DepGen{p_Mode__1=>table ResRusU.Num{p_Mode__2=>table ResRusU.Gen{p_Mode__3=>str@0}}}}};"Mode"; -lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResRusU.DepNum[(table ResRusU.DepGen[(table ResRusU.Num{p_ModeSent__2=>table ResRusU.Gen{p_ModeSent__3=>Mode@0.s!!!$p_ModeSent__2!$p_ModeSent__3++Sentence@1.s!!!$p_ModeSent__2!$p_ModeSent__3}})(table ResRusU.Num{p_ModeSent__2=>table ResRusU.Gen[(Mode@0.s!!Russian.A''5!$p_ModeSent__2!++Sentence@1.s!!Russian.A''5!$p_ModeSent__2!)(Mode@0.s!!Russian.A''5!$p_ModeSent__2!++Sentence@1.s!!Russian.A''5!$p_ModeSent__2!)]})(table ResRusU.Num{p_ModeSent__2=>table ResRusU.Gen[(Mode@0.s!!Russian.A''50!$p_ModeSent__2!++Sentence@1.s!!Russian.A''50!$p_ModeSent__2!)(Mode@0.s!!Russian.A''50!$p_ModeSent__2!++Sentence@1.s!!Russian.A''50!$p_ModeSent__2!)]})])(table ResRusU.DepGen[(table ResRusU.Num[(table ResRusU.Gen{p_ModeSent__3=>Mode@0.s!Russian.A''6!!!$p_ModeSent__3++Sentence@1.s!Russian.A''6!!!$p_ModeSent__3})(table ResRusU.Gen{p_ModeSent__3=>Mode@0.s!Russian.A''6!!!$p_ModeSent__3++Sentence@1.s!Russian.A''6!!!$p_ModeSent__3})])(table ResRusU.Num[(table ResRusU.Gen[(Mode@0.s!Russian.A''6!Russian.A''5!!++Sentence@1.s!Russian.A''6!Russian.A''5!!)(Mode@0.s!Russian.A''6!Russian.A''5!!++Sentence@1.s!Russian.A''6!Russian.A''5!!)])(table ResRusU.Gen[(Mode@0.s!Russian.A''6!Russian.A''5!!++Sentence@1.s!Russian.A''6!Russian.A''5!!)(Mode@0.s!Russian.A''6!Russian.A''5!!++Sentence@1.s!Russian.A''6!Russian.A''5!!)])])(table ResRusU.Num[(table ResRusU.Gen[(Mode@0.s!Russian.A''6!Russian.A''50!!++Sentence@1.s!Russian.A''6!Russian.A''50!!)(Mode@0.s!Russian.A''6!Russian.A''50!!++Sentence@1.s!Russian.A''6!Russian.A''50!!)])(table ResRusU.Gen[(Mode@0.s!Russian.A''6!Russian.A''50!!++Sentence@1.s!Russian.A''6!Russian.A''50!!)(Mode@0.s!Russian.A''6!Russian.A''50!!++Sentence@1.s!Russian.A''6!Russian.A''50!!)])])])(table ResRusU.DepGen[(table ResRusU.Num[(table ResRusU.Gen{p_ModeSent__3=>Mode@0.s!Russian.A''64!!!$p_ModeSent__3++Sentence@1.s!Russian.A''64!!!$p_ModeSent__3})(table ResRusU.Gen{p_ModeSent__3=>Mode@0.s!Russian.A''64!!!$p_ModeSent__3++Sentence@1.s!Russian.A''64!!!$p_ModeSent__3})])(table ResRusU.Num[(table ResRusU.Gen[(Mode@0.s!Russian.A''64!Russian.A''5!!++Sentence@1.s!Russian.A''64!Russian.A''5!!)(Mode@0.s!Russian.A''64!Russian.A''5!!++Sentence@1.s!Russian.A''64!Russian.A''5!!)])(table ResRusU.Gen[(Mode@0.s!Russian.A''64!Russian.A''5!!++Sentence@1.s!Russian.A''64!Russian.A''5!!)(Mode@0.s!Russian.A''64!Russian.A''5!!++Sentence@1.s!Russian.A''64!Russian.A''5!!)])])(table ResRusU.Num[(table ResRusU.Gen[(Mode@0.s!Russian.A''64!Russian.A''50!!++Sentence@1.s!Russian.A''64!Russian.A''50!!)(Mode@0.s!Russian.A''64!Russian.A''50!!++Sentence@1.s!Russian.A''64!Russian.A''50!!)])(table ResRusU.Gen[(Mode@0.s!Russian.A''64!Russian.A''50!!++Sentence@1.s!Russian.A''64!Russian.A''50!!)(Mode@0.s!Russian.A''64!Russian.A''50!!++Sentence@1.s!Russian.A''64!Russian.A''50!!)])])])]};"Mode_0 Sentence_1"; -lin Mother:Letter.Author=\->{g=Russian.A''50;n=Russian.A''6;s=table ResRusU.Num{p_Mother__0=>table ResRusU.Gen{p_Mother__1=>"мама"}}};"{ResRusU.cgen} {ResRusU.fem}"; -lin Name:Letter.Author=\String@0->{g=Russian.A''5;n=Russian.A''6;s=table ResRusU.Num{p_Name__0=>table ResRusU.Gen{p_Name__1=>String@0.s}}};"{ResRusU.cgen} {ResRusU.masc}"; -lin NameHe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResRusU.masc}"; -lin NameShe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResRusU.fem}"; -lincat NounPhrase={g:ResRusU.Gen;n:ResRusU.Num;s:Str}={g=;n=;s=str@0};"NounPhrase"; -lin OurCustomers:Letter.NounPhrase=\->{g=;n=;s="наши"++"клиенты"};"{ResRusU.masc}"; -lin PlainRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=Recipient@0.s};"Recipient_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{p_Position__0=>table ResRusU.Gen{p_Position__1=>str@0}}};"Position"; -lin President:Letter.Author=\->{g=Russian.A''5;n=Russian.A''6;s=table ResRusU.Num{p_President__0=>table ResRusU.Gen{p_President__1=>"президент"}}};"{ResRusU.cgen} {ResRusU.masc}"; -lin ProjectManager:Letter.Position=\->{s=table ResRusU.Num[(table ResRusU.Gen{p_ProjectManager__1=>"менеджером"++"проекта"})(table ResRusU.Gen{p_ProjectManager__1=>"менеджерами"++"проектов"})]};"менеджером проекта"; -lincat Recipient={g:ResRusU.Gen;n:ResRusU.Num;s:Str}={g=;n=;s=str@0};"Recipient"; -lin Regret:Letter.Mode=\->{s=table ResRusU.DepNum[(table ResRusU.DepGen[(table ResRusU.Num[Russian.A''85 Russian.A''86])(table ResRusU.Num[Russian.A''88 Russian.A''86])(table ResRusU.Num[Russian.A''90 Russian.A''86])])(table ResRusU.DepGen[(table ResRusU.Num{p_Regret__2=>Russian.A''85})(table ResRusU.Num{p_Regret__2=>Russian.A''88})(table ResRusU.Num{p_Regret__2=>Russian.A''90})])(table ResRusU.DepGen{p_Regret__1=>table ResRusU.Num{p_Regret__2=>Russian.A''86}})]};"я вынуждена сообщить , что"; -lin Senior:Letter.Position=\->{s=table ResRusU.Num[(table ResRusU.Gen{p_Senior__1=>"старшим"++("научным"++"сотрудником")})(table ResRusU.Gen{p_Senior__1=>"старшими"++("научными"++"сотрудниками")})]};"старшим научным сотрудником"; -lincat Sentence={s:(ResRusU.DepNum=>(ResRusU.DepGen=>(ResRusU.Num=>(ResRusU.Gen=>Str))))}={s=table ResRusU.DepNum{p_Sentence__0=>table ResRusU.DepGen{p_Sentence__1=>table ResRusU.Num{p_Sentence__2=>table ResRusU.Gen{p_Sentence__3=>str@0}}}}};"Sentence"; -lin Spouse:Letter.Author=\->{g=;n=;s=table ResRusU.Num[(table ResRusU.Gen[("твоя"++"жена")("твой"++"муж")])(table ResRusU.Gen[("ваши"++"жены")("ваши"++"мужья")])]};"{ResRusU.depgen}"; -} -resource ResRusU={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResRusU.Gen; -param DepNum=depnum|cnum ResRusU.Num; -param Gen=masc|fem; -param Kas=nom|acc; -param Num=sg|pl; -} -concrete Finnish of Letter=open ResFin in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;oper A''20:Str=table ResFin.Gen{p_Honour__3=>"minulla"++"on"++("kunnia"++("ilmoittaa"++"sinulle"++"että"))}; -oper A''21:Str=table ResFin.Gen{p_Honour__3=>"meillä"++"on"++("kunnia"++("ilmoittaa"++"teille"++"että"))}; -oper A''31:Str=table ResFin.Gen{p_ILoveYou__3=>"rakastan"++"sinua"}; -oper A''32:Str=table ResFin.Gen{p_ILoveYou__3=>"rakastamme"++"teitä"}; -oper A''48:Str=>; -oper A''5:Str=>; -oper A''6:Str=>; -oper A''62:Str=>; -oper A''83:Str=table ResFin.Gen{p_Regret__3=>"minun"++("on"++("valitettavasti"++"ilmoitettava")++"että")}; -oper A''84:Str=table ResFin.Gen{p_Regret__3=>"meidän"++("on"++("valitettavasti"++"ilmoitettava")++"että")}; -lincat Author={g:ResFin.DepGen;n:ResFin.DepNum;s:(ResFin.Num=>(ResFin.Gen=>Str))}={g=;n=;s=table ResFin.Num{p_Author__0=>table ResFin.Gen{p_Author__1=>str@0}}};"Author"; -lin BePromoted:Letter.Sentence=\Position@0->{s=table ResFin.DepNum{p_BePromoted__0=>table ResFin.DepGen{p_BePromoted__1=>table ResFin.Num[(table ResFin.Gen{p_BePromoted__3=>"sinut"++"on"++("ylennetty"++Position@0.s!!$p_BePromoted__3)})(table ResFin.Gen{p_BePromoted__3=>"teidät"++"on"++("ylennetty"++Position@0.s!!$p_BePromoted__3)})]}}};"(sinut on)ylennetty Position_0"; -lin ColleagueHe:Letter.Recipient=\->{g=;n=;s="kollega"};"{ResFin.masc}"; -lin ColleagueShe:Letter.Recipient=\->{g=;n=;s="kollega"};"{ResFin.fem}"; -lin ColleaguesHe:Letter.Recipient=\->{g=;n=;s="kollegat"};"{ResFin.masc}"; -lin ColleaguesShe:Letter.Recipient=\->{g=;n=;s="kollegat"};"{ResFin.fem}"; -lin Company:Letter.NounPhrase=\->{g=;n=;s="yrityksemme"};"{ResFin.fem}"; -lin Competitor:Letter.NounPhrase=\->{g=;n=;s="pahin"++"kilpailijamme"};"{ResFin.masc}"; -lin DarlingHe:Letter.Recipient=\->{g=;n=;s="kulta"};"{ResFin.masc}"; -lin DarlingShe:Letter.Recipient=\->{g=;n=;s="kulta"};"{ResFin.fem}"; -lin Dean:Letter.Author=\->{g=Finnish.A''5;n=Finnish.A''6;s=table ResFin.Num{p_Dean__0=>table ResFin.Gen{p_Dean__1=>"dekaani"}}};"{ResFin.cgen} {ResFin.masc}"; -lin DearRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=table ResFin.Num[(table ResFin.Gen{p_DearRec__1=>"rakas"}!(Recipient@0.g))(table ResFin.Gen{p_DearRec__1=>"rakkaat"}!(Recipient@0.g))]!(Recipient@0.n)++Recipient@0.s};"Recipient_0"; -lincat Ending={g:ResFin.DepGen;n:ResFin.DepNum;s:(ResFin.Num=>(ResFin.Gen=>Str))}={g=;n=;s=table ResFin.Num{p_Ending__0=>table ResFin.Gen{p_Ending__1=>str@0}}};"Ending"; -lin FormalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResFin.Num{p_FormalEnding__0=>table ResFin.Gen{p_FormalEnding__1=>"parhain"++("terveisin"++"&-")++Author@0.s!$p_FormalEnding__0!$p_FormalEnding__1}}};"Author_0"; -lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResFin.DepNum{p_GoBankrupt__0=>table ResFin.DepGen{p_GoBankrupt__1=>table ResFin.Num{p_GoBankrupt__2=>table ResFin.Gen{p_GoBankrupt__3=>NounPhrase@0.s++(table ResFin.Num["on""ovat"]!(NounPhrase@0.n)++(table ResFin.Num["mennyt""menneet"]!(NounPhrase@0.n)++"konkurssiin"))}}}}};"NounPhrase_0 on mennyt konkurssiin"; -lincat Heading={g:ResFin.Gen;n:ResFin.Num;s:Str}={g=;n=;s=str@0};"Heading"; -lin HelloRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s="Terve"++Recipient@0.s};"Recipient_0"; -lin Honour:Letter.Mode=\->{s=table ResFin.DepNum[(table ResFin.DepGen{p_Honour__1=>table ResFin.Num[Finnish.A''20 Finnish.A''21]})(table ResFin.DepGen{p_Honour__1=>table ResFin.Num[Finnish.A''20(table ResFin.Gen{p_Honour__3=>"minulla"++"on"++("kunnia"++("ilmoittaa"++"teille"++"että"))})]})(table ResFin.DepGen{p_Honour__1=>table ResFin.Num[(table ResFin.Gen{p_Honour__3=>"meillä"++"on"++("kunnia"++("ilmoittaa"++"sinulle"++"että"))})Finnish.A''21]})]};"(minulla on)kunnia (ilmoittaa sinulle)ett"; -lin ILoveYou:Letter.Sentence=\->{s=table ResFin.DepNum[(table ResFin.DepGen{p_ILoveYou__1=>table ResFin.Num[Finnish.A''31 Finnish.A''32]})(table ResFin.DepGen{p_ILoveYou__1=>table ResFin.Num[Finnish.A''31(table ResFin.Gen{p_ILoveYou__3=>"rakastan"++"teitä"})]})(table ResFin.DepGen{p_ILoveYou__1=>table ResFin.Num[(table ResFin.Gen{p_ILoveYou__3=>"rakastamme"++"sinua"})Finnish.A''32]})]};"rakastan sinua"; -lin InformalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResFin.Num{p_InformalEnding__0=>table ResFin.Gen{p_InformalEnding__1=>"terveisin"++"&-"++Author@0.s!$p_InformalEnding__0!$p_InformalEnding__1}}};"Author_0"; -lin JustHello:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s="Terve"};"Recipient_0"; -lincat Letter={s:Str}={s=str@0};"Letter"; -lincat Message={s:(ResFin.DepNum=>(ResFin.DepGen=>(ResFin.Num=>(ResFin.Gen=>Str))))}={s=table ResFin.DepNum{p_Message__0=>table ResFin.DepGen{p_Message__1=>table ResFin.Num{p_Message__2=>table ResFin.Gen{p_Message__3=>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"; -lincat Mode={s:(ResFin.DepNum=>(ResFin.DepGen=>(ResFin.Num=>(ResFin.Gen=>Str))))}={s=table ResFin.DepNum{p_Mode__0=>table ResFin.DepGen{p_Mode__1=>table ResFin.Num{p_Mode__2=>table ResFin.Gen{p_Mode__3=>str@0}}}}};"Mode"; -lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResFin.DepNum[(table ResFin.DepGen[(table ResFin.Num{p_ModeSent__2=>table ResFin.Gen{p_ModeSent__3=>Mode@0.s!!!$p_ModeSent__2!$p_ModeSent__3++Sentence@1.s!!!$p_ModeSent__2!$p_ModeSent__3}})(table ResFin.Num{p_ModeSent__2=>table ResFin.Gen[(Mode@0.s!!Finnish.A''5!$p_ModeSent__2!++Sentence@1.s!!Finnish.A''5!$p_ModeSent__2!)(Mode@0.s!!Finnish.A''5!$p_ModeSent__2!++Sentence@1.s!!Finnish.A''5!$p_ModeSent__2!)]})(table ResFin.Num{p_ModeSent__2=>table ResFin.Gen[(Mode@0.s!!Finnish.A''48!$p_ModeSent__2!++Sentence@1.s!!Finnish.A''48!$p_ModeSent__2!)(Mode@0.s!!Finnish.A''48!$p_ModeSent__2!++Sentence@1.s!!Finnish.A''48!$p_ModeSent__2!)]})])(table ResFin.DepGen[(table ResFin.Num[(table ResFin.Gen{p_ModeSent__3=>Mode@0.s!Finnish.A''6!!!$p_ModeSent__3++Sentence@1.s!Finnish.A''6!!!$p_ModeSent__3})(table ResFin.Gen{p_ModeSent__3=>Mode@0.s!Finnish.A''6!!!$p_ModeSent__3++Sentence@1.s!Finnish.A''6!!!$p_ModeSent__3})])(table ResFin.Num[(table ResFin.Gen[(Mode@0.s!Finnish.A''6!Finnish.A''5!!++Sentence@1.s!Finnish.A''6!Finnish.A''5!!)(Mode@0.s!Finnish.A''6!Finnish.A''5!!++Sentence@1.s!Finnish.A''6!Finnish.A''5!!)])(table ResFin.Gen[(Mode@0.s!Finnish.A''6!Finnish.A''5!!++Sentence@1.s!Finnish.A''6!Finnish.A''5!!)(Mode@0.s!Finnish.A''6!Finnish.A''5!!++Sentence@1.s!Finnish.A''6!Finnish.A''5!!)])])(table ResFin.Num[(table ResFin.Gen[(Mode@0.s!Finnish.A''6!Finnish.A''48!!++Sentence@1.s!Finnish.A''6!Finnish.A''48!!)(Mode@0.s!Finnish.A''6!Finnish.A''48!!++Sentence@1.s!Finnish.A''6!Finnish.A''48!!)])(table ResFin.Gen[(Mode@0.s!Finnish.A''6!Finnish.A''48!!++Sentence@1.s!Finnish.A''6!Finnish.A''48!!)(Mode@0.s!Finnish.A''6!Finnish.A''48!!++Sentence@1.s!Finnish.A''6!Finnish.A''48!!)])])])(table ResFin.DepGen[(table ResFin.Num[(table ResFin.Gen{p_ModeSent__3=>Mode@0.s!Finnish.A''62!!!$p_ModeSent__3++Sentence@1.s!Finnish.A''62!!!$p_ModeSent__3})(table ResFin.Gen{p_ModeSent__3=>Mode@0.s!Finnish.A''62!!!$p_ModeSent__3++Sentence@1.s!Finnish.A''62!!!$p_ModeSent__3})])(table ResFin.Num[(table ResFin.Gen[(Mode@0.s!Finnish.A''62!Finnish.A''5!!++Sentence@1.s!Finnish.A''62!Finnish.A''5!!)(Mode@0.s!Finnish.A''62!Finnish.A''5!!++Sentence@1.s!Finnish.A''62!Finnish.A''5!!)])(table ResFin.Gen[(Mode@0.s!Finnish.A''62!Finnish.A''5!!++Sentence@1.s!Finnish.A''62!Finnish.A''5!!)(Mode@0.s!Finnish.A''62!Finnish.A''5!!++Sentence@1.s!Finnish.A''62!Finnish.A''5!!)])])(table ResFin.Num[(table ResFin.Gen[(Mode@0.s!Finnish.A''62!Finnish.A''48!!++Sentence@1.s!Finnish.A''62!Finnish.A''48!!)(Mode@0.s!Finnish.A''62!Finnish.A''48!!++Sentence@1.s!Finnish.A''62!Finnish.A''48!!)])(table ResFin.Gen[(Mode@0.s!Finnish.A''62!Finnish.A''48!!++Sentence@1.s!Finnish.A''62!Finnish.A''48!!)(Mode@0.s!Finnish.A''62!Finnish.A''48!!++Sentence@1.s!Finnish.A''62!Finnish.A''48!!)])])])]};"Mode_0 Sentence_1"; -lin Mother:Letter.Author=\->{g=Finnish.A''48;n=Finnish.A''6;s=table ResFin.Num{p_Mother__0=>table ResFin.Gen{p_Mother__1=>"äiti"}}};"{ResFin.cgen} {ResFin.fem}"; -lin Name:Letter.Author=\String@0->{g=Finnish.A''5;n=Finnish.A''6;s=table ResFin.Num{p_Name__0=>table ResFin.Gen{p_Name__1=>String@0.s}}};"{ResFin.cgen} {ResFin.masc}"; -lin NameHe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResFin.masc}"; -lin NameShe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResFin.fem}"; -lincat NounPhrase={g:ResFin.Gen;n:ResFin.Num;s:Str}={g=;n=;s=str@0};"NounPhrase"; -lin OurCustomers:Letter.NounPhrase=\->{g=;n=;s="asiakkaamme"};"{ResFin.masc}"; -lin PlainRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=Recipient@0.s};"Recipient_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{p_Position__0=>table ResFin.Gen{p_Position__1=>str@0}}};"Position"; -lin President:Letter.Author=\->{g=Finnish.A''5;n=Finnish.A''6;s=table ResFin.Num{p_President__0=>table ResFin.Gen{p_President__1=>"presidentti"}}};"{ResFin.cgen} {ResFin.masc}"; -lin ProjectManager:Letter.Position=\->{s=table ResFin.Num[(table ResFin.Gen{p_ProjectManager__1=>"projektipäälliköksi"})(table ResFin.Gen{p_ProjectManager__1=>"projektipäälliköiksi"})]};"projektipllikksi"; -lincat Recipient={g:ResFin.Gen;n:ResFin.Num;s:Str}={g=;n=;s=str@0};"Recipient"; -lin Regret:Letter.Mode=\->{s=table ResFin.DepNum[(table ResFin.DepGen{p_Regret__1=>table ResFin.Num[Finnish.A''83 Finnish.A''84]})(table ResFin.DepGen{p_Regret__1=>table ResFin.Num{p_Regret__2=>Finnish.A''83}})(table ResFin.DepGen{p_Regret__1=>table ResFin.Num{p_Regret__2=>Finnish.A''84}})]};"minun (on valitettavasti ilmoitettava)ett"; -lin Senior:Letter.Position=\->{s=table ResFin.Num[(table ResFin.Gen{p_Senior__1=>"vanhemmaksi"++"tutkijaksi"})(table ResFin.Gen{p_Senior__1=>"vanhemmiksi"++"tutkijoiksi"})]};"vanhemmaksi tutkijaksi"; -lincat Sentence={s:(ResFin.DepNum=>(ResFin.DepGen=>(ResFin.Num=>(ResFin.Gen=>Str))))}={s=table ResFin.DepNum{p_Sentence__0=>table ResFin.DepGen{p_Sentence__1=>table ResFin.Num{p_Sentence__2=>table ResFin.Gen{p_Sentence__3=>str@0}}}}};"Sentence"; -lin Spouse:Letter.Author=\->{g=;n=;s=table ResFin.Num[(table ResFin.Gen["vaimosi""miehesi"])(table ResFin.Gen["vaimonne""miehenne"])]};"{ResFin.depgen}"; -} -resource ResFin={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResFin.Gen; -param DepNum=depnum|cnum ResFin.Num; -param Gen=masc|fem; -param Kas=nom|acc; -param Num=sg|pl; -} -concrete Swedish of Letter=open ResSve in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;oper A''17:Str=table ResSve.Sex{p_Honour__3=>"jag"++("har"++("äran"++("att"++"meddela"))++("dig"++"att"))}; -oper A''18:Str=table ResSve.Sex{p_Honour__3=>"vi"++("har"++("äran"++("att"++"meddela"))++("er"++"att"))}; -oper A''28:Str=table ResSve.Sex{p_ILoveYou__3=>"jag"++("älskar"++"dig")}; -oper A''29:Str=table ResSve.Sex{p_ILoveYou__3=>"vi"++("älskar"++"er")}; -oper A''5:Str=>; -oper A''53:Str=>; -oper A''71:Str=table ResSve.Sex{p_Regret__3=>"jag"++("måste"++("tyvärr"++"meddela")++("dig"++"att"))}; -oper A''72:Str=table ResSve.Sex{p_Regret__3=>"vi"++("måste"++("tyvärr"++"meddela")++("er"++"att"))}; -lincat Author={n:ResSve.DepNum;s:(ResSve.Num=>(ResSve.Sex=>Str));x:ResSve.Sex}={n=;s=table ResSve.Num{p_Author__0=>table ResSve.Sex{p_Author__1=>str@0}};x=};"Author"; -lin BePromoted:Letter.Sentence=\Position@0->{s=table ResSve.DepNum{p_BePromoted__0=>table ResSve.Sex{p_BePromoted__1=>table ResSve.Num[(table ResSve.Sex{p_BePromoted__3=>"du"++("har"++"blivit"++("befordrad"++("till"++Position@0.s!!$p_BePromoted__3)))})(table ResSve.Sex{p_BePromoted__3=>"ni"++("har"++"blivit"++("befordrade"++("till"++Position@0.s!!$p_BePromoted__3)))})]}}};"du (har blivit)befordrad till Position_0"; -lin ColleagueHe:Letter.Recipient=\->{n=;s="kollega";x=};"{ResSve.sg}"; -lin ColleagueShe:Letter.Recipient=\->{n=;s="kollega";x=};"{ResSve.sg}"; -lin ColleaguesHe:Letter.Recipient=\->{n=;s="kollegor";x=};"{ResSve.pl}"; -lin ColleaguesShe:Letter.Recipient=\->{n=;s="kollegor";x=};"{ResSve.pl}"; -lin Company:Letter.NounPhrase=\->{g=;n=;s="vårt"++"företag"};"{ResSve.ett}"; -lin Competitor:Letter.NounPhrase=\->{g=;n=;s="vår"++("värsta"++"konkurrent")};"{ResSve.en}"; -lin DarlingHe:Letter.Recipient=\->{n=;s="älskling";x=};"{ResSve.sg}"; -lin DarlingShe:Letter.Recipient=\->{n=;s="älskling";x=};"{ResSve.sg}"; -lin Dean:Letter.Author=\->{n=Swedish.A''5;s=table ResSve.Num{p_Dean__0=>table ResSve.Sex{p_Dean__1=>"Dekanus"}};x=};"{ResSve.cnum} {ResSve.sg}"; -lin DearRec:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s=table ResSve.Num[(table ResSve.Sex["Käre""Kära"]!(Recipient@0.x))(table ResSve.Sex{p_DearRec__1=>"Kära"}!(Recipient@0.x))]!(Recipient@0.n)++Recipient@0.s;x=Recipient@0.x};"Recipient_0"; -lincat Ending={n:ResSve.DepNum;s:(ResSve.Num=>(ResSve.Sex=>Str));x:ResSve.Sex}={n=;s=table ResSve.Num{p_Ending__0=>table ResSve.Sex{p_Ending__1=>str@0}};x=};"Ending"; -lin FormalEnding:Letter.Ending=\Author@0->{n=Author@0.n;s=table ResSve.Num{p_FormalEnding__0=>table ResSve.Sex{p_FormalEnding__1=>"Med"++("vänlig"++("hälsning"++"&-"))++Author@0.s!$p_FormalEnding__0!$p_FormalEnding__1}};x=Author@0.x};"Author_0"; -lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResSve.DepNum{p_GoBankrupt__0=>table ResSve.Sex{p_GoBankrupt__1=>table ResSve.Num{p_GoBankrupt__2=>table ResSve.Sex{p_GoBankrupt__3=>NounPhrase@0.s++("har"++("gått"++("i"++"konkurs")))}}}}};"NounPhrase_0 har gtt i konkurs"; -lincat Heading={n:ResSve.Num;s:Str;x:ResSve.Sex}={n=;s=str@0;x=};"Heading"; -lin HelloRec:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s="Hej"++Recipient@0.s;x=Recipient@0.x};"Recipient_0"; -lin Honour:Letter.Mode=\->{s=table ResSve.DepNum[(table ResSve.Sex{p_Honour__1=>table ResSve.Num[Swedish.A''17 Swedish.A''18]})(table ResSve.Sex{p_Honour__1=>table ResSve.Num[Swedish.A''17(table ResSve.Sex{p_Honour__3=>"jag"++("har"++("äran"++("att"++"meddela"))++("er"++"att"))})]})(table ResSve.Sex{p_Honour__1=>table ResSve.Num[(table ResSve.Sex{p_Honour__3=>"vi"++("har"++("äran"++("att"++"meddela"))++("dig"++"att"))})Swedish.A''18]})]};"jag (har ran att meddela)dig att"; -lin ILoveYou:Letter.Sentence=\->{s=table ResSve.DepNum[(table ResSve.Sex{p_ILoveYou__1=>table ResSve.Num[Swedish.A''28 Swedish.A''29]})(table ResSve.Sex{p_ILoveYou__1=>table ResSve.Num[Swedish.A''28(table ResSve.Sex{p_ILoveYou__3=>"jag"++("älskar"++"er")})]})(table ResSve.Sex{p_ILoveYou__1=>table ResSve.Num[(table ResSve.Sex{p_ILoveYou__3=>"vi"++("älskar"++"dig")})Swedish.A''29]})]};"jag lskar dig"; -lin InformalEnding:Letter.Ending=\Author@0->{n=Author@0.n;s=table ResSve.Num{p_InformalEnding__0=>table ResSve.Sex{p_InformalEnding__1=>"Med"++("hälsningar"++"&-")++Author@0.s!$p_InformalEnding__0!$p_InformalEnding__1}};x=Author@0.x};"Author_0"; -lin JustHello:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s="Hej";x=Recipient@0.x};"Recipient_0"; -lincat Letter={s:Str}={s=str@0};"Brev"; -lincat Message={s:(ResSve.DepNum=>(ResSve.Sex=>(ResSve.Num=>(ResSve.Sex=>Str))))}={s=table ResSve.DepNum{p_Message__0=>table ResSve.Sex{p_Message__1=>table ResSve.Num{p_Message__2=>table ResSve.Sex{p_Message__3=>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"; -lincat Mode={s:(ResSve.DepNum=>(ResSve.Sex=>(ResSve.Num=>(ResSve.Sex=>Str))))}={s=table ResSve.DepNum{p_Mode__0=>table ResSve.Sex{p_Mode__1=>table ResSve.Num{p_Mode__2=>table ResSve.Sex{p_Mode__3=>str@0}}}}};"Mode"; -lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResSve.DepNum[(table ResSve.Sex[(table ResSve.Num{p_ModeSent__2=>table ResSve.Sex[(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)]})(table ResSve.Num{p_ModeSent__2=>table ResSve.Sex[(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)]})])(table ResSve.Sex[(table ResSve.Num[(table ResSve.Sex[(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)])(table ResSve.Sex[(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)])])(table ResSve.Num[(table ResSve.Sex[(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)])(table ResSve.Sex[(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)(Mode@0.s!Swedish.A''5!!!++Sentence@1.s!Swedish.A''5!!!)])])])(table ResSve.Sex[(table ResSve.Num[(table ResSve.Sex[(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)])(table ResSve.Sex[(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)])])(table ResSve.Num[(table ResSve.Sex[(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)])(table ResSve.Sex[(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)(Mode@0.s!Swedish.A''53!!!++Sentence@1.s!Swedish.A''53!!!)])])])]};"Mode_0 Sentence_1"; -lin Mother:Letter.Author=\->{n=Swedish.A''5;s=table ResSve.Num{p_Mother__0=>table ResSve.Sex{p_Mother__1=>"Mamma"}};x=};"{ResSve.cnum} {ResSve.sg}"; -lin Name:Letter.Author=\String@0->{n=Swedish.A''5;s=table ResSve.Num{p_Name__0=>table ResSve.Sex{p_Name__1=>String@0.s}};x=};"{ResSve.cnum} {ResSve.sg}"; -lin NameHe:Letter.Recipient=\String@0->{n=;s=String@0.s;x=};"{ResSve.sg}"; -lin NameShe:Letter.Recipient=\String@0->{n=;s=String@0.s;x=};"{ResSve.sg}"; -lincat NounPhrase={g:ResSve.Gen;n:ResSve.Num;s:Str}={g=;n=;s=str@0};"NounPhrase"; -lin OurCustomers:Letter.NounPhrase=\->{g=;n=;s="våra"++"kunder"};"{ResSve.en}"; -lin PlainRec:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s=Recipient@0.s;x=Recipient@0.x};"Recipient_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{p_Position__0=>table ResSve.Sex{p_Position__1=>str@0}}};"Position"; -lin President:Letter.Author=\->{n=Swedish.A''5;s=table ResSve.Num{p_President__0=>table ResSve.Sex{p_President__1=>"Presidenten"}};x=};"{ResSve.cnum} {ResSve.sg}"; -lin ProjectManager:Letter.Position=\->{s=table ResSve.Num[(table ResSve.Sex{p_ProjectManager__1=>"projektchef"})(table ResSve.Sex{p_ProjectManager__1=>"projektchefer"})]};"projektchef"; -lincat Recipient={n:ResSve.Num;s:Str;x:ResSve.Sex}={n=;s=str@0;x=};"Recipient"; -lin Regret:Letter.Mode=\->{s=table ResSve.DepNum[(table ResSve.Sex{p_Regret__1=>table ResSve.Num[Swedish.A''71 Swedish.A''72]})(table ResSve.Sex{p_Regret__1=>table ResSve.Num[Swedish.A''71(table ResSve.Sex{p_Regret__3=>"jag"++("måste"++("tyvärr"++"meddela")++("er"++"att"))})]})(table ResSve.Sex{p_Regret__1=>table ResSve.Num[(table ResSve.Sex{p_Regret__3=>"vi"++("måste"++("tyvärr"++"meddela")++("dig"++"att"))})Swedish.A''72]})]};"jag (mste tyvrr meddela)dig att"; -lin Senior:Letter.Position=\->{s=table ResSve.Num{p_Senior__0=>table ResSve.Sex{p_Senior__1=>"äldre"++"forskare"}}};"ldre forskare"; -lincat Sentence={s:(ResSve.DepNum=>(ResSve.Sex=>(ResSve.Num=>(ResSve.Sex=>Str))))}={s=table ResSve.DepNum{p_Sentence__0=>table ResSve.Sex{p_Sentence__1=>table ResSve.Num{p_Sentence__2=>table ResSve.Sex{p_Sentence__3=>str@0}}}}};"Sentence"; -lin Spouse:Letter.Author=\->{n=;s=table ResSve.Num[(table ResSve.Sex[("din"++"hustru")("din"++"man")])(table ResSve.Sex[("era"++"hustrur")("era"++"män")])];x=};"{ResSve.depnum}"; -} -resource ResSve={flags coding=utf8;flags modulesize=n5;param DepNum=depnum|cnum ResSve.Num; -param Gen=en|ett; -param Kas=nom|acc; -param Num=sg|pl; -param Sex=masc|fem; -} -concrete French of Letter=open ResFra in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;oper A''12:Str=table ResFra.Num["mes""nos"]; -oper A''23:Str=table ResFra.Gen{p_Honour__3=>"j'ai"++("l'honneur"++"de"++("t'informer"++"que"))}; -oper A''24:Str=table ResFra.Gen{p_Honour__3=>"nous"++"avons"++("l'honneur"++"de"++("vous"++"informer"++"que"))}; -oper A''34:Str=table ResFra.Gen{p_ILoveYou__3=>"je"++"t'aime"}; -oper A''35:Str=table ResFra.Gen{p_ILoveYou__3=>"nous"++("vous"++"aimons")}; -oper A''5:Str=>; -oper A''51:Str=>; -oper A''6:Str=>; -oper A''65:Str=>; -oper A''86:Str=table ResFra.Gen[("je"++"suis"++("désolée"++("d'informer"++"que")))("je"++"suis"++("désolé"++("d'informer"++"que")))]; -oper A''87:Str=table ResFra.Gen[("nous"++"sommes"++("désolées"++("d'informer"++"que")))("nous"++"sommes"++("désolés"++("d'informer"++"que")))]; -oper A''89:Str=table ResFra.Gen{p_Regret__3=>"je"++"suis"++("désolé"++("d'informer"++"que"))}; -oper A''90:Str=table ResFra.Gen{p_Regret__3=>"nous"++"sommes"++("désolés"++("d'informer"++"que"))}; -oper A''92:Str=table ResFra.Gen{p_Regret__3=>"je"++"suis"++("désolée"++("d'informer"++"que"))}; -oper A''93:Str=table ResFra.Gen{p_Regret__3=>"nous"++"sommes"++("désolées"++("d'informer"++"que"))}; -lincat Author={g:ResFra.DepGen;n:ResFra.DepNum;s:(ResFra.Num=>(ResFra.Gen=>Str))}={g=;n=;s=table ResFra.Num{p_Author__0=>table ResFra.Gen{p_Author__1=>str@0}}};"Author"; -lin BePromoted:Letter.Sentence=\Position@0->{s=table ResFra.DepNum{p_BePromoted__0=>table ResFra.DepGen{p_BePromoted__1=>table ResFra.Num[(table ResFra.Gen[("tu"++("as"++"été")++("promu"++Position@0.s!!))("tu"++("as"++"été")++("promue"++Position@0.s!!))])(table ResFra.Gen[("vous"++("avez"++"été")++("promus"++Position@0.s!!))("vous"++("avez"++"été")++("promues"++Position@0.s!!))])]}}};"(tu as t)promu Position_0"; -lin ColleagueHe:Letter.Recipient=\->{g=;n=;s="collègue"};"{ResFra.masc}"; -lin ColleagueShe:Letter.Recipient=\->{g=;n=;s="collègue"};"{ResFra.fem}"; -lin ColleaguesHe:Letter.Recipient=\->{g=;n=;s="collègues"};"{ResFra.masc}"; -lin ColleaguesShe:Letter.Recipient=\->{g=;n=;s="collègues"};"{ResFra.fem}"; -lin Company:Letter.NounPhrase=\->{g=;n=;s="notre"++"entreprise"};"{ResFra.fem}"; -lin Competitor:Letter.NounPhrase=\->{g=;n=;s="notre"++("pire"++"compétiteur")};"{ResFra.masc}"; -lin DarlingHe:Letter.Recipient=\->{g=;n=;s="chéri"};"{ResFra.masc}"; -lin DarlingShe:Letter.Recipient=\->{g=;n=;s="chérie"};"{ResFra.fem}"; -lin Dean:Letter.Author=\->{g=French.A''5;n=French.A''6;s=table ResFra.Num{p_Dean__0=>table ResFra.Gen{p_Dean__1=>"le"++"doyen"}}};"{ResFra.cgen} {ResFra.masc}"; -lin DearRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=table ResFra.Num[(table ResFra.Gen["cher""chère"]!(Recipient@0.g))(table ResFra.Gen["chers""chères"]!(Recipient@0.g))]!(Recipient@0.n)++Recipient@0.s};"Recipient_0"; -lincat Ending={g:ResFra.DepGen;n:ResFra.DepNum;s:(ResFra.Num=>(ResFra.Gen=>Str))}={g=;n=;s=table ResFra.Num{p_Ending__0=>table ResFra.Gen{p_Ending__1=>str@0}}};"Ending"; -lin FormalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResFra.Num[(table ResFra.Gen{p_FormalEnding__1=>"avec"++(French.A''12!(table ResFra.DepNum[]!(Author@0.n))++("salutations"++("distinguées"++"&-")++Author@0.s!!$p_FormalEnding__1))})(table ResFra.Gen{p_FormalEnding__1=>"avec"++(French.A''12!(table ResFra.DepNum[]!(Author@0.n))++("salutations"++("distinguées"++"&-")++Author@0.s!!$p_FormalEnding__1))})]};"Author_0"; -lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResFra.DepNum{p_GoBankrupt__0=>table ResFra.DepGen{p_GoBankrupt__1=>table ResFra.Num{p_GoBankrupt__2=>table ResFra.Gen{p_GoBankrupt__3=>NounPhrase@0.s++(table ResFra.Num["a""ont"]!(NounPhrase@0.n)++("fait"++"banqueroute"))}}}}};"NounPhrase_0 a fait banqueroute"; -lincat Heading={g:ResFra.Gen;n:ResFra.Num;s:Str}={g=;n=;s=str@0};"Heading"; -lin HelloRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s="Bonjour"++Recipient@0.s};"Recipient_0"; -lin Honour:Letter.Mode=\->{s=table ResFra.DepNum[(table ResFra.DepGen{p_Honour__1=>table ResFra.Num[French.A''23 French.A''24]})(table ResFra.DepGen{p_Honour__1=>table ResFra.Num[French.A''23(table ResFra.Gen{p_Honour__3=>"j'ai"++("l'honneur"++"de"++("vous"++"informer"++"que"))})]})(table ResFra.DepGen{p_Honour__1=>table ResFra.Num[(table ResFra.Gen{p_Honour__3=>"nous"++"avons"++("l'honneur"++"de"++("t'informer"++"que"))})French.A''24]})]};"j'ai (l'honneur de)t'informer que"; -lin ILoveYou:Letter.Sentence=\->{s=table ResFra.DepNum[(table ResFra.DepGen{p_ILoveYou__1=>table ResFra.Num[French.A''34 French.A''35]})(table ResFra.DepGen{p_ILoveYou__1=>table ResFra.Num[French.A''34(table ResFra.Gen{p_ILoveYou__3=>"je"++("vous"++"aime")})]})(table ResFra.DepGen{p_ILoveYou__1=>table ResFra.Num[(table ResFra.Gen{p_ILoveYou__3=>"nous"++"t'aimons"})French.A''35]})]};"je t'aime"; -lin InformalEnding:Letter.Ending=\Author@0->{g=Author@0.g;n=Author@0.n;s=table ResFra.Num{p_InformalEnding__0=>table ResFra.Gen{p_InformalEnding__1=>"Amicalement"++"&-"++Author@0.s!$p_InformalEnding__0!$p_InformalEnding__1}}};"Author_0"; -lin JustHello:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s="Bonjour"};"Recipient_0"; -lincat Letter={s:Str}={s=str@0};"Letter"; -lincat Message={s:(ResFra.DepNum=>(ResFra.DepGen=>(ResFra.Num=>(ResFra.Gen=>Str))))}={s=table ResFra.DepNum{p_Message__0=>table ResFra.DepGen{p_Message__1=>table ResFra.Num{p_Message__2=>table ResFra.Gen{p_Message__3=>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"; -lincat Mode={s:(ResFra.DepNum=>(ResFra.DepGen=>(ResFra.Num=>(ResFra.Gen=>Str))))}={s=table ResFra.DepNum{p_Mode__0=>table ResFra.DepGen{p_Mode__1=>table ResFra.Num{p_Mode__2=>table ResFra.Gen{p_Mode__3=>str@0}}}}};"Mode"; -lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResFra.DepNum[(table ResFra.DepGen[(table ResFra.Num{p_ModeSent__2=>table ResFra.Gen{p_ModeSent__3=>Mode@0.s!!!$p_ModeSent__2!$p_ModeSent__3++Sentence@1.s!!!$p_ModeSent__2!$p_ModeSent__3}})(table ResFra.Num{p_ModeSent__2=>table ResFra.Gen[(Mode@0.s!!French.A''5!$p_ModeSent__2!++Sentence@1.s!!French.A''5!$p_ModeSent__2!)(Mode@0.s!!French.A''5!$p_ModeSent__2!++Sentence@1.s!!French.A''5!$p_ModeSent__2!)]})(table ResFra.Num{p_ModeSent__2=>table ResFra.Gen[(Mode@0.s!!French.A''51!$p_ModeSent__2!++Sentence@1.s!!French.A''51!$p_ModeSent__2!)(Mode@0.s!!French.A''51!$p_ModeSent__2!++Sentence@1.s!!French.A''51!$p_ModeSent__2!)]})])(table ResFra.DepGen[(table ResFra.Num[(table ResFra.Gen{p_ModeSent__3=>Mode@0.s!French.A''6!!!$p_ModeSent__3++Sentence@1.s!French.A''6!!!$p_ModeSent__3})(table ResFra.Gen{p_ModeSent__3=>Mode@0.s!French.A''6!!!$p_ModeSent__3++Sentence@1.s!French.A''6!!!$p_ModeSent__3})])(table ResFra.Num[(table ResFra.Gen[(Mode@0.s!French.A''6!French.A''5!!++Sentence@1.s!French.A''6!French.A''5!!)(Mode@0.s!French.A''6!French.A''5!!++Sentence@1.s!French.A''6!French.A''5!!)])(table ResFra.Gen[(Mode@0.s!French.A''6!French.A''5!!++Sentence@1.s!French.A''6!French.A''5!!)(Mode@0.s!French.A''6!French.A''5!!++Sentence@1.s!French.A''6!French.A''5!!)])])(table ResFra.Num[(table ResFra.Gen[(Mode@0.s!French.A''6!French.A''51!!++Sentence@1.s!French.A''6!French.A''51!!)(Mode@0.s!French.A''6!French.A''51!!++Sentence@1.s!French.A''6!French.A''51!!)])(table ResFra.Gen[(Mode@0.s!French.A''6!French.A''51!!++Sentence@1.s!French.A''6!French.A''51!!)(Mode@0.s!French.A''6!French.A''51!!++Sentence@1.s!French.A''6!French.A''51!!)])])])(table ResFra.DepGen[(table ResFra.Num[(table ResFra.Gen{p_ModeSent__3=>Mode@0.s!French.A''65!!!$p_ModeSent__3++Sentence@1.s!French.A''65!!!$p_ModeSent__3})(table ResFra.Gen{p_ModeSent__3=>Mode@0.s!French.A''65!!!$p_ModeSent__3++Sentence@1.s!French.A''65!!!$p_ModeSent__3})])(table ResFra.Num[(table ResFra.Gen[(Mode@0.s!French.A''65!French.A''5!!++Sentence@1.s!French.A''65!French.A''5!!)(Mode@0.s!French.A''65!French.A''5!!++Sentence@1.s!French.A''65!French.A''5!!)])(table ResFra.Gen[(Mode@0.s!French.A''65!French.A''5!!++Sentence@1.s!French.A''65!French.A''5!!)(Mode@0.s!French.A''65!French.A''5!!++Sentence@1.s!French.A''65!French.A''5!!)])])(table ResFra.Num[(table ResFra.Gen[(Mode@0.s!French.A''65!French.A''51!!++Sentence@1.s!French.A''65!French.A''51!!)(Mode@0.s!French.A''65!French.A''51!!++Sentence@1.s!French.A''65!French.A''51!!)])(table ResFra.Gen[(Mode@0.s!French.A''65!French.A''51!!++Sentence@1.s!French.A''65!French.A''51!!)(Mode@0.s!French.A''65!French.A''51!!++Sentence@1.s!French.A''65!French.A''51!!)])])])]};"Mode_0 Sentence_1"; -lin Mother:Letter.Author=\->{g=French.A''51;n=French.A''6;s=table ResFra.Num{p_Mother__0=>table ResFra.Gen{p_Mother__1=>"maman"}}};"{ResFra.cgen} {ResFra.fem}"; -lin Name:Letter.Author=\String@0->{g=French.A''5;n=French.A''6;s=table ResFra.Num{p_Name__0=>table ResFra.Gen{p_Name__1=>String@0.s}}};"{ResFra.cgen} {ResFra.masc}"; -lin NameHe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResFra.masc}"; -lin NameShe:Letter.Recipient=\String@0->{g=;n=;s=String@0.s};"{ResFra.fem}"; -lincat NounPhrase={g:ResFra.Gen;n:ResFra.Num;s:Str}={g=;n=;s=str@0};"NounPhrase"; -lin OurCustomers:Letter.NounPhrase=\->{g=;n=;s="nos"++"clients"};"{ResFra.masc}"; -lin PlainRec:Letter.Heading=\Recipient@0->{g=Recipient@0.g;n=Recipient@0.n;s=Recipient@0.s};"Recipient_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{p_Position__0=>table ResFra.Gen{p_Position__1=>str@0}}};"Position"; -lin President:Letter.Author=\->{g=French.A''5;n=French.A''6;s=table ResFra.Num{p_President__0=>table ResFra.Gen{p_President__1=>"le"++"président"}}};"{ResFra.cgen} {ResFra.masc}"; -lin ProjectManager:Letter.Position=\->{s=table ResFra.Num[(table ResFra.Gen{p_ProjectManager__1=>"chef"++("de"++"projet")})(table ResFra.Gen{p_ProjectManager__1=>"chefs"++("de"++"projets")})]};"chef de projet"; -lincat Recipient={g:ResFra.Gen;n:ResFra.Num;s:Str}={g=;n=;s=str@0};"Recipient"; -lin Regret:Letter.Mode=\->{s=table ResFra.DepNum[(table ResFra.DepGen[(table ResFra.Num[French.A''86 French.A''87])(table ResFra.Num[French.A''89 French.A''90])(table ResFra.Num[French.A''92 French.A''93])])(table ResFra.DepGen[(table ResFra.Num{p_Regret__2=>French.A''86})(table ResFra.Num{p_Regret__2=>French.A''89})(table ResFra.Num{p_Regret__2=>French.A''92})])(table ResFra.DepGen[(table ResFra.Num{p_Regret__2=>French.A''87})(table ResFra.Num{p_Regret__2=>French.A''90})(table ResFra.Num{p_Regret__2=>French.A''93})])]};"(je suis)dsole d'informer que"; -lin Senior:Letter.Position=\->{s=table ResFra.Num[(table ResFra.Gen{p_Senior__1=>"responsable"++"scientifique"})(table ResFra.Gen{p_Senior__1=>"responsables"++"scientifiques"})]};"responsable scientifique"; -lincat Sentence={s:(ResFra.DepNum=>(ResFra.DepGen=>(ResFra.Num=>(ResFra.Gen=>Str))))}={s=table ResFra.DepNum{p_Sentence__0=>table ResFra.DepGen{p_Sentence__1=>table ResFra.Num{p_Sentence__2=>table ResFra.Gen{p_Sentence__3=>str@0}}}}};"Sentence"; -lin Spouse:Letter.Author=\->{g=;n=;s=table ResFra.Num[(table ResFra.Gen[("ta"++"femme")("ton"++"mari")])(table ResFra.Gen[("vos"++"femmes")("vos"++"maris")])]};"{ResFra.depgen}"; -} -resource ResFra={flags coding=utf8;flags modulesize=n5;param DepGen=depgen|cgen ResFra.Gen; -param DepNum=depnum|cnum ResFra.Num; -param Gen=masc|fem; -param Kas=nom|acc; -param Num=sg|pl; -} -concrete English of Letter=open ResEng in{flags coding=utf8;flags modulesize=n42;flags startcat=Letter;flags lexer=textlit;flags unlexer=textlit;oper A''14:Str=table ResEng.Sex{p_Honour__3=>"I"++("have"++("the"++("honour"++("to"++("inform"++("you"++"that"))))))}; -oper A''15:Str=table ResEng.Sex{p_Honour__3=>"we"++("have"++("the"++("honour"++("to"++("inform"++("you"++"that"))))))}; -oper A''23:Str=table ResEng.Sex{p_ILoveYou__3=>"I"++("love"++"you")}; -oper A''24:Str=table ResEng.Sex{p_ILoveYou__3=>"we"++("love"++"you")}; -oper A''4:Str=>; -oper A''46:Str=>; -oper A''64:Str=table ResEng.Sex{p_Regret__3=>"I"++("am"++("sorry"++("to"++("inform"++("you"++"that")))))}; -oper A''65:Str=table ResEng.Sex{p_Regret__3=>"we"++("are"++("sorry"++("to"++("inform"++("you"++"that")))))}; -lincat Author={n:ResEng.DepNum;s:(ResEng.Num=>(ResEng.Sex=>Str));x:ResEng.Sex}={n=;s=table ResEng.Num{p_Author__0=>table ResEng.Sex{p_Author__1=>str@0}};x=};"Author"; -lin BePromoted:Letter.Sentence=\Position@0->{s=table ResEng.DepNum{p_BePromoted__0=>table ResEng.Sex{p_BePromoted__1=>table ResEng.Num{p_BePromoted__2=>table ResEng.Sex{p_BePromoted__3=>"you"++("have"++("been"++("promoted"++"to")))++Position@0.s!$p_BePromoted__2!$p_BePromoted__3}}}}};"(you have been promoted to)Position_0"; -lin ColleagueHe:Letter.Recipient=\->{n=;s="colleague";x=};"{ResEng.sg}"; -lin ColleagueShe:Letter.Recipient=\->{n=;s="colleague";x=};"{ResEng.sg}"; -lin ColleaguesHe:Letter.Recipient=\->{n=;s="colleagues";x=};"{ResEng.pl}"; -lin ColleaguesShe:Letter.Recipient=\->{n=;s="colleagues";x=};"{ResEng.pl}"; -lin Company:Letter.NounPhrase=\->{n=;s="our"++"company"};"{ResEng.sg}"; -lin Competitor:Letter.NounPhrase=\->{n=;s="our"++("worst"++"competitor")};"{ResEng.sg}"; -lin DarlingHe:Letter.Recipient=\->{n=;s="darling";x=};"{ResEng.sg}"; -lin DarlingShe:Letter.Recipient=\->{n=;s="darling";x=};"{ResEng.sg}"; -lin Dean:Letter.Author=\->{n=English.A''4;s=table ResEng.Num{p_Dean__0=>table ResEng.Sex{p_Dean__1=>"the"++"Dean"}};x=};"{ResEng.cnum} {ResEng.sg}"; -lin DearRec:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s="Dear"++Recipient@0.s;x=Recipient@0.x};"Recipient_0"; -lincat Ending={n:ResEng.DepNum;s:(ResEng.Num=>(ResEng.Sex=>Str));x:ResEng.Sex}={n=;s=table ResEng.Num{p_Ending__0=>table ResEng.Sex{p_Ending__1=>str@0}};x=};"Ending"; -lin FormalEnding:Letter.Ending=\Author@0->{n=Author@0.n;s=table ResEng.Num{p_FormalEnding__0=>table ResEng.Sex{p_FormalEnding__1=>"Sincerely"++("yours"++"&-")++Author@0.s!$p_FormalEnding__0!$p_FormalEnding__1}};x=Author@0.x};"Author_0"; -lin GoBankrupt:Letter.Sentence=\NounPhrase@0->{s=table ResEng.DepNum{p_GoBankrupt__0=>table ResEng.Sex{p_GoBankrupt__1=>table ResEng.Num{p_GoBankrupt__2=>table ResEng.Sex{p_GoBankrupt__3=>NounPhrase@0.s++(table ResEng.Num["has""have"]!(NounPhrase@0.n)++("gone"++"bankrupt"))}}}}};"NounPhrase_0 has gone bankrupt"; -lincat Heading={n:ResEng.Num;s:Str;x:ResEng.Sex}={n=;s=str@0;x=};"Heading"; -lin HelloRec:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s="Hello"++Recipient@0.s;x=Recipient@0.x};"Recipient_0"; -lin Honour:Letter.Mode=\->{s=table ResEng.DepNum[(table ResEng.Sex{p_Honour__1=>table ResEng.Num[English.A''14 English.A''15]})(table ResEng.Sex{p_Honour__1=>table ResEng.Num{p_Honour__2=>English.A''14}})(table ResEng.Sex{p_Honour__1=>table ResEng.Num{p_Honour__2=>English.A''15}})]};"I have the honour to inform you that"; -lin ILoveYou:Letter.Sentence=\->{s=table ResEng.DepNum[(table ResEng.Sex{p_ILoveYou__1=>table ResEng.Num[English.A''23 English.A''24]})(table ResEng.Sex{p_ILoveYou__1=>table ResEng.Num{p_ILoveYou__2=>English.A''23}})(table ResEng.Sex{p_ILoveYou__1=>table ResEng.Num{p_ILoveYou__2=>English.A''24}})]};"I love you"; -lin InformalEnding:Letter.Ending=\Author@0->{n=Author@0.n;s=table ResEng.Num{p_InformalEnding__0=>table ResEng.Sex{p_InformalEnding__1=>"With"++("best"++("regards"++"&-"))++Author@0.s!$p_InformalEnding__0!$p_InformalEnding__1}};x=Author@0.x};"Author_0"; -lin JustHello:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s="Hello";x=Recipient@0.x};"Recipient_0"; -lincat Letter={s:Str}={s=str@0};"Letter"; -lincat Message={s:(ResEng.DepNum=>(ResEng.Sex=>(ResEng.Num=>(ResEng.Sex=>Str))))}={s=table ResEng.DepNum{p_Message__0=>table ResEng.Sex{p_Message__1=>table ResEng.Num{p_Message__2=>table ResEng.Sex{p_Message__3=>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"; -lincat Mode={s:(ResEng.DepNum=>(ResEng.Sex=>(ResEng.Num=>(ResEng.Sex=>Str))))}={s=table ResEng.DepNum{p_Mode__0=>table ResEng.Sex{p_Mode__1=>table ResEng.Num{p_Mode__2=>table ResEng.Sex{p_Mode__3=>str@0}}}}};"Mode"; -lin ModeSent:Letter.Message=\Mode@0,Sentence@1->{s=table ResEng.DepNum[(table ResEng.Sex[(table ResEng.Num{p_ModeSent__2=>table ResEng.Sex[(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)]})(table ResEng.Num{p_ModeSent__2=>table ResEng.Sex[(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)(Mode@0.s!!!$p_ModeSent__2!++Sentence@1.s!!!$p_ModeSent__2!)]})])(table ResEng.Sex[(table ResEng.Num[(table ResEng.Sex[(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)])(table ResEng.Sex[(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)])])(table ResEng.Num[(table ResEng.Sex[(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)])(table ResEng.Sex[(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)(Mode@0.s!English.A''4!!!++Sentence@1.s!English.A''4!!!)])])])(table ResEng.Sex[(table ResEng.Num[(table ResEng.Sex[(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)])(table ResEng.Sex[(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)])])(table ResEng.Num[(table ResEng.Sex[(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)])(table ResEng.Sex[(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)(Mode@0.s!English.A''46!!!++Sentence@1.s!English.A''46!!!)])])])]};"Mode_0 Sentence_1"; -lin Mother:Letter.Author=\->{n=English.A''4;s=table ResEng.Num{p_Mother__0=>table ResEng.Sex{p_Mother__1=>"Mom"}};x=};"{ResEng.cnum} {ResEng.sg}"; -lin Name:Letter.Author=\String@0->{n=English.A''4;s=table ResEng.Num{p_Name__0=>table ResEng.Sex{p_Name__1=>String@0.s}};x=};"{ResEng.cnum} {ResEng.sg}"; -lin NameHe:Letter.Recipient=\String@0->{n=;s=String@0.s;x=};"{ResEng.sg}"; -lin NameShe:Letter.Recipient=\String@0->{n=;s=String@0.s;x=};"{ResEng.sg}"; -lincat NounPhrase={n:ResEng.Num;s:Str}={n=;s=str@0};"NounPhrase"; -lin OurCustomers:Letter.NounPhrase=\->{n=;s="our"++"customers"};"{ResEng.pl}"; -lin PlainRec:Letter.Heading=\Recipient@0->{n=Recipient@0.n;s=Recipient@0.s;x=Recipient@0.x};"Recipient_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{p_Position__0=>table ResEng.Sex{p_Position__1=>str@0}}};"Position"; -lin President:Letter.Author=\->{n=English.A''4;s=table ResEng.Num{p_President__0=>table ResEng.Sex{p_President__1=>"the"++"President"}};x=};"{ResEng.cnum} {ResEng.sg}"; -lin ProjectManager:Letter.Position=\->{s=table ResEng.Num[(table ResEng.Sex{p_ProjectManager__1=>"a"++("project"++"manager")})(table ResEng.Sex{p_ProjectManager__1=>"project"++"managers"})]};"a project manager"; -lincat Recipient={n:ResEng.Num;s:Str;x:ResEng.Sex}={n=;s=str@0;x=};"Recipient"; -lin Regret:Letter.Mode=\->{s=table ResEng.DepNum[(table ResEng.Sex{p_Regret__1=>table ResEng.Num[English.A''64 English.A''65]})(table ResEng.Sex{p_Regret__1=>table ResEng.Num{p_Regret__2=>English.A''64}})(table ResEng.Sex{p_Regret__1=>table ResEng.Num{p_Regret__2=>English.A''65}})]};"I am sorry to inform you that"; -lin Senior:Letter.Position=\->{s=table ResEng.Num[(table ResEng.Sex{p_Senior__1=>"a"++("senior"++"fellow")})(table ResEng.Sex{p_Senior__1=>"senior"++"fellows"})]};"a senior fellow"; -lincat Sentence={s:(ResEng.DepNum=>(ResEng.Sex=>(ResEng.Num=>(ResEng.Sex=>Str))))}={s=table ResEng.DepNum{p_Sentence__0=>table ResEng.Sex{p_Sentence__1=>table ResEng.Num{p_Sentence__2=>table ResEng.Sex{p_Sentence__3=>str@0}}}}};"Sentence"; -lin Spouse:Letter.Author=\->{n=;s=table ResEng.Num[(table ResEng.Sex[("your"++"wife")("your"++"husband")])(table ResEng.Sex[("your"++"wives")("your"++"husbands")])];x=};"{ResEng.depnum}"; -} -resource ResEng={flags coding=utf8;flags modulesize=n4;param DepNum=depnum|cnum ResEng.Num; -param Kas=nom|acc; -param Num=sg|pl; -param Sex=masc|fem; -} diff --git a/examples/letter/README b/examples/letter/README deleted file mode 100644 index 936fab377..000000000 --- a/examples/letter/README +++ /dev/null @@ -1,36 +0,0 @@ -GF challenges Microsoft Works! Here you find templates for -multilingual authoring of business and love letters! - -Another point of these grammars is to illustrate how -local updates are propagated everywhere in the document. -Form, in the editor - - Dear Colleague, - - I love you. - - With best regards, - - your wife - -and change between ColleagueHe, ColleagueShe, ColleaguesHe, ColleaguesShe. - -The grammars are somewhat ad hoc and messy, and could be improved -with better abstractions. - -(AR 2001) - -To use in the editor, it is a good idea to precompile: - - gf Message -> Ending -> Letter ; - --- The heading consists of a greeting of the recipient. The $JustHello$ --- function will actually suppress the name (and title) of the recipient, --- but the $Recipient$ argument keeps track of the gender and number. - - DearRec : Recipient -> Heading ; - PlainRec : Recipient -> Heading ; - HelloRec : Recipient -> Heading ; - JustHello : Recipient -> Heading ; - --- A message is a sentence with of without a *mode*, which is either --- regret or honour. - - ModeSent : Mode -> Sentence -> Message ; - PlainSent : Sentence -> Message ; - - Honour, Regret : Mode ; - --- The ending is either formal or informal. It does not currently depend on --- the heading: making it so would eliminate formality mismatches between --- the heading and the ending. - - FormalEnding : Author -> Ending ; - InformalEnding : Author -> Ending ; - --- The recipient is either a colleague, colleagues, or darling. --- It can also be a named person. The gender distinction is made --- because there are things in the body of the letter that depend on it. - - ColleagueHe, ColleagueShe : Recipient ; - ColleaguesHe, ColleaguesShe : Recipient ; - DarlingHe, DarlingShe : Recipient ; - - NameHe, NameShe : String -> Recipient ; - --- For the author, there is likewise a fixed set of titles, plus the named author. --- Gender distinctions could be useful even here, for the same reason as with --- $Recipient$. Notice that the rendering of $Spouse$ will depend on the --- gender of the recipient. - - President, Mother, Spouse, Dean : Author ; - Name : String -> Author ; - --- As for the message body, no much choice is yet available: one can say that --- the recipient is promoted to some position, that someone has gone bankrupt, --- or that the author loves the recipient. - - BePromoted : Position -> Sentence ; - GoBankrupt : NounPhrase -> Sentence ; - ILoveYou : Sentence ; - - Competitor : NounPhrase ; - Company : NounPhrase ; - OurCustomers : NounPhrase ; - - Senior : Position ; - ProjectManager : Position ; - diff --git a/examples/letter/letter.Eng.gf b/examples/letter/letter.Eng.gf deleted file mode 100644 index 561917551..000000000 --- a/examples/letter/letter.Eng.gf +++ /dev/null @@ -1,151 +0,0 @@ ---1 An English Concrete Syntax for Business and Love Letters --- --- This file defines the English syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - -include letter.Abs.gf ; - -flags lexer=textlit ; unlexer=textlit ; - -param Sex = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; - -lintype SS = {s : Str} ; -lintype SSDep = {s : Num => Sex => Str} ; -- needs Num and Sex -lintype SSSrc = {s : Str ; n : Num ; x : Sex} ; -- gives Num and Sex -lintype SSSrc2 = {s : Num => Sex => Str ; n : DepNum ; x : Sex} ; -- gives and needs -lintype SSDep2 = {s : DepNum => Sex => Num => Sex => Str} ; -- needs Auth's & Recp's -lintype SSSrcNum = {s : Str ; n : Num} ; -- gives Num only - - -oper - ss : Str -> SS = \s -> {s = s} ; - constNX : Str -> Num -> Sex -> SSSrc2 = \str,num,sex -> - {s = table {_ => table {_ => str}} ; n = cnum num ; x = sex} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcNum ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ "&-" ++ - mess.s ! end.n ! end.x ! head.n ! head.x ++ "." ++ "&-" ++ - end.s ! head.n ! head.x) ; - -DearRec rec = {s = "Dear" ++ rec.s ; n = rec.n ; x = rec.x} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Hello" ++ rec.s ; n = rec.n ; x = rec.x} ; -JustHello rec = {s = "Hello" ; n = rec.n ; x = rec.x} ; - -ModeSent mode sent = - {s = - table {dna => table {xa => table {nr => table {xr => - mode.s ! dna ! xa ! nr ! xr ++ sent.s ! dna ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = table {n => table {x => - ["Sincerely yours &-"] ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; -InformalEnding auth = - {s = table {n => table {x => - ["With best regards &-"] ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; - -ColleaguesHe = {s = kollega ! pl ; n = pl ; x = masc} ; -ColleaguesShe = {s = kollega ! pl ; n = pl ; x = fem} ; -ColleagueHe = {s = kollega ! sg ; n = sg ; x = masc} ; -ColleagueShe = {s = kollega ! sg ; n = sg ; x = fem} ; -DarlingHe = {s = "darling" ; n = sg ; x = masc} ; -DarlingShe = {s = "darling" ; n = sg ; x = fem} ; -NameHe s = {s = s.s ; n = sg ; x = masc} ; -NameShe s = {s = s.s ; n = sg ; x = fem} ; - - -Honour = {s = - table {dna => table {xa => table {nr => table {xr => - let {na = dep2num dna nr} in - ego ! na ! nom ++ ["have the honour to inform you that"]}}}} - } ; - -Regret = {s = - table {dna => table {xa => table {nr => table {xr => - let {na = dep2num dna nr} in - ego ! na ! nom ++ am ! na ++ ["sorry to inform you that"]}}}} - } ; - - -President = constNX ["the President"] sg masc ; -Mother = constNX "Mom" sg fem ; -Spouse = {s = table { - sg => table {fem => ["your husband"] ; masc => ["your wife"]} ; - pl => table {fem => ["your husbands"] ; masc => ["your wives"]} - } ; n = depnum ; x = masc} ; -- sex does not matter here -Dean = constNX ["the Dean"] sg masc ; -Name s = constNX s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - ["you have been promoted to"] ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ have ! np.n ++ ["gone bankrupt"]}}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - ego ! dep2num na nr ! nom ++ ["love you"]}}}} - } ; - -Company = {s = ["our company"] ; n = sg} ; -Competitor = {s = ["our worst competitor"] ; n = sg} ; -OurCustomers = {s = ["our customers"] ; n = pl} ; - -Senior = {s = - table { - sg => table {x => ["a senior fellow"]} ; - pl => table {x => ["senior fellows"]} - }} ; -ProjectManager = {s = - table { - sg => table {_ => ["a project manager"]} ; - pl => table {_ => ["project managers"]} - }} ; - -oper - -kollega : - Num => Str = - table {sg => "colleague" ; pl => "colleagues"} ; - -am : - Num => Str = - table {sg => "am" ; pl => "are"} ; - -have : - Num => Str = - table {sg => "has" ; pl => "have"} ; - -ego : - Num => Kas => Str = - table { - sg => table {nom => "I" ; acc => "me"} ; - pl => table {nom => "we" ; acc => "us"} - } ; - diff --git a/examples/letter/letter.Fin.gf b/examples/letter/letter.Fin.gf deleted file mode 100644 index afebeef69..000000000 --- a/examples/letter/letter.Fin.gf +++ /dev/null @@ -1,179 +0,0 @@ ---1 A Finnish Concrete Syntax for Business and Love Letters --- --- This file defines the Finnish syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - -include letter.Abs.gf ; - -flags lexer=textlit ; unlexer=textlit ; - --- modified from French in 20 min, 15/6/2002 - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -lintype SS = {s : Str} ; -lintype SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -lintype SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -lintype SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -lintype SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -lintype SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - - noDep : (P : Type) -> Str -> P => Str = \_,s -> table {_ => s} ; - - cher : Num => Gen => Tok = - table {sg => noDep Gen "rakas" ; pl => noDep Gen "rakkaat"} ; - - egosum : Num => Str = - table {sg => "olen" ; pl => "olemme"} ; - egohabeo : Num => Str = - table {sg => "minulla" ++ "on" ; pl => "meill" ++ "on"} ; - fuisti : Num => Str = - table {sg => "sinut" ++ "on"; pl => "teidt" ++ "on"} ; - quePrep = "ett" ; ---- - tuinformare : Num => Str = - table {sg => "ilmoittaa" ++ "sinulle" ; pl => "ilmoittaa" ++ "teille"} ; - - regNom : Str -> Num => Str = \pora -> table {sg => pora ; pl => pora + "t"} ; - - avoir : Num => Str = - table {sg => "on"; pl => "ovat"} ; - - mes : Num => Str = table {sg => "minun" ; pl => "meidn"} ; - - teamo : Num => Num => Str = table { - sg => table {sg => "rakastan" ++ "sinua" ; - pl => "rakastan" ++ "teit"} ; - pl => table {sg => "rakastamme" ++ "sinua" ; - pl => "rakastamme" ++ "teit"} - } ; - - constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ "&-" ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ "&-" ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = cher ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Terve" ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = "Terve" ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = table {n => table {g => ["parhain terveisin &-"] ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; -InformalEnding auth = - {s = table {n => table {g => ["terveisin &-"] ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleaguesHe = {s = regNom "kollega" ! pl ; n = pl ; g = masc} ; -ColleaguesShe = {s = regNom "kollega" ! pl ; n = pl ; g = fem} ; -ColleagueHe = {s = regNom "kollega" ! sg ; n = sg ; g = masc} ; -ColleagueShe = {s = regNom "kollega" ! sg ; n = sg ; g = fem} ; -DarlingHe = {s = "kulta" ; n = sg ; g = masc} ; -DarlingShe = {s = "kulta" ; n = sg ; g = fem} ; -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - egohabeo ! dep2num na nr ++ - ["kunnia"] ++ tuinformare ! nr ++ quePrep}}}} - } ; - -Regret = {s = - table {na => table {ga => table {nr => table {gr => - mes ! dep2num na nr ++ - ["on valitettavasti ilmoitettava"] ++ quePrep}}}} - } ; - - -President = constNG ["presidentti"] sg masc ; -Mother = constNG ["iti"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["miehesi"] ; masc => ["vaimosi"]} ; - pl => table {fem => ["miehenne"] ; masc => ["vaimonne"]} - } ; n = depnum ; g = depgen} ; -Dean = constNG ["dekaani"] sg masc ; -Name s = constNG s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - fuisti ! nr ++ "ylennetty" ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => - table {xa => - table {nr => - table {xr => - np.s ++ avoir ! np.n ++ - (case np.n of {sg => "mennyt" ; pl => "menneet"}) ++ - "konkurssiin" - } - } - } - } - } ; - -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - teamo ! dep2num na nr ! nr}}}}} ; - -Company = {s = ["yrityksemme"] ; n = sg ; g = fem} ; -Competitor = {s = ["pahin kilpailijamme"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["asiakkaamme"] ; n = pl ; g = masc} ; - -Senior = {s = table {sg => table {g => ["vanhemmaksi tutkijaksi"]} ; - pl => table {g => ["vanhemmiksi tutkijoiksi"]} - } - } ; - -ProjectManager = {s = - table { - sg => table {_ => ["projektipllikksi"]} ; - pl => table {_ => ["projektipllikiksi"]} - }} ; - diff --git a/examples/letter/letter.Fra.gf b/examples/letter/letter.Fra.gf deleted file mode 100644 index afbb6db4e..000000000 --- a/examples/letter/letter.Fra.gf +++ /dev/null @@ -1,168 +0,0 @@ ---1 An French Concrete Syntax for Business and Love Letters --- --- This file defines the French syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - -include letter.Abs.gf ; - -flags lexer=textlit ; unlexer=textlit ; - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -lintype SS = {s : Str} ; -lintype SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -lintype SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -lintype SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -lintype SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -lintype SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - cher : Num => Gen => Tok = - table {n => table {masc => regNom "cher" ! n ; fem => regNom "chre" ! n}}; - regAdj : Str -> Gen => Num => Str = \s -> - table {masc => regNom s ; fem => regNom (s + "e")} ; - regNom : Str -> Num => Str = \s -> table {sg => s ; pl => s + "s"} ; - egosum : Num => Str = - table {sg => "je" ++ "suis" ; pl => "nous" ++ "sommes"} ; - egohabeo : Num => Str = - table {sg => "j'ai" ; pl => "nous" ++ "avons"} ; - fuisti : Num => Str = - table {sg => "tu" ++ "as" ++ "t"; pl => "vous" ++ "avez" ++ "t"} ; - quePrep = "que" ; ---- - tuinformare : Num => Str = - table {sg => "t'informer"; pl => "vous" ++ "informer"} ; - - avoir : Num => Str = - table {sg => "a"; pl => "ont"} ; - - mes : Num => Str = table {sg => "mes" ; pl => "nos"} ; - - teamo : Num => Num => Str = table { - sg => table {sg => "je" ++ "t'aime" ; - pl => "je" ++ "vous" ++ "aime"} ; - pl => table {sg => "nous" ++ "t'aimons" ; - pl => "nous" ++ "vous" ++ "aimons"} - } ; - - constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum sg => sg ; - cnum pl => pl - } ; - dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ "&-" ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ "&-" ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = cher ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Bonjour" ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = "Bonjour" ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = - table {n => table {g => - "avec" ++ mes ! dep2num auth.n n ++ - ["salutations distingues &-"] ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; -InformalEnding auth = - {s = table {n => table {g => ["Amicalement &-"] ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleaguesHe = {s = regNom "collgue" ! pl ; n = pl ; g = masc} ; -ColleaguesShe = {s = regNom "collgue" ! pl ; n = pl ; g = fem} ; -ColleagueHe = {s = regNom "collgue" ! sg ; n = sg ; g = masc} ; -ColleagueShe = {s = regNom "collgue" ! sg ; n = sg ; g = fem} ; -DarlingHe = {s = "chri" ; n = sg ; g = masc} ; -DarlingShe = {s = "chrie" ; n = sg ; g = fem} ; -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - egohabeo ! dep2num na nr ++ - ["l'honneur de"] ++ tuinformare ! nr ++ quePrep}}}} - } ; - -Regret = {s = - table {na => table {ga => table {nr => table {gr => - let {dga = dep2gen ga gr ; dna = dep2num na nr} in - egosum ! dna ++ regAdj "dsol" ! dga ! dna ++ - ["d'informer"] ++ quePrep}}}} - } ; - - -President = constNG ["le prsident"] sg masc ; -Mother = constNG ["maman"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["ton mari"] ; masc => ["ta femme"]} ; - pl => table {fem => ["vos maris"] ; masc => ["vos femmes"]} - } ; n = depnum ; g = depgen} ; -Dean = constNG ["le doyen"] sg masc ; -Name s = constNG s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - fuisti ! nr ++ regAdj "promu" ! xr ! nr ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ avoir ! np.n ++ ["fait banqueroute"]}}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - teamo ! dep2num na nr ! nr}}}} - } ; - -Company = {s = ["notre entreprise"] ; n = sg ; g = fem} ; -Competitor = {s = ["notre pire comptiteur"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["nos clients"] ; n = pl ; g = masc} ; - -Senior = {s = table {sg => table {g => ["responsable scientifique"]} ; - pl => table {g => ["responsables scientifiques"]} - } - } ; - -ProjectManager = {s = - table { - sg => table {_ => ["chef de projet"]} ; - pl => table {_ => ["chefs de projets"]} - }} ; diff --git a/examples/letter/letter.HebU.gf b/examples/letter/letter.HebU.gf deleted file mode 100644 index f69fac703..000000000 --- a/examples/letter/letter.HebU.gf +++ /dev/null @@ -1,212 +0,0 @@ -include letter.Abs.gf ; - --- (c) Alex Kutsela 2005 - -flags lexer=textlit ; unlexer=textlit ; coding=utf8 ; - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | dat | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -lintype SS = {s : Str} ; -lintype SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -lintype SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -lintype SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -lintype SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -lintype SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - regAdj : Str -> Num => Gen => Tok =\s -> table { - sg => table {masc => s; fem => s+"ה"}; - pl => table {masc => s+"ים"; fem => s+"ות"} - }; - -hello : Str -> Num => Str = \s -> table {sg => s ; pl => s} ; - -regVerPerf : Str -> Num => Gen => Str = \s -> - table {sg => table {masc => s; fem => s+"ה"}; - pl => table {masc => s+"ו"; fem => s+"ו"} - }; - -ego : Num => Str = table {sg => "אןי" ; pl => "אןחןו" } ; - -tu : Num => Gen => Kas => Str = - table {sg => table {fem => table {nom => "את"; dat => "לך"; acc => "אותך"} ; - masc => table {nom => "אתה"; dat => "לך"; acc => "אותך"} - } ; - pl => table {fem => table {nom => "אתן"; dat => "לכן"; acc => "אתכן"} ; - masc => table {nom => "אתם"; dat => "לכם"; acc => "אתכם"} - } - }; - -hereIam : Num => Str = - table {sg => "הןןי" ; pl => "הןןו" } ; - -haveBeen : Str -> Num => Gen => Str = \s -> - table {sg => table {masc => s+"ת"; fem => s+"ת"}; - pl => table {masc => s+"תם"; fem => s+"תן"} - }; - -thatConj = ["ש"] ; - -regVer : Str -> Num => Gen => Str = \s -> - table {sg => table {masc => s; fem => s+"ת"}; - pl => table {masc => s+"ים"; fem => s+"ות"} - }; - -constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - -dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; -dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss ("," ++ head.s ++ "&-" ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ "&-" ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = rec.s ++ regAdj "יקר" ! rec.n ! rec.g; - n = rec.n; - g = rec.g}; -PlainRec rec = rec ; -HelloRec rec = {s = hello "שלום" ! rec.n ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = hello "שלום" ! rec.n ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = - table {n => table {g => - [",בכבוד רב &-"] ++ - auth.s ! n ! g - }} ; - n = auth.n ; g = auth.g} ; - -InformalEnding auth = - {s = table {n => table {g => [",בברכה &-"] ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleagueHe = {s = "עמית" ; n = sg ; g = masc} ; -ColleagueShe = {s = "עמיתה" ; n = sg ; g = fem} ; -ColleaguesHe = {s = "עמיתים" ; n = pl ; g = masc} ; -ColleaguesShe = {s = "עמיתות" ; n = pl ; g = fem} ; -DarlingHe = {s = "אהובי" ; n = sg ; g = masc} ; -DarlingShe = {s = "אהובתי" ; n = sg ; g = fem} ; - -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - -Honour = {s = table { - na => table { - xa => table { - nr => table { - xr => hereIam ! dep2num na nr ++ - regVer "מתכבד" ! dep2num na nr ! dep2gen xa xr ++ - ["להודיע"] ++ tu ! nr ! xr ! dat ++ thatConj - } - } - } - } - } ; - -Regret = {s = table { - na => table { - ga => table { - nr => table { - gr => let {dga = dep2gen ga gr ; dna = dep2num na nr} in - ego ! dna ++ regVer "מצטער" ! dna ! dga ++ - ["להודיע"] ++ tu ! nr ! gr ! dat ++ thatConj - } - } - } - } - } ; - -Dean = constNG ["דיקן"] sg masc ; -President = constNG ["ןשיא"] sg masc ; -Mother = constNG ["אמא"] sg fem ; -Name s = constNG s.s sg masc ; --- -Spouse = {s = table { - sg => table {fem => ["בעלך"] ; masc => ["אישתך"]} ; - pl => table {fem => ["בעליכן"] ; masc => ["ןשותיכם"]} - } ; n = depnum ; g = depgen} ; - -BePromoted pos = {s = table { - na => table { - xa => table { - nr => table { - xr => haveBeen "קודמ" ! nr !xr ++ "לתפקיד" ++ "של" ++ pos.s ! nr ! xr - } - } - } - } - } ; - -GoBankrupt np = - {s = table - {na => table - {xa => table - {nr => table - {xr => np.s ++ regVerPerf "פשט" ! np.n ! np.g ++ "רגל"} - } - } - } - } ; - -ILoveYou = {s = table - {na => table - {ga => table - {nr => table - {gr => let {dga = dep2gen ga gr ; dna = dep2num na nr} in - ego ! dna ++ regVer "אוהב" ! dna ! dga ++ - tu ! nr ! gr ! acc} - } - } - } - } ; - -Company = {s = ["חברתןו"] ; n = sg ; g = fem} ; -Competitor = {s = ["המתחרה הגרוע ביותר שלןו"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["לקוחותיןו"] ; n = pl ; g = masc} ; - -Senior = {s = table - {sg => table {g => ["חבר בכיר"]} ; - pl => table {g => ["חברים בכירים"]} - } - } ; - -ProjectManager = {s = table { - sg => table {fem => ["מןהלת פרוייקט"]; masc => ["מןהל פרוייקט"]} ; - pl => table {fem => ["מןהלות פרוייקט"]; mask =>["מןהלי פרוייקט"]} - } - } ; diff --git a/examples/letter/letter.RusU.gf b/examples/letter/letter.RusU.gf deleted file mode 100644 index 1ed5f4404..000000000 --- a/examples/letter/letter.RusU.gf +++ /dev/null @@ -1,178 +0,0 @@ -include letter.Abs.gf ; - -flags lexer=textlit ; unlexer=textlit ; coding=utf8 ; - -param Gen = masc | fem ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; -param DepGen = depgen | cgen Gen ; - -lintype SS = {s : Str} ; -lintype SSDep = {s : Num => Gen => Str} ; -- needs Num and Gen -lintype SSSrc = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen -lintype SSSrc2 = {s : Num => Gen => Str ; n : DepNum ; g : DepGen} ; -- gives&needs -lintype SSDep2 = {s : DepNum => DepGen => Num => Gen => Str} ; -- needs Auth's&Rec's -lintype SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - -oper - ss : Str -> SS = \s -> {s = s} ; - regAdj : Str -> Num => Gen => Tok =\s -> table { - sg => table {masc => s+"ой"; fem => s+"ая"}; - pl => table {masc => s+"ие"; fem => s+"ие"} - }; - regVer : Str -> Num => Gen => Str = \s -> table { - sg => table {masc => s; fem => s+"а"}; - pl => table {masc => s+"ы"; fem => s+"ы"} - }; - - hello : Str -> Num => Str = \s -> - table {sg => s ; pl => s+"те" } ; - - regVerPerf : Str -> Num => Gen => Str = \s -> table { - sg => table {masc => s+"ся"; fem => s+"ось"}; - pl => table {masc => s+"ись"; fem => s+"ись"} - }; - - ego : Num => Str = - table {sg => "я" ; pl => "вы" } ; - egoHave : Num => Str = - table {sg => ["я имею"] ; pl => ["мы имеем"]} ; - - haveBeen : Num => Gen => Str = table { - sg => table {masc => ["ты был"] ; fem => ["ты была"] }; - pl => table {masc => ["вы были"]; fem => ["вы были"]} - }; - - thatPrep = [", что"] ; - informYou : Num => Str = - table {sg => ["сообщить тебе"]; pl => ["сообщить вам"]} ; - - loveYou : Num => Num => Str = table { - sg => table {sg => ["я тебя люблю"] ; - pl => ["я вас люблю"]} ; - pl => table {sg => ["мы тебя любим"] ; - pl => ["мы вас любим"]} - } ; - - constNG : Str -> Num -> Gen -> SSSrc2 = \str,num,gen -> - {s = table {_ => table {_ => str}} ; n = cnum num ; g = cgen gen} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - dep2gen : DepGen -> Gen -> Gen = \dg,g -> case dg of { - depgen => case g of { - masc => fem ; - fem => masc - }; -- negative dependence: the author is of opposite sex - cgen cg => cg - } ; - - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ "&-" ++ - mess.s ! end.n ! end.g ! head.n ! head.g ++ "." ++ "&-" ++ - end.s ! head.n ! head.g) ; - -DearRec rec = {s = regAdj "Дорог" - ! rec.n ! rec.g ++ rec.s ; n = rec.n ; g = rec.g} ; -PlainRec rec = rec ; -HelloRec rec = {s = hello "Здравствуй" ! rec.n ++ rec.s ; n = rec.n ; g = rec.g} ; -JustHello rec = {s = hello "Здравствуй" ! rec.n ; n = rec.n ; g = rec.g} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = - table {n => table {g => - "С" ++ - ["наилучшими пожеланиями, &-"] ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; -InformalEnding auth = - {s = table {n => table {g => ["С дружеским приветом, &-"] ++ auth.s ! n ! g}} ; - n = auth.n ; g = auth.g} ; - -ColleaguesHe = {s = "коллеги" ; n = pl ; g = masc} ; -ColleaguesShe = {s = "коллеги" ; n = pl ; g = fem} ; -ColleagueHe = {s = "коллега" ; n = sg ; g = masc} ; -ColleagueShe = {s = "коллега" ; n = sg ; g = fem} ; -DarlingHe = {s = "любимый" ; n = sg ; g = masc} ; -DarlingShe = {s = "любимая" ; n = sg ; g = fem} ; -NameHe s = {s = s.s ; n = sg ; g = masc} ; -NameShe s = {s = s.s ; n = sg ; g = fem} ; - - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - egoHave ! dep2num na nr ++ - ["честь"] ++ informYou ! nr ++ thatPrep}}}} - } ; - -Regret = {s = - table {na => table {ga => table {nr => table {gr => - let {dga = dep2gen ga gr ; dna = dep2num na nr} in - ego ! dna ++ regVer "вынужден" ! dna ! dga ++ - ["сообщить"] ++ thatPrep}}}} - } ; - - -President = constNG ["президент"] sg masc ; -Mother = constNG ["мама"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["твой муж"] ; masc => ["твоя жена"]} ; - pl => table {fem => ["ваши мужья"] ; masc => ["ваши жены"]} - } ; n = depnum ; g = depgen} ; -Dean = constNG ["декан"] sg masc ; -Name s = constNG s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - haveBeen ! nr ! xr ++ regVer "назначен" ! nr ! xr ++ - pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ regVerPerf "обанкротил" ! np.n ! np.g }}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - loveYou ! dep2num na nr ! nr}}}} - } ; - -Company = {s = ["наше предприятие"] ; n = sg ; g = fem} ; -Competitor = {s = ["наш конкурент"] ; n = sg ; g = masc} ; -OurCustomers = {s = ["наши клиенты"] ; n = pl ; g = masc} ; - -Senior = {s = table {sg => table {g => ["старшим научным сотрудником"]} ; - pl => table {g =>[ "старшими научными сотрудниками"]} - } - } ; - -ProjectManager = {s = - table { - sg => table {_ => ["менеджером проекта"]} ; - pl => table {_ => ["менеджерами проектов"]} - }} ; - - - diff --git a/examples/letter/letter.Sve.gf b/examples/letter/letter.Sve.gf deleted file mode 100644 index 00d5439ef..000000000 --- a/examples/letter/letter.Sve.gf +++ /dev/null @@ -1,161 +0,0 @@ ---1 An Swedish Concrete Syntax for Business and Love Letters --- --- This file defines the Swedish syntax of the grammar set --- whose abstract syntax is $letter.Abs.gf$. - - -include letter.Abs.gf ; - -flags lexer=textlit ; unlexer=textlit ; - -printname Letter = "Brev" ; -printname MkLetter = "brevmall" ; - -param Sex = masc | fem ; -param Gen = en | ett ; -param Num = sg | pl ; -param Kas = nom | acc ; -param DepNum = depnum | cnum Num ; - -lintype SS = {s : Str} ; -lintype SSDep = {s : Num => Sex => Str} ; -- needs Num and Sex -lintype SSSrc = {s : Str ; n : Num ; x : Sex} ; -- gives Num and Sex -lintype SSSrc2 = {s : Num => Sex => Str ; n : DepNum ; x : Sex} ; -- gives and needs -lintype SSDep2 = {s : DepNum => Sex => Num => Sex => Str} ; -- needs Auth's & Recp's -lintype SSSrcGen = {s : Str ; n : Num ; g : Gen} ; -- gives Num and Gen - - -oper - ss : Str -> SS = \s -> {s = s} ; - - constNX : Str -> Num -> Sex -> SSSrc2 = \str,num,sex -> - {s = table {_ => table {_ => str}} ; n = cnum num ; x = sex} ; - - dep2num : DepNum -> Num -> Num = \dn,n -> case dn of { - depnum => n ; - cnum cn => cn - } ; - -lincat -Letter = SS ; -Recipient = SSSrc ; -Author = SSSrc2 ; -Message = SSDep2 ; -Heading = SSSrc ; -Ending = SSSrc2 ; -Mode = SSDep2 ; -Sentence = SSDep2 ; -NounPhrase = SSSrcGen ; -Position = SSDep ; - -lin -MkLetter head mess end = - ss (head.s ++ "," ++ "&-" ++ - mess.s ! end.n ! end.x ! head.n ! head.x ++ "." ++ "&-" ++ - end.s ! head.n ! head.x) ; - -DearRec rec = {s = kaer ! rec.n ! rec.x ++ rec.s ; n = rec.n ; x = rec.x} ; -PlainRec rec = rec ; -HelloRec rec = {s = "Hej" ++ rec.s ; n = rec.n ; x = rec.x} ; -JustHello rec = {s = "Hej" ; n = rec.n ; x = rec.x} ; - -ModeSent mode sent = - {s = - table {na => table {xa => table {nr => table {xr => - mode.s ! na ! xa ! nr ! xr ++ sent.s ! na ! xa ! nr ! xr}}}} - } ; -PlainSent sent = sent ; - -FormalEnding auth = - {s = table {n => table {x => - ["Med vnlig hlsning &-"] ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; - -InformalEnding auth = - {s = table {n => table {x => - ["Med hlsningar &-"] ++ auth.s ! n ! x}} ; n = auth.n ; x = auth.x} ; - -ColleaguesHe = {s = kollega ! pl ; n = pl ; x = masc} ; -ColleaguesShe = {s = kollega ! pl ; n = pl ; x = fem} ; -ColleagueHe = {s = kollega ! sg ; n = sg ; x = masc} ; -ColleagueShe = {s = kollega ! sg ; n = sg ; x = fem} ; -DarlingHe = {s = "lskling" ; n = sg ; x = masc} ; -DarlingShe = {s = "lskling" ; n = sg ; x = fem} ; -NameHe s = {s = s.s ; n = sg ; x = masc} ; -NameShe s = {s = s.s ; n = sg ; x = fem} ; - -Honour = {s = - table {na => table {xa => table {nr => table {xr => - jag ! dep2num na nr ! nom ++ ["har ran att meddela"] ++ - du ! nr ! acc ++ "att"}}}} - } ; - -Regret = {s = - table {na => table {xa => table {nr => table {xr => - jag ! dep2num na nr ! nom ++ ["mste tyvrr meddela"] ++ - du ! nr ! acc ++ "att"}}}} - } ; - - -President = constNX ["Presidenten"] sg masc ; -Mother = constNX ["Mamma"] sg fem ; -Spouse = {s = table { - sg => table {fem => ["din man"] ; masc => ["din hustru"]} ; - pl => table {fem => ["era mn"] ; masc => ["era hustrur"]} - } ; n = depnum ; x = masc} ; -- sex does not matter here -Dean = constNX ["Dekanus"] sg masc ; -Name s = constNX s.s sg masc ; --- - -BePromoted pos = {s = - table {na => table {xa => table {nr => table {xr => - du ! nr ! nom ++ ["har blivit"] ++ befordrad ! nr ++ - "till" ++ pos.s ! nr ! xr}}}} - } ; -GoBankrupt np = {s = - table {na => table {xa => table {nr => table {xr => - np.s ++ ["har gtt i konkurs"]}}}} - } ; -ILoveYou = {s = - table {na => table {xa => table {nr => table {xr => - jag ! dep2num na nr ! nom ++ ["lskar"] ++ du ! nr ! acc}}}} - } ; - -Company = {s = ["vrt fretag"] ; n = sg ; g = ett} ; -Competitor = {s = ["vr vrsta konkurrent"] ; n = sg ; g = en} ; -OurCustomers = {s = ["vra kunder"] ; n = pl ; g = en} ; - -Senior = {s = table {n => table {x => ["ldre forskare"]}}} ; -ProjectManager = {s = - table { - sg => table {_ => "projektchef"} ; - pl => table {_ => "projektchefer"} - }} ; - -oper - -kaer : - Num => Sex => Str = - table { - sg => table {masc => "Kre" ; fem => "Kra"} ; - pl => table {_ => "Kra"} - } ; - -kollega : - Num => Str = - table {sg => "kollega" ; pl => "kollegor"} ; - -befordrad : - Num => Str = - table {sg => "befordrad" ; pl => "befordrade"} ; - -jag : - Num => Kas => Str = - table { - sg => table {nom => "jag" ; acc => "mig"} ; - pl => table {nom => "vi" ; acc => "oss"} - } ; -du : - Num => Kas => Str = - table { - sg => table {nom => "du" ; acc => "dig"} ; - pl => table {nom => "ni" ; acc => "er"} - } ; diff --git a/examples/letter/mkLetter.gfs b/examples/letter/mkLetter.gfs deleted file mode 100644 index 61da928d7..000000000 --- a/examples/letter/mkLetter.gfs +++ /dev/null @@ -1,14 +0,0 @@ --- to make a multilingual gfcm grammar for rapid loading. AR 29/1/2004 --- to run: gf