From 9dc877ceadedddb6f88d89a0c12e3ff0be296185 Mon Sep 17 00:00:00 2001 From: aarne Date: Wed, 25 Jan 2006 13:52:15 +0000 Subject: [PATCH] redocumenting resource --- lib/resource-1.0/abstract/Cat.gf | 14 +- lib/resource-1.0/abstract/Lang.gf | 3 +- .../abstract/{Basic.gf => Lexicon.gf} | 4 +- lib/resource-1.0/abstract/Phrase.gf | 2 +- lib/resource-1.0/abstract/Sentence.gf | 32 +++- lib/resource-1.0/doc/German.png | Bin 11508 -> 23052 bytes lib/resource-1.0/doc/Lang.dot | 60 +++++++ lib/resource-1.0/doc/Lang.png | Bin 5795 -> 7896 bytes lib/resource-1.0/doc/Resource-HOWTO.html | 159 ++++++++++-------- lib/resource-1.0/doc/Resource-HOWTO.txt | 130 +++++++------- lib/resource-1.0/doc/gf-resource-lib.html | 5 +- lib/resource-1.0/doc/gf-resource-lib.txt | 3 +- lib/resource-1.0/doc/gfdoc/Adjective.html | 2 +- lib/resource-1.0/doc/gfdoc/Adverb.html | 2 +- lib/resource-1.0/doc/gfdoc/Cat.html | 58 +++---- lib/resource-1.0/doc/gfdoc/Conjunction.html | 2 +- lib/resource-1.0/doc/gfdoc/Lang.html | 5 +- lib/resource-1.0/doc/gfdoc/Math.html | 2 +- lib/resource-1.0/doc/gfdoc/Noun.html | 2 +- lib/resource-1.0/doc/gfdoc/Numeral.html | 2 +- lib/resource-1.0/doc/gfdoc/ParadigmsEng.html | 2 +- lib/resource-1.0/doc/gfdoc/ParadigmsFre.html | 2 +- lib/resource-1.0/doc/gfdoc/ParadigmsGer.html | 2 +- lib/resource-1.0/doc/gfdoc/ParadigmsSwe.html | 2 +- lib/resource-1.0/doc/gfdoc/Phrase.html | 4 +- lib/resource-1.0/doc/gfdoc/Question.html | 2 +- lib/resource-1.0/doc/gfdoc/Relative.html | 2 +- lib/resource-1.0/doc/gfdoc/Sentence.html | 46 ++++- lib/resource-1.0/doc/gfdoc/Structural.html | 2 +- lib/resource-1.0/doc/gfdoc/Tense.html | 2 +- lib/resource-1.0/doc/gfdoc/Verb.html | 2 +- lib/resource-1.0/english/CatEng.gf | 4 +- lib/resource-1.0/english/LangEng.gf | 3 +- .../english/{BasicEng.gf => LexiconEng.gf} | 2 +- lib/resource-1.0/english/PhraseEng.gf | 2 +- lib/resource-1.0/english/SentenceEng.gf | 5 + lib/resource-1.0/french/CatFre.gf | 2 +- .../french/{VerbsFre.gf => IrregFre.gf} | 2 +- .../french/{VerbsFreAbs.gf => IrregFreAbs.gf} | 2 +- lib/resource-1.0/french/LangFre.gf | 3 +- .../french/{BasicFre.gf => LexiconFre.gf} | 2 +- lib/resource-1.0/french/PhraseFre.gf | 2 +- lib/resource-1.0/french/StructuralFre.gf | 2 +- lib/resource-1.0/french/TensedFre.gf | 2 - lib/resource-1.0/german/CatGer.gf | 4 +- lib/resource-1.0/german/LangGer.gf | 3 +- .../german/{BasicGer.gf => LexiconGer.gf} | 2 +- lib/resource-1.0/german/PhraseGer.gf | 2 +- lib/resource-1.0/german/SentenceGer.gf | 4 + lib/resource-1.0/multimodal/Multimodal.gf | 2 +- lib/resource-1.0/multimodal/MultimodalEng.gf | 2 +- lib/resource-1.0/multimodal/MultimodalFre.gf | 2 +- lib/resource-1.0/multimodal/MultimodalGer.gf | 2 +- lib/resource-1.0/multimodal/MultimodalSwe.gf | 2 +- lib/resource-1.0/old/Lex.gf | 2 +- lib/resource-1.0/{abstract => old}/Tensed.gf | 2 +- .../{english => old}/TensedEng.gf | 2 +- lib/resource-1.0/old/TensedFre.gf | 2 + lib/resource-1.0/{german => old}/TensedGer.gf | 0 .../{romance => old}/TensedRomance.gf | 2 +- .../{scandinavian => old}/TensedScand.gf | 0 .../{swedish => old}/TensedSwe.gf | 0 lib/resource-1.0/old/Test.gf | 2 +- lib/resource-1.0/romance/CatRomance.gf | 4 +- lib/resource-1.0/romance/PhraseRomance.gf | 2 +- lib/resource-1.0/romance/SentenceRomance.gf | 5 + lib/resource-1.0/scandinavian/CatScand.gf | 4 +- lib/resource-1.0/scandinavian/PhraseScand.gf | 2 +- .../scandinavian/SentenceScand.gf | 4 + lib/resource-1.0/swedish/CatSwe.gf | 2 +- lib/resource-1.0/swedish/LangSwe.gf | 3 +- .../swedish/{BasicSwe.gf => LexiconSwe.gf} | 2 +- lib/resource-1.0/swedish/PhraseSwe.gf | 2 +- 73 files changed, 392 insertions(+), 263 deletions(-) rename lib/resource-1.0/abstract/{Basic.gf => Lexicon.gf} (98%) create mode 100644 lib/resource-1.0/doc/Lang.dot rename lib/resource-1.0/english/{BasicEng.gf => LexiconEng.gf} (99%) rename lib/resource-1.0/french/{VerbsFre.gf => IrregFre.gf} (99%) rename lib/resource-1.0/french/{VerbsFreAbs.gf => IrregFreAbs.gf} (99%) rename lib/resource-1.0/french/{BasicFre.gf => LexiconFre.gf} (99%) delete mode 100644 lib/resource-1.0/french/TensedFre.gf rename lib/resource-1.0/german/{BasicGer.gf => LexiconGer.gf} (99%) rename lib/resource-1.0/{abstract => old}/Tensed.gf (97%) rename lib/resource-1.0/{english => old}/TensedEng.gf (81%) create mode 100644 lib/resource-1.0/old/TensedFre.gf rename lib/resource-1.0/{german => old}/TensedGer.gf (100%) rename lib/resource-1.0/{romance => old}/TensedRomance.gf (82%) rename lib/resource-1.0/{scandinavian => old}/TensedScand.gf (100%) rename lib/resource-1.0/{swedish => old}/TensedSwe.gf (100%) rename lib/resource-1.0/swedish/{BasicSwe.gf => LexiconSwe.gf} (99%) diff --git a/lib/resource-1.0/abstract/Cat.gf b/lib/resource-1.0/abstract/Cat.gf index a3f15c300..97745746a 100644 --- a/lib/resource-1.0/abstract/Cat.gf +++ b/lib/resource-1.0/abstract/Cat.gf @@ -1,6 +1,6 @@ --1 The category system -abstract Cat = { +abstract Cat = Tense ** { cat @@ -13,19 +13,13 @@ abstract Cat = { Utt ; -- sentence, question, word... e.g. "be quiet" Voc ; -- vocative or "please" e.g. "my darling" ---2 Tensed sentences +--2 Sentences and clauses --- Constructed in [Tensed Tensed.html]. --- A simplified variant, with just present forms, is [Untensed Untensed.html]. +-- Constructed in [Sentence Sentence.html]. S ; -- declarative sentence e.g. "she lived here" QS ; -- question e.g. "where did she live" RS ; -- relative e.g. "in which she lived" - ---2 Clauses - --- Constructed in [Sentence Sentence.html]. - Cl ; -- declarative clause, with all tenses e.g. "she looks at this" Slash ; -- clause missing NP (S/NP in GPSG) e.g. "she looks at" Imp ; -- imperative e.g. "look at this" @@ -108,7 +102,7 @@ abstract Cat = { --2 Words of open classes --- These are constructed in [Basic Basic.html] and in additional lexicon modules. +-- These are constructed in [Lexicon Lexicon.html] and in additional lexicon modules. V ; -- one-place verb e.g. "sleep" V2 ; -- two-place verb e.g. "love" diff --git a/lib/resource-1.0/abstract/Lang.gf b/lib/resource-1.0/abstract/Lang.gf index 5395ade2e..5663ac5cc 100644 --- a/lib/resource-1.0/abstract/Lang.gf +++ b/lib/resource-1.0/abstract/Lang.gf @@ -15,7 +15,6 @@ abstract Lang = Relative, Conjunction, Phrase, - Tensed, Structural, - Basic + Lexicon ** {} ; diff --git a/lib/resource-1.0/abstract/Basic.gf b/lib/resource-1.0/abstract/Lexicon.gf similarity index 98% rename from lib/resource-1.0/abstract/Basic.gf rename to lib/resource-1.0/abstract/Lexicon.gf index dfffd549c..837fac26f 100644 --- a/lib/resource-1.0/abstract/Basic.gf +++ b/lib/resource-1.0/abstract/Lexicon.gf @@ -1,4 +1,4 @@ ---1 A Basic Lexicon +--1 A Lexicon Lexicon -- This files gives a list of words whose purpose is to test the GF -- resource grammar. It covers all lexical categories of [Cat Cat.html]. @@ -10,7 +10,7 @@ -- of the words in different languages are not guaranteed to be translation -- equivalents. -abstract Basic = Cat ** { +abstract Lexicon = Cat ** { fun add_V3 : V3 ; airplane_N : N ; diff --git a/lib/resource-1.0/abstract/Phrase.gf b/lib/resource-1.0/abstract/Phrase.gf index 52a77a387..4b571f107 100644 --- a/lib/resource-1.0/abstract/Phrase.gf +++ b/lib/resource-1.0/abstract/Phrase.gf @@ -1,6 +1,6 @@ --1 Phrases and utterances -abstract Phrase = Cat, Tense ** { +abstract Phrase = Cat ** { -- When a phrase is built from an utterance it can be prefixed -- with a phrasal conjunction (such as "but", "therefore") diff --git a/lib/resource-1.0/abstract/Sentence.gf b/lib/resource-1.0/abstract/Sentence.gf index 475429bcb..927eda09b 100644 --- a/lib/resource-1.0/abstract/Sentence.gf +++ b/lib/resource-1.0/abstract/Sentence.gf @@ -1,4 +1,4 @@ ---1 Clauses, imperatives, and sentential complements +--1 Sentences, clauses, imperatives, and sentential complements abstract Sentence = Cat ** { @@ -49,5 +49,35 @@ abstract Sentence = Cat ** { EmbedQS : QS -> SC ; -- whether you go EmbedVP : VP -> SC ; -- to go +--2 Sentences + +-- These are the 2 x 4 x 4 = 16 forms generated by different +-- combinations of tense, polarity, and +-- anteriority, which are defined in [Tense Tense.html]. + + fun + UseCl : Tense -> Ant -> Pol -> Cl -> S ; + UseQCl : Tense -> Ant -> Pol -> QCl -> QS ; + UseRCl : Tense -> Ant -> Pol -> RCl -> RS ; } + +-- Examples for English $S$/$Cl$: +{- + Pres Simul Pos ODir : he sleeps + Pres Simul Neg ODir : he doesn't sleep + Pres Anter Pos ODir : he has slept + Pres Anter Neg ODir : he hasn't slept + Past Simul Pos ODir : he slept + Past Simul Neg ODir : he didn't sleep + Past Anter Pos ODir : he had slept + Past Anter Neg ODir : he hadn't slept + Fut Simul Pos ODir : he will sleep + Fut Simul Neg ODir : he won't sleep + Fut Anter Pos ODir : he will have slept + Fut Anter Neg ODir : he won't have slept + Cond Simul Pos ODir : he would sleep + Cond Simul Neg ODir : he wouldn't sleep + Cond Anter Pos ODir : he would have slept + Cond Anter Neg ODir : he wouldn't have slept +-} diff --git a/lib/resource-1.0/doc/German.png b/lib/resource-1.0/doc/German.png index ab16ef27e3221bafa3ceb3048e1c1664731b7ecd..df3c71c86f56a7d9161c84ade374f25be3a9c9a2 100644 GIT binary patch literal 23052 zcmeAS@N?(olHy`uVBq!ia0y~yVCiRIV4Bau%)r1PdiU!D1_lPL0G|-ofB*kWOH1eH z=exVR2L}hs%gfK7Ki}Toe*gac_4W1f@$vWX-)CT8`2YWZiK)RN1_lPkk|4ie28U-i z(ij*N7(87ZLn`LH-Fv!B#`W5Zcz%VwCuhz-S=nN2m2GN%_=1Gpl0@g`i*NF)7_UuW zi#K7Z7rQ3FXErrEvne+)GW%-%gH20LRZO2e@%oN8vKy6+lvam`&d#&cHh%Z<^xntw zgr}*TEQs{EHn&M7T9I>!ila*76qOE@36oeRvII?1nB?FkXD7qt14(vDi6( zZzB6@%jjq8<2R^Zp3i5k?iuB&(0HloNZS+W+QEFYl9oUO6$;?~+I-$i-F@ z=J{(+xHso+@@AoVZ#4f0TY4&ZPI6#c%KGwCSYTtx%>BpxES>#N-Hv>!0(ROYrRVkD z6aMXw%)PbF_*k8_j^nQXFLp1PsNkvaGU!S1x`|=u_f>uRG{5|v+#H!Xf4*Jc-M(7h zzdkWs{+{iMVnUfP{F3XfOn-u@}RnhOesApOdFvCB+vubbqM<$6G4?ai|3EJ3GBq&D7c5 zB$%5RJyCs1m8SxuL}0jw*skMqr?LonFqf{>J@BCK)VXGs+v>k&y-m5Fb+d4S!Q&?z ze%RmK?o}qO5;E7~t&*o#=UX!mw%A8zeN%qr@8+4b@tdZUr__NvmA|)bR+u^UMAQ7H zGyIO{)E`~lS<&yQ_-0qot-uLuq+I6Z%+~&I*63kherMlXHIHjn@o&2KbG=>kb7jNU z)8BH%9hE|M91-N2^sTym>LtD=mle6J6D$j^wk)l>6FH@fPo?W`p!&DM316glXWcL3 zRhe`w;Eu?H)M97;eDmk`%eYl$?K0TX^5vsyM&u>ETiauqI&U=u#-8Op|6t>3*&MC6 z0v=aRUEMNGQsu=pzC~M%6(&j_+|@QydVW%NUiq4LRRW?Cp^~4KIMfY?zNPA`Ob}U-!>@}Z9?Xtv0J)c=QrXJ^Z zuhP`bbon`B@vXWk+ay(#bX6w&N!Y zofP>!-mE8+?(E1ZX3vXu{ItS2>oL1=(v-agw^vWuCZaN*%lTOxXSs~h-KeEorYcnK z{c$3*p219mTf}2qsAjIRM_u~LgSsl8n3iZI1-aZ_Ic1xG%KolHee$eK#%C^0T6D{6 z>6TK3%4?UH0zL8+CiY0*_FB3nSK+6eU{@iFQ}c00+gD}3!ye^HdhGk!Ja6?|4xzof zcjRj1ihJDa<@ZrMs4(*jpKSkIr_9+7pYo49V*k5aU#hU9Y<9pcr3q|v7W8SUxE!33 zROEH^TgiiM>`NH)w?90s{7%90(;nU6owu1TEeMwm_jpn%{L0y3+u?n=oF2_~JV^l_ zaoznfmp6%i%e8ip`W7TDBIMR%X!rfST5eqZW?Ht5jVjHGj>g$B%3qMV#8CSKeq98Nzw-ykYp^2GyK-U!zSoe`dMVA+%(F zj+ArKF|SQm=P&nK<>=M>_M^&~>z8!b?^EQ{)^NTw-Q-e+P@8hMlhl@XC$>*LqS|OO zjYX<$bI6SA5vl6TKKV?UDx4;B69PS$9i;+}>M88p(W_xDv?SniP;*sW+2yDCcZ58W zJvO{NoA@@BN$sB2$)m|kCxZ`}Y+gMfhp$af>|>ZG=aL^n1>3401PCZ9?#q1oFD@qK z?RoQ=KR&!#eL22$KBtO4=Z>uO4EA|NazduMT?G@uY+J)G9X@~a)wB=BjZc&n!|Nlj zx;9AG`A=QapmOr6Wb%B@{lXsagi1sg&TVG6oHRBr0_6`WWn~>(T#tPVC+^*KcyCPtD%mz2-dK%(L+D|G8gW)nonY`@wuc6AjIF+iCvi=}_2n zM`8j~{-zCQ`!)m=E5uc8VSQO|G%Z$s%9}ms!`_(gK5n?n?y-XG#!#k{?oRpFHfk>k zP`++=tatf3mY1LEZGZLE{`t1zgk1eMPV3bF4;9wl({$Xm=f`86#wU6Q&1(fkf;J>7 zJ)bqt$HGHDZf@P*m+j^H`MUaie(U~QrCjIdz7dI>H_$oVU+B zbIMrA#(dIK^=YM@=V=cm&x$?`Q_*$B{(k>b)?eJixkN&!QMoCVn?va1kGFf)bBRxw zQ^s{<@>zDxWAjqHZcg5nvgO4a$ETkvRs5tf4R5kcF_T*&k**yeBGf6U2jFt4soxNKu;>&IG%sdLuRdKG!=}<^)^qnBQt!CP- ztgPIan;8?7Og8VF;KX~gugy97LFoJKY1NyaKhWKhW8^W>f@@{=iTOPj-bs8<{jIk( zc5&nFgb7N8B4r5YT6O8XDKIgexM=s$BiFu2Z~AdxszT;w z#Dqnn?m4qli_I0kTy1}=6xkhiD`di>yIlrIs8u55coFH{7;NcK)^T%>&DAI}7sH*LO*tn&`gUTxdy$OkkS( zjtM^%Zf`sI%&n_)!oI@QWx|eKH{UAkTlU4&#btV`CI8!2FT;iRABd)&;k(1uBx3wM zr1i-LiQYr*rmL-_Mj`f43Fo+J zF=0`WOQ?sVbPrZUNlXUU1R z&RH|9Y9HSC5t6rrC&+VFde-s8DWP{~vj(N~o!~m@St{|$Q}?c;mS=an)GdwDJ%I{G z->scAwMJq>gXjk5Db4Su@3T#H*y3_iVZx&NUwwV;!L`W;ow)njR;btprtn%bdCq1I zstNY%S77isk!`3jxgosD+N#PlpT|Slgj2bZWvAYTt0BxGLIR7N`*pVMx-T-p?SaOR zE$-S?m((-z4mCYVxRdmH2`^)2kDit-*YR6nbEQvTv0uEvzuj@s4%5Ao3cUv>GRq!z zFgl>a1$^N2xon*)rE0U7*MMf?a5@%HI&7 zd0Nx=xMr)Z6<_k=a`sw_y<6Xj##&sRFyHG?t>wXoAwqf&*9k8v3_Dd&SjAuKP_)Wt zea`H#)jL{*S01{~d8tBX=iWBClUC(QSG`qd20fkf$l_RTuR`zfiP1MJLpEoJ)fDA@ z3bv5kuJLrA-2}HMCwvumHiw*HKX)$hNJNaEWslLUEoLC`wWrO>{UT;gRh+DK#N$l= z+>*Q=t9WsbgiALREX%vvx^}xMS&PP6ZLf?ueej&eJF%36-3DeJJ3p_s@Zq{%-p@Db z&4p6MX6?#vs(boerFZPz`&Yrz?Cr^Op?q_W8#-sJTrUg1@$K6Qh2FfIT+anl7FEAx zHab@uxLv&K(T$A-&8wCyRM2$)ackX=ll#7gUhxf^I%~bxRs+dxcjl#-u>DKFI5*1X z;QC!XS?kXC{!{yO^0>;YSzp9*#m=O#hI%?XetM?3s8;*eCzJi(z8y)Hxb~_&L^zhI zW_r`^3Ox(^OSe99c^)Y}F}?D)!=zvD(_-KA2gx2?))?~S1k>(!pYLvJ3Gs|(4|;fE z<|nq5np@5?owQ+M+ZV(bdTCqZlE!4Elj2Lhy;E!4a=_mqQ{}q(R@M;DXf~mS-bR)9 z3AeWNb4*&gBjf(fYtr5icU=Ixh0i14;Df(K{u6e2n6asRy2sqRJ>gjHZil9sj`7y^ z6Sy7+`?@ilOsxtilsdB`SKPzEXoc4&=FIy)LMH!Eu=YQ z#e@5g$Ijn--#M+WdFd80A*_8xxJ~whlaUT?DigOxNK6%BS@QJd%k^)2?>~9Ieb?&M z>#N*#*gSeus|zQ-JpUp2$NRl!^!Bf)i8(uCn%CM1OH+y`#O+C1eSDGlx5qCt*?z7# z6jl563ybIf&z4bc8XHUJg`fA^FOnB`_Fl>+V^vSDLY9?X3JSF+_3mfq$8`GdPglSD z^?6RIcZCS!l3(*hzkGY7eC71?9@DAE9fN{aHmUqyXMeCxt^MD(34fNbaC*D5&qSSmiQg<$8q-dN&b)kHq(AW} zzsfhgXxXdw=~Y^x6P|2X9iSg~YN5Rjw~BDxX$8^aZ;Tg)91)5-d(p^g^{znO;4;l+ zIm>ngO@9W7=2k$<;-#-82@6(^2&rW{# z=eGLIxwq5T9^atUQ1W#_*W}vY&U&`NOSBF&KVE&IqdJ*v&!c|ZN>`OL`FpWoB3yI-Eq7u}!e%8(hgZ%XQ%H;bRfR4w!P`r+)& z+o5yUbYEr9)p{RS6TEXl!X$u2$h?~HK zRpOcF@;+~x6Q(eA>1VmqtCF=#p)}P0!w6zd7b#ZS@)EIcdICo60v&ou!g1V%*@x#dt}2UDBy5eyS7V zjKe~o?YYFiXTyy*zm{B$7hLAS(z~T9Bvjz{gHOsYXDXFWfBrsxcFNfsfAyvspP2vc z>ny7Yzu9x2yBD-P z%+tR|%$-;L-q6&us^M__YXOB=*^jHQznRB!>38bx&gX0Qod5syZr9DPg3-Nq<^ck9ZH=ZpNE`7Av0SLsZzKYe`{&j+LW^^BU;%Tzf}o>Y+J2->^vsrRwEq~&ky zc|F>{_n-E${r5)r+b*A~%Kevo-cM;Qsr-2SCWk`ozxVc86Y4_eX$FNK{<6XITF>7r zOE0mid|Pv>W@c_2!+zOmTg(1mET0v%^3bm7y8Us}*WEaM`g$qnRB=@oV~|7MDwxh* z+U;lYy!PfpQ|zx(?~ zQf1-a>x#dBKIX2gkNlT%e!rD%iv6Bbd~%_2iyOZ@y87~Z`MsZyz8jsp+W!9sD8a^7 zU0>sQt)HLocF4bbJy~A=wm4XL=>I!+HRm)_3v9+{CvBynC z5385(l34L&p;jh`$Mb+cArq9|?6~Un?(E{L&QAhW^Asxg9Sd}H5?9_k-`3t)?w~eX z+o~mu3ZdU3&p!VCU+vet-Sgih39nr?O@5zM%ls=v&JIRZE?pnW{#m|bKlA;-t`F>) zOm6kR1us@Vz4&*JX0t?-)4gc(2_@H+*G@30`V!I4QlFi@!0Qv+%8$=`9pm>Uo}2oh z@djH%Xdx4)#*2v#M${8^Q0Sr9Q;D!pBNh#@jbf5eEawM zdvPB&ayzvz&v>hL!i;mtx_e4ZN4PHC`~P{@ri(TFfu3>-p1$1{3ZWMTLMD4eU*yrq zICw?xX!P@Hn{S*4x9FaG9dTy)B#G4hYvueWboj3B6kWQ{b2dTPU zRVlposCRDv60;>0$25C$t-pfxfdU_KKBqa`|FNxQz!rZ_PcMMLSWog*YBPpH@-fJS^JD> zUHSiuiRlx*_1f<}ys?vOa?`Ywyrae{t&1L-&wiu#>Z$maclD)e$_615E?>BjFWALC z=|hqDE5&73cP^O_#q9gALP7J~+T%CpCHvb>x^s9*md4guzk_p+DxEq1+0EP}HN$$s zHp^q5YtA(s3qQxrf9i8wb!pt)+1rr%(ASDve$3VmE{Z&E_-!N zQ01tpP4;1pZWr67>MjDYv1h)Xb~SH#^v(0lq#3u&PQH2kG%Q1WYj)0`;JtS%v{%%c z>8MWf?+{q=Zm({SvC$m{CP0`t^$7U$GL-)E|$z#^vWvA1A1nmC9vX0~Io?fO&LY)VfSFXDpe}%2Q zucj}EQB(ZazdpmRskeTci$~3WYL_|L@|C-Py?G1gwn?srvZ<@5*vRY;`@iq&Q-(=S z>rXD8u(v_sU^Byo)p~cetX!>T?x^$MbiVkygZ^xvjLRFu7V@iR83aWy>s!5h)0yL! zM3g`6=51cI^UWiMNiqvJ8nnJ)-<-R_NOLt;#08aO_BZqEOxu}vPf*!sEh}=3Z+V@? z1D7AGIR#>#Upk``YM6C$l1tdjkB(6ib(%?W3tp+7I8qnQ;q^OOVs6fD$-k19OD0Vz zZjpMO_LpPhjHgAhcJLGRlHbS*yIHjm?R^!OP* z;qvL*TQ)5CwmQpAuO*NtSUIl#%2$s^O)BkqktdjCvY+X<<-cDT<@jgM>!#VlXP3@Z zG3Xaw=*R2Gaq(%?9WAD1YlGHyUc2P9(o}(YS=DPc^}qLOq&$jN-nwRWT2qo`Qljf5 zMN!uHz`*>{Rbg_BnHwgu6sug-OzbFR>@C*p4w~>OvZH@W)TUnhD@>UolYg6?Hgqh? zRJhm{;+Yh6Bkj?O?91<-1}*mFx-DUBk`NO<|HiBXhhDIW2zD*amrT^3wI|MNjoPCJ zHcw97anG9OHo?i=CR#?a?q%w?o^^V595rm60MUOMCBbYdgtYpRhApYw@M0aiVUFo-fOHSbq1O z{&Vvz33u*9&i+OJxf#@2RCe4GG-hVnA0X5awSMmm#ZBr37)`Oa)`&3 zLqYRN#Nxo$2V+B{44PI~U0lnfvpUT`SnKS8o|LB!lMd`ijaJ`%;q7fFUg`7alA6|K z&CG7Ed2j9ep+PkD{V$(IjZbcHGWRbo5|nlmaPRKiq0jltZs&#k_lZts`k9MbmcQb9 zkX_X_^*~n7i6c3TdnUbTzpmKWyfyfdh^Knlgfr~BUoD#a%w>nDa)#{eC+SROeNR)i zhWQ<2yV
O?Dx1+~n+(T6!%Z`(E5dsttOcf2({yOn`KanH323@h$V7FD@^ZqGcf z_B*!?o1VEIu}*D!piq)8qqgzb#ww;R4`oj^_wektgIsLaoLc7vef#~@&U%r;(Y*D& zhc-m8=J-<6fambxi6QTn zPKs{H$eEm#{I2lDB;F;htDTr$bz5!oz4>|ldvU?Kkjsi0B_5$>zG_=i8(uK1UGsa& zTgSkMb2qC=K8P)3S)qne$dxJu7uR*>-8JP;XyknvDf*OU*KU3r6WuFfEV`xHr5~coRZlWa z5|TQ&&*|gsy@KcECdPOsyE@rjSnz;d)#2|>MlPRYFEcZ81LGd^q)8-h>UUbvRktgw z`pAQs4zU65*Iuo#=XiFl+_?FP-EBs-OVf&8-Qzpi=gBEvI(ccN_Q|C6Ty7dBf@-HP zRVzfFEfAZNn4MoFzk_qz2G3Va<;l(|j{Qr%C$o6UXKZd`zh|n}nRa!?53kj-rHaDK zCd*!V^JVvwr`Oj@{@-Tiwq>&9CpGf|%^BC6u5mK0G2VaWzOk3;C-eR4n@VSYt}|IP%~jfXy4-`rLvz2gPBX3b zpTl%%(V2xeoUF`y*k=|Rh_FP(luS^}Y@7@VC+81cHTf@ak<>Um3+;=ynW@O!C zy*Nw7Pd(REbamemN9E$Q3E$2f+w!qHg7?CytB>8XG|x?RP?%64e$DjCva1Zonl@Ze zd|R+|VhY2_o0}ZHGaekcW03UsLG-dvwldEITN@NSIwJ+wr5;L=?XNzq13hnaNBV2pp zum3JPy5d>K1*@!>#kKc3Lwsk5JfHHUbG44*ci)GMwI*C1S9K4r-gvFj@j%#>C#NTQ zTDo2GQ$91X-6?6A@P*xrN{_723&=Ipo+Y*BM;2=u`%0_B)21BTb?l+xjdybE3T|0* zh4Z=x?VWKvR?Wb8TCT-0g{wA#r<&_HY#3F7FKNH;lh}Hg^HGl|X_iT5z~cw|TN%G!D|nGt$#?#Ci-YFn zTSs&39NlIfVbR*SMP1zdx#Ihi=_=>7zi0hEAJiYUZZ`A0^St+`8nCb2n!QFPQ6clr z0^6jY3u;BCwH{sOv3$+;?awS%Ec$xgbA|8Hq{`jC_b$!&9-DJAGjqoGT{$H?C;ZA3 z@^Rgrx$(mBoRn6jrS9I=ljn;aP_pj+H(^q!?1g*3=O~ya@dZ6T<|V`?L*#DnuA~pb z`#x3vRox!L(#g3jc0EVl^3OX(m+azPdUv~|*t@fPUi;p@_?l}{F3)9tmFoAa^IJKV zF^E0Mt_@u)!Il|t{t)xKy%*j&O+2Z|!d9d5Fht?k@~no$>iKIFuJ%^B-wyk|CA9NX z+>G;HOz&2zXxTl8jlLxt^)$2Z$TF>2MH`ly9zR{HxASoD1n;cH{vs1X&MvIfaqbKc zzy6?U$*ZNCnoQW4RCM+zgmk_+CaH3|qKV&QOQKlZwM*T-8o_TgPW+S!RCvUn{7hwQ zV0)K}NUo2XzpQO6H{m`wd z=pmgRr(nG1l0>g1&*%JbBOPSv9^l$MQbCIzSi%G)8{)}vb|ce^5pcxmL^TS zCP|F<%~q%gsO**aU9;ou?9JsOA3g{qxwfYC##^2__8?%J)3t`w@MCe)4EpTUo1Yk^ zzY9^_;>zlw#oMXgw8g;2xGPju^4W(6x1A(fww$>rzmHEbecR!qvy@AI$j49M`FCg4 zkp=E=H%eZ+?9~2WB5&usS-QK~C*^6dewaAH;&@xnP1{;Ko&xuk-d-z(jv(>`eH#tY$o^j#E zF~>uz1w7w=|B(C9qS8k8N8s)k%;pnjRYlI5_wSb7FW<6C?~j_|bEdsiJNi8?ZF+pl zpI2GS?3{(e*}pwf%Ff?&a)w&**H1^aw^jXFeKK+K$*bZ1{tHB=eA-iZC#{b!Xm6FL z#(sH!|JD%whShEc6J9<0{HicA@AUrP3#R2-#?_W;J>Ryz@Xoe}?`6JCVpMRvP^xhC ze+_8RRX(=!-M)17V=6D(xvu`#i8s2Ia-C;V-p#PuYwJR;`!MZX``7q%Mdjx&Z$EzW zsaf0l+RSgucD{W({w^quuDic^d;6R1JfGb2RJJPf)=$@*$NByC>+?5Xi9KnY=}=_8 zq)*}M)lD`@Z-h0rOkLFy6I z9g8w9eo)W-In~ilr#^Lo{i@vTJn{2J-*g!+fo7u>8GkmkR5Cd<#cX4|&Kj}LE$8Su zxp{YX79X7UM#1{W-_Ps)r}4kj`)~KB=YIS&`Gubljed9;PCXf4_pkBMdC?^=Ijv`h&fNd^^z-=psrvsb56Ri2=J)-) zoIn3hoVx;Rir>=P%1R!e3?*HU{r_kFdy~b^`L=rXVmFUIeRDY|dAjS__nSYdPu`Po zGDG+L?9JO(Z+^Y_rGLBlYO~`PDsNTIs#v-&!T-jW-IFrrwW-B=o%;RYS-zc?mV4?Z z*7ieEht(deuh)%#ZRBbk_PqDM`QMkDD<_sJY}E`oedf-u6{qq;+l;lDqn@ol{baq~ zzQ9lJTXS_iu7AGj8T!Lla$0CX?VoQcQTvvFhJedob1XR$X!bWi{-r`ApXh|X*ROBy z(OV|!kt(_W_@-4GPXE5Tf6{cnDN1?F`)1WvA6;%zDX@KNdPhFvlH;lAFJ6_-6acxf zNF!)4DmVUN*-(9|4OYrT)jV4(g!p? zn>VBKrVs0ckgbdOuA2T|_wV1=UoBU!mc>`Lr8qIX)cpT_(U-rw{HM!#a0~6OzhGt5 zbmZUrK<=Q)+qsrJzr0W(^y%@#E4x;nm}j)CdC7GnnT+XE>i4bS-tScy%6i%B?bO82 zi&`BHxwl^UviNhs2gdWWws39vRb6`I|Gu>EDiiMMzqQk!`Dq`AkkF)GKW<+9Di|Hw z`XT?!>P<~+-f#Wue{9q1W+O=(Uf*3(;Z^Ho-B}ZjzEOXia_|k{wsV9W1Ykpq*D#^Z5=hn@n>;BwSe^VN2_FvH9659iT3Cr52i`UNyZT&F$*BXD_ z370kn>HojJ`2CIJ`Tboz%NKf1pEs9J<=dK~5H)GGmHYO9#%Vu4*Vm7~Ua76`)seP0 z^YqMTlBbqTON^_tnRESSe!Hs2_tQ^aD+o$^zID`nb5?Nn)tUN*zgoi&e!Y41;j6hq zDsfw6J)C+M?3p1h-C(}8Snuq-*CFw>g|jxkW^ZR#XHU(}`}ykLaq-jLulMuaJTD*r z;rHoJ%bzgzF4$aiz31--E$fOSbu|Sy?il5ZXV2eXQTpraa`}6E_iWu`Vev3CWW z^S3Tlek?zBFRZhs)W1Z7<<1x1`Sa53<)>*{{kU!&dXMjP_owIf@9)(93pzO`Dobp_ zs!!U7fBr1^`uL^(n^%W-pRS6y%B*sY$K&5Fo4SAH$Bh4X{5`w+!FTR&U+kB%{(bdj zgU+q{y9=WgbAMQv&Z<*wx!11jVYMnadCs-B9BqLLe{x7bwS{v?Ew`Q5UR#@f1 zHqIrrU)mL>nLcVTPoHq*`mf*htNmOzp4~m`3d@G=M?OVQpLk7qCF^@**;V$cx6EpP zKYpbu*Bo(*0s4M$jNWJoA1n6v*P%I$h}r;Z??TZt;P9yP55rR;PjOrHeSmKc8v1*b~ZGH z&9nCOZCA}NS{GxYzOw1;GS~8Ww8pwtywld8?Y+{%Csod66E8Rz)rc^BTk$l!C&=o2 zQ-ta+Yn9n%6TUpx@>p_Byf$81sU<9E@BX+t7L{`m_kTI(#7o~)ebmYjl=#bs^G%?4 zXt}d>Mf)||3+AV*vQ!eLS_!ID7By|VELNTx?)jkdgu|mV*13%?j(i7q`<*(+7gWvk zUSYzk;}?v)PxYxh+LU$pZCsARLq?6{MwPSu`SYiT3hntG-_N<|&Yth{OT;-3?fD+h z>GUsC=7=l|y<`hM+tTDOfqIq zvu}M_S|j{8`LXb=&Rh>)O=X)4ow~j<~SrT4<$Vm5?wOy_;-NVVq ze2$`K*COkd*L!!KTxvO|&Ps9nUhlmhnmt;VOv&J!x@z(h?n$qb6g*-ymfvEE@~kfP zY1g?jzs#X|{Sr^-;KFSSPsudK^@Vv!?v%du{}TV>;-3;<7xmt|9vsF zo(>g>4uwKTE(crBlj15{b5bVo{FB|((9t#NG5f(>UEffd=MNPY?za)}xUezz*Gi*f z7T>lyEuPM3^;LzPaXQn&ZC4i>YkA~xv50+DF3)q^Rii#ZP-8>WlY&$2cK?`fIc{7Z zVER+m0hpacONvgmR+$yMX)_gM-;RW-SGfFYmDgUPF8(yl2UWbmA-`*X?cZ5tH6YFzYBd0R7S zYU{;^3bji;q6_8}?O4!oUj1}j_C)C$&JLR_-dqx9R@wZ$pm&Lz)RYwuzpYfBZN50l zknNGhzgtfj?Y7PDJ{2gxZ$fQum4=eXGk^Wb4wGco3NK+(eWlP)ae(RSo|$)ME-JO& zye)>dJg&aY96|t{}fKfhFW>_rFu`!YML5m5wvUNv$GG*h%{x#tyVl? zB^{vn%6WY)%UUC49W8-5mnXRtKIESi;`N$srIzC@f$gb=GCFL+sVDkhA9>{TqenEL zqw3!j*+79m8oA~KgIF!@)V(WCxRm#Hwi3D zZ+y3>u%Rk1LWx7fa%Q2EoL2A#SB1!F6Bd1(EM-)2@bSL8YG2p1a)_)J*q(XOXhMaN zhluX}1dpxvLME*0-*{`og~#eM%}pY{G%ilmev+S_*~+21sayKzmS|;XAL*4l4J276 zy*S0VMB?tYIJIl}3QjYXXPAp{mmfOtU}|iCRLKR4$k!`2)C4P8d8EENz>xV~h-=bP zmc>m+;$t?qHW%lFdqu3<@Y|2ebGC4BFlXQPYk?v^HV6yNIJ#5i$gNo}3@4vi>v@z; zl-7|6YPs@t(=3I5F>Mo~KD15>=Vq44c4xNStZ`>sc~WTAv=6M} z(+UKQ?&L9Fs^76oU$S(kcuZQ7|5-tmBHanClFluIH&-S*?=Ud$3p09Ya zW}U&=je3uo-qb$e`gQYI;>;PQztowW)~#thywB4)%8W~8TgLsu<3}6CKC{`E?p%G+ z(&pw`5kVWpwO_P+QhFGKn*DBda$ma8t0MB!>hOVUF3skfE1PHAKJdLIAhb(G{uavu zwPn9*ES^YC2y|eoQ2!-%eoZlh<~5a0l|!2hmhL)p(pXD%g5wG1m$4UDybV^nYIMcn z(Jhb8BU1|MS3B3ge*Pg-v~Qx0gLl8jn`>pNNnJ7DN+hQWg+yMdUL~RSa;XYaZvU+n zmJKX6%0iD=CWUQrnQ$brzn9rFFOoy-+$_uOJK4^AF`Yl!_~-TBh1+tM*ceRJn&9@` zY8yxY{0fh4ibCoW9&O*2J@NbL?a@o$Zj^3oXi#@3zPE0I+OEkmac@^xy_tQ3PvPfm zGxG@@eGV{*w!Rb-OR zg#Bxkxh?wJqgO?*YH8&81uI!>SNbk><35*mgDYjWQ@xMp{FIX`P4ZG~-=6)ZA>`pT z>F%FRylkDiMXK9cpE9fs%TRf#5ZPpRe4hC#-#N#{vjY{~!&?d+7KLBk_i4SeO42m- z1HRdF9(QcIy1`36l~cxP_9tGEw=IdqGb*l|hBm zvTKVJEuufYO1W~F^Ygw&7kjpQxej&~9!$sQF2AuX_sO*~b?&@bU%s5o$_!M#^7oo{ zkWpu>>-)Ly7bS2=dLc)-_=(9x%_;| zy}h4;FWJ;iHFKBuSNr56RcQQvPnq?4rd8!?rEAqb{)zg^HD}@Eqw*^4UANflcC6>w zU#Q^NRQ{-Bl9m1;8BhL*i>qxuFSpfV|C)KNR3P`f?t6wUnZ{1dDK!(M>fhZqV4ZNs z|D{wU&n>C9N1k@|WlEcT&0YKaTt(-VSnJKX5nqmkYHiFem~OR_Q%A_dWbsq(pwHS? z9@)7nGatK2o$0Dw6>an=IpO`^l%$udMNfV4wKWSpF<*GcOa>{3sB^MS zEnNE0RMVinQ*tGoa~du_{^j|T?bunC&PHe5vh(JgDna602`ls1&mWDym2AoLue>o! zHK8!tb<(GULeYV_8Xny0@9!zB-8|7nCi(L0do>ly*Cu3Kb24&!^ziJ2s6%$YPM)7M z!RIzF>q;r64*pA4YMxPw+0J`k&fU(NRd8|Qff>IPkF4{xeg94(NtRXR((fk;mRmkN z<5T!L(_pTEYgd^~q2cOPo!QwEc@wVpY-F-huHG0f?{$Gs^g*H4gh`G?HVN$^%zRgu zEZr=@y2R9MlFZ_1J~74;ookxbTx&dY@vx41C^N_PjJeh?!*wQj95rBB^68wy&x-3JwPg*-NF znet%4jawqDx!H3+8hE;zNvOtTO$& zELZ=V{r5j?a8~&03tn{B#q9O&wc3SOH(!QFR=+-e`La*RBAwu$KfCwuw-cQI|M&XG zPhH<8FLqos&6Gvx;`?7Yw;L4KIBm;`-*o!>kNx*|v))^=R&%#i*1J8nDf?3!CYv3J z5C43%Q{>q7n^zNSuTD3QTJoCtWM%5@z6KTc4K_({CV#qrRd@RV=~Cm=>1$uNrzXsN z;ZiYm=j_K<=g4{|`kddFyUt8XC0!~{$fLP8EBfzJxkT-64-S5M@BCKs;QuMQ_Pc5- zrq}+O5L&f%&%WZ{KHe!$cd@(#Erqidzf)Rybej0C(_fodp4K?d<(6i+^h?dNsWBv_ zC%kat*)QoV|1aCuS=1ezx8dieBPlcY>#bjIzttm4VePqf{aurPN50&(M=SUC#%Gs! zRoIn%gd|jwOuye|E#p|S&M`Kmw6Z3i<>bR`k;}KY-*~*~>A$?NrX$OaKP_!tHt7W0 z6774jXS&|peX}ZSg{}1@=j67m@7Fx^6cqQG9ar5er?7VIZ80C^y(_OA|GaXwTb7W) z-aoT#b^q`EE;qaI>$fcz3%x9OJ+7<&DV%t>x<7v7>i+mFy~E8lJ^#-BSKnL_a3}m}>GFwOyh~1Z+n=-W zP(LdF^y;e)-~KBS=E5r5!}hjkM$gXWzVyF0+ zw&ULMQ=Yv&@leH8(csKW4F$)US}PX5QS)eie(R0G+ve%p4$N^V$~Zfb<>kNRi_UyA zT;bkI+83&H(G~ll!jDJpA2a zucOr3jlP^|0v@k7Y1;@UiMNiS~>tH-tpW#TG_GF3LcSgTYJJgM$pi|$U& zC8dob8ewm1R2FAf}d@k5Sp(#~7+PAY0!vNFjh{l=Dm2a1`vFK=hb`pDWD zz|-s)HADWpQBF#=?>60(C5Oavom-{ZH;I3}dFDlfQ|+_dr!DbsOT*9FD&D)0yX2#T z)QX9Db{X%-(-D`!`#-i zMeMeiuHS~4&fnJZ)Fkt+7IZ9n9m39@xgoJvH_>fdrlR$g)+dtkZ6?zqA}))GsU)|U z3oWTA%+l(tS=0UKroo)O8xIJ`&A_QE=lD?`%GvFzp%3LNUGnbZF3cP&2yvK zCIy^7cQGVx?GM)MoaoEXBTUOC@aP{bm~d^wR240cbMad5Tc@*plbjq^#;)RSw2fzp znf;Q>Dk+*C`_8OvpZ}}ziAB9D1E;$&gU93B+jc03-kT_*@~dXnBXePu<4Q8}OLkao z(5sstBdVfnCg;&7>dC;#Z`9br@?MzztW;n6tvm^j$Neg) z7B{P!lxl9rMY`XnFV(UW@A^9dTeq`mu_s+Eh@38m~JG{zevL7I-Bwv)=Am6Z0slZ&U0hae0QQORE1B= z^Umk|Ul*#i7dMKyE8o1P&cl@X#4RXh!neDR1ga~37ECa^wh!DK12 zNql{OKn|nFhFm`5O}3wOPD&^kN_%{`{7|9syg8SO@heUhJ*SjZf}PyvH-)m<&S)`&yYzOFDMVt7X(bdiE>-WS@rosXb}8 z{*=uLcJfq+biKxwWxOKO5v8nf5CN0^;`mXBmY?oWY z`V(xHdEDXd%(``Eh5Cdi4UVFR^FO@`eii!r%KRtp8=JSe8OW*>8@4cVcHNkB=%7Mx z#_eMaoYHDqUqaot-JNoZi?QA1OJIO((EOmQ9M(bH8UJ>27#;W~V zkka+JhI##7cWfspt=zY-Gvx2yy6>;m#T$$-W?YG^`}lpb@YSpR%a==Dj@jhPmN`L- zhx1YfD3_IX#-#^;lPOXcsff*3ZD}2P2i$^s)SI_OQ^vz>?@WiNcpEN{={ZsVj)?D(l{+X-U-`}z9P`B#sccj;$8YThz2&&(tF z=C%_GqPCzdm1l3fIeYijs)_qCe93wSG41r7EA> z(;8GVmMnjIUuencdKvq-cO94Y+RiVUuxkIG{gdV^t*+JHcZ~7m@{XqFC-y$ZmvlT; zgt;0*W^JC-dGl4(vGr4q&lTspq}%8Jcl!VGQ;w@@wfDUV<=FvB@g53iuXbzh{{O;y z-Nbb_dg52UW0??UoOk8b{y+Qg^LbCmy5F_F(Bad{!@Neh$~U)p>{%t1`Ss1ktL^2} z#ZPxXI_O!s)aF@`_^s~lp1+^Z-EDTidVg}WJG(k~WBt_kYsz*mXl8MEz%?nH^R1l6 z#AhB;Cg%ElnV8#EqUX+d(mOq0$U~Wz;mE_S-g^$mNK3w~eS7HL7V#qHIUjhYo|U|L zPi%rr+W(biOZcrNJeIAf<;u8m?#uy&-jv%(<+l&5cYk&I=sQLY=M|Hjn@w_@Wmzsw z$hyThA!*$N9=1s<1)3U7GE%BNOnZ}WD;;%;R9b21_H)vt7boM6JG_gz?ZK(C=t!Q5 zHQ{J0%!ytSQB`xHHusnA?|o)3SI2Uy%<3`TAuFpg zo%!aSvRm&2JenhRTvXsZ+V<}6^80y*LVWH^C{&7`Z)-H^%k92*>zKbXBddMylNjB8 zLx)dNKkpk{HskZy_+{RdiYGNH0auLOZ{4=4`u3^uR${~ET=vW4vE&IyQy2P0v);7hUA$_|=t-bC!~1)U4zcOCl6lbC2$RIWf+RL*>zTC5v-s zho8TxxMnu1kPQ3HExat5Qx3kJopsxd;pFBFr3RA;Ex9vQCG{G-ZfQkTs7wVfr%r8C7*`SvzJhfiy4t7H~8 zmTV5+el*ncp^x;kikkZ@8a6w0PAK1QzJIFFp=&RzLQ6)f-^ImM#}=&O=9zR@(C2aE z7FF%-%pGC22OYTXW-dNI!D7ZX>7?6v4PKXaaHie5&|ow9{e}YxuN`)AYI)W!Hy2ZB zU#Rs-hjR`;K=PCC8I?7q>>%n3>>mrPI&(VBYD;n1diY7+!5o9)n1?iE`l z#C~JOwqB8KQNgd7I6ISlCgg4L>bjZV%@=fFTN%fMysq4CVgDlwm%LD@T-D&qnz^Pf zT1Hyx;}iEI1({Ie6 z5`R@jbV=gW;0vd8rm(!<#kw{3uC=SS$W@6KnT}^%PjCwDVK~Ox8Ig8S#l(}bG-hHy zYtVsh+Y~jzC$R0Ca&(6R>wDEUZvPC4i&A}Mm&JCh8|c7g(Urn=Dz|INzSpxp?$e(B4o8IJSO_M~54)uzsl;(ZfS+`-g-X`I_VGkAD zHs#nY%WWvswy=McAJ?(3@uI4RC*$pyJr=W0A3bubR9alc{q!^TN$HOs{G7=8VQ%XM zp-XevvQ;x>Be=c9CM+_act-L&(@E`8;XO0NF6PE~gfX+4GJeYOd3NYS_d>Jln^R<` zoqg#4R$=GfwBsq&h>sVY;>Nw1sKGquUqq*-L!+P8J*mM+gMo_S#E5CQQ32wZhm^hD`eTLC#HJHD%+E3qDg@2%_2{!5=lvwY=?gef}DlfGhNg* zJ)AQYJi=yaPL^FYdx5WtZF8K$&1D`wbz501(o}!>#0X4cdzg28!liqXk}CQ?Rw@K4 z6wYPPeAHjW-jO)Lt7u*r^Ls77Yq>YuW|(n#ZdkeNOo6=Nx2V%Xix!$FaCm+BkZ>tO zp;BW>qQb^j-{aTMPhY-#e^F+(aZ=U?^lhN*=KS#nn6(4=zU%2v<=5D*- zc{OumWl!~`6tbUOuls!Qgtn%Xz$>NM*_B6bs9$=!X7?Z6~>alj4s?mMFxo z%A7H;_I6xTE#JkxL0*o!v-_Q-cqYwUa_j%?Pqxt;SGTLbIe7W$b9o(kn{#%_praeu z`EMN5KfPwx->;sJ)xU8#=r*67t^YpPe;LcmzwGL%g)txZ+yDRanKL@B#EOe&ufw{F zS1OhTu4eG+{oyx}VIAX2#nqx0>No4J@4s)i>&G)|v%j^+x+edwKi9qH1mC7l-%cKV zdPemoW6Fyw_YRzF*WCTx{zgve$Foz;-Z*{rbm+{t>-(d_6Bc%vdn)`?z4&^zHKT)( zskqdHzSlGI#B+XL?D@M|Wi`vnlovnhj{RSm-_Ls~V5!LlcayXC_wRYKbKU>2pY>%a zJT;9mn>Q@>n57?N(CjOH*lKm{i~I`VO*M~~UH+u6zfo+-^UGXIzLhB_H=1l&`Xt;} z)+2SI&7+;`{(t(v&aUp}E~cps+8%W)f~Uu62{EbET-lgs94Gs6|N5JIAN|-AV*9>C z;jUIzZ^+#|N2%q#A*U6VKA9fCxWruYeCglm|G&rH%+Ee-RvEhfu-U{vB9|6Sd>dy_ z?&}e6^i9}0_5V)0-Bxop&flELdujgWOIvE=Q@*~P`6gXO@>0;JRV%g?2Q``eZGOJ% zU-ZB2R!Nr^9}~TiUCeq?J9{3Nrhtcp=UMOSuSYYFt&^A8wETZ$T*~$L|2}+VwYIRd z`1yS9?(6Sm=7emYF5WADC%|o@;^RAUaj%uY+t>DeKKfof@@skJ$KOZy)^Ds{-{CrsFwITMdf?LKOkxY!}%V_tFfO;;ul zj|~zY1)DFe)^~`W>-0h6Zn1X4k2gZc7d?|baFQchP4r{$h2u39>)nMePPmjU%dXxn zB_!L>pm6ZwueB3&{+#Wd|6|*fnn{^on_o_{e54W+J$s7-?kq; zvT3=|mLCgWFP)@gxbSS@!TT~h^LJ)WWSq~#$t|?Qp>tnVSZ@2X#Zs30r%gJ4E8+CI zwCk-Ra!S zvM+B->Ls=qvB@N^4m_4yc^Mi)o*Vgh^-&)x@wKxy0-nU`mCW+-| zpU8FlZ@R!N&>79CTE-N)O|gx)Z@u!x;u_XBds;1eQ}RWWpZ83@VA}czVs2w+K(NIuy z<(B{ayf7*H=FD!Je{YvfwGscfVzXEE&Qt+GHqI|k&TLD&A>-V^EHsVB&SJ?N#g}(K zJ#3%pW>bGjGj?93#;@?zl4gsuR5n&L`)uJg$+_rYRQZ-~EAIzOPPsD=90UpjtNvv^ zc<=mQkYTf2gJaVki}U?FCOID+jOIy7hIM5eo>sC}B*%2#MyB5pE(N`zFQnHNH?qmy zoR)GW@TCQ_Z^{%mOFljpPN(ys^D~_L-`!+%5SmrO+_3Iqblh|IFigL%Y(+ zeGfy*lGiv+%6M(ebmsEOgDn@;7q1UWo;s7eio+(gF0Dmai*dpNuX68>X~ye~S25Vv zPS%@{D7Ag1ii>nf**Uq01+tZG2@De!{96=U`1KeXw!r$+!bE);^wp z@w^qQgVDEX9E-vW7t~ID=o>A3rRqvh#L*OPO##mg4F(V9*&Yqi`)ztyg;q~nv9@z* z(Dar=H$K_9*qN5c|12*M=2Wo1ve4_JL(=Oj-l3nZJshUhayoYLbSEyfWnXo-k!6A9 zv(+KTSv%K;>Th)DE;~E7U0_F&&X%*+_x)>}a$z%vuUkqIxjI3Jy;zEmKqu<`4wr3S^CZPOJURwkY*h4}09pZHGj`Xc;4wRCGjn$ZCR z28lyXzuFzyTBVF<9AR9#F>Jz)53G6FSA0VMFz->WDmAPyoR+Ct_WjJ?%~@*?tW>LN zW8ql8yk^bL-$$kTdIeIAGR_n+p7Z9{v)bVBYWCkkLzDPj4J)OWxSKOA(OOsY=Ip;s z1;)=~Crr40(AVI_GNwsltbxl9u-a-IJofJKjn$nuQr5_B-JtVl`LhPb#)V7U^-Z!? zdmL}O_OgjxqfNDZv%@Oo-tF_|OYD{R*|q-zd*yrXdPeajfeKGp<~N=`XU?ypcXUJ8 z=?5=t+YfA2e4luiV~g?<|D6x*Ob)iKVB5E6HfNCPyEha}%FW z5fhrWXrV4w!Zp7gG1?weKgiz7_HON;8QiAHuKVh;cDmlZ?>C)WRMQJ2^Q}Clez4v8 zI;*96hGpeU#>|7}Lfgd(?@q|fTmA5ss8E&L(GNcz_x7|{&t?izt&u%3OYOy+^s3Z1 zf45FbYZtpKzpOc>mo=B2HDY5yvBRns>Ddcb|C*ar)=?qIruyNGQtqN9Vy_ddW_1W$ ztvT$lYKc`>(i45(kVht$wP%~eGpoCY%L-kPvst+0NLYA9s#{dIdP;?}-lfP-ogfnU@Jht3^QjZM*i<%# zr*zy7U~@gNSa_?*iNo>_m7@A}wB{T;*;eJS>|2CRRJ%#%*@a5^=Uz+`nY55IW!0es z^^XNNizY~EW>+lX51e6F5$M5g?Z4vi7fYU?>ioPcg_&1U0{YHq3vOdu61B>Bm-~a0 z23J&gmt1n2#dOW;g1%6)6T5UrXanotEDIW z`c^(~v2A_ugM**aS{E`d#hNGLur9mEy^-HENEo zx;f$3#Ax0iWmCV8Y{mz-?OU; zxIZx9M65-3oQ|i~lvDX^r?^sWR*E{Gb^Ucpd&h&;33J{~N!y~}=D9k}FHi2K-4*5) zb5GUtHMgvulTq8tBBapGwfsY>-uV?L*fS+~Wp3o@PY!RGc6LL8N?hxzRMo%tLMKE; zUfF!makj{$nUin1zc5h@21IbtoMY;oKV$~7K_ z=q34!t4@$nS#nbN%p3uQmPv`W&2=Wcd-l|~1V)&ua;h|4QOo~vZd%^drVBBzcw%nX zo6WnoHcY^zdiM?K#Zpr{o(5iGndG`^uI}Murnglqxg8xt|C^MZF5=n~<7{l^Q}$6ZlM~!-nW`EZf{x_88W|bN4<8VNQ9N_Q;UdwGdheLRD-`V zOf2o%$JYB=_h{w={frwfp3C=K(rYwvxV3IxckawD_XXx(aqhi#cXMd(N7WsN6pmVb zo1`}3k+-#sYs#vhuZnHMv%d%EYMuP;*kU@jZhQW(nGRgK-Ja}IS8iLqa@H&5OI@q4 zCjNb&dhPD2?NheAW=^WBxTC?jq}0<|gEhQ%>IZj2F>2ax1_pXZ(rrXd261zhNax!_;P;wb@$%WwYj(7TB$T{Ss1ilFq7w) zN&Wn@Hy+!pcl;%;J0&@k(p z6Rf7lrJ%|g4pF-!c&|^$U(-5;JP~G>rd# z$3yw|3;t;iw^%mnOgyu4`QsyEp2cbt%mR8;uC8X@b1s%ohjU4<_~nl#v0r;Derf3_ zS^xUJ|JvMLDm*v+qdPA6B4 zvsK?l<;~t*dSg4wC9_jfv%EN$yq%)qt}xprCG_%-*+ZwsP_u&Ly(K`D?E< zx!6SOoxIkq@AXwu^Mc&4`O)I3lia+RI;_2>YH4lof2}s5 zEG))cUzFG5!)2CBeBHCdR-I$=S5R#{!n%}AB}LPbDf4)1-UF!#6P9x>nJd02?9ncc zzg~$ArvVEC;V3uf$^y_Qd|$J7bAikkDd@GR_mSrb~9tb?~~x z(Kcz@6X~3J>JuiFFbOg-I_;gF62A2H0nxv*7v}!^dypkaC{Sw3u7^q~lC$l&COCL0 zd7C=j^gFvKeO88w>V!!vg0hyTZRD`}vqE{AgV&1!A&Lm_l7o_tG zPk&$f&z~Fn|8Xy=l3vszWT2YGCXsM(9Ac# zmi#%K_S9adamo?TS(X#nmMDMwFF#E|c4H`e(5tPgik{d1>VwZh{BkWT>|e3j)cNL< z9K4!5jTI^>MT6yP^ zoBvf@4C|I?uXXow5`E0&nJSsbq{*qrW)ZS`x`S6!x1;LPSQSqhmb-47JbvGrw1cB8 zY00uxLLQzzO!8mZ1139oC5doMV3H8`P*C02QFcV7;!+rsW~Z;(CzE=sjk=xdpS%sf zB_{la;|@!Z&?Fx<;WvjprlOyF?AheOr0FT(si4ZK1WNNMAOADtypZKHES;~wz`(%Z M>FVdQ&MBb@0H5h>`v3p{ literal 11508 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 XDGK|_&xbKEFfe$!`njxgN@xNAQ^+8M diff --git a/lib/resource-1.0/doc/Lang.dot b/lib/resource-1.0/doc/Lang.dot new file mode 100644 index 000000000..ec1fa508a --- /dev/null +++ b/lib/resource-1.0/doc/Lang.dot @@ -0,0 +1,60 @@ +digraph { + +size = "12,8" ; + +Lang [style = "solid", shape = "ellipse", URL = "Lang.gf"]; +Lang -> Noun [style = "solid"]; +Lang -> Verb [style = "solid"]; +Lang -> Adjective [style = "solid"]; +Lang -> Adverb [style = "solid"]; +Lang -> Numeral [style = "solid"]; +Lang -> Sentence [style = "solid"]; +Lang -> Question [style = "solid"]; +Lang -> Relative [style = "solid"]; +Lang -> Conjunction [style = "solid"]; +Lang -> Phrase [style = "solid"]; +Lang -> Structural [style = "solid"]; +Lang -> Lexicon [style = "solid"]; + +Noun [style = "solid", shape = "ellipse", URL = "Noun.gf"]; +Noun -> Cat [style = "solid"]; + +Verb [style = "solid", shape = "ellipse", URL = "Verb.gf"]; +Verb -> Cat [style = "solid"]; + +Adjective [style = "solid", shape = "ellipse", URL = "Adjective.gf"]; +Adjective -> Cat [style = "solid"]; + +Adverb [style = "solid", shape = "ellipse", URL = "Adverb.gf"]; +Adverb -> Cat [style = "solid"]; + +Numeral [style = "solid", shape = "ellipse", URL = "Numeral.gf"]; +Numeral -> Cat [style = "solid"]; + +Sentence [style = "solid", shape = "ellipse", URL = "Sentence.gf"]; +Sentence -> Cat [style = "solid"]; + +Question [style = "solid", shape = "ellipse", URL = "Question.gf"]; +Question -> Cat [style = "solid"]; + +Relative [style = "solid", shape = "ellipse", URL = "Relative.gf"]; +Relative -> Cat [style = "solid"]; + +Conjunction [style = "solid", shape = "ellipse", URL = "Conjunction.gf"]; +Conjunction -> Cat [style = "solid"]; + +Phrase [style = "solid", shape = "ellipse", URL = "Phrase.gf"]; +Phrase -> Cat [style = "solid"]; + +Structural [style = "solid", shape = "ellipse", URL = "Structural.gf"]; +Structural -> Cat [style = "solid"]; + +Lexicon [style = "solid", shape = "ellipse", URL = "Lexicon.gf"]; +Lexicon -> Cat [style = "solid"]; + +Cat [style = "solid", shape = "ellipse", URL = "Cat.gf"]; +Cat -> Tense [style = "solid"]; + +Tense [style = "solid", shape = "ellipse", URL = "Tense.gf"]; + +} diff --git a/lib/resource-1.0/doc/Lang.png b/lib/resource-1.0/doc/Lang.png index db077e7139f786a9200158fc196b55228bac2125..4010ed9c94cb69fcfc85e27a27b9d0ae5669eb36 100644 GIT binary patch literal 7896 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 Vmh_nW6$}gv44$rjF6*2UngBdwum%7C literal 5795 zcmeAS@N?(olHy`uVBq!ia0y~yU_Q^lz_5&knSp^pY}4A0KaTZ(mc!%Vp+tpong*z;cT|aNj zrN2y3Z+28|VXNZ(@+vT{n7`lP`qbtB7-gqCFukDdE_&hm`|bVrbMDKiTq}LLQr$uP z^(4~^%1e89N#sWDchxc%kBVKeIy61~?M|kuFIMcoN&}~TmYJ~Tm($(edaLc4!!FjHk2A_SGxn%GW!RuG zeRta-ruS141o%4ER5RRl-7V}8>@0up4d1Dk#gUfn);?>38T4i?Z_0Bt&)C_xOhE5- zzTJ}B&a1QXbI#8w)6Qy`AHQK?*xjb;$i`(8MI_CVZ{l(ttAcTRJd zT&@<|GC{7p^`^oKt>eeJ4y?+tF-rfXyX<;X=E(-Nwu2@=5-Z-{&0N+k|6ys{w*Cr@ z1q`ddPMZEkl_@HCnbIt;9{)-{KkHaKtsiei-%MGosO!3$)jMXxbe4==HXYnv2iOm+ zDp=Q5z`KF>d<)yF4N(gg|4ChNl-c*%wNHzBzAW5xYe(J3dfA#2ji`Tg@ z$MVTEu2nh0J)O<$(hjXLeF;I^JN#yT^A6o5&SnxkVYW!BNb3HhTQASvI{9*ibxnkP zPlx%s#FaDS__l~MnauyfR^}MU$FR90;pq+C6F06;HCa$-`|;_d)(d+Y)3}Z7I~-?p z{+skYPkDP^p2rr$be1Tk*JTGLS@d(io_bz5qv%h{UTIF}yUgj&V;A-p_;UYEnRPLG z(U#MjS1htMU(gw~ZBg6F=SzZUs!(8t+o)2N!{KXCuE)z{rRS`@9K%BGQVT}elffLtz%F5x;%>GiiNN1 zNe-hUf4aW)H1?&I1_lazTwJQX!8SPh_lZgAvyVJ;kh~vNV$p2gzsS~m0qf~b-Gx49 zeVN4`Je8i!%ViVcqjsc<&$T+u!CQ@M_KD=vc82Ge@^eyU-x((Tx~cmlE@@VJn`^b1 zgLgpQr25LTJ&V3xU%X(wzFy9>m(1NeB|QCbP0m zz1~u-CNqDV*2ifLVkPTl`So}tEIW3kvHA|9{-ue=D$&`?XKdLP(z%^+%M$Lp7U_O` z#@CwpDi$5ii<00`UU4i*#?@w`tL;RAwqBxX|@(`TSd_pXl7* z65-FeMS-_>bxvUR{ftj6E2k9t6qc%;FP@hAO6rbJ=hqMiZl!78++!9p?KV6pxP60` zdXCzgL*^HkFA7^QkLmTv#%WJ39W&_OWEXun(P?9b6oW29(2{K>J49cL`m}sq;^3{2 z!?U?y){MywmPx^iM@pnL!!HONw>ZMq=`ZKg@HNH3TOgBb^9I>$tCwp(&J=L!S+qe+ z=BobbrEeYX%Dnb$$TR$G_B6fQxUORTq3L`pp3R7R-}h22Yt`-Ms9Ue5Uy;ao=+`y# zz!`C=Jr^Fnnl!^;mPZ-)$!TkEHAm$=YjfzHGDq}GP3OTvwYHyU#Dvn$dR>Zhjr5rv zaN74SM@C|LrkR0z7k4Am#rNJ+3ELv&kOqe zH;p*=X{R;x_;09@+SF=&N9ev`0%yavbkm53H`^QQ-k2K31jy;=SUDz?@n@B~R5a~n zR%|Z2@zK3oyq+_&_EgA%qNP2_5_7curKhcMm^Qodq(yM#wa$d1+?Gua3mjYH_bYIE zvc#yZvCvhy@!YageD|mMTH9v1PUTx-zk7DWin;}9j5gO8BOHJFtg2!<#N@2@Rk%Ry z#tV(t62j)e5n>D`lWHAJSftOnhRj}C7qO4G(R^Wo?7j-gmL$Hp9q-o^^vbreaK5Qu z*=?k_(5raCwDOyiBBrGF$o=^`o7u!_eTZD4&*~^kR#V}dt|xffuiA2CFRD4{5#{Lj z;Ou+rmQ2N0RUam;?hA?MGE%Kr)DWG>e(2K#-G{=9m3722vM%QwirQ85WxsTCb+?DI zbLe6&u46(>{e9ej7do7`&fzoU(v@o5a6!s{%5?)3&zjvv_hJq5ikKGI7@A&qlH;(X zwNRWC3Mlu zmYr@{m5%oootd|Lx&ycGS;dUMDc9E=|KKQ*yfqwTUgnZ`!R;&Va2)bbUd8SDG|_uO zWpMJeJ;ybUa&hlGv8AtX!Gnm?5}(<-?tYfdwQ=2JmngQjB}8$Nn}+1Z;td9mj@-iS!y&}lWV}Aa{-F*`_GQ}<1 z61l>A<`OICC;aB|@27s0>~DCwe&4^x>c{h6R9yXach27*-V@4=<_o=ebH35=en^}@ zv)k%<=NzvwMn5XLoAbPlp`=xP(S)k3Z`qk&o11!$x%ICK|5NK!_jKOw`21OKFKq35 z_AB@}=Mw&=c`>w{HIKQT-?8_Zh!6HZ$JOtHCLbU|81k!V#&Vq z=4ArelA8^0)$cF;<7IE%)TUMU{{76|`BwvH9r6)0ubt=W{{OE0-U@S>8f&{9`#1hP z&L$SV%zM_7$Ibb2vvkf`c?Mj&nmn2FrsVv)=j(!kd->UBywaNdDed>shd&;4i@)bl zINer!)QVYwjQzVp{D{g|KcH9Ws1?;qc!|;_WgW{$k zx$4J>95ILbv@W5!r`vm;#@8lZvAAmZwB^;*di~QG91HUOiobq+p=lB#clK*S&8~@T zzL8w6IluOp{n{yc&(141QEt|nm^+P~s~YyLxfDN}$MN~zofQ#Ftp0oYe!buw#ag20 zI(JWXMqhu#0(~w$?V~SC`|Exs7W{nj*?N24{=4^g*8h9@FrnhV%*DEjqTloH=kogR zt1sR1`Qyp67hmkw6-d0=T^HwZ;n~I2{L2sX&wmqN`;@Eo&tiE#|DepwKgZ|KoU1>- zX5PvF=Pi{gc6>j3b#ia_cK!3genL6YPNpP`Ec#d&Z)~@oGkXAzT}dsZ_unK5A|D5o>DpJQ~dns z=@5@q@6N?{gnfVB z9$CP$RlP&XY13!Zz?BXK7v_GMll*Um)(H!%Z=t$tH@D096Y`8P?btn+<1twk6NNrL?|r}2ucP;c&neZr ziB9h%yDdff_K8ijOSId(0v0@f>#BYB_{ZFOP0nvUqI^oHkN4}lsj^ld z`{44bKw4%Ww@FFw8z$Zx7v%~MbiVzRGGX39y$eC%b>bP49+PA@?49i~N9v}Ilv>y( zZjp-%Z*7zf4qe!Iv-Yl{_15*)Hy+9Co8WOiCB9rTR>fPiagk}yu}d8m2_8SzbMU;_ z_s%AxX>ZFdwG+mdmM-0YMubzwzchTfZ_C9(i@~rCg5`_FvJknW$g>A^7p%xkrASOP;Qgt&pTx#`UyFLZhC?``_)=IvguE zEjO8Ia6$aoWswgT3!RkR7rR8J#0MwMmllUkRFr21|NLI0T_j4K`<NQv$brYn;}_+NO^) zfBErBUVD4}!4_A6C8~N)KIj-N%hvztv+3i$=`{sc&*@q!t%+WLFnYgg`-?jpsyd{e zXU?|xR40`=c}k%7_c+fDd3)K^*UD6}ELvhVE9JqvmqxL#-DGTb>3`_JpC1?+Yqbf{-;yEo?t*=JlOZh>p0%MZnGD z#qhh%<7DLz%T9;~`o`_}Eae}S`deM2Tl12FrAhDt-;xVgw?tenw_G4sP`u*zA%8U? z3wQm#IZICEMMXRJ&M^1b%y!FVbLHVZKKUlD=F+?MuibyIU!}NmUIBNc*e2hgXy>NN zw!}Hi7u=dkCqJ2V{et4Vb&+$|Us1dem)xf$w)@%THi_j=hY4W zYE`EQ?_JmZZu{fqelEiIJdfU$I=0kedtXFC`kCb(*B5&pREs$L{#H)SDX~?jF77_g zC3y0nPE>$y@SUL4x5wWzoh>*g{h~)H!|cRoi*$pE!kj?n*xe0GvagOF)R}e5-)Hw! z)0Ir}hm{)6X+&*UI=SJ;^xAtbR#vSop22K#SKIi_qVhcz&oW*1&&uxK!fkSVhsFZm zHDc4lA4yz$vHb9jV^+Ur`yBrIbI}dO_?mNVbNEXlr;2fuxYg`d)#K*47Le1nrHIwa zA-sRlW)+vu(w`f5bm>$$WFB;Qeq^R=OlP|(LxulDzn;r|Hz)ROk_nKzrsA@7W}$Cy zz+YZn`PW7abA@viEAy{DclHZ7F=r0{Lv9OW>w`NCLz8aXe(1lE?sv#7DYM~R=exOH zy&kb1SrggZqeaelhQC*IOXi(q&Xq-si`t*kq&s*NB z73L17GEF;2G(U%fmtqvOKPcRRB$ z3VqF4w_DIvPw}nT*W|BRPEOYri!X5X-g4^o#mhlYgf8V>)Ou%-*?Z#s`&}NZx2CU& z?TU4}r5iOhcERQaFI1PzUG(n#>v@Vh

Resource grammar writing HOWTO

Author: Aarne Ranta <aarne (at) cs.chalmers.se>
-Last update: Thu Jan 5 23:19:40 2006 +Last update: Wed Jan 25 14:52:10 2006

@@ -29,21 +29,22 @@ Last update: Thu Jan 5 23:19:40 2006
  • Lock fields
  • Lexicon construction -
  • Inside phrase category modules +
  • Inside grammar modules -
  • Lexicon extension +
  • Lexicon extension -
  • Writing an instance of parametrized resource grammar implementation -
  • Parametrizing a resource grammar implementation +
  • Writing an instance of parametrized resource grammar implementation +
  • Parametrizing a resource grammar implementation

    @@ -72,16 +73,8 @@ The following figure gives the dependencies of these modules.

    -It is advisable to start with a simpler subset of the API, which -leaves out certain complicated but not always necessary things: -tenses and most part of the lexicon. -

    -

    - -

    -

    The module structure is rather flat: almost every module is a direct -parent of the top module (Lang or Test). The idea +parent of the top module Lang. The idea is that you can concentrate on one linguistic aspect at a time, or also distribute the work among several authors.

    @@ -137,20 +130,6 @@ can skip the lincat definition of a category and use the default {s : Str} until you need to change it to something else. In English, for instance, most categories do have this linearization type!

    -

    -As a slight asymmetry in the module diagrams, you find the following -modules: -

    -
      -
    • Tense: defines the parameters of polarity, anteriority, and tense -
    • Tensed: defines how sentences use those parameters -
    • Untensed: makes sentences use the polarity parameter only -
    - -

    -The full resource API (Lang) uses Tensed, whereas the -restricted Test API uses Untensed. -

    Lexical modules

    @@ -165,29 +144,22 @@ API, the latter rule is sometimes violated in some languages. Another characterization of lexical is that lexical units can be added almost ad libitum, and they cannot be defined in terms of already given rules. The lexical modules of the resource API are thus more like -samples than complete lists. There are three such modules: +samples than complete lists. There are two such modules:

    • Structural: structural words (determiners, conjunctions,...) -
    • Basic: basic everyday content words (nouns, verbs,...) -
    • Lex: a very small sample of both structural and content words +
    • Lexicon: basic everyday content words (nouns, verbs,...)

    The module Structural aims for completeness, and is likely to -be extended in future releases of the resource. The module Basic +be extended in future releases of the resource. The module Lexicon gives a "random" list of words, which enable interesting testing of syntax, and also a check list for morphology, since those words are likely to include most morphological patterns of the language.

    -The module Lex is used in Test instead of the two -larger modules. Its purpose is to provide a quick way to test the -syntactic structures of the phrase category modules without having to implement -the larger lexica. -

    -

    -In the case of Basic it may come out clearer than anywhere else +In the case of Lexicon it may come out clearer than anywhere else in the API that it is impossible to give exact translation equivalents in different languages on the level of a resource grammar. In other words, application grammars are likely to use the resource in different ways for @@ -254,9 +226,9 @@ of resource v. 1.0. lines in the previous step) - but you uncommenting the first and the last lines will actually do the job for many of the files.

    -
  • Now you can open the grammar TestGer in GF: +
  • Now you can open the grammar LangGer in GF:
    -         gf TestGer.gf
    +         gf LangGer.gf
     
    You will get lots of warnings on missing rules, but the grammar will compile.

    @@ -267,7 +239,7 @@ of resource v. 1.0. tells you what exactly is missing.

    -Here is the module structure of TestGer. It has been simplified by leaving out +Here is the module structure of LangGer. It has been simplified by leaving out the majority of the phrase category modules. Each of them has the same dependencies as e.g. VerbGer.

    @@ -296,7 +268,7 @@ only one. So you will find yourself iterating the following steps:

  • To be able to test the construction, define some words you need to instantiate it - in LexGer. Again, it can be helpful to define some simple-minded + in LexiconGer. Again, it can be helpful to define some simple-minded morphological paradigms in ResGer, in particular worst-case constructors corresponding to e.g. ResEng.mkNoun. @@ -307,8 +279,8 @@ only one. So you will find yourself iterating the following steps: cc mkNoun "Brief" "Briefe" Masc

    -
  • Uncomment NounGer and LexGer in TestGer, - and compile TestGer in GF. Then test by parsing, linearization, +
  • Uncomment NounGer and LexiconGer in LangGer, + and compile LangGer in GF. Then test by parsing, linearization, and random generation. In particular, linearization to a table should be used so that you see all forms produced:
    @@ -321,8 +293,9 @@ only one. So you will find yourself iterating the following steps:
     
     

    You are likely to run this cycle a few times for each linearization rule -you implement, and some hundreds of times altogether. There are 159 -funs in Test (at the moment). +you implement, and some hundreds of times altogether. There are 66 cats and +458 funs in Lang at the moment; 149 of the funs are outside the two +lexicon modules).

    Of course, you don't need to complete one phrase category module before starting @@ -335,7 +308,8 @@ Here is a live log of the actual process of building the German implementation of resource API v. 1.0. It is the basis of the more detailed explanations, which will follow soon. (You will found out that these explanations involve -a rational reconstruction of the live process!) +a rational reconstruction of the live process! Among other things, the +API was changed during the actual process to make it more intuitive.)

    Resource modules used

    @@ -343,8 +317,9 @@ a rational reconstruction of the live process!) These modules will be written by you.

      -
    • ResGer: parameter types and auxiliary operations -
    • MorphoGer: complete inflection engine; not needed for Test. +
    • ParamGer: parameter types +
    • ResGer: auxiliary operations (a resource for the resource grammar!) +
    • MorphoGer: complete inflection engine

    @@ -439,7 +414,7 @@ the application grammarian may need to use, e.g.

    These constants are defined in terms of parameter types and constructors in ResGer and MorphoGer, which modules are are not -accessible to the application grammarian. +visible to the application grammarian.

    Lock fields

    @@ -509,16 +484,54 @@ use of the paradigms in BasicGer gives a good set of examples for those who want to build new lexica.

    -

    Inside phrase category modules

    +

    Inside grammar modules

    +

    +So far we just give links to the implementations of each API. +More explanation iś to follow - but many detail implementation tricks +are only found in the cooments of the modules. +

    -

    Noun

    +

    The category system

    + + -

    Verb

    +

    Phrase category modules

    + + -

    Adjective

    +

    Resource modules

    + + -

    Lexicon extension

    +

    Lexicon

    + + +

    Lexicon extension

    +

    The irregularity lexicon

    It may be handy to provide a separate module of irregular @@ -528,7 +541,7 @@ few hundred perhaps. Building such a lexicon separately also makes it less important to cover everything by the worst-case paradigms (mkV etc).

    - +

    Lexicon extraction from a word list

    You can often find resources such as lists of @@ -538,10 +551,10 @@ page gives a list of verbs in the traditional tabular format, which begins as follows:

    -    backen (du bäckst, er bäckt)	                 backte [buk]	           gebacken
    +    backen (du bäckst, er bäckt)	                 backte [buk]              gebacken
         befehlen (du befiehlst, er befiehlt; befiehl!) befahl (beföhle; befähle) befohlen
    -    beginnen	                                 begann (begönne; begänne) begonnen
    -    beißen	                                 biß	                   gebissen
    +    beginnen                                       begann (begönne; begänne) begonnen
    +    beißen                                         biß                       gebissen
     

    All you have to do is to write a suitable verb paradigm @@ -563,7 +576,7 @@ When using ready-made word lists, you should think about coyright issues. Ideally, all resource grammar material should be provided under GNU General Public License.

    - +

    Lexicon extraction from raw text data

    This is a cheap technique to build a lexicon of thousands @@ -571,7 +584,7 @@ of words, if text data is available in digital format. See the Functional Morphology homepage for details.

    - +

    Extending the resource grammar API

    Sooner or later it will happen that the resource grammar API @@ -580,7 +593,7 @@ that it does not include idiomatic expressions in a given language. The solution then is in the first place to build language-specific extension modules. This chapter will deal with this issue.

    - +

    Writing an instance of parametrized resource grammar implementation

    Above we have looked at how a resource implementation is built by @@ -595,10 +608,10 @@ use parametrized modules. The advantages are

    -In this chapter, we will look at an example: adding Portuguese to +In this chapter, we will look at an example: adding Italian to the Romance family.

    - +

    Parametrizing a resource grammar implementation

    This is the most demanding form of resource grammar writing. @@ -614,6 +627,6 @@ This chapter will work out an example of how an Estonian grammar is constructed from the Finnish grammar through parametrization.

    - + diff --git a/lib/resource-1.0/doc/Resource-HOWTO.txt b/lib/resource-1.0/doc/Resource-HOWTO.txt index 72d9acbb5..ceac5bc43 100644 --- a/lib/resource-1.0/doc/Resource-HOWTO.txt +++ b/lib/resource-1.0/doc/Resource-HOWTO.txt @@ -30,18 +30,8 @@ The following figure gives the dependencies of these modules. [Lang.png] - -It is advisable to start with a simpler subset of the API, which -leaves out certain complicated but not always necessary things: -tenses and most part of the lexicon. - - -[Test.png] - - - The module structure is rather flat: almost every module is a direct -parent of the top module (``Lang`` or ``Test``). The idea +parent of the top module ``Lang``. The idea is that you can concentrate on one linguistic aspect at a time, or also distribute the work among several authors. @@ -78,8 +68,6 @@ For instance, noun phrases, which are constructed in ``Noun``, are used as arguments of functions of almost all other phrase category modules. How can we build all these modules independently of each other? - - As usual in typeful programming, the //only// thing you need to know about an object you use is its type. When writing a linearization rule for a GF abstract syntax function, the only thing you need to know is @@ -99,19 +87,6 @@ English, for instance, most categories do have this linearization type! -As a slight asymmetry in the module diagrams, you find the following -modules: - -- ``Tense``: defines the parameters of polarity, anteriority, and tense -- ``Tensed``: defines how sentences use those parameters -- ``Untensed``: makes sentences use the polarity parameter only - - -The full resource API (``Lang``) uses ``Tensed``, whereas the -restricted ``Test`` API uses ``Untensed``. - - - ===Lexical modules=== What is lexical and what is syntactic is not as clearcut in GF as in @@ -121,34 +96,22 @@ that the ``lin`` consists of only one token (or of a table whose values are single tokens). Even in the restricted lexicon included in the resource API, the latter rule is sometimes violated in some languages. - - Another characterization of lexical is that lexical units can be added almost //ad libitum//, and they cannot be defined in terms of already given rules. The lexical modules of the resource API are thus more like -samples than complete lists. There are three such modules: +samples than complete lists. There are two such modules: - ``Structural``: structural words (determiners, conjunctions,...) -- ``Basic``: basic everyday content words (nouns, verbs,...) -- ``Lex``: a very small sample of both structural and content words +- ``Lexicon``: basic everyday content words (nouns, verbs,...) The module ``Structural`` aims for completeness, and is likely to -be extended in future releases of the resource. The module ``Basic`` +be extended in future releases of the resource. The module ``Lexicon`` gives a "random" list of words, which enable interesting testing of syntax, and also a check list for morphology, since those words are likely to include most morphological patterns of the language. - - -The module ``Lex`` is used in ``Test`` instead of the two -larger modules. Its purpose is to provide a quick way to test the -syntactic structures of the phrase category modules without having to implement -the larger lexica. - - - -In the case of ``Basic`` it may come out clearer than anywhere else +In the case of ``Lexicon`` it may come out clearer than anywhere else in the API that it is impossible to give exact translation equivalents in different languages on the level of a resource grammar. In other words, application grammars are likely to use the resource in different ways for @@ -215,9 +178,9 @@ of resource v. 1.0. lines in the previous step) - but you uncommenting the first and the last lines will actually do the job for many of the files. -+ Now you can open the grammar ``TestGer`` in GF: ++ Now you can open the grammar ``LangGer`` in GF: ``` - gf TestGer.gf + gf LangGer.gf ``` You will get lots of warnings on missing rules, but the grammar will compile. @@ -228,7 +191,7 @@ of resource v. 1.0. ``` tells you what exactly is missing. -Here is the module structure of ``TestGer``. It has been simplified by leaving out +Here is the module structure of ``LangGer``. It has been simplified by leaving out the majority of the phrase category modules. Each of them has the same dependencies as e.g. ``VerbGer``. @@ -255,7 +218,7 @@ only one. So you will find yourself iterating the following steps: + To be able to test the construction, define some words you need to instantiate it - in ``LexGer``. Again, it can be helpful to define some simple-minded + in ``LexiconGer``. Again, it can be helpful to define some simple-minded morphological paradigms in ``ResGer``, in particular worst-case constructors corresponding to e.g. ``ResEng.mkNoun``. @@ -266,8 +229,8 @@ only one. So you will find yourself iterating the following steps: cc mkNoun "Brief" "Briefe" Masc ``` -+ Uncomment ``NounGer`` and ``LexGer`` in ``TestGer``, - and compile ``TestGer`` in GF. Then test by parsing, linearization, ++ Uncomment ``NounGer`` and ``LexiconGer`` in ``LangGer``, + and compile ``LangGer`` in GF. Then test by parsing, linearization, and random generation. In particular, linearization to a table should be used so that you see all forms produced: ``` @@ -279,30 +242,30 @@ only one. So you will find yourself iterating the following steps: You are likely to run this cycle a few times for each linearization rule -you implement, and some hundreds of times altogether. There are 159 -``funs`` in ``Test`` (at the moment). - - +you implement, and some hundreds of times altogether. There are 66 ``cat``s and +458 ``funs`` in ``Lang`` at the moment; 149 of the ``funs`` are outside the two +lexicon modules). Of course, you don't need to complete one phrase category module before starting with the next one. Actually, a suitable subset of ``Noun``, ``Verb``, and ``Adjective`` will lead to a reasonable coverage very soon, keep you motivated, and reveal errors. - Here is a [live log ../german/log.txt] of the actual process of building the German implementation of resource API v. 1.0. It is the basis of the more detailed explanations, which will follow soon. (You will found out that these explanations involve -a rational reconstruction of the live process!) +a rational reconstruction of the live process! Among other things, the +API was changed during the actual process to make it more intuitive.) ===Resource modules used=== These modules will be written by you. -- ``ResGer``: parameter types and auxiliary operations -- ``MorphoGer``: complete inflection engine; not needed for ``Test``. +- ``ParamGer``: parameter types +- ``ResGer``: auxiliary operations (a resource for the resource grammar!) +- ``MorphoGer``: complete inflection engine These modules are language-independent and provided by the existing resource @@ -389,7 +352,7 @@ the application grammarian may need to use, e.g. ``` These constants are defined in terms of parameter types and constructors in ``ResGer`` and ``MorphoGer``, which modules are are not -accessible to the application grammarian. +visible to the application grammarian. ===Lock fields=== @@ -418,16 +381,12 @@ In this way, the user of a resource grammar cannot confuse adverbs with conjunctions. In other words, the lock fields force the type checker to function as grammaticality checker. - - When the resource grammar is ``open``ed in an application grammar, the lock fields are never seen (except possibly in type error messages), and the application grammarian should never write them herself. If she has to do this, it is a sign that the resource grammar is incomplete, and the proper way to proceed is to fix the resource grammar. - - The resource grammarian has to provide the dummy lock field values in her hidden definitions of constants in ``Paradigms``. For instance, ``` @@ -456,13 +415,46 @@ those who want to build new lexica. -==Inside phrase category modules== +==Inside grammar modules== -===Noun=== +So far we just give links to the implementations of each API. +More explanation iś to follow - but many detail implementation tricks +are only found in the cooments of the modules. -===Verb=== -===Adjective=== +===The category system=== + +- [Cat gfdoc/Cat.html], [CatGer gfdoc/CatGer.html] + + +===Phrase category modules=== + +- [Tense gfdoc/Tense.html], [TenseGer ../german/TenseGer.gf] +- [Noun gfdoc/Noun.html], [NounGer ../german/NounGer.gf] +- [Adjective gfdoc/Adjective.html], [AdjectiveGer ../german/AdjectiveGer.gf] +- [Verb gfdoc/Verb.html], [VerbGer ../german/VerbGer.gf] +- [Adverb gfdoc/Adverb.html], [AdverbGer ../german/AdverbGer.gf] +- [Numeral gfdoc/Numeral.html], [NumeralGer ../german/NumeralGer.gf] +- [Sentence gfdoc/Sentence.html], [SentenceGer ../german/SentenceGer.gf] +- [Question gfdoc/Question.html], [QuestionGer ../german/QuestionGer.gf] +- [Relative gfdoc/Relative.html], [RelativeGer ../german/RelativeGer.gf] +- [Conjunction gfdoc/Conjunction.html], [ConjunctionGer ../german/ConjunctionGer.gf] +- [Phrase gfdoc/Phrase.html], [PhraseGer ../german/PhraseGer.gf] +- [Lang gfdoc/Lang.html], [LangGer ../german/LangGer.gf] + + +===Resource modules=== + +- [ParamGer ../german/ParamGer.gf] +- [ResGer ../german/ResGer.gf] +- [MorphoGer ../german/MorphoGer.gf] +- [ParadigmsGer gfdoc/ParadigmsGer.html], [ParadigmsGer.gf ../german/ParadigmsGer.gf] + + +===Lexicon=== + +- [Structural gfdoc/Structural.html], [StructuralGer ../german/StructuralGer.gf] +- [Lexicon gfdoc/Lexicon.html], [LexiconGer ../german/LexiconGer.gf] ==Lexicon extension== @@ -486,10 +478,10 @@ irregular verbs on the internet. For instance, the page gives a list of verbs in the traditional tabular format, which begins as follows: ``` - backen (du bäckst, er bäckt) backte [buk] gebacken + backen (du bäckst, er bäckt) backte [buk] gebacken befehlen (du befiehlst, er befiehlt; befiehl!) befahl (beföhle; befähle) befohlen - beginnen begann (begönne; begänne) begonnen - beißen biß gebissen + beginnen begann (begönne; begänne) begonnen + beißen biß gebissen ``` All you have to do is to write a suitable verb paradigm ``` @@ -538,7 +530,7 @@ use parametrized modules. The advantages are - practical: maintainability improves with fewer components -In this chapter, we will look at an example: adding Portuguese to +In this chapter, we will look at an example: adding Italian to the Romance family. diff --git a/lib/resource-1.0/doc/gf-resource-lib.html b/lib/resource-1.0/doc/gf-resource-lib.html index 20250e5ac..af9147b74 100644 --- a/lib/resource-1.0/doc/gf-resource-lib.html +++ b/lib/resource-1.0/doc/gf-resource-lib.html @@ -7,7 +7,7 @@

    GF Resource Grammar Library v. 1.0

    Author: Aarne Ranta <aarne (at) cs.chalmers.se>
    -Last update: Fri Jan 20 18:02:22 2006 +Last update: Wed Jan 25 13:40:51 2006

    @@ -43,6 +43,7 @@ The documentation of the individual modules:

    • Cat: the category system +
    • Tense: tense, anteriority, and polarity values
    • Noun: construction of nouns and noun phrases
    • Adjective: construction of adjectival phrases
    • Verb: construction of verb phrases @@ -54,7 +55,7 @@ The documentation of the individual modules:
    • Conjunction: coordination of phrases
    • Phrase: construction of the major units of text and speech
    • Structural: a lexicon of structural words -
    • Basic: a lexicon of other common words, for test purposes +
    • Lexicon: a lexicon of other common words, for test purposes
    • Lang: the main module comprising all the others
    diff --git a/lib/resource-1.0/doc/gf-resource-lib.txt b/lib/resource-1.0/doc/gf-resource-lib.txt index 4d41a0f88..6c2797224 100644 --- a/lib/resource-1.0/doc/gf-resource-lib.txt +++ b/lib/resource-1.0/doc/gf-resource-lib.txt @@ -28,6 +28,7 @@ The following figure gives the dependencies of these modules. The documentation of the individual modules: - [Cat gfdoc/Cat.html]: the category system +- [Tense gfdoc/Tense.html]: tense, anteriority, and polarity values - [Noun gfdoc/Noun.html]: construction of nouns and noun phrases - [Adjective gfdoc/Adjective.html]: construction of adjectival phrases - [Verb gfdoc/Verb.html]: construction of verb phrases @@ -39,7 +40,7 @@ The documentation of the individual modules: - [Conjunction gfdoc/Conjunction.html]: coordination of phrases - [Phrase gfdoc/Phrase.html]: construction of the major units of text and speech - [Structural gfdoc/Structural.html]: a lexicon of structural words -- [Basic gfdoc/Basic.html]: a lexicon of other common words, for test purposes +- [Lexicon gfdoc/Lexicon.html]: a lexicon of other common words, for test purposes - [Lang gfdoc/Lang.html]: the main module comprising all the others diff --git a/lib/resource-1.0/doc/gfdoc/Adjective.html b/lib/resource-1.0/doc/gfdoc/Adjective.html index 0b384776f..31ebf5d61 100644 --- a/lib/resource-1.0/doc/gfdoc/Adjective.html +++ b/lib/resource-1.0/doc/gfdoc/Adjective.html @@ -7,7 +7,7 @@

    Adjectives and adjectival phrases

    Author:
    -Last update: Wed Jan 25 10:50:12 2006 +Last update: Wed Jan 25 13:41:12 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Adverb.html b/lib/resource-1.0/doc/gfdoc/Adverb.html index dc190c656..f44b024e5 100644 --- a/lib/resource-1.0/doc/gfdoc/Adverb.html +++ b/lib/resource-1.0/doc/gfdoc/Adverb.html @@ -7,7 +7,7 @@

    Adverbs and adverbial phrases

    Author:
    -Last update: Wed Jan 25 10:50:12 2006 +Last update: Wed Jan 25 13:41:13 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Cat.html b/lib/resource-1.0/doc/gfdoc/Cat.html index 3822534c4..18ba3bca9 100644 --- a/lib/resource-1.0/doc/gfdoc/Cat.html +++ b/lib/resource-1.0/doc/gfdoc/Cat.html @@ -7,7 +7,7 @@

    The category system

    Author:
    -Last update: Wed Jan 25 10:50:12 2006 +Last update: Wed Jan 25 13:41:13 2006

    @@ -17,17 +17,16 @@ Last update: Wed Jan 25 10:50:12 2006
  • The category system @@ -42,7 +41,7 @@ gfdoc - a rudimentary GF document generator.

    The category system

    -    abstract Cat = {
    +    abstract Cat = Tense ** {
         
           cat
     
    @@ -60,30 +59,21 @@ Constructed in Phrase.
  • -

    Tensed sentences

    +

    Sentences and clauses

    -Constructed in Tensed. -A simplified variant, with just present forms, is Untensed. +Constructed in Sentence.

             S ;     -- declarative sentence                e.g. "she lived here"
             QS ;    -- question                            e.g. "where did she live"
             RS ;    -- relative                            e.g. "in which she lived"
    -
    -

    - -

    Clauses

    -

    -Constructed in Sentence. -

    -
             Cl ;    -- declarative clause, with all tenses e.g. "she looks at this"
             Slash ; -- clause missing NP (S/NP in GPSG)    e.g. "she looks at"
             Imp ;   -- imperative                          e.g. "look at this"
             SC ;    -- embedded sentence or question       e.g. "that it rains"
     

    - +

    Questions and interrogatives

    Constructed in Question. @@ -95,7 +85,7 @@ Constructed in Question. IDet ; -- interrogative determiner e.g. "which"

    - +

    Relative clauses and pronouns

    Constructed in Relative. @@ -105,7 +95,7 @@ Constructed in Relative. RP ; -- relative pronoun e.g. "in which"

    - +

    Verb phrases

    Constructed in Verb. @@ -115,7 +105,7 @@ Constructed in Verb. Comp ; -- complement of copula, such as AP e.g. "very warm"

    - +

    Adjectival phrases

    Constructed in Adjective. @@ -124,7 +114,7 @@ Constructed in Adjective. AP ; -- adjectival phrase e.g. "very warm"

    - +

    Nouns and noun phrases

    Constructed in Noun. @@ -150,7 +140,7 @@ as defined in Noun. Ord ; -- ordinal number (used in Det) e.g. "seventh"

    - +

    Adverbs

    Constructed in Adverb. @@ -163,7 +153,7 @@ Many adverbs are constructed in Structural. AdN ; -- numeral-modifying adverb, e.g. "more than"

    - +

    Numerals

    Constructed in Numeral. @@ -172,7 +162,7 @@ Constructed in Numeral. Numeral;-- cardinal or ordinal, e.g. "five/fifth"

    - +

    Structural words

    Constructed in Structural. @@ -186,10 +176,10 @@ Constructed in Structural. Prep ; -- preposition, or just case e.g. "in"

    - +

    Words of open classes

    -These are constructed in Basic and in additional lexicon modules. +These are constructed in Lexicon and in additional lexicon modules.

             V ;     -- one-place verb                      e.g. "sleep" 
    diff --git a/lib/resource-1.0/doc/gfdoc/Conjunction.html b/lib/resource-1.0/doc/gfdoc/Conjunction.html
    index 86d17d538..4dc284342 100644
    --- a/lib/resource-1.0/doc/gfdoc/Conjunction.html
    +++ b/lib/resource-1.0/doc/gfdoc/Conjunction.html
    @@ -7,7 +7,7 @@
     

    Coordination

    Author:
    -Last update: Wed Jan 25 10:50:13 2006 +Last update: Wed Jan 25 13:41:13 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Lang.html b/lib/resource-1.0/doc/gfdoc/Lang.html index 861454dc7..41dc0152e 100644 --- a/lib/resource-1.0/doc/gfdoc/Lang.html +++ b/lib/resource-1.0/doc/gfdoc/Lang.html @@ -7,7 +7,7 @@

    The Main Module of the Resource Grammar

    Author:
    -Last update: Wed Jan 25 10:50:13 2006 +Last update: Wed Jan 25 13:41:13 2006

    @@ -44,9 +44,8 @@ grammar. A smaller top module is Test. Relative, Conjunction, Phrase, - Tensed, Structural, - Basic + Lexicon ** {} ;

    diff --git a/lib/resource-1.0/doc/gfdoc/Math.html b/lib/resource-1.0/doc/gfdoc/Math.html index 5cfbbcfd0..76e519de2 100644 --- a/lib/resource-1.0/doc/gfdoc/Math.html +++ b/lib/resource-1.0/doc/gfdoc/Math.html @@ -7,7 +7,7 @@

    Symbolic expressions

    Author:
    -Last update: Wed Jan 25 10:50:13 2006 +Last update: Wed Jan 25 13:41:13 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Noun.html b/lib/resource-1.0/doc/gfdoc/Noun.html index c62d998da..ae27d0606 100644 --- a/lib/resource-1.0/doc/gfdoc/Noun.html +++ b/lib/resource-1.0/doc/gfdoc/Noun.html @@ -7,7 +7,7 @@

    The construction of nouns, noun phrases, and determiners

    Author:
    -Last update: Wed Jan 25 10:50:13 2006 +Last update: Wed Jan 25 13:41:13 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Numeral.html b/lib/resource-1.0/doc/gfdoc/Numeral.html index caa162e2b..f54aea07d 100644 --- a/lib/resource-1.0/doc/gfdoc/Numeral.html +++ b/lib/resource-1.0/doc/gfdoc/Numeral.html @@ -7,7 +7,7 @@

    Numerals

    Author:
    -Last update: Wed Jan 25 10:50:13 2006 +Last update: Wed Jan 25 13:41:14 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/ParadigmsEng.html b/lib/resource-1.0/doc/gfdoc/ParadigmsEng.html index 7c2388852..6953b1787 100644 --- a/lib/resource-1.0/doc/gfdoc/ParadigmsEng.html +++ b/lib/resource-1.0/doc/gfdoc/ParadigmsEng.html @@ -43,7 +43,7 @@

    Author: -Last update: Wed Jan 25 10:50:14 2006 +Last update: Wed Jan 25 13:41:15 2006

    Produced by diff --git a/lib/resource-1.0/doc/gfdoc/ParadigmsFre.html b/lib/resource-1.0/doc/gfdoc/ParadigmsFre.html index 35e3deef0..f65d37912 100644 --- a/lib/resource-1.0/doc/gfdoc/ParadigmsFre.html +++ b/lib/resource-1.0/doc/gfdoc/ParadigmsFre.html @@ -41,7 +41,7 @@

    Author: -Last update: Wed Jan 25 10:50:15 2006 +Last update: Wed Jan 25 13:41:15 2006

    Produced by diff --git a/lib/resource-1.0/doc/gfdoc/ParadigmsGer.html b/lib/resource-1.0/doc/gfdoc/ParadigmsGer.html index e43582fa4..40ddaea4e 100644 --- a/lib/resource-1.0/doc/gfdoc/ParadigmsGer.html +++ b/lib/resource-1.0/doc/gfdoc/ParadigmsGer.html @@ -35,7 +35,7 @@

    Author: -Last update: Wed Jan 25 10:50:15 2006 +Last update: Wed Jan 25 13:41:15 2006

    Produced by diff --git a/lib/resource-1.0/doc/gfdoc/ParadigmsSwe.html b/lib/resource-1.0/doc/gfdoc/ParadigmsSwe.html index bade162d0..1eb2afd2c 100644 --- a/lib/resource-1.0/doc/gfdoc/ParadigmsSwe.html +++ b/lib/resource-1.0/doc/gfdoc/ParadigmsSwe.html @@ -43,7 +43,7 @@

    Author: -Last update: Wed Jan 25 10:50:15 2006 +Last update: Wed Jan 25 13:41:15 2006

    Produced by diff --git a/lib/resource-1.0/doc/gfdoc/Phrase.html b/lib/resource-1.0/doc/gfdoc/Phrase.html index 26ccab4b1..d94a2fa95 100644 --- a/lib/resource-1.0/doc/gfdoc/Phrase.html +++ b/lib/resource-1.0/doc/gfdoc/Phrase.html @@ -7,7 +7,7 @@

    Phrases and utterances

    Author:
    -Last update: Wed Jan 25 10:50:13 2006 +Last update: Wed Jan 25 13:41:14 2006

    @@ -28,7 +28,7 @@ gfdoc - a rudimentary GF document generator.

    Phrases and utterances

    -    abstract Phrase = Cat, Tense ** {
    +    abstract Phrase = Cat ** {
     

    diff --git a/lib/resource-1.0/doc/gfdoc/Question.html b/lib/resource-1.0/doc/gfdoc/Question.html index ca04583cb..9e58b68d5 100644 --- a/lib/resource-1.0/doc/gfdoc/Question.html +++ b/lib/resource-1.0/doc/gfdoc/Question.html @@ -7,7 +7,7 @@

    Questions and interrogative pronouns

    Author:
    -Last update: Wed Jan 25 10:50:13 2006 +Last update: Wed Jan 25 13:41:14 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Relative.html b/lib/resource-1.0/doc/gfdoc/Relative.html index 1b4ff5bef..7d1661b81 100644 --- a/lib/resource-1.0/doc/gfdoc/Relative.html +++ b/lib/resource-1.0/doc/gfdoc/Relative.html @@ -7,7 +7,7 @@

    Relative clauses and pronouns

    Author:
    -Last update: Wed Jan 25 10:50:14 2006 +Last update: Wed Jan 25 13:41:14 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Sentence.html b/lib/resource-1.0/doc/gfdoc/Sentence.html index 4259d7796..01c221788 100644 --- a/lib/resource-1.0/doc/gfdoc/Sentence.html +++ b/lib/resource-1.0/doc/gfdoc/Sentence.html @@ -2,24 +2,25 @@ - Clauses, imperatives, and sentential complements + Sentences, clauses, imperatives, and sentential complements -

    Clauses, imperatives, and sentential complements

    +

    Sentences, clauses, imperatives, and sentential complements

    Author:
    -Last update: Wed Jan 25 10:50:14 2006 +Last update: Wed Jan 25 13:41:14 2006


    @@ -32,7 +33,7 @@ gfdoc - a rudimentary GF document generator. (c) Aarne Ranta (aarne@cs.chalmers.se) 2002 under GNU GPL.

    -

    Clauses, imperatives, and sentential complements

    +

    Sentences, clauses, imperatives, and sentential complements

         abstract Sentence = Cat ** {
     
    @@ -97,10 +98,45 @@ subjects and (adverbial) complements. EmbedS : S -> SC ; -- that you go EmbedQS : QS -> SC ; -- whether you go EmbedVP : VP -> SC ; -- to go + +

    + +

    Sentences

    +

    +These are the 2 x 4 x 4 = 16 forms generated by different +combinations of tense, polarity, and +anteriority, which are defined in Tense. +

    +
    +      fun
    +        UseCl  : Tense -> Ant -> Pol -> Cl  -> S ;
    +        UseQCl : Tense -> Ant -> Pol -> QCl -> QS ;
    +        UseRCl : Tense -> Ant -> Pol -> RCl -> RS ;
         
         }
     

    +

    +Examples for English S/Cl: +

    +

    +Pres Simul Pos ODir : he sleeps +Pres Simul Neg ODir : he doesn't sleep +Pres Anter Pos ODir : he has slept +Pres Anter Neg ODir : he hasn't slept +Past Simul Pos ODir : he slept +Past Simul Neg ODir : he didn't sleep +Past Anter Pos ODir : he had slept +Past Anter Neg ODir : he hadn't slept +Fut Simul Pos ODir : he will sleep +Fut Simul Neg ODir : he won't sleep +Fut Anter Pos ODir : he will have slept +Fut Anter Neg ODir : he won't have slept +Cond Simul Pos ODir : he would sleep +Cond Simul Neg ODir : he wouldn't sleep +Cond Anter Pos ODir : he would have slept +Cond Anter Neg ODir : he wouldn't have slept +

    diff --git a/lib/resource-1.0/doc/gfdoc/Structural.html b/lib/resource-1.0/doc/gfdoc/Structural.html index 8f6fbe249..2b821b492 100644 --- a/lib/resource-1.0/doc/gfdoc/Structural.html +++ b/lib/resource-1.0/doc/gfdoc/Structural.html @@ -7,7 +7,7 @@

    GF Resource Grammar API for Structural Words

    Author:
    -Last update: Wed Jan 25 10:50:14 2006 +Last update: Wed Jan 25 13:41:14 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Tense.html b/lib/resource-1.0/doc/gfdoc/Tense.html index 557d347a1..61c2438c7 100644 --- a/lib/resource-1.0/doc/gfdoc/Tense.html +++ b/lib/resource-1.0/doc/gfdoc/Tense.html @@ -7,7 +7,7 @@

    Tense, Polarity, and Anteriority

    Author:
    -Last update: Wed Jan 25 10:50:14 2006 +Last update: Wed Jan 25 13:41:14 2006

    diff --git a/lib/resource-1.0/doc/gfdoc/Verb.html b/lib/resource-1.0/doc/gfdoc/Verb.html index a5cb77da9..a8d16205c 100644 --- a/lib/resource-1.0/doc/gfdoc/Verb.html +++ b/lib/resource-1.0/doc/gfdoc/Verb.html @@ -7,7 +7,7 @@

    The construction of verb phrases

    Author:
    -Last update: Wed Jan 25 10:50:14 2006 +Last update: Wed Jan 25 13:41:15 2006

    diff --git a/lib/resource-1.0/english/CatEng.gf b/lib/resource-1.0/english/CatEng.gf index 52c4c4c77..8b9359eda 100644 --- a/lib/resource-1.0/english/CatEng.gf +++ b/lib/resource-1.0/english/CatEng.gf @@ -1,4 +1,4 @@ -concrete CatEng of Cat = open ResEng, Prelude in { +concrete CatEng of Cat = TenseX ** open ResEng, Prelude in { flags optimize=all_subs ; @@ -69,7 +69,7 @@ concrete CatEng of Cat = open ResEng, Prelude in { Subj = {s : Str} ; Prep = {s : Str} ; --- Open lexical classes, e.g. Basic +-- Open lexical classes, e.g. Lexicon V, VS, VQ, VA = Verb ; -- = {s : VForm => Str} ; V2, VV, V2A = Verb ** {c2 : Str} ; diff --git a/lib/resource-1.0/english/LangEng.gf b/lib/resource-1.0/english/LangEng.gf index 19341e29f..944fcdb20 100644 --- a/lib/resource-1.0/english/LangEng.gf +++ b/lib/resource-1.0/english/LangEng.gf @@ -11,9 +11,8 @@ concrete LangEng of Lang = RelativeEng, ConjunctionEng, PhraseEng, - TensedEng, StructuralEng, - BasicEng + LexiconEng ** { flags startcat = Phr ; diff --git a/lib/resource-1.0/english/BasicEng.gf b/lib/resource-1.0/english/LexiconEng.gf similarity index 99% rename from lib/resource-1.0/english/BasicEng.gf rename to lib/resource-1.0/english/LexiconEng.gf index deb15beb6..4826dd5bb 100644 --- a/lib/resource-1.0/english/BasicEng.gf +++ b/lib/resource-1.0/english/LexiconEng.gf @@ -1,6 +1,6 @@ --# -path=.:prelude -concrete BasicEng of Basic = CatEng ** open ParadigmsEng in { +concrete LexiconEng of Lexicon = CatEng ** open ParadigmsEng in { flags optimize=values ; diff --git a/lib/resource-1.0/english/PhraseEng.gf b/lib/resource-1.0/english/PhraseEng.gf index c2c6a1310..328ac5949 100644 --- a/lib/resource-1.0/english/PhraseEng.gf +++ b/lib/resource-1.0/english/PhraseEng.gf @@ -1,4 +1,4 @@ -concrete PhraseEng of Phrase = CatEng, TenseX ** open ResEng in { +concrete PhraseEng of Phrase = CatEng ** open ResEng in { lin PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; diff --git a/lib/resource-1.0/english/SentenceEng.gf b/lib/resource-1.0/english/SentenceEng.gf index 02716c771..6b3ac5ac7 100644 --- a/lib/resource-1.0/english/SentenceEng.gf +++ b/lib/resource-1.0/english/SentenceEng.gf @@ -3,6 +3,7 @@ concrete SentenceEng of Sentence = CatEng ** open ResEng in { flags optimize=all_subs ; lin + PredVP np vp = mkClause (np.s ! Nom) np.a vp ; PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ; @@ -38,4 +39,8 @@ concrete SentenceEng of Sentence = CatEng ** open ResEng in { EmbedQS qs = {s = qs.s ! QIndir} ; EmbedVP vp = {s = "to" ++ infVP vp (agrP3 Sg)} ; --- agr + UseCl t a p cl = {s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! ODir} ; + UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; + UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ; + } diff --git a/lib/resource-1.0/french/CatFre.gf b/lib/resource-1.0/french/CatFre.gf index cfdda5880..2fc986b95 100644 --- a/lib/resource-1.0/french/CatFre.gf +++ b/lib/resource-1.0/french/CatFre.gf @@ -1,4 +1,4 @@ --# -path=.:../romance:../abstract:../common:prelude -concrete CatFre of Cat = CatRomance with +concrete CatFre of Cat = TenseX ** CatRomance with (ResRomance = ResFre) ; diff --git a/lib/resource-1.0/french/VerbsFre.gf b/lib/resource-1.0/french/IrregFre.gf similarity index 99% rename from lib/resource-1.0/french/VerbsFre.gf rename to lib/resource-1.0/french/IrregFre.gf index db75815c0..f4d9cb042 100644 --- a/lib/resource-1.0/french/VerbsFre.gf +++ b/lib/resource-1.0/french/IrregFre.gf @@ -4,7 +4,7 @@ -- Translated to GF by Aarne Ranta -- added extracted subcat information 29/11 -concrete VerbsFre of VerbsFreAbs = CatFre ** +concrete IrregFre of IrregFreAbs = CatFre ** open DiffFre, MorphoFre, BeschFre, Prelude in { flags optimize=values ; diff --git a/lib/resource-1.0/french/VerbsFreAbs.gf b/lib/resource-1.0/french/IrregFreAbs.gf similarity index 99% rename from lib/resource-1.0/french/VerbsFreAbs.gf rename to lib/resource-1.0/french/IrregFreAbs.gf index 8bf242854..f82d7c0a0 100644 --- a/lib/resource-1.0/french/VerbsFreAbs.gf +++ b/lib/resource-1.0/french/IrregFreAbs.gf @@ -4,7 +4,7 @@ -- Translated to GF by Aarne Ranta -- added extracted subcat information 29/11 -abstract VerbsFreAbs = Cat ** { +abstract IrregFreAbs = Cat ** { -- all verbs in classes with "er" and "ir" like "finir" are omitted diff --git a/lib/resource-1.0/french/LangFre.gf b/lib/resource-1.0/french/LangFre.gf index ebe21a9a6..c1a57d54f 100644 --- a/lib/resource-1.0/french/LangFre.gf +++ b/lib/resource-1.0/french/LangFre.gf @@ -11,9 +11,8 @@ concrete LangFre of Lang = RelativeFre, ConjunctionFre, PhraseFre, - TensedFre, StructuralFre, - BasicFre + LexiconFre ** { flags startcat = Phr ; diff --git a/lib/resource-1.0/french/BasicFre.gf b/lib/resource-1.0/french/LexiconFre.gf similarity index 99% rename from lib/resource-1.0/french/BasicFre.gf rename to lib/resource-1.0/french/LexiconFre.gf index ab53682ab..05ae4dff0 100644 --- a/lib/resource-1.0/french/BasicFre.gf +++ b/lib/resource-1.0/french/LexiconFre.gf @@ -1,6 +1,6 @@ --# -path=.:../romance:../common:../abstract:../../prelude -concrete BasicFre of Basic = CatFre ** open ParadigmsFre, VerbsFre in { +concrete LexiconFre of Lexicon = CatFre ** open ParadigmsFre, IrregFre in { flags optimize=values ; diff --git a/lib/resource-1.0/french/PhraseFre.gf b/lib/resource-1.0/french/PhraseFre.gf index 02d62ac5f..defc9fa14 100644 --- a/lib/resource-1.0/french/PhraseFre.gf +++ b/lib/resource-1.0/french/PhraseFre.gf @@ -1,2 +1,2 @@ -concrete PhraseFre of Phrase = CatFre, TenseX ** PhraseRomance with +concrete PhraseFre of Phrase = CatFre ** PhraseRomance with (ResRomance = ResFre) ; diff --git a/lib/resource-1.0/french/StructuralFre.gf b/lib/resource-1.0/french/StructuralFre.gf index 6a57e7a55..9277359b5 100644 --- a/lib/resource-1.0/french/StructuralFre.gf +++ b/lib/resource-1.0/french/StructuralFre.gf @@ -1,5 +1,5 @@ concrete StructuralFre of Structural = CatFre ** - open PhonoFre, MorphoFre, ParadigmsFre, VerbsFre, Prelude in { + open PhonoFre, MorphoFre, ParadigmsFre, IrregFre, Prelude in { flags optimize=all ; diff --git a/lib/resource-1.0/french/TensedFre.gf b/lib/resource-1.0/french/TensedFre.gf deleted file mode 100644 index 642a6bea7..000000000 --- a/lib/resource-1.0/french/TensedFre.gf +++ /dev/null @@ -1,2 +0,0 @@ -concrete TensedFre of Tensed = CatFre, TenseX ** TensedRomance with - (ResRomance = ResFre) ; diff --git a/lib/resource-1.0/german/CatGer.gf b/lib/resource-1.0/german/CatGer.gf index 0f4654f86..b3850a323 100644 --- a/lib/resource-1.0/german/CatGer.gf +++ b/lib/resource-1.0/german/CatGer.gf @@ -1,4 +1,4 @@ -concrete CatGer of Cat = open ResGer, Prelude in { +concrete CatGer of Cat = TenseX ** open ResGer, Prelude in { flags optimize=all_subs ; @@ -71,7 +71,7 @@ concrete CatGer of Cat = open ResGer, Prelude in { Subj = {s : Str} ; Prep = {s : Str ; c : Case} ; --- Open lexical classes, e.g. Basic +-- Open lexical classes, e.g. Lexicon V, VS, VQ, VA = ResGer.Verb ; -- = {s : VForm => Str} ; VV = Verb ** {isAux : Bool} ; diff --git a/lib/resource-1.0/german/LangGer.gf b/lib/resource-1.0/german/LangGer.gf index ef10e4a1a..e1632f878 100644 --- a/lib/resource-1.0/german/LangGer.gf +++ b/lib/resource-1.0/german/LangGer.gf @@ -11,9 +11,8 @@ concrete LangGer of Lang = RelativeGer, ConjunctionGer, PhraseGer, - TensedGer, StructuralGer, - BasicGer + LexiconGer ** { flags startcat = Phr ; diff --git a/lib/resource-1.0/german/BasicGer.gf b/lib/resource-1.0/german/LexiconGer.gf similarity index 99% rename from lib/resource-1.0/german/BasicGer.gf rename to lib/resource-1.0/german/LexiconGer.gf index e55fb0efe..b0e4aa2a4 100644 --- a/lib/resource-1.0/german/BasicGer.gf +++ b/lib/resource-1.0/german/LexiconGer.gf @@ -1,6 +1,6 @@ --# -path=.:../common:../abstract:../../prelude -concrete BasicGer of Basic = CatGer ** open Prelude, ParadigmsGer in { +concrete LexiconGer of Lexicon = CatGer ** open Prelude, ParadigmsGer in { flags optimize=all_subs ; diff --git a/lib/resource-1.0/german/PhraseGer.gf b/lib/resource-1.0/german/PhraseGer.gf index d323ef5f7..652c070dd 100644 --- a/lib/resource-1.0/german/PhraseGer.gf +++ b/lib/resource-1.0/german/PhraseGer.gf @@ -1,4 +1,4 @@ -concrete PhraseGer of Phrase = CatGer, TenseX ** open Prelude, ResGer in { +concrete PhraseGer of Phrase = CatGer ** open Prelude, ResGer in { flags optimize=all_subs ; diff --git a/lib/resource-1.0/german/SentenceGer.gf b/lib/resource-1.0/german/SentenceGer.gf index 6c7b7ceb7..f3b4b9b0f 100644 --- a/lib/resource-1.0/german/SentenceGer.gf +++ b/lib/resource-1.0/german/SentenceGer.gf @@ -37,4 +37,8 @@ concrete SentenceGer of Sentence = CatGer ** open ResGer in { EmbedQS qs = {s = qs.s ! QIndir} ; EmbedVP vp = {s = "zu" ++ (vp.s ! agrP3 Sg ! VPInfinit Simul).inf} ; --- agr ---- compl + UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ; + UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; + UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ; + } diff --git a/lib/resource-1.0/multimodal/Multimodal.gf b/lib/resource-1.0/multimodal/Multimodal.gf index 7d3df68d5..028d27eab 100644 --- a/lib/resource-1.0/multimodal/Multimodal.gf +++ b/lib/resource-1.0/multimodal/Multimodal.gf @@ -12,5 +12,5 @@ abstract Multimodal = -- Tensed, Structural, Demonstrative, - Basic + Lexicon ** {} ; diff --git a/lib/resource-1.0/multimodal/MultimodalEng.gf b/lib/resource-1.0/multimodal/MultimodalEng.gf index 81daed3f8..cd09033fa 100644 --- a/lib/resource-1.0/multimodal/MultimodalEng.gf +++ b/lib/resource-1.0/multimodal/MultimodalEng.gf @@ -14,6 +14,6 @@ concrete MultimodalEng of Multimodal = -- Tensed, StructuralEng, DemonstrativeEng, - BasicEng + LexiconEng ** {} ; diff --git a/lib/resource-1.0/multimodal/MultimodalFre.gf b/lib/resource-1.0/multimodal/MultimodalFre.gf index 08e213d46..b3683e35f 100644 --- a/lib/resource-1.0/multimodal/MultimodalFre.gf +++ b/lib/resource-1.0/multimodal/MultimodalFre.gf @@ -14,6 +14,6 @@ concrete MultimodalFre of Multimodal = -- Tensed, StructuralFre, DemonstrativeFre, - BasicFre + LexiconFre ** {} ; diff --git a/lib/resource-1.0/multimodal/MultimodalGer.gf b/lib/resource-1.0/multimodal/MultimodalGer.gf index 138b9b2c3..7788e213c 100644 --- a/lib/resource-1.0/multimodal/MultimodalGer.gf +++ b/lib/resource-1.0/multimodal/MultimodalGer.gf @@ -14,5 +14,5 @@ concrete MultimodalGer of Multimodal = -- Tensed, StructuralGer, DemonstrativeGer, - BasicGer + LexiconGer ** {} ; diff --git a/lib/resource-1.0/multimodal/MultimodalSwe.gf b/lib/resource-1.0/multimodal/MultimodalSwe.gf index 4d153d7d4..fc9cd6a84 100644 --- a/lib/resource-1.0/multimodal/MultimodalSwe.gf +++ b/lib/resource-1.0/multimodal/MultimodalSwe.gf @@ -14,6 +14,6 @@ concrete MultimodalSwe of Multimodal = -- Tensed, StructuralSwe, DemonstrativeSwe, - BasicSwe + LexiconSwe ** {} ; diff --git a/lib/resource-1.0/old/Lex.gf b/lib/resource-1.0/old/Lex.gf index ed246af9e..1f2cc7247 100644 --- a/lib/resource-1.0/old/Lex.gf +++ b/lib/resource-1.0/old/Lex.gf @@ -2,7 +2,7 @@ -- This lexicon is used when developing a grammar, and called by -- [Test Test.html]. The full lexicon is divided between --- [Structural Structural.html], [Basic Basic.html], and [Numeral Numeral.html]. +-- [Structural Structural.html], [Lexicon Lexicon.html], and [Numeral Numeral.html]. abstract Lex = Cat ** { diff --git a/lib/resource-1.0/abstract/Tensed.gf b/lib/resource-1.0/old/Tensed.gf similarity index 97% rename from lib/resource-1.0/abstract/Tensed.gf rename to lib/resource-1.0/old/Tensed.gf index d16f4c1c5..8016f7c1a 100644 --- a/lib/resource-1.0/abstract/Tensed.gf +++ b/lib/resource-1.0/old/Tensed.gf @@ -6,7 +6,7 @@ -- A variant with just the polarity variation is given in -- [Untensed Untensed.html]. -abstract Tensed = Cat, Tense ** { +abstract Tensed = Cat ** { fun UseCl : Tense -> Ant -> Pol -> Cl -> S ; diff --git a/lib/resource-1.0/english/TensedEng.gf b/lib/resource-1.0/old/TensedEng.gf similarity index 81% rename from lib/resource-1.0/english/TensedEng.gf rename to lib/resource-1.0/old/TensedEng.gf index 1019ff824..9e3c2c76e 100644 --- a/lib/resource-1.0/english/TensedEng.gf +++ b/lib/resource-1.0/old/TensedEng.gf @@ -1,4 +1,4 @@ -concrete TensedEng of Tensed = CatEng, TenseX ** open ResEng in { +concrete TensedEng of Tensed = CatEng ** open ResEng in { flags optimize=all_subs ; diff --git a/lib/resource-1.0/old/TensedFre.gf b/lib/resource-1.0/old/TensedFre.gf new file mode 100644 index 000000000..f3e58bb50 --- /dev/null +++ b/lib/resource-1.0/old/TensedFre.gf @@ -0,0 +1,2 @@ +concrete TensedFre of Tensed = CatFre ** TensedRomance with + (ResRomance = ResFre) ; diff --git a/lib/resource-1.0/german/TensedGer.gf b/lib/resource-1.0/old/TensedGer.gf similarity index 100% rename from lib/resource-1.0/german/TensedGer.gf rename to lib/resource-1.0/old/TensedGer.gf diff --git a/lib/resource-1.0/romance/TensedRomance.gf b/lib/resource-1.0/old/TensedRomance.gf similarity index 82% rename from lib/resource-1.0/romance/TensedRomance.gf rename to lib/resource-1.0/old/TensedRomance.gf index b12025892..90974ab55 100644 --- a/lib/resource-1.0/romance/TensedRomance.gf +++ b/lib/resource-1.0/old/TensedRomance.gf @@ -1,4 +1,4 @@ -incomplete concrete TensedRomance of Tensed = CatRomance, TenseX ** +incomplete concrete TensedRomance of Tensed = CatRomance ** open ResRomance in { flags optimize=all_subs ; diff --git a/lib/resource-1.0/scandinavian/TensedScand.gf b/lib/resource-1.0/old/TensedScand.gf similarity index 100% rename from lib/resource-1.0/scandinavian/TensedScand.gf rename to lib/resource-1.0/old/TensedScand.gf diff --git a/lib/resource-1.0/swedish/TensedSwe.gf b/lib/resource-1.0/old/TensedSwe.gf similarity index 100% rename from lib/resource-1.0/swedish/TensedSwe.gf rename to lib/resource-1.0/old/TensedSwe.gf diff --git a/lib/resource-1.0/old/Test.gf b/lib/resource-1.0/old/Test.gf index 25717ed49..8a328d740 100644 --- a/lib/resource-1.0/old/Test.gf +++ b/lib/resource-1.0/old/Test.gf @@ -20,7 +20,7 @@ abstract Test = Untensed, -- Tensed, -- Structural, - -- Basic, + -- Lexicon, -- Numeral, Lex ** {} ; diff --git a/lib/resource-1.0/romance/CatRomance.gf b/lib/resource-1.0/romance/CatRomance.gf index f231dc222..d83f3fd8a 100644 --- a/lib/resource-1.0/romance/CatRomance.gf +++ b/lib/resource-1.0/romance/CatRomance.gf @@ -1,5 +1,5 @@ incomplete concrete CatRomance of Cat = - open Prelude, CommonRomance, ResRomance, (R = ParamX) in { + TenseX ** open Prelude, CommonRomance, ResRomance, (R = ParamX) in { flags optimize=all_subs ; @@ -71,7 +71,7 @@ incomplete concrete CatRomance of Cat = Subj = {s : Str ; m : Mood} ; Prep = {s : Str ; c : Case} ; --- Open lexical classes, e.g. Basic +-- Open lexical classes, e.g. Lexicon V, VQ, VA = Verb ; V2, VV, V2A = Verb ** {c2 : Compl} ; diff --git a/lib/resource-1.0/romance/PhraseRomance.gf b/lib/resource-1.0/romance/PhraseRomance.gf index 78df4ae9b..fb4ef0e2d 100644 --- a/lib/resource-1.0/romance/PhraseRomance.gf +++ b/lib/resource-1.0/romance/PhraseRomance.gf @@ -1,5 +1,5 @@ incomplete concrete PhraseRomance of Phrase = - CatRomance, TenseX ** open CommonRomance, ResRomance, Prelude in { + CatRomance ** open CommonRomance, ResRomance, Prelude in { lin PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; diff --git a/lib/resource-1.0/romance/SentenceRomance.gf b/lib/resource-1.0/romance/SentenceRomance.gf index 00e05e36c..332156e90 100644 --- a/lib/resource-1.0/romance/SentenceRomance.gf +++ b/lib/resource-1.0/romance/SentenceRomance.gf @@ -40,4 +40,9 @@ incomplete concrete SentenceRomance of Sentence = EmbedQS qs = {s = qs.s ! QIndir} ; EmbedVP vp = {s = infVP vp (agrP3 Masc Sg)} ; --- agr ---- compl + UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ; + UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; + UseRCl t a p cl = + {s = \\r,ag => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r ! ag} ; + } diff --git a/lib/resource-1.0/scandinavian/CatScand.gf b/lib/resource-1.0/scandinavian/CatScand.gf index 93ee17801..226327ed7 100644 --- a/lib/resource-1.0/scandinavian/CatScand.gf +++ b/lib/resource-1.0/scandinavian/CatScand.gf @@ -1,5 +1,5 @@ incomplete concrete CatScand of Cat = - open ResScand, Prelude, CommonScand, (R = ParamX) in { + TenseX ** open ResScand, Prelude, CommonScand, (R = ParamX) in { flags optimize=all_subs ; @@ -87,7 +87,7 @@ incomplete concrete CatScand of Cat = Subj = {s : Str} ; Prep = {s : Str} ; --- Open lexical classes, e.g. Basic +-- Open lexical classes, e.g. Lexicon V, VS, VQ, VA = Verb ; V2, VV, V2A = Verb ** {c2 : Str} ; diff --git a/lib/resource-1.0/scandinavian/PhraseScand.gf b/lib/resource-1.0/scandinavian/PhraseScand.gf index 5aa702491..ee867970e 100644 --- a/lib/resource-1.0/scandinavian/PhraseScand.gf +++ b/lib/resource-1.0/scandinavian/PhraseScand.gf @@ -1,5 +1,5 @@ incomplete concrete PhraseScand of Phrase = - CatScand, TenseX ** open CommonScand, ResScand, Prelude in { + CatScand ** open CommonScand, ResScand, Prelude in { lin PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ; diff --git a/lib/resource-1.0/scandinavian/SentenceScand.gf b/lib/resource-1.0/scandinavian/SentenceScand.gf index 9cd762344..5e24f8198 100644 --- a/lib/resource-1.0/scandinavian/SentenceScand.gf +++ b/lib/resource-1.0/scandinavian/SentenceScand.gf @@ -40,4 +40,8 @@ incomplete concrete SentenceScand of Sentence = EmbedQS qs = {s = qs.s ! QIndir} ; EmbedVP vp = {s = infMark ++ infVP vp (agrP3 utrum Sg)} ; --- agr + UseCl t a p cl = {s = \\o => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! o} ; + UseQCl t a p cl = {s = \\q => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! q} ; + UseRCl t a p cl = {s = \\r => t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! r} ; + } diff --git a/lib/resource-1.0/swedish/CatSwe.gf b/lib/resource-1.0/swedish/CatSwe.gf index 51b5e4a4f..fe484ff6b 100644 --- a/lib/resource-1.0/swedish/CatSwe.gf +++ b/lib/resource-1.0/swedish/CatSwe.gf @@ -1,2 +1,2 @@ -concrete CatSwe of Cat = CatScand with +concrete CatSwe of Cat = TenseX ** CatScand with (ResScand = ResSwe) ; diff --git a/lib/resource-1.0/swedish/LangSwe.gf b/lib/resource-1.0/swedish/LangSwe.gf index 3c1690552..e0d655ac0 100644 --- a/lib/resource-1.0/swedish/LangSwe.gf +++ b/lib/resource-1.0/swedish/LangSwe.gf @@ -11,9 +11,8 @@ concrete LangSwe of Lang = RelativeSwe, ConjunctionSwe, PhraseSwe, - TensedSwe, StructuralSwe, - BasicSwe + LexiconSwe ** { flags startcat = Phr ; diff --git a/lib/resource-1.0/swedish/BasicSwe.gf b/lib/resource-1.0/swedish/LexiconSwe.gf similarity index 99% rename from lib/resource-1.0/swedish/BasicSwe.gf rename to lib/resource-1.0/swedish/LexiconSwe.gf index e8a55fcbe..7b0d25fbd 100644 --- a/lib/resource-1.0/swedish/BasicSwe.gf +++ b/lib/resource-1.0/swedish/LexiconSwe.gf @@ -1,6 +1,6 @@ --# -path=.:../scandinavian:../common:../abstract:../../prelude -concrete BasicSwe of Basic = CatSwe ** open ParadigmsSwe in { +concrete LexiconSwe of Lexicon = CatSwe ** open ParadigmsSwe in { flags optimize=values ; diff --git a/lib/resource-1.0/swedish/PhraseSwe.gf b/lib/resource-1.0/swedish/PhraseSwe.gf index c1ce445ef..8fccfc6d2 100644 --- a/lib/resource-1.0/swedish/PhraseSwe.gf +++ b/lib/resource-1.0/swedish/PhraseSwe.gf @@ -1,2 +1,2 @@ -concrete PhraseSwe of Phrase = CatSwe, TenseX ** PhraseScand with +concrete PhraseSwe of Phrase = CatSwe ** PhraseScand with (ResScand = ResSwe) ;