forked from GitHub/gf-core
Bulgarian in 1.4
This commit is contained in:
36
lib/resource-1.4/bulgarian/AdjectiveBul.gf
Normal file
36
lib/resource-1.4/bulgarian/AdjectiveBul.gf
Normal file
@@ -0,0 +1,36 @@
|
||||
concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
|
||||
lin
|
||||
PositA a = {
|
||||
s = \\aform => a.s ! aform ;
|
||||
isPre = True
|
||||
} ;
|
||||
|
||||
ComparA a np = {
|
||||
s = \\aform => "ïî" ++ "-" ++ a.s ! aform ++ "îò" ++ np.s ! RObj Acc ;
|
||||
isPre = True
|
||||
} ;
|
||||
|
||||
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||
|
||||
ComplA2 a np = {
|
||||
s = \\aform => a.s ! aform ++ a.c2 ++ np.s ! RObj Acc ;
|
||||
isPre = True
|
||||
} ;
|
||||
|
||||
ReflA2 a = {
|
||||
s = \\aform => a.s ! aform ++ a.c2 ++ ["ñåáå ñè"] ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
SentAP ap sc = {
|
||||
s = \\a => ap.s ! a ++ sc.s ;
|
||||
isPre = False
|
||||
} ;
|
||||
|
||||
AdAP ada ap = {
|
||||
s = \\a => ada.s ++ ap.s ! a ;
|
||||
isPre = ap.isPre
|
||||
} ;
|
||||
|
||||
UseA2 a = a ;
|
||||
}
|
||||
18
lib/resource-1.4/bulgarian/AdverbBul.gf
Normal file
18
lib/resource-1.4/bulgarian/AdverbBul.gf
Normal file
@@ -0,0 +1,18 @@
|
||||
concrete AdverbBul of Adverb = CatBul ** open ResBul, Prelude in {
|
||||
lin
|
||||
PositAdvAdj a = {s = a.s ! ASg Neut Indef} ;
|
||||
ComparAdvAdj cadv a np = {
|
||||
s = cadv.s ++ "ïî" ++ "-" ++ a.s ! ASg Neut Indef ++ "îò" ++ np.s ! RObj Acc
|
||||
} ;
|
||||
ComparAdvAdjS cadv a s = {
|
||||
s = cadv.s ++ "ïî" ++ "-" ++ a.s ! ASg Neut Indef ++ "îò" ++ "êîëêîòî" ++ s.s
|
||||
} ;
|
||||
|
||||
PrepNP prep np = {s = prep.s ++ np.s ! RObj prep.c} ;
|
||||
|
||||
AdAdv = cc2 ;
|
||||
|
||||
SubjS = cc2 ;
|
||||
|
||||
AdnCAdv cadv = {s = cadv.sn ++ "îò"} ;
|
||||
}
|
||||
6
lib/resource-1.4/bulgarian/Bulgarian.gf
Normal file
6
lib/resource-1.4/bulgarian/Bulgarian.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete Bulgarian of BulgarianAbs =
|
||||
LangBul,
|
||||
ExtraBul
|
||||
** {} ;
|
||||
6
lib/resource-1.4/bulgarian/BulgarianAbs.gf
Normal file
6
lib/resource-1.4/bulgarian/BulgarianAbs.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
abstract BulgarianAbs =
|
||||
Lang,
|
||||
ExtraBulAbs
|
||||
** {} ;
|
||||
131
lib/resource-1.4/bulgarian/CatBul.gf
Normal file
131
lib/resource-1.4/bulgarian/CatBul.gf
Normal file
@@ -0,0 +1,131 @@
|
||||
concrete CatBul of Cat = open ResBul, Prelude, (R = ParamX) in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
|
||||
lincat
|
||||
|
||||
-- Text, Phrase, Utterance
|
||||
|
||||
Text = {s : Str} ;
|
||||
Phr = {s : Str} ;
|
||||
Utt = {s : Str} ;
|
||||
Voc = {s : Str} ;
|
||||
PConj = {s : Str} ;
|
||||
|
||||
-- Tense, Anteriority, Polarity
|
||||
|
||||
Tense = {s : Str ; t : R.Tense} ;
|
||||
Ant = {s : Str ; a : R.Anteriority} ;
|
||||
Pol = {s : Str ; p : R.Polarity} ;
|
||||
|
||||
-- Tensed/Untensed
|
||||
|
||||
S = {s : Str} ;
|
||||
QS = {s : QForm => Str} ;
|
||||
RS = {s : GenNum => Str} ;
|
||||
SC = {s : Str} ;
|
||||
SSlash = {s : Str ; c2 : Preposition} ;
|
||||
|
||||
-- Sentence
|
||||
|
||||
Cl = {s : ResBul.Tense => Anteriority => Polarity => Order => Str} ;
|
||||
ClSlash = {
|
||||
s : ResBul.Tense => Anteriority => Polarity => Order => Str ;
|
||||
c2 : Preposition
|
||||
} ;
|
||||
Imp = {s : Polarity => GenNum => Str} ;
|
||||
|
||||
-- Question
|
||||
|
||||
QCl = {s : ResBul.Tense => Anteriority => Polarity => QForm => Str} ;
|
||||
IP = {s : Role => Str; gn : GenNum} ;
|
||||
IComp = {s1,s2 : Str} ;
|
||||
IDet = {s : GenNum => Str; n : Number ; nonEmpty : Bool} ; ---- nonEmpty by AR
|
||||
IQuant = {s : GenNum => Str} ;
|
||||
|
||||
-- Relative
|
||||
|
||||
RCl = {s : ResBul.Tense => Anteriority => Polarity => GenNum => Str} ;
|
||||
RP = {s : GenNum => Str} ;
|
||||
|
||||
-- Verb
|
||||
|
||||
VP = {
|
||||
s : ResBul.Tense => Anteriority => Polarity => Agr => Bool => Aspect => Str ;
|
||||
imp : Polarity => Number => Aspect => Str ;
|
||||
ad : Bool => Str ;
|
||||
s2 : Agr => Str ;
|
||||
subjRole : Role
|
||||
} ;
|
||||
|
||||
VPSlash = ResBul.VP ** {c2 : Preposition} ;
|
||||
|
||||
Comp = {s : Agr => Str} ;
|
||||
AdV = {s : Str} ; --lock_AdV : {}} ;
|
||||
|
||||
-- Adjective
|
||||
|
||||
AP = {s : AForm => Str; isPre : Bool} ;
|
||||
|
||||
-- Adjective
|
||||
|
||||
Adv = {s : Str} ;
|
||||
CAdv = {s : Str; sn : Str} ;
|
||||
IAdv = {s1,s2 : Str} ;
|
||||
AdA = {s : Str} ;
|
||||
|
||||
-- Noun
|
||||
|
||||
CN = {s : NForm => Str; g : DGender} ;
|
||||
NP = {s : Role => Str; a : Agr} ;
|
||||
Pron = {s : Role => Str; gen : AForm => Str; a : Agr} ;
|
||||
Det = {s : DGender => Role => Str ; n : Number; countable : Bool; spec : Species} ;
|
||||
Predet = {s : GenNum => Str} ;
|
||||
Ord = {s : AForm => Str; nonEmpty : Bool} ;
|
||||
Num = {s : DGenderSpecies => Str; n : Number; nonEmpty : Bool} ;
|
||||
Card = {s : DGenderSpecies => Str; n : Number} ;
|
||||
Quant = {s : AForm => Str; spec : Species} ;
|
||||
Art = {s : AForm => Str; spec : Species} ;
|
||||
|
||||
-- Numeral
|
||||
|
||||
Numeral = {s : CardOrd => Str; n : Number} ;
|
||||
Digits = {s : CardOrd => Str; n : Number; tail : DTail} ;
|
||||
AdN = {s : Str} ;
|
||||
|
||||
-- Structural
|
||||
|
||||
Conj = {s1,s2 : Str ; n : Number} ;
|
||||
Subj = {s : Str} ;
|
||||
Prep = {s : Str; c : Case} ;
|
||||
|
||||
-- Open lexical classes, e.g. Lexicon
|
||||
|
||||
V, VS, VQ, VA = Verb ;
|
||||
V2, V2A = Verb ** {c2 : Preposition} ;
|
||||
V2V, V2S, V2Q = Verb ** {c2 : Preposition} ; --- AR
|
||||
V3 = Verb ** {c2, c3 : Preposition} ;
|
||||
VV = Verb ;
|
||||
|
||||
A = {s : AForm => Str} ;
|
||||
A2 = {s : AForm => Str ; c2 : Str} ;
|
||||
|
||||
N = {s : NForm => Str; g : DGender} ;
|
||||
N2 = {s : NForm => Str; g : DGender} ** {c2 : Preposition} ;
|
||||
N3 = {s : NForm => Str; g : DGender} ** {c2,c3 : Preposition} ;
|
||||
PN = {s : Str; g : Gender} ;
|
||||
|
||||
|
||||
-- Tense, Anteriority and Polarity functions
|
||||
|
||||
lin
|
||||
PPos = {s = []} ** {p = R.Pos} ;
|
||||
PNeg = {s = []} ** {p = R.Neg} ;
|
||||
TPres = {s = []} ** {t = R.Pres} ;
|
||||
TPast = {s = []} ** {t = R.Past} ; --# notpresent
|
||||
TFut = {s = []} ** {t = R.Fut} ; --# notpresent
|
||||
TCond = {s = []} ** {t = R.Cond} ; --# notpresent
|
||||
ASimul = {s = []} ** {a = R.Simul} ;
|
||||
AAnter = {s = []} ** {a = R.Anter} ; --# notpresent
|
||||
}
|
||||
39
lib/resource-1.4/bulgarian/ConjunctionBul.gf
Normal file
39
lib/resource-1.4/bulgarian/ConjunctionBul.gf
Normal file
@@ -0,0 +1,39 @@
|
||||
concrete ConjunctionBul of Conjunction =
|
||||
CatBul ** open ResBul, Coordination, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
ConjS = conjunctDistrSS ;
|
||||
|
||||
ConjAdv = conjunctDistrSS ;
|
||||
|
||||
ConjNP conj ss = conjunctDistrTable Role conj ss ** {
|
||||
a = {gn = conjGenNum (gennum DMasc conj.n) ss.a.gn; p = ss.a.p}
|
||||
} ;
|
||||
|
||||
ConjAP conj ss = conjunctDistrTable AForm conj ss ** {
|
||||
isPre = ss.isPre
|
||||
} ;
|
||||
|
||||
-- These fun's are generated from the list cat's.
|
||||
|
||||
BaseS = twoSS ;
|
||||
ConsS = consrSS comma ;
|
||||
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS comma ;
|
||||
|
||||
BaseNP x y = twoTable Role x y ** {a = conjAgr x.a y.a} ;
|
||||
ConsNP xs x = consrTable Role comma xs x ** {a = conjAgr xs.a x.a} ;
|
||||
|
||||
BaseAP x y = twoTable AForm x y ** {isPre = andB x.isPre y.isPre} ;
|
||||
ConsAP xs x = consrTable AForm comma xs x ** {isPre = andB xs.isPre x.isPre} ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Str} ;
|
||||
[Adv] = {s1,s2 : Str} ;
|
||||
[NP] = {s1,s2 : Role => Str ; a : Agr} ;
|
||||
[AP] = {s1,s2 : AForm => Str ; isPre : Bool} ;
|
||||
}
|
||||
66
lib/resource-1.4/bulgarian/ExtraBul.gf
Normal file
66
lib/resource-1.4/bulgarian/ExtraBul.gf
Normal file
@@ -0,0 +1,66 @@
|
||||
concrete ExtraBul of ExtraBulAbs = CatBul **
|
||||
open ResBul, Coordination, Prelude in {
|
||||
|
||||
lin
|
||||
PossIndefPron p = {
|
||||
s = \\aform => p.gen ! (indefAForm ! aform) ;
|
||||
spec = Indef
|
||||
} ;
|
||||
|
||||
ReflQuant = {
|
||||
s = \\aform => reflPron ! aform ;
|
||||
spec = Indef
|
||||
} ;
|
||||
|
||||
ReflIndefQuant = {
|
||||
s = \\aform => reflPron ! (indefAForm ! aform) ;
|
||||
spec = Indef
|
||||
} ;
|
||||
|
||||
i8fem_Pron = mkPron "àç" "ìåí" "ìè" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Fem) P1 ;
|
||||
i8neut_Pron = mkPron "àç" "ìåí" "ìè" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Neut) P1 ;
|
||||
|
||||
whatSg8fem_IP = mkIP "êàêâà" "êàêâà" (GSg Fem) ;
|
||||
whatSg8neut_IP = mkIP "êàêâî" "êàêâî" (GSg Neut) ;
|
||||
|
||||
whoSg8fem_IP = mkIP "êîÿ" "êîãî" (GSg Fem) ;
|
||||
whoSg8neut_IP = mkIP "êîå" "êîãî" (GSg Neut) ;
|
||||
|
||||
youSg8fem_Pron = mkPron "òè" "òåá" "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Fem) P2 ;
|
||||
youSg8neut_Pron = mkPron "òè" "òåá" "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Neut) P2 ;
|
||||
|
||||
youPol8fem_Pron = mkPron "âèå" "âàñ" "âè" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" (GSg Fem) P2 ;
|
||||
youPol8neut_Pron = mkPron "âèå" "âàñ" "âè" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" (GSg Neut) P2 ;
|
||||
|
||||
onePl_Num = {s = table {
|
||||
DMascIndef | DMascPersonalIndef | DFemIndef | DNeutIndef => "åäíè" ;
|
||||
DMascDef | DMascDefNom | DMascPersonalDef | DMascPersonalDefNom | DFemDef | DNeutDef => "åäíèòå"
|
||||
} ;
|
||||
n = Pl;
|
||||
nonEmpty = True
|
||||
} ;
|
||||
|
||||
UttImpSg8fem pol imp = {s = pol.s ++ imp.s ! pol.p ! GSg Fem} ;
|
||||
UttImpSg8neut pol imp = {s = pol.s ++ imp.s ! pol.p ! GSg Fem} ;
|
||||
|
||||
oper
|
||||
reflPron : AForm => Str =
|
||||
table {
|
||||
ASg Masc Indef => "ñâîé" ;
|
||||
ASg Masc Def => "ñâîÿ" ;
|
||||
ASgMascDefNom => "ñâîÿò" ;
|
||||
ASg Fem Indef => "ñâîÿ" ;
|
||||
ASg Fem Def => "ñâîÿòà" ;
|
||||
ASg Neut Indef => "ñâîå" ;
|
||||
ASg Neut Def => "ñâîåòî" ;
|
||||
APl Indef => "ñâîè" ;
|
||||
APl Def => "ñâîèòå"
|
||||
} ;
|
||||
|
||||
indefAForm : AForm => AForm =
|
||||
table {
|
||||
ASg g _ => ASg g Indef ;
|
||||
ASgMascDefNom => ASg Masc Indef ;
|
||||
APl _ => APl Indef
|
||||
} ;
|
||||
}
|
||||
31
lib/resource-1.4/bulgarian/ExtraBulAbs.gf
Normal file
31
lib/resource-1.4/bulgarian/ExtraBulAbs.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
abstract ExtraBulAbs = Extra ** {
|
||||
|
||||
fun
|
||||
-- Feminine variants of pronouns (those in $Structural$ are
|
||||
-- masculine, which is the default when gender is unknown).
|
||||
|
||||
PossIndefPron : Pron -> Quant ;
|
||||
|
||||
ReflQuant : Quant ;
|
||||
ReflIndefQuant : Quant ;
|
||||
|
||||
i8fem_Pron : Pron ;
|
||||
i8neut_Pron : Pron ;
|
||||
|
||||
whatSg8fem_IP : IP ;
|
||||
whatSg8neut_IP : IP ;
|
||||
|
||||
whoSg8fem_IP : IP ;
|
||||
whoSg8neut_IP : IP ;
|
||||
|
||||
youSg8fem_Pron : Pron ;
|
||||
youSg8neut_Pron : Pron ;
|
||||
|
||||
youPol8fem_Pron : Pron ;
|
||||
youPol8neut_Pron : Pron ;
|
||||
|
||||
onePl_Num : Num ;
|
||||
|
||||
UttImpSg8fem : Pol -> Imp -> Utt;
|
||||
UttImpSg8neut : Pol -> Imp -> Utt;
|
||||
}
|
||||
21
lib/resource-1.4/bulgarian/GrammarBul.gf
Normal file
21
lib/resource-1.4/bulgarian/GrammarBul.gf
Normal file
@@ -0,0 +1,21 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete GrammarBul of Grammar =
|
||||
NounBul,
|
||||
VerbBul,
|
||||
AdjectiveBul,
|
||||
AdverbBul,
|
||||
NumeralBul,
|
||||
SentenceBul,
|
||||
QuestionBul,
|
||||
RelativeBul,
|
||||
ConjunctionBul,
|
||||
PhraseBul,
|
||||
TextBul,
|
||||
StructuralBul,
|
||||
IdiomBul
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
} ;
|
||||
69
lib/resource-1.4/bulgarian/IdiomBul.gf
Normal file
69
lib/resource-1.4/bulgarian/IdiomBul.gf
Normal file
@@ -0,0 +1,69 @@
|
||||
concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
ImpersCl vp = mkClause [] (agrP3 (GSg Neut)) vp ;
|
||||
GenericCl vp = mkClause "íÿêîé" (agrP3 (GSg Neut)) vp ;
|
||||
|
||||
CleftNP np rs =
|
||||
mkClause (np.s ! RSubj)
|
||||
{gn=GSg Neut; p=np.a.p}
|
||||
(insertObj (\\_ => thisRP ! np.a.gn ++ rs.s ! np.a.gn) (predV verbBe)) ;
|
||||
|
||||
CleftAdv ad s =
|
||||
mkClause (ad.s)
|
||||
(agrP3 (GSg Neut))
|
||||
(insertObj (\\_ => thisRP ! GPl ++ s.s) (predV verbBe)) ;
|
||||
|
||||
ExistNP np =
|
||||
{ s = \\t,a,p,o =>
|
||||
let verb = case p of {
|
||||
Pos => mkV186 "èìàì" ;
|
||||
Neg => mkV186 "íÿìàì"
|
||||
} ;
|
||||
|
||||
agr=agrP3 (GSg Neut);
|
||||
|
||||
present = verb ! (VPres (numGenNum agr.gn) agr.p) ;
|
||||
aorist = verb ! (VAorist (numGenNum agr.gn) agr.p) ;
|
||||
perfect = verb ! (VPerfect (aform agr.gn Indef (RObj Acc))) ;
|
||||
|
||||
auxPres = auxBe ! VPres (numGenNum agr.gn) agr.p ;
|
||||
auxAorist = auxBe ! VAorist (numGenNum agr.gn) agr.p ;
|
||||
auxCondS = auxWould ! VAorist (numGenNum agr.gn) agr.p ;
|
||||
|
||||
v : {aux1:Str; aux2:Str; main:Str}
|
||||
= case <t,a> of {
|
||||
<Pres,Simul> => {aux1=[]; aux2=[]; main=present} ;
|
||||
<Pres,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ;
|
||||
<Past,Simul> => {aux1=[]; aux2=[]; main=aorist} ;
|
||||
<Past,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ;
|
||||
<Fut, Simul> => {aux1="ùå"; aux2=[]; main=present} ;
|
||||
<Fut, Anter> => {aux1="ùå"++auxPres; aux2=[]; main=perfect} ;
|
||||
<Cond,_> => {aux1=auxCondS; aux2=[]; main=perfect}
|
||||
} ;
|
||||
|
||||
in case o of {
|
||||
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ;
|
||||
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ;
|
||||
Quest => v.aux1 ++ v.main ++ "ëè" ++ v.aux2 ++ np.s ! RObj Acc
|
||||
}
|
||||
} ;
|
||||
{-
|
||||
ExistIP ip =
|
||||
mkQuestion (ss (ip.s ! Nom))
|
||||
(mkClause "there" (agrP3 ip.n) (predAux auxBe)) ;
|
||||
-}
|
||||
ProgrVP vp = {
|
||||
s = \\t,a,p,agr,q,asp => vp.s ! t ! a ! p ! agr ! q ! Imperf ;
|
||||
imp = \\p,n,_ => vp.imp ! p ! n ! Imperf ;
|
||||
ad = vp.ad ;
|
||||
s2 = vp.s2 ;
|
||||
subjRole = vp.subjRole
|
||||
} ;
|
||||
|
||||
ImpPl1 vp = {s = let verbs = vp.s ! Pres ! Simul ! Pos ! {gn = GPl ; p = P1} ! False ! Imperf ;
|
||||
in "íåêà" ++ vp.s2 ! {gn = GPl ; p = P1}
|
||||
} ;
|
||||
}
|
||||
|
||||
10
lib/resource-1.4/bulgarian/LangBul.gf
Normal file
10
lib/resource-1.4/bulgarian/LangBul.gf
Normal file
@@ -0,0 +1,10 @@
|
||||
--# -path=.:../abstract:../common:prelude
|
||||
|
||||
concrete LangBul of Lang =
|
||||
GrammarBul,
|
||||
LexiconBul
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
} ;
|
||||
368
lib/resource-1.4/bulgarian/LexiconBul.gf
Normal file
368
lib/resource-1.4/bulgarian/LexiconBul.gf
Normal file
@@ -0,0 +1,368 @@
|
||||
--# -path=.:prelude
|
||||
|
||||
concrete LexiconBul of Lexicon = CatBul **
|
||||
open ParadigmsBul, ResBul, Prelude in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
|
||||
lin
|
||||
airplane_N = mkN007 "ñàìîëåò" ;
|
||||
answer_V2S = mkV2S (actionV (mkV187 "îòãîâàðÿì") (mkV173 "îòãîâîðÿ")) naP ;
|
||||
apartment_N = mkN007 "àïàðòàìåíò" ;
|
||||
apple_N = mkN041 "ÿáúëêà" ;
|
||||
art_N = mkN054 "èçêóñòâî" ;
|
||||
ask_V2Q = mkV2Q (stateV (mkV186 "ïèòàì")) noPrep ;
|
||||
baby_N = mkN065 "áåáå" ;
|
||||
bad_A = mkA076 "ëîø" ;
|
||||
bank_N = mkN041 "áàíêà" ;
|
||||
beautiful_A = mkA076 "êðàñèâ" ;
|
||||
become_VA = mkVA (actionV (mkV186 "ñòàâàì") (mkV152 "ñòàíà")) ;
|
||||
beer_N = mkN041 "áèðà" ;
|
||||
beg_V2V = mkV2V (stateV (mkV173 "ìîëÿ")) noPrep zaP ;
|
||||
big_A = mkA081 "ãîëÿì" ;
|
||||
bike_N = mkN061 "êîëåëî" ;
|
||||
bird_N = mkN041 "ïòèöà" ;
|
||||
black_A = mkA079 "÷åðåí" ;
|
||||
blue_A = mkA086 "ñèí" ;
|
||||
boat_N = mkN007 "êîðàá" ;
|
||||
book_N = mkN041 "êíèãà" ;
|
||||
boot_N = mkN041 "îáóâêà" ;
|
||||
boss_N = mkN001 "øåô" ;
|
||||
boy_N = mkN065 "ìîì÷å" ;
|
||||
bread_N = mkN001 "õëÿá" ;
|
||||
break_V2 = dirV2 (actionV (mkV173 "÷óïÿ") (mkV173 "ñ÷óïÿ")) ;
|
||||
broad_A = mkA079 "îáøèðåí" ;
|
||||
brother_N2 = prepN2 (mkN025 "áðàò") naP ;
|
||||
brown_A = mkA076 "êàôÿâ" ;
|
||||
butter_N = mkN054 "ìàñëî" ;
|
||||
buy_V2 = dirV2 (actionV (mkV186 "êóïóâàì") (mkV173 "êóïÿ")) ;
|
||||
camera_N = mkN041 "êàìåðà" ;
|
||||
cap_N = mkN041 "øàïêà" ;
|
||||
car_N = mkN041 "êîëà" ;
|
||||
carpet_N = mkN007 "êèëèì" ;
|
||||
cat_N = mkN041 "êîòêà" ;
|
||||
ceiling_N = mkN007 "òàâàí" ;
|
||||
chair_N = mkN001 "ñòîë" ;
|
||||
cheese_N = mkN066 "ñèðåíå" ;
|
||||
child_N = mkN067 "äåòå" ;
|
||||
church_N = mkN041 "öúðêâà" ;
|
||||
city_N = mkN001 "ãðàä" ;
|
||||
clean_A = mkA076 "÷èñò" ;
|
||||
clever_A = mkA079 "óìåí" ;
|
||||
close_V2 = dirV2 (actionV (mkV187 "çàòâàðÿì") (mkV173 "çàòâîðÿ")) ;
|
||||
coat_N = mkN054 "ïàëòî" ;
|
||||
cold_A = mkA076 "ñòóäåí" ;
|
||||
come_V = actionV (mkV165 "èäà") (mkV146a "äîéäà") ;
|
||||
computer_N = mkN009 "êîìïþòúð" ;
|
||||
country_N = mkN041 "äúðæàâà" ;
|
||||
cousin_N = mkN007a "áðàòîâ÷åä" ;
|
||||
cow_N = mkN041 "êðàâà" ;
|
||||
die_V = actionV (mkV186 "óìèðàì") (mkV150a "óìðà") ;
|
||||
dirty_A = mkA079 "ìðúñåí" ;
|
||||
distance_N3 = prepN3 (mkN072 "ðàçñòîÿíèå") otP doP ;
|
||||
doctor_N = mkN007a "äîêòîð" ;
|
||||
dog_N = mkN065 "êó÷å" ;
|
||||
door_N = mkN041 "âðàòà" ;
|
||||
drink_V2 = dirV2 (stateV (mkV163 "ïèÿ")) ;
|
||||
easy_A2V = mkA2V (mkA079 "ëåñåí") zaP ;
|
||||
eat_V2 = dirV2 (stateV (mkV169 "ÿì")) ;
|
||||
empty_A = mkA079 "ïðàçåí" ;
|
||||
enemy_N = mkN001 "âðàã" ;
|
||||
factory_N = mkN041 "ôàáðèêà" ;
|
||||
father_N2 = prepN2 (mkN038 "áàùà") naP ;
|
||||
fear_VS = mkVS (stateV (mkV186 "ñòðàõóâàì")) ;
|
||||
find_V2 = dirV2 (actionV (mkV186 "íàìèðàì") (mkV173 "íàìåðÿ")) ;
|
||||
fish_N = mkN041 "ðèáà" ;
|
||||
floor_N = mkN007 "åòàæ" ;
|
||||
fridge_N = mkN007 "ôðèçåð" ;
|
||||
friend_N = mkN031a "ïðèÿòåë" ;
|
||||
fruit_N = mkN001 "ïëîä" ;
|
||||
fun_AV = mkAV (mkA079 "çàáàâåí") ;
|
||||
forget_V2 = dirV2 (actionV (mkV187 "çàáðàâÿì") (mkV173 "çàáðàâÿ")) ;
|
||||
garden_N = mkN041 "ãðàäèíà" ;
|
||||
girl_N = mkN065 "ìîìè÷å" ;
|
||||
glove_N = mkN041 "ðúêàâèöà" ;
|
||||
gold_N = mkN054 "çëàòî" ;
|
||||
good_A = mkA080 "äîáúð" ;
|
||||
go_V = actionV (mkV186 "îòèâàì") (mkV146 "îòèäà") ;
|
||||
green_A = mkA076 "çåëåí" ;
|
||||
harbour_N = mkN066 "ïðèñòàíèùå" ;
|
||||
hate_V2 = dirV2 (stateV (mkV173 "ìðàçÿ")) ;
|
||||
hat_N = mkN041 "øàïêà" ;
|
||||
have_V2 = dirV2 (stateV (mkV186 "èìàì")) ;
|
||||
hear_V2 = dirV2 (actionV (mkV186 "÷óâàì") (mkV163 "÷óÿ")) ;
|
||||
hill_N = mkN001 "õúëì" ;
|
||||
hope_VS = mkVS (reflV (stateV (mkV186 "íàäÿâàì")) Acc) ;
|
||||
horse_N = mkN035 "êîí" ;
|
||||
hot_A = mkA076 "ãîðåù" ;
|
||||
house_N = mkN041 "êúùà" ;
|
||||
important_A = mkA079 "âàæåí" ;
|
||||
industry_N = mkN047 "èíäóñòðèÿ" ;
|
||||
iron_N = mkN057 "æåëÿçî" ;
|
||||
king_N = mkN035a "öàð" ;
|
||||
know_V2 = dirV2 (stateV (mkV162 "çíàÿ")) ;
|
||||
lake_N = mkN054 "åçåðî" ;
|
||||
lamp_N = mkN041 "ëàìïà" ;
|
||||
learn_V2 = dirV2 (stateV (mkV176 "ó÷à")) ;
|
||||
leather_N = mkN041 "êîæà" ;
|
||||
leave_V2 = dirV2 (actionV (mkV187 "îñòàâÿì") (mkV173 "îñòàâÿ")) ;
|
||||
like_V2 = dirV2 (actionV (mkV186 "õàðåñâàì") (mkV186 "õàðåñàì")) ;
|
||||
listen_V2 = dirV2 (stateV (mkV186 "ñëóøàì")) ;
|
||||
live_V = stateV (mkV160 "æèâåÿ") ;
|
||||
long_A = mkA080 "äúëúã" ;
|
||||
lose_V2 = dirV2 (actionV (mkV173 "ãóáÿ") (mkV173 "çàãóáÿ")) ;
|
||||
love_N = mkN049 "ëþáîâ" ;
|
||||
love_V2 = dirV2 (stateV (mkV186 "îáè÷àì")) ;
|
||||
man_N = mkN024 "ìúæ" ;
|
||||
married_A2 = mkA2 (mkA076 "æåíåí") zaP ;
|
||||
meat_N = mkN054 "ìåñî" ;
|
||||
milk_N = mkN057 "ìëÿêî" ;
|
||||
moon_N = mkN041 "ëóíà" ;
|
||||
mother_N2 = prepN2 (mkN041a "ìàéêà") naP ;
|
||||
mountain_N = mkN041 "ïëàíèíà" ;
|
||||
music_N = mkN041 "ìóçèêà" ;
|
||||
narrow_A = mkA084 "òåñåí" ;
|
||||
new_A = mkA076 "íîâ" ;
|
||||
newspaper_N = mkN014 "âåñòíèê" ;
|
||||
oil_N = mkN065 "îëèî" ;
|
||||
old_A = mkA076 "ñòàð" ;
|
||||
open_V2 = dirV2 (actionV (mkV187 "îòâàðÿì") (mkV173 "îòâîðÿ")) ;
|
||||
paint_V2A = mkV2A (actionV (mkV186 "ðèñóâàì") (mkV186 "íàðèñóâàì")) noPrep ;
|
||||
paper_N = mkN047 "õàðòèÿ" ;
|
||||
paris_PN = mkPN "Ïàðèæ" Masc ;
|
||||
peace_N = mkN040a "ìèð" ;
|
||||
pen_N = mkN041 "ïèñàëêà" ;
|
||||
planet_N = mkN041 "ïëàíåòà" ;
|
||||
plastic_N = mkN041 "ïëàñòìàñà" ;
|
||||
play_V2 = dirV2 (stateV (mkV161 "èãðàÿ")) ;
|
||||
policeman_N = mkN032a "ïîëèöàé" ;
|
||||
priest_N = mkN014 "ñâåùåíèê" ;
|
||||
probable_AS = mkAS (mkA079 "âåðîÿòåí") ;
|
||||
queen_N = mkN041 "êðàëèöà" ;
|
||||
radio_N = mkN054 "ðàäèî" ;
|
||||
rain_V0 = mkV0 (stateV (mkV174 "âàëè")) ;
|
||||
read_V2 = dirV2 (stateV (mkV145 "÷åòà")) ;
|
||||
red_A = mkA076 "÷åðâåí" ;
|
||||
religion_N = mkN047 "ðåëèãèÿ" ;
|
||||
restaurant_N = mkN007 "ðåñòîðàíò" ;
|
||||
river_N = mkN041 "ðåêà" ;
|
||||
rock_N = mkN041 "ñêàëà" ;
|
||||
roof_N = mkN007 "ïîêðèâ" ;
|
||||
rubber_N = mkN041 "ãóìà" ;
|
||||
run_V = stateV (mkV186 "áÿãàì") ;
|
||||
say_VS = mkVS (actionV (mkV186 "êàçâàì") (mkV156 "êàæà")) ;
|
||||
school_N = mkN066 "ó÷èëèùå" ;
|
||||
science_N = mkN041 "íàóêà" ;
|
||||
sea_N = mkN065 "ìîðå" ;
|
||||
seek_V2 = dirV2 (stateV (mkV173 "òúðñÿ")) ;
|
||||
see_V2 = dirV2 (actionV (mkV186 "âèæäàì") (mkV181 "âèäÿ")) ;
|
||||
sell_V3 = dirV3 (stateV (mkV186 "ïðîäàâàì")) naP ;
|
||||
send_V3 = dirV3 (actionV (mkV186 "ïðàùàì") (mkV173 "ïðàòÿ")) doP ;
|
||||
sheep_N = mkN044 "îâöà" ;
|
||||
ship_N = mkN007 "êîðàá" ;
|
||||
shirt_N = mkN041 "ðèçà" ;
|
||||
shoe_N = mkN041 "îáóâêà" ;
|
||||
shop_N = mkN007 "ìàãàçèí" ;
|
||||
short_A = mkA076 "êúñ" ;
|
||||
silver_N = mkN054 "ñðåáðî" ;
|
||||
sister_N = mkN041a "ñåñòðà" ;
|
||||
sleep_V = stateV (mkV182 "ñïÿ") ;
|
||||
small_A = mkA080 "ìàëúê" ;
|
||||
snake_N = mkN047 "çìèÿ" ;
|
||||
sock_N = mkN007 "÷îðàï" ;
|
||||
speak_V2 = dirV2 (stateV (mkV173 "ãîâîðÿ")) ;
|
||||
star_N = mkN041 "çâåçäà" ;
|
||||
steel_N = mkN041 "ñòîìàíà" ;
|
||||
stone_N = mkN017 "êàìúê" ;
|
||||
stove_N = mkN041 "ïå÷êà" ;
|
||||
student_N = mkN007a "ñòóäåíò" ;
|
||||
stupid_A = mkA076 "ãëóïàâ" ;
|
||||
sun_N = mkN066 "ñëúíöå" ;
|
||||
switch8off_V2 = dirV2 (actionV (mkV186 "èçêëþ÷âàì") (mkV176 "èçêëþ÷à")) ;
|
||||
switch8on_V2 = dirV2 (actionV (mkV186 "âêëþ÷âàì") (mkV176 "âêëþ÷à")) ;
|
||||
table_N = mkN041 "ìàñà" ;
|
||||
talk_V3 = mkV3 (stateV (mkV173 "ãîâîðÿ")) naP zaP ;
|
||||
teacher_N = mkN031a "ó÷èòåë" ;
|
||||
teach_V2 = dirV2 (actionV (mkV186 "ïðåïîäàâàì") (mkV168 "ïðåïîäàì")) ;
|
||||
television_N = mkN047 "òåëåâèçèÿ" ;
|
||||
thick_A = mkA076 "äåáåë" ;
|
||||
thin_A = mkA080 "òúíúê" ;
|
||||
train_N = mkN001 "âëàê" ;
|
||||
travel_V = stateV (mkV186 "ïúòóâàì") ;
|
||||
tree_N = mkN061 "äúðâî" ;
|
||||
ugly_A = mkA076 "ãëóïàâ" ;
|
||||
understand_V2 = dirV2 (actionV (mkV186 "ðàçáèðàì") (mkV170 "ðàçáåðà")) ;
|
||||
university_N = mkN007 "óíèâåðñèòåò" ;
|
||||
village_N = mkN054 "ñåëî" ;
|
||||
wait_V2 = prepV2 (stateV (mkV186 "÷àêàì")) zaP ;
|
||||
walk_V = stateV (mkV173 "õîäÿ") ;
|
||||
warm_A = mkA080 "òîïúë" ;
|
||||
war_N = mkN041 "âîéíà" ;
|
||||
watch_V2 = dirV2 (stateV (mkV186 "ãëåäàì")) ;
|
||||
water_N = mkN041 "âîäà" ;
|
||||
white_A = mkA081 "áÿë" ;
|
||||
window_N = mkN008 "ïðîçîðåö" ;
|
||||
wine_N = mkN054 "âèíî" ;
|
||||
win_V2 = dirV2 (actionV (mkV186 "ïîáåæäàâàì") (mkV174 "ïîáåäÿ")) ;
|
||||
woman_N = mkN041a "æåíà" ;
|
||||
wonder_VQ = mkVQ (reflV (actionV (mkV186 "ó÷óäâàì") (mkV173 "÷óäÿ")) Acc) ;
|
||||
wood_N = mkN041 "äúðâåñèíà" ;
|
||||
write_V2 = dirV2 (stateV (mkV159 "ïèøà")) ;
|
||||
yellow_A = mkA076 "æúëò" ;
|
||||
young_A = mkA076 "ìëàä" ;
|
||||
do_V2 = dirV2 (stateV (mkV160a "âúðøà")) ;
|
||||
now_Adv = mkAdv "ñåãà" ;
|
||||
already_Adv = mkAdv "âå÷å" ;
|
||||
song_N = mkN050 "ïåñåí" ;
|
||||
add_V3 = dirV3 (actionV (mkV186 "ñúáèðàì") (mkV170 "ñúáåðà")) sP ;
|
||||
number_N = mkN054 "÷èñëî" ;
|
||||
put_V2 = prepV2 (actionV (mkV186 "ñëàãàì") (mkV176 "ñëîæà")) noPrep ;
|
||||
stop_V = actionV (mkV186 "ñïèðàì") (mkV150 "ñïðà") ;
|
||||
jump_V = actionV (mkV186 "ñêà÷àì") (mkV176 "ñêî÷à") ;
|
||||
left_Ord = mkA081 "ëÿâ" ** {nonEmpty=True} ;
|
||||
right_Ord = mkA084 "äåñåí" ** {nonEmpty=True} ;
|
||||
far_Adv = mkAdv "äàëå÷å" ;
|
||||
correct_A = mkA079 "ïðàâèëåí" ;
|
||||
dry_A = mkA076 "ñóõ" ;
|
||||
dull_A = mkA076 "òúï" ;
|
||||
full_A = mkA079 "ïúëåí" ;
|
||||
heavy_A = mkA080 "òåæúê" ;
|
||||
near_A = mkA080 "áëèçúê" ;
|
||||
rotten_A = mkA076 "ïðîãíèë" ;
|
||||
round_A = mkA080 "êðúãúë" ;
|
||||
sharp_A = mkA080 "îñòúð" ;
|
||||
smooth_A = mkA080 "ãëàäúê" ;
|
||||
straight_A = mkA081 "ïðÿê" ;
|
||||
wet_A = mkA080 "ìîêúð" ; ----
|
||||
wide_A = mkA076 "øèðîê" ;
|
||||
animal_N = mkN062 "æèâîòíî" ;
|
||||
ashes_N = mkN049 "ïåïeë" ;
|
||||
back_N = mkN003 "ãðúá" ;
|
||||
bark_N = mkN028 "ëàé" ;
|
||||
belly_N = mkN007 "êîðåì" ;
|
||||
blood_N = mkN053 "êðúâ" ;
|
||||
bone_N = mkN049 "êîñò" ;
|
||||
breast_N = mkN041 "ãúðäà" ;
|
||||
cloud_N = mkN014 "îáëàê" ;
|
||||
day_N = mkN033 "äåí" ;
|
||||
dust_N = mkN001 "ïðàõ" ;
|
||||
ear_N = mkN064 "óõî" ;
|
||||
earth_N = mkN047 "çåìÿ" ;
|
||||
egg_N = mkN066 "ÿéöå" ;
|
||||
eye_N = mkN063 "îêî" ;
|
||||
fat_N = mkN041 "fat" ;
|
||||
feather_N = mkN038 "áàùà" ;
|
||||
fingernail_N = mkN034 "íîêúò" ;
|
||||
fire_N = mkN030 "îãúí" ;
|
||||
flower_N = mkN068 "öâåòå" ;
|
||||
fog_N = mkN041 "ìúãëà" ;
|
||||
foot_N = mkN041 "ñòúïêà" ;
|
||||
forest_N = mkN041 "ãîðà" ;
|
||||
grass_N = mkN041 "òðåâà" ;
|
||||
guts_N = mkN054 "÷åðâî" ;
|
||||
hair_N = mkN041 "êîñà" ;
|
||||
hand_N = mkN045 "ðúêà" ;
|
||||
head_N = mkN041 "ãëàâà" ;
|
||||
heart_N = mkN066 "ñúðöå" ;
|
||||
horn_N = mkN001 "ðîã" ;
|
||||
husband_N = mkN015 "ñúïðóã" ; -- personal
|
||||
ice_N = mkN001 "ëåä" ;
|
||||
knee_N = mkN058 "êîëÿíî" ;
|
||||
leaf_N = mkN054 "ëèñòî" ;
|
||||
leg_N = mkN022 "êðàê" ;
|
||||
liver_N = mkN001 "äðîá" ;
|
||||
louse_N = mkN041 "âúøêà" ;
|
||||
mouth_N = mkN042 "óñòà" ;
|
||||
name_N = mkN069 "èìå" ;
|
||||
neck_N = mkN003 "ãðúá" ;
|
||||
night_N = mkN049 "íîù" ;
|
||||
nose_N = mkN001 "íîñ" ;
|
||||
person_N = mkN014 "÷îâåê" ;
|
||||
rain_N = mkN001 "äúæä" ;
|
||||
road_N = mkN037 "ïúò" ;
|
||||
root_N = mkN007 "êîðåí" ;
|
||||
rope_N = mkN065 "âúæå" ;
|
||||
salt_N = mkN049 "ñîë" ;
|
||||
sand_N = mkN014 "ïÿñúê" ;
|
||||
seed_N = mkN069 "ñåìå" ;
|
||||
skin_N = mkN041 "êîæà" ;
|
||||
sky_N = mkN070 "íåáå" ;
|
||||
smoke_N = mkN014 "ïóøåê" ;
|
||||
snow_N = mkN002 "ñíÿã" ;
|
||||
stick_N = mkN041 "ïðú÷êà" ;
|
||||
tail_N = mkN041 "îïàøêà" ;
|
||||
tongue_N = mkN014 "åçèê" ;
|
||||
tooth_N = mkN007 "çúá" ;
|
||||
wife_N = mkN041 "ñúïðóãà" ;
|
||||
wind_N = mkN004 "âÿòúð" ;
|
||||
wing_N = mkN056 "êðèëî" ;
|
||||
worm_N = mkN032 "÷åðâåé" ;
|
||||
year_N = mkN041 "ãîäèíà" ;
|
||||
blow_V = stateV (mkV186 "äóõàì") ;
|
||||
breathe_V = dirV2 (stateV (mkV186 "äèøàì")) ;
|
||||
burn_V = actionV (mkV187 "èçãàðÿì") (mkV177 "èçãîðÿ") ;
|
||||
dig_V = stateV (mkV161 "êîïàÿ") ;
|
||||
fall_V = actionV (mkV186 "ïàäàì") (mkV152 "ïàäíà") ;
|
||||
float_V = stateV (mkV186 "ïëàâàì") ;
|
||||
flow_V = stateV (mkV148 "òåêà") ;
|
||||
fly_V = stateV (mkV177 "ëåòÿ") ;
|
||||
freeze_V = stateV (mkV186 "çàìðúçâàì") ;
|
||||
give_V3 = dirV3 (actionV (mkV186 "äàâàì") (mkV186 "äàì")) naP ;
|
||||
laugh_V = reflV (stateV (mkV160 "ñìåÿ")) Acc ;
|
||||
lie_V = stateV (mkV178 "ëåæà") ;
|
||||
play_V = stateV (mkV161 "èãðàÿ") ;
|
||||
sew_V = stateV (mkV163 "øèÿ") ;
|
||||
sing_V = stateV (mkV164 "ïåÿ") ;
|
||||
sit_V = stateV (mkV177 "ñåäÿ") ;
|
||||
smell_V = stateV (mkV159 "ìèðèøà") ;
|
||||
spit_V = stateV (mkV163 "ïëþÿ") ;
|
||||
stand_V = stateV (mkV180 "ñòîÿ") ;
|
||||
swell_V = actionV (mkV186 "íàäóâàì") (mkV163 "íàäóÿ") ;
|
||||
swim_V = stateV (mkV186 "ïëóâàì") ;
|
||||
think_V = stateV (mkV173 "ìèñëÿ") ;
|
||||
turn_V = actionV (mkV186 "îáðúùàì") (mkV152 "îáúðíà") ;
|
||||
vomit_V = actionV (mkV186 "ïîâðúùàì") (mkV152 "ïîâúðíà") ;
|
||||
|
||||
bite_V2 = dirV2 (stateV (mkV154 "õàïÿ")) ;
|
||||
count_V2 = dirV2 (stateV (mkV175 "áðîÿ")) ;
|
||||
cut_V2 = dirV2 (stateV (mkV157 "ðåæà")) ;
|
||||
fear_V2 = dirV2 (reflV (stateV (mkV186 "ñòðàõóâàì")) Acc) ;
|
||||
fight_V2 = dirV2 (reflV (stateV (mkV173 "áîðÿ")) Acc) ;
|
||||
hit_V2 = dirV2 (actionV (mkV187 "óäðÿì") (mkV173 "óäàðÿ")) ;
|
||||
hold_V2 = dirV2 (stateV (mkV179 "äúðæà")) ;
|
||||
hunt_V2 = dirV2 (stateV (mkV174 "ëîâÿ")) ;
|
||||
kill_V2 = dirV2 (actionV (mkV186 "óáèâàì") (mkV163 "óáèÿ")) ;
|
||||
pull_V2 = dirV2 (stateV (mkV186 "äúðïàì")) ;
|
||||
push_V2 = dirV2 (stateV (mkV186 "áóòàì")) ;
|
||||
rub_V2 = dirV2 (stateV (mkV163 "òðèÿ")) ;
|
||||
scratch_V2 = dirV2 (actionV (mkV186 "äðàñêàì") (mkV152 "äðàñíà")) ;
|
||||
split_V2 = dirV2 (actionV (mkV187 "ðàçäåëÿì") (mkV174 "ðàçäåëÿ")) ;
|
||||
squeeze_V2 = dirV2 (actionV (mkV186 "ñòèñêàì") (mkV152 "ñòèñíà")) ;
|
||||
stab_V2 = dirV2 (actionV (mkV186 "ïðîìóøâàì") (mkV176 "ïðîìóøà")) ;
|
||||
suck_V2 = dirV2 (stateV (mkV155 "ñó÷à")) ;
|
||||
throw_V2 = dirV2 (actionV (mkV187 "õâúðëÿì") (mkV173 "õâúðëÿ")) ;
|
||||
tie_V2 = dirV2 (actionV (mkV186 "âðúçâàì") (mkV156 "âúðæà")) ;
|
||||
wash_V2 = dirV2 (stateV (mkV163 "ìèÿ")) ;
|
||||
wipe_V2 = dirV2 (stateV (mkV159 "áúðøà")) ;
|
||||
|
||||
grammar_N = mkN041 "ãðàìàòèêà" ;
|
||||
language_N = mkN014 "åçèê" ;
|
||||
rule_N = mkN054 "ïðàâèëî" ;
|
||||
|
||||
john_PN = mkPN "Äæîí" Masc ;
|
||||
question_N = mkN007 "âúïðîñ" ;
|
||||
ready_A = mkA076 "ãîòîâ" ;
|
||||
reason_N = mkN041 "ïðè÷èíà" ;
|
||||
today_Adv = mkAdv "äíåñ" ;
|
||||
uncertain_A = mkA079 "íåÿñåí" ;
|
||||
|
||||
oper
|
||||
zaP = mkPrep "çà" Acc ;
|
||||
naP = mkPrep [] Dat ;
|
||||
otP = mkPrep "îò" Acc ;
|
||||
doP = mkPrep "äî" Acc ;
|
||||
sP = mkPrep (pre { "ñ" ;
|
||||
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
|
||||
}) Acc ;
|
||||
} ;
|
||||
176
lib/resource-1.4/bulgarian/MorphoBul.gf
Normal file
176
lib/resource-1.4/bulgarian/MorphoBul.gf
Normal file
@@ -0,0 +1,176 @@
|
||||
--# -path=.:../../prelude
|
||||
|
||||
--1 A Simple English Resource Morphology
|
||||
--
|
||||
-- Aarne Ranta 2002 -- 2005
|
||||
--
|
||||
-- This resource morphology contains definitions needed in the resource
|
||||
-- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which
|
||||
-- gives a higher-level access to this module.
|
||||
|
||||
resource MorphoBul = ResBul ** open
|
||||
Predef,
|
||||
Prelude,
|
||||
CatBul
|
||||
in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
oper
|
||||
--2 Determiners
|
||||
|
||||
mkDeterminerSg : Str -> Str -> Str -> {s : DGender => Role => Str; n : Number; countable : Bool ; spec : Species} = \vseki,vsiaka,vsiako ->
|
||||
{s = \\g,_ => table DGender [vseki;vseki;vsiaka;vsiako] ! g; n = Sg; countable = False; spec = Indef} ;
|
||||
mkDeterminerPl : Str -> {s : DGender => Role => Str ; n : Number; countable : Bool ; spec : Species} = \vsicki ->
|
||||
{s = \\_,_ => vsicki; n = Pl; countable = False; spec = Indef} ;
|
||||
|
||||
mkQuant : Str -> Str -> Str -> Str -> {s : AForm => Str; spec : Species} = \tozi,tazi,towa,tezi -> {
|
||||
s = \\aform => case aform of {
|
||||
ASg Masc _ => tozi ;
|
||||
ASgMascDefNom => tozi ;
|
||||
ASg Fem _ => tazi ;
|
||||
ASg Neut _ => towa ;
|
||||
APl _ => tezi
|
||||
};
|
||||
spec = Indef
|
||||
} ;
|
||||
|
||||
|
||||
--2 Verbs
|
||||
|
||||
mkVerb : (_,_,_,_,_,_,_,_,_:Str) -> VTable =
|
||||
\cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti ->
|
||||
table {
|
||||
VPres Sg P1 => cheta;
|
||||
VPres Sg P2 => chete + "ø";
|
||||
VPres Sg P3 => chete;
|
||||
VPres Pl P1 => case chete of {
|
||||
_ + ("à"|"ÿ") => chete + "ìå";
|
||||
_ => chete + "ì"
|
||||
};
|
||||
VPres Pl P2 => chete + "òå";
|
||||
VPres Pl P3 => case cheta of {
|
||||
vika + "ì" => case chete of {
|
||||
dad + "å" => dad + "àò";
|
||||
vika => vika + "ò"
|
||||
};
|
||||
_ => cheta + "ò"
|
||||
};
|
||||
VAorist Sg P1 => chetoh;
|
||||
VAorist Sg _ => case chetoh of {
|
||||
chet+"îõ" => chete;
|
||||
zova+ "õ" => zova
|
||||
};
|
||||
VAorist Pl P1 => chetoh + "ìå";
|
||||
VAorist Pl P2 => chetoh + "òå";
|
||||
VAorist Pl P3 => chetoh + "à";
|
||||
VImperfect Sg P1 => chetqh;
|
||||
VImperfect Sg _ => case chete of {
|
||||
rabot + "è" => rabot + "eøå";
|
||||
_ => chete + "øå"
|
||||
};
|
||||
VImperfect Pl P1 => chetqh + "ìå";
|
||||
VImperfect Pl P2 => chetqh + "òå";
|
||||
VImperfect Pl P3 => chetqh + "à";
|
||||
VPerfect aform =>let chel1 : Str =
|
||||
case chel of {
|
||||
pas+"úë" => pas+"ë";
|
||||
_ => chel
|
||||
}
|
||||
in (mkAdjective chel
|
||||
(chel+"èÿ")
|
||||
(chel+"èÿò")
|
||||
(chel1+"a")
|
||||
(chel1+"àòà")
|
||||
(chel1+"î")
|
||||
(chel1+"îòî")
|
||||
(ia2e chel1+"è")
|
||||
(ia2e chel1+"èòå")).s ! aform ;
|
||||
VPluPerfect aform => regAdjective chetql ! aform ;
|
||||
VPassive aform => regAdjective cheten ! aform ;
|
||||
VPresPart aform => regAdjective chetqst ! aform ;
|
||||
VImperative Sg => cheti;
|
||||
VImperative Pl => case cheti of {
|
||||
chet + "è" => chet + "åòå";
|
||||
ela => ela + "òå"
|
||||
};
|
||||
VGerund => case chete of {
|
||||
rabot + "è" => rabot + "åéêè";
|
||||
_ => chete + "éêè"
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
--2 Nouns
|
||||
|
||||
mkNoun : Str -> Str -> Str -> Str -> DGender -> N = \sg,pl,count,voc,g -> {
|
||||
s = table {
|
||||
NF Sg Indef => sg ;
|
||||
NF Sg Def => case sg of {
|
||||
_+"à"=>sg+"òà" ;
|
||||
_+"ÿ"=>sg+"òà" ;
|
||||
_+"î"=>sg+"òî" ;
|
||||
_+"å"=>sg+"òî" ;
|
||||
_+"è"=>sg+"òî" ;
|
||||
s+"é"=>s +"ÿ" ;
|
||||
_+("òåë"|"àð"|"ÿð"|"äåí"
|
||||
|"ïúò"|"îãúí"|"ñúí"
|
||||
|"êîí"|"êðàë"|"öàð"
|
||||
|"çåò"|"ëàêúò"|"íîêúò")
|
||||
=>sg +"ÿ" ;
|
||||
_ =>case g of {
|
||||
DFem => sg+"òà" ;
|
||||
_ => sg+"à"
|
||||
}
|
||||
} ;
|
||||
NF Pl Indef => pl ;
|
||||
NF Pl Def => case pl of {
|
||||
_+"à"=>pl+"òà" ;
|
||||
_+"å"=>pl+"òå" ;
|
||||
_+"è"=>pl+"òå" ;
|
||||
s+"ÿ"=>s +"òà" ;
|
||||
s =>s +"òå"
|
||||
} ;
|
||||
NFSgDefNom => case sg of {
|
||||
_+"à"=>sg+"òà" ;
|
||||
_+"ÿ"=>sg+"òà" ;
|
||||
_+"î"=>sg+"òî" ;
|
||||
_+"å"=>sg+"òî" ;
|
||||
_+"è"=>sg+"òî" ;
|
||||
s+"é"=>s +"ÿò" ;
|
||||
_+("òåë"|"àð"|"ÿð"|"äåí"
|
||||
|"ïúò"|"îãúí"|"ñúí"
|
||||
|"êîí"|"êðàë"|"öàð"
|
||||
|"çåò"|"ëàêúò"|"íîêúò")
|
||||
=>sg+"ÿò" ;
|
||||
_ =>case g of {
|
||||
DFem => sg+"òà" ;
|
||||
_ => sg+"úò"
|
||||
}
|
||||
} ;
|
||||
NFPlCount => count ;
|
||||
NFVocative => voc
|
||||
} ;
|
||||
g = g ;
|
||||
lock_N = <>
|
||||
} ;
|
||||
|
||||
|
||||
--2 Adjectives
|
||||
|
||||
mkAdjective : (_,_,_,_,_,_,_,_,_ : Str) -> A =
|
||||
\dobyr,dobria,dobriat,dobra,dobrata,dobro,dobroto,dobri,dobrite -> {
|
||||
s = table {
|
||||
ASg Masc Indef => dobyr ;
|
||||
ASg Masc Def => dobria ;
|
||||
ASgMascDefNom => dobriat ;
|
||||
ASg Fem Indef => dobra ;
|
||||
ASg Fem Def => dobrata ;
|
||||
ASg Neut Indef => dobro ;
|
||||
ASg Neut Def => dobroto ;
|
||||
APl Indef => dobri ;
|
||||
APl Def => dobrite
|
||||
} ;
|
||||
lock_A = <>
|
||||
} ;
|
||||
}
|
||||
182
lib/resource-1.4/bulgarian/MorphoFunsBul.gf
Normal file
182
lib/resource-1.4/bulgarian/MorphoFunsBul.gf
Normal file
@@ -0,0 +1,182 @@
|
||||
--# -path=.:../abstract:../../prelude:../common
|
||||
|
||||
resource MorphoFunsBul = open
|
||||
Prelude,
|
||||
CatBul,
|
||||
MorphoBul
|
||||
in {
|
||||
|
||||
oper
|
||||
--2 Adverbs
|
||||
|
||||
-- Adverbs are not inflected. Most lexical ones have position
|
||||
-- after the verb. Some can be preverbal (e.g. "always").
|
||||
|
||||
mkAdv : Str -> Adv = \x -> ss x ** {lock_Adv = <>} ;
|
||||
mkAdV : Str -> AdV = \x -> ss x ** {lock_AdV = <>} ;
|
||||
|
||||
-- Adverbs modifying adjectives and sentences can also be formed.
|
||||
|
||||
mkAdA : Str -> AdA = \x -> ss x ** {lock_AdA = <>} ;
|
||||
|
||||
|
||||
--2 Adjectives
|
||||
--
|
||||
|
||||
AS, A2S, AV : Type = A ;
|
||||
A2V : Type = A2 ;
|
||||
|
||||
mkA2 : A -> Prep -> A2 ;
|
||||
mkA2 a p = a ** {c2 = p.s ; lock_A2 = <>} ;
|
||||
|
||||
mkAS : A -> AS ;
|
||||
mkAS v = v ** {lock_A = <>} ;
|
||||
|
||||
mkA2S : A -> Prep -> A2S ;
|
||||
mkA2S v p = mkA2 v p ** {lock_A = <>} ;
|
||||
|
||||
mkAV : A -> AV ;
|
||||
mkAV v = v ** {lock_A = <>} ;
|
||||
|
||||
mkA2V : A -> Prep -> A2V ;
|
||||
mkA2V v p = mkA2 v p ** {lock_A2 = <>} ;
|
||||
|
||||
|
||||
--2 Verbs
|
||||
--
|
||||
|
||||
reflV : V -> Case -> V ;
|
||||
reflV v c = {s = v.s; vtype = VMedial c; lock_V=<>} ;
|
||||
|
||||
phrasalV : V -> Case -> V ;
|
||||
phrasalV v c = {s = v.s; vtype = VPhrasal c; lock_V=<>} ;
|
||||
|
||||
actionV : VTable -> VTable -> V ;
|
||||
actionV imperf perf = {
|
||||
s = table {Imperf=>imperf; Perf=>perf};
|
||||
vtype = VNormal;
|
||||
lock_V=<>
|
||||
} ;
|
||||
|
||||
stateV : VTable -> V ;
|
||||
stateV vtable = {
|
||||
s = \\_=>vtable;
|
||||
vtype = VNormal;
|
||||
lock_V=<>
|
||||
} ;
|
||||
|
||||
--3 Zero-place verbs
|
||||
--
|
||||
|
||||
V0 : Type = V ;
|
||||
mkV0 : V -> V0 ;
|
||||
mkV0 v = v ** {lock_V = <>} ;
|
||||
|
||||
|
||||
--3 Two-place verbs
|
||||
--
|
||||
|
||||
prepV2 : V -> Prep -> V2 ;
|
||||
prepV2 v p = {s = v.s; c2 = p; vtype = v.vtype; lock_V2 = <>} ;
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
dirV2 v = prepV2 v noPrep ;
|
||||
|
||||
|
||||
--3 Three-place verbs
|
||||
--
|
||||
-- Three-place (ditransitive) verbs need two prepositions, of which
|
||||
-- the first one or both can be absent.
|
||||
|
||||
mkV3 : V -> Prep -> Prep -> V3 ; -- speak, with, about
|
||||
mkV3 v p q = {s = v.s; s1 = v.s1; c2 = p; c3 = q; vtype = v.vtype; lock_V3 = <>} ;
|
||||
|
||||
dirV3 : V -> Prep -> V3 ; -- give,_,to
|
||||
dirV3 v p = mkV3 v noPrep p ;
|
||||
|
||||
dirdirV3 : V -> V3 ; -- give,_,_
|
||||
dirdirV3 v = dirV3 v noPrep ;
|
||||
|
||||
|
||||
--3 Other verbs
|
||||
--
|
||||
|
||||
V2S, V2V, V2Q : Type = V2 ;
|
||||
|
||||
mkV2S : V -> Prep -> V2S ;
|
||||
mkV2S v p = prepV2 v p ** {lock_V2 = <>} ;
|
||||
|
||||
mkV2V : V -> Prep -> Prep -> V2V ;
|
||||
mkV2V v p t = prepV2 v p ** {s4 = t ; lock_V2 = <>} ;
|
||||
|
||||
mkV2A : V -> Prep -> V2A ;
|
||||
mkV2A v p = prepV2 v p ** {lock_V2A = <>} ;
|
||||
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
mkV2Q v p = prepV2 v p ** {lock_V2 = <>} ;
|
||||
|
||||
mkVS : V -> VS ;
|
||||
mkVS v = v ** {lock_VS = <>} ;
|
||||
|
||||
mkVV : V -> VV ;
|
||||
mkVV v = v ** {lock_VV = <>} ;
|
||||
|
||||
mkVA : V -> VA ;
|
||||
mkVA v = v ** {lock_VA = <>} ;
|
||||
|
||||
mkV2A : V -> Prep -> V2A ;
|
||||
mkV2A v p = prepV2 v p ** {lock_V2A = <>} ;
|
||||
|
||||
mkVQ : V -> VQ ;
|
||||
mkVQ v = v ** {lock_VQ = <>} ;
|
||||
|
||||
mkV2Q : V -> Prep -> V2Q ;
|
||||
mkV2Q v p = prepV2 v p ** {lock_V2 = <>} ;
|
||||
|
||||
|
||||
--2 Nouns
|
||||
|
||||
--3 Two-place Nouns
|
||||
--
|
||||
|
||||
prepN2 : N -> Prep -> N2 ;
|
||||
prepN2 n p = {s = n.s; g = n.g; c2 = p; lock_N2 = <>} ;
|
||||
|
||||
dirN2 : N -> N2 ;
|
||||
dirN2 n = prepN2 n noPrep ;
|
||||
|
||||
|
||||
--3 Three-place Nouns
|
||||
--
|
||||
|
||||
prepN3 : N -> Prep -> Prep -> N3 ;
|
||||
prepN3 n p q = {s = n.s; g = n.g; c2 = p; c3 = q; lock_N3 = <>} ;
|
||||
|
||||
dirN3 : N -> Prep -> N3 ;
|
||||
dirN3 n p = prepN3 n noPrep p ;
|
||||
|
||||
dirdirN3 : N -> N3 ;
|
||||
dirdirN3 n = dirN3 n noPrep ;
|
||||
|
||||
|
||||
--2 Prepositions
|
||||
--
|
||||
-- A preposition as used for rection in the lexicon, as well as to
|
||||
-- build $PP$s in the resource API, just requires a string.
|
||||
|
||||
mkPrep : Str -> Case -> Prep = \p,c -> {s = p; c = c; lock_Prep = <>} ;
|
||||
noPrep : Prep = mkPrep [] Acc ;
|
||||
|
||||
|
||||
--2 Proper Names
|
||||
--
|
||||
mkPN : Str -> Gender -> PN ;
|
||||
mkPN s g = {s = s; g = g ; lock_PN = <>} ;
|
||||
|
||||
|
||||
--2 IAdv
|
||||
--
|
||||
|
||||
mkIAdv : Str -> IAdv ;
|
||||
mkIAdv s = {s1 = s; s2 = s + "ňî"; lock_IAdv = <>} ;
|
||||
}
|
||||
177
lib/resource-1.4/bulgarian/NounBul.gf
Normal file
177
lib/resource-1.4/bulgarian/NounBul.gf
Normal file
@@ -0,0 +1,177 @@
|
||||
concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
DetCN = detCN ;
|
||||
|
||||
DetNP det = detCN det {s = \\_ => [] ; g = DNeut} ; ---- FIXME AR
|
||||
|
||||
oper
|
||||
detCN :
|
||||
{s : DGender => Role => Str ; n : Number; countable : Bool; spec : Species} ->
|
||||
{s : NForm => Str; g : DGender} ->
|
||||
{s : Role => Str; a : Agr}
|
||||
=
|
||||
\det,cn ->
|
||||
{ s = \\role => let nf = case <det.n,det.spec> of {
|
||||
<Sg,Def> => case role of {
|
||||
RSubj => NFSgDefNom ;
|
||||
RVoc => NFVocative ;
|
||||
_ => NF Sg Def
|
||||
} ;
|
||||
<Sg,Indef> => case role of {
|
||||
RVoc => NFVocative ;
|
||||
_ => NF Sg Indef
|
||||
} ;
|
||||
<Pl,Def> => NF det.n det.spec ;
|
||||
<Pl,Indef> => case cn.g of {
|
||||
DMascPersonal => NF Pl Indef;
|
||||
_ => case det.countable of {
|
||||
True => NFPlCount ;
|
||||
False => NF Pl Indef
|
||||
}
|
||||
}
|
||||
} ;
|
||||
s = det.s ! cn.g ! role ++ cn.s ! nf
|
||||
in case role of {
|
||||
RObj Dat => "íà" ++ s;
|
||||
_ => s
|
||||
} ;
|
||||
a = {gn = gennum cn.g det.n; p = P3} ;
|
||||
} ;
|
||||
|
||||
lin
|
||||
UsePN pn = { s = \\role => case role of {
|
||||
RObj Dat => "íà" ++ pn.s;
|
||||
_ => pn.s
|
||||
} ;
|
||||
a = {gn = GSg pn.g; p = P3}
|
||||
} ;
|
||||
UsePron p = {s = p.s; a=p.a} ;
|
||||
|
||||
PredetNP pred np = {
|
||||
s = \\c => pred.s ! np.a.gn ++ np.s ! c ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
PPartNP np v2 = {
|
||||
s = \\c => np.s ! c ++ v2.s ! Perf ! VPassive (aform np.a.gn Indef c) ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
AdvNP np adv = {
|
||||
s = \\c => np.s ! c ++ adv.s ;
|
||||
a = np.a
|
||||
} ;
|
||||
|
||||
DetQuantOrd, DetArtOrd = \quant, num, ord -> {
|
||||
s = \\g,c => num.s ! dgenderSpecies g quant.spec c ++
|
||||
quant.s ! aform (gennum g num.n) Def c ++
|
||||
ord.s ! aform (gennum g num.n) (case num.nonEmpty of {False => quant.spec; _ => Indef}) c ;
|
||||
n = num.n ;
|
||||
countable = num.nonEmpty ;
|
||||
spec=case <num.nonEmpty,ord.nonEmpty> of {<False,False> => quant.spec; _ => Indef}
|
||||
} ;
|
||||
|
||||
DetQuant quant num = {
|
||||
s = \\g,c => num.s ! dgenderSpecies g quant.spec c ++
|
||||
quant.s ! aform (gennum g num.n) Def c ;
|
||||
n = num.n ;
|
||||
countable = num.nonEmpty ;
|
||||
spec=case num.nonEmpty of {False => quant.spec; _ => Indef} ---- FIXME AR
|
||||
} ;
|
||||
|
||||
DetArtCard quant num = {
|
||||
s = \\g,c => num.s ! dgenderSpecies g quant.spec c ++
|
||||
quant.s ! aform (gennum g num.n) Def c ;
|
||||
n = num.n ;
|
||||
countable = True ;
|
||||
spec= Indef ---- FIXME AR
|
||||
} ;
|
||||
|
||||
---- FIXME AR
|
||||
DetArtPl quant = detCN {
|
||||
s = \\g,c => quant.s ! aform (gennum g Pl) Def c ;
|
||||
n = Pl ;
|
||||
countable = False ;
|
||||
spec=quant.spec;
|
||||
} ;
|
||||
|
||||
---- FIXME AR
|
||||
DetArtSg quant = detCN {
|
||||
s = \\g,c => quant.s ! aform (gennum g Sg) Def c ;
|
||||
n = Sg ;
|
||||
countable = False ;
|
||||
spec=quant.spec;
|
||||
} ;
|
||||
|
||||
PossPron p = {
|
||||
s = p.gen ;
|
||||
spec = Indef
|
||||
} ;
|
||||
|
||||
NumSg = {s = \\_ => []; n = Sg; nonEmpty = False} ;
|
||||
NumPl = {s = \\_ => []; n = Pl; nonEmpty = False} ;
|
||||
|
||||
NumCard n = n ** {nonEmpty = True} ;
|
||||
|
||||
NumDigits n = {s = \\gspec => n.s ! NCard gspec; n = n.n} ;
|
||||
OrdDigits n = {s = \\aform => n.s ! NOrd aform; nonEmpty = True} ;
|
||||
|
||||
NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; n = numeral.n; nonEmpty = True} ;
|
||||
OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform; nonEmpty = True} ;
|
||||
|
||||
AdNum adn num = {s = \\gspec => adn.s ++ num.s ! gspec; n = num.n; nonEmpty = num.nonEmpty} ;
|
||||
|
||||
OrdSuperl a = {s = \\aform => "íàé" ++ "-" ++ a.s ! aform; nonEmpty = True} ;
|
||||
|
||||
DefArt = {
|
||||
s = \\_ => [] ;
|
||||
spec = ResBul.Def
|
||||
} ;
|
||||
|
||||
IndefArt = {
|
||||
s = \\_ => [] ;
|
||||
spec = ResBul.Indef
|
||||
} ;
|
||||
|
||||
MassNP = detCN {
|
||||
s = \\_,_ => [] ;
|
||||
spec = Indef ;
|
||||
countable = False ; n = Sg ---- FIXME is this correct? AR
|
||||
} ;
|
||||
|
||||
UseN noun = noun ;
|
||||
UseN2 noun = noun ;
|
||||
|
||||
ComplN2 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; g=f.g} ;
|
||||
ComplN3 f x = {s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! RObj f.c2.c; c2 = f.c3; g=f.g} ;
|
||||
|
||||
Use2N3 f = {s = f.s ; g=f.g ; c2 = f.c2} ;
|
||||
Use3N3 f = {s = f.s ; g=f.g ; c2 = f.c3} ;
|
||||
|
||||
|
||||
AdjCN ap cn = {
|
||||
s = \\nf => preOrPost ap.isPre (ap.s ! nform2aform nf cn.g) (cn.s ! (indefNForm nf)) ;
|
||||
g = cn.g
|
||||
} ;
|
||||
RelCN cn rs = {
|
||||
s = \\nf => cn.s ! nf ++ rs.s ! gennum cn.g (numNForm nf) ;
|
||||
g = cn.g
|
||||
} ;
|
||||
AdvCN cn ad = {
|
||||
s = \\nf => cn.s ! nf ++ ad.s ;
|
||||
g = cn.g
|
||||
} ;
|
||||
|
||||
SentCN cn sc = {s = \\nf => cn.s ! nf ++ sc.s; g=DNeut} ;
|
||||
|
||||
ApposCN cn np = {s = \\nf => cn.s ! nf ++ np.s ! RSubj; g=cn.g} ;
|
||||
|
||||
---- FIXME AR
|
||||
RelNP np rs = {
|
||||
s = \\r => np.s ! r ++ rs.s ! np.a.gn ; ---- gennum cn.g (numNForm nf) ;
|
||||
a = np.a
|
||||
} ;
|
||||
}
|
||||
132
lib/resource-1.4/bulgarian/NumeralBul.gf
Normal file
132
lib/resource-1.4/bulgarian/NumeralBul.gf
Normal file
@@ -0,0 +1,132 @@
|
||||
concrete NumeralBul of Numeral = CatBul ** open Prelude, ResBul in {
|
||||
|
||||
lincat
|
||||
Digit = {s : DForm => CardOrd => Str} ;
|
||||
Sub10 = {s : DForm => CardOrd => Str; n : Number} ;
|
||||
Sub100 = {s : CardOrd => Str; n : Number; i : Bool} ;
|
||||
Sub1000 = {s : CardOrd => Str; n : Number; i : Bool} ;
|
||||
Sub1000000 = {s : CardOrd => Str; n : Number} ;
|
||||
|
||||
lin num x = x ;
|
||||
lin n2 = mkDigit "äâà" "äâàìà" "äâå" "âòîðè" "äâåñòà" ;
|
||||
lin n3 = mkDigit "òðè" "òðèìà" "òðè" "òðåòè" "òðèñòà" ;
|
||||
lin n4 = mkDigit "÷åòèðè" "÷åòèðèìà" "÷åòèðè" "÷åòâúðòè" "÷åòèðèñòîòèí" ;
|
||||
lin n5 = mkDigit "ïåò" "ïåòèìà" "ïåò" "ïåòè" "ïåòñòîòèí" ;
|
||||
lin n6 = mkDigit "øåñò" "øåñòèìà" "øåñò" "øåñòè" "øåñòñòîòèí" ;
|
||||
lin n7 = mkDigit "ñåäåì" "ñåäìèíà" "ñåäåì" "ñåäìè" "ñåäåìñòîòèí" ;
|
||||
lin n8 = mkDigit "îñåì" "îñìèíà" "îñåì" "îñìè" "îñåìñòîòèí" ;
|
||||
lin n9 = mkDigit "äåâåò" "äåâåòèìà" "äåâåò" "äåâåòè" "äåâåòñòîòèí" ;
|
||||
|
||||
lin pot01 =
|
||||
{s = table {
|
||||
unit => table {
|
||||
NCard DMascIndef => "åäèí" ;
|
||||
NCard DMascDef => "åäèíèÿ" ;
|
||||
NCard DMascDefNom => "åäèíèÿò" ;
|
||||
NCard DMascPersonalIndef => "åäèí" ;
|
||||
NCard DMascPersonalDef => "åäèíèÿ" ;
|
||||
NCard DMascPersonalDefNom => "åäèíèÿò" ;
|
||||
NCard DFemIndef => "åäíà" ;
|
||||
NCard DFemDef => "åäíàòà" ;
|
||||
NCard DNeutIndef => "åäíî" ;
|
||||
NCard DNeutDef => "åäíîòî" ;
|
||||
NOrd aform => case aform of {
|
||||
ASg Masc Indef => "ïúðâè" ;
|
||||
ASg Masc Def => "ïúðâèÿ" ;
|
||||
ASgMascDefNom => "ïúðâèÿò" ;
|
||||
ASg Fem Indef => "ïúðâà" ;
|
||||
ASg Fem Def => "ïúðâàòà" ;
|
||||
ASg Neut Indef => "ïúðâî" ;
|
||||
ASg Neut Def => "ïúðâîòî" ;
|
||||
APl Indef => "ïúðâè" ;
|
||||
APl Def => "ïúðâèòå"
|
||||
}
|
||||
} ;
|
||||
teen => mkCardOrd "åäèíàäåñåò" "åäèíàäåñåòèìà" "åäèíàäåñåò" "åäèíàäåñåòè" ;
|
||||
ten => mkCardOrd "äåñåò" "äåñåòèìà" "äåñåò" "äåñåòè" ;
|
||||
hundred => mkCardOrd "ñòî" "ñòîòèíà" "ñòî" "ñòîòåí"
|
||||
}
|
||||
;n = Sg
|
||||
} ;
|
||||
lin pot0 d = d ** {n = Pl} ;
|
||||
|
||||
lin pot110 = {s=pot01.s ! ten; n = Pl; i = True} ;
|
||||
lin pot111 = {s=pot01.s ! teen; n = Pl; i = True} ;
|
||||
lin pot1to19 d = {s = d.s ! teen; n = Pl; i = True} ;
|
||||
lin pot0as1 n = {s = n.s ! unit; n = n.n; i = True} ;
|
||||
lin pot1 d = {s = d.s ! ten; n = Pl; i = True} ;
|
||||
lin pot1plus d e = {
|
||||
s = \\c => d.s ! ten ! NCard DMascIndef ++ "è" ++ e.s ! unit ! c ; n = Pl; i = False} ;
|
||||
|
||||
lin pot1as2 n = n ;
|
||||
lin pot2 n = {s = \\c => n.s ! hundred ! c; n = Pl; i = True} ;
|
||||
lin pot2plus d e = {
|
||||
s = \\c => d.s ! hundred ! NCard DMascIndef ++ case e.i of {False => []; True => "è"} ++ e.s ! c ;
|
||||
n = Pl ;
|
||||
i = False
|
||||
} ;
|
||||
|
||||
lin pot2as3 n = n ;
|
||||
lin pot3 n = {
|
||||
s = \\c => case n.n of {
|
||||
Sg => mkCardOrd "õèëÿäà" "õèëÿäà" "õèëÿäà" "õèëÿäåí" ! c ;
|
||||
Pl => n.s ! NCard DFemIndef ++ mkCardOrd "õèëÿäè" "õèëÿäè" "õèëÿäè" "õèëÿäåí" ! c
|
||||
} ;
|
||||
n = Pl
|
||||
} ;
|
||||
lin pot3plus n m = {
|
||||
s = \\c => (pot3 (n ** {lock_Sub1000=<>})).s ! NCard DMascIndef ++ case m.i of {False => []; True => "è"} ++ m.s ! c ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
|
||||
-- numerals as sequences of digits
|
||||
|
||||
lincat
|
||||
Dig = TDigit ;
|
||||
|
||||
lin
|
||||
IDig d = d ** {tail = T1} ;
|
||||
|
||||
IIDig d i = {
|
||||
s = \\o => d.s ! NCard DMascIndef ++ commaIf i.tail ++ i.s ! o ;
|
||||
n = Pl ;
|
||||
tail = inc i.tail
|
||||
} ;
|
||||
|
||||
D_0 = mk2Dig "0" "0â" ;
|
||||
D_1 = mk3Dig "1" "1âè" Sg ;
|
||||
D_2 = mk2Dig "2" "2ðè" ;
|
||||
D_3 = mkDig "3" ;
|
||||
D_4 = mkDig "4" ;
|
||||
D_5 = mkDig "5" ;
|
||||
D_6 = mkDig "6" ;
|
||||
D_7 = mk2Dig "7" "7ìè" ;
|
||||
D_8 = mk2Dig "8" "8ìè" ;
|
||||
D_9 = mkDig "9" ;
|
||||
|
||||
oper
|
||||
commaIf : DTail -> Str = \t -> case t of {
|
||||
T3 => "," ;
|
||||
_ => []
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "òè") ;
|
||||
|
||||
mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
|
||||
s = table {NCard _ => c ; NOrd aform => regAdjective o ! aform} ;
|
||||
n = n
|
||||
} ;
|
||||
|
||||
TDigit = {
|
||||
n : Number ;
|
||||
s : CardOrd => Str
|
||||
} ;
|
||||
}
|
||||
1455
lib/resource-1.4/bulgarian/ParadigmsBul.gf
Normal file
1455
lib/resource-1.4/bulgarian/ParadigmsBul.gf
Normal file
File diff suppressed because it is too large
Load Diff
26
lib/resource-1.4/bulgarian/PhraseBul.gf
Normal file
26
lib/resource-1.4/bulgarian/PhraseBul.gf
Normal file
@@ -0,0 +1,26 @@
|
||||
concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in {
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
|
||||
UttS s = s ;
|
||||
UttQS qs = {s = qs.s ! QDir} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! GSg Masc} ;
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! GPl} ;
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! GPl} ;
|
||||
|
||||
UttIP ip = {s = ip.s ! RSubj} ;
|
||||
UttIAdv iadv = {s = iadv.s1} ;
|
||||
UttNP np = {s = np.s ! RSubj} ;
|
||||
UttVP vp = {s = vp.ad ! False ++
|
||||
"äà" ++
|
||||
vp.s ! Pres ! Simul ! Pos ! agrP3 (GSg Neut) ! False ! Perf ++
|
||||
vp.s2 ! agrP3 (GSg Neut)} ;
|
||||
UttAdv adv = adv ;
|
||||
|
||||
NoPConj = {s = []} ;
|
||||
PConjConj conj = {s = conj.s2} ; ---- AR
|
||||
|
||||
NoVoc = {s = []} ;
|
||||
VocNP np = {s = "," ++ np.s ! RVoc} ;
|
||||
}
|
||||
64
lib/resource-1.4/bulgarian/QuestionBul.gf
Normal file
64
lib/resource-1.4/bulgarian/QuestionBul.gf
Normal file
@@ -0,0 +1,64 @@
|
||||
concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
|
||||
QuestCl cl = {
|
||||
s = \\t,a,p =>
|
||||
let cls = cl.s ! t ! a ! p
|
||||
in table {
|
||||
QDir => cls ! Quest ;
|
||||
QIndir => "àêî" ++ cls ! Main
|
||||
} ---- "whether" in ExtEng
|
||||
} ;
|
||||
|
||||
QuestVP ip vp =
|
||||
let cl = mkClause (ip.s ! RSubj) {gn = ip.gn ; p = P3} vp
|
||||
in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! Main} ;
|
||||
|
||||
QuestSlash ip slash =
|
||||
mkQuestion {s1 = slash.c2.s ++ ip.s ! (RObj slash.c2.c); s2 = slash.c2.s ++ ip.s ! (RObj slash.c2.c)} slash ;
|
||||
|
||||
QuestIAdv iadv cl = mkQuestion iadv cl ;
|
||||
|
||||
QuestIComp icomp np =
|
||||
mkQuestion icomp (mkClause (np.s ! RSubj) np.a (predV verbBe)) ;
|
||||
|
||||
PrepIP p ip = {s1 = p.s ++ ip.s ! RSubj; s2 = p.s ++ ip.s ! RSubj} ;
|
||||
|
||||
AdvIP ip adv = {
|
||||
s = \\c => ip.s ! c ++ adv.s ;
|
||||
gn = ip.gn
|
||||
} ;
|
||||
|
||||
CompIAdv a = a ;
|
||||
|
||||
---- FIXME: the rest of this module guessed by AR
|
||||
|
||||
IdetCN idet cn = {
|
||||
s = \\c => let nf = case <idet.n, idet.nonEmpty> of {
|
||||
<Pl,True> => NFPlCount ;
|
||||
_ => NF idet.n Indef
|
||||
}
|
||||
in idet.s ! gennum cn.g idet.n ++
|
||||
cn.s ! nf ;
|
||||
gn = gennum cn.g idet.n
|
||||
} ;
|
||||
|
||||
IdetIP idet = let g = DNeut in {
|
||||
s = \\c => idet.s ! gennum g idet.n ;
|
||||
gn = gennum g idet.n
|
||||
} ;
|
||||
|
||||
IdetQuant iquant num = {
|
||||
s = \\gn => iquant.s ! gn ++
|
||||
num.s ! dgenderSpecies (genGenNum gn) Indef RSubj ;
|
||||
n = num.n ;
|
||||
nonEmpty = num.nonEmpty
|
||||
} ;
|
||||
|
||||
---- what should there be in s1,s2 ? AR
|
||||
CompIP ip = {s1 = ip.s ! RSubj ; s2 = []} ;
|
||||
|
||||
}
|
||||
32
lib/resource-1.4/bulgarian/RelativeBul.gf
Normal file
32
lib/resource-1.4/bulgarian/RelativeBul.gf
Normal file
@@ -0,0 +1,32 @@
|
||||
concrete RelativeBul of Relative = CatBul ** open ResBul in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
RelCl cl = {
|
||||
s = \\t,a,p,gn => suchRP ! gn ++ "֌" ++ cl.s ! t ! a ! p ! Main ;
|
||||
role = RSubj
|
||||
} ;
|
||||
|
||||
RelVP rp vp = {
|
||||
s = \\t,a,p,gn =>
|
||||
let
|
||||
cl = mkClause (rp.s ! gn) {gn=gn; p=P3} vp
|
||||
in
|
||||
cl.s ! t ! a ! p ! Main ;
|
||||
role = RSubj
|
||||
} ;
|
||||
|
||||
RelSlash rp slash = {
|
||||
s = \\t,a,p,gn => slash.c2.s ++ (rp.s ! gn) ++ slash.s ! t ! a ! p ! Main ;
|
||||
role = RObj Acc
|
||||
} ;
|
||||
|
||||
FunRP p np rp = {
|
||||
s = \\gn => np.s ! RObj Acc ++ p.s ++ rp.s ! gn ;
|
||||
} ;
|
||||
|
||||
IdRP = {
|
||||
s = whichRP ;
|
||||
} ;
|
||||
}
|
||||
583
lib/resource-1.4/bulgarian/ResBul.gf
Normal file
583
lib/resource-1.4/bulgarian/ResBul.gf
Normal file
@@ -0,0 +1,583 @@
|
||||
--# -path=.:../abstract:../common:../../prelude
|
||||
|
||||
--1 Bulgarian auxiliary operations.
|
||||
|
||||
-- This module contains operations that are needed to make the
|
||||
-- resource syntax work. To define everything that is needed to
|
||||
-- implement $Test$, it moreover contains regular lexical
|
||||
-- patterns needed for $Lex$.
|
||||
|
||||
resource ResBul = ParamX ** open Prelude in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
-- Some parameters, such as $Number$, are inherited from $ParamX$.
|
||||
|
||||
--2 For $Noun$
|
||||
|
||||
-- This is the worst-case $Case$ needed for pronouns.
|
||||
|
||||
param
|
||||
Role = RSubj | RObj Case | RVoc ;
|
||||
Case = Acc | Dat;
|
||||
|
||||
NForm =
|
||||
NF Number Species
|
||||
| NFSgDefNom
|
||||
| NFPlCount
|
||||
| NFVocative
|
||||
;
|
||||
|
||||
GenNum = GSg Gender | GPl ;
|
||||
|
||||
-- Agreement of $NP$ is a record. We'll add $Gender$ later.
|
||||
|
||||
oper
|
||||
Agr = {gn : GenNum ; p : Person} ;
|
||||
|
||||
param
|
||||
Gender = Masc | Fem | Neut ;
|
||||
|
||||
Species = Indef | Def ;
|
||||
|
||||
-- The plural never makes a gender distinction.
|
||||
|
||||
--2 For $Verb$
|
||||
|
||||
Aspect = Imperf | Perf ;
|
||||
|
||||
VForm =
|
||||
VPres Number Person
|
||||
| VAorist Number Person
|
||||
| VImperfect Number Person
|
||||
| VPerfect AForm
|
||||
| VPluPerfect AForm
|
||||
| VPassive AForm
|
||||
| VPresPart AForm
|
||||
| VImperative Number
|
||||
| VGerund
|
||||
;
|
||||
|
||||
VType =
|
||||
VNormal
|
||||
| VMedial Case
|
||||
| VPhrasal Case
|
||||
;
|
||||
|
||||
-- The order of sentence is needed already in $VP$.
|
||||
|
||||
Order = Main | Inv | Quest ;
|
||||
|
||||
--2 For $Adjective$
|
||||
|
||||
AForm =
|
||||
ASg Gender Species
|
||||
| ASgMascDefNom
|
||||
| APl Species
|
||||
;
|
||||
|
||||
--2 For $Numeral$
|
||||
|
||||
DGender =
|
||||
DMasc
|
||||
| DMascPersonal
|
||||
| DFem
|
||||
| DNeut
|
||||
;
|
||||
|
||||
DGenderSpecies =
|
||||
DMascIndef
|
||||
| DMascDef
|
||||
| DMascDefNom
|
||||
| DMascPersonalIndef
|
||||
| DMascPersonalDef
|
||||
| DMascPersonalDefNom
|
||||
| DFemIndef
|
||||
| DFemDef
|
||||
| DNeutIndef
|
||||
| DNeutDef
|
||||
;
|
||||
|
||||
CardOrd = NCard DGenderSpecies | NOrd AForm ;
|
||||
DForm = unit | teen | ten | hundred ;
|
||||
|
||||
--2 Transformations between parameter types
|
||||
|
||||
oper
|
||||
agrP3 : GenNum -> Agr = \gn ->
|
||||
{gn = gn; p = P3} ;
|
||||
|
||||
conjGenNum : GenNum -> GenNum -> GenNum = \a,b ->
|
||||
case <a,b> of {
|
||||
<GSg _,GSg g> => GSg g ;
|
||||
_ => GPl
|
||||
} ;
|
||||
|
||||
conjAgr : Agr -> Agr -> Agr = \a,b -> {
|
||||
gn = conjGenNum a.gn b.gn ;
|
||||
p = conjPerson a.p b.p
|
||||
} ;
|
||||
|
||||
gennum : DGender -> Number -> GenNum = \g,n ->
|
||||
case n of {
|
||||
Sg => GSg (case g of {
|
||||
DMasc => Masc ;
|
||||
DMascPersonal => Masc ;
|
||||
DFem => Fem ;
|
||||
DNeut => Neut
|
||||
}) ;
|
||||
Pl => GPl
|
||||
} ;
|
||||
|
||||
numGenNum : GenNum -> Number = \gn ->
|
||||
case gn of {
|
||||
GSg _ => Sg ;
|
||||
GPl => Pl
|
||||
} ;
|
||||
|
||||
|
||||
---- FIXME: added by AR, used in QuestionBul and StructuralBul
|
||||
genGenNum : GenNum -> DGender = \g -> case g of {
|
||||
GSg Masc => DMasc ;
|
||||
GSg Fem => DFem ;
|
||||
GSg Neut => DNeut ;
|
||||
_ => DNeut ----
|
||||
} ;
|
||||
|
||||
|
||||
aform : GenNum -> Species -> Role -> AForm = \gn,spec,role ->
|
||||
case gn of {
|
||||
GSg g => case <g,spec,role> of {
|
||||
<Masc,Def,RSubj> => ASgMascDefNom ;
|
||||
_ => ASg g spec
|
||||
} ;
|
||||
GPl => APl spec
|
||||
} ;
|
||||
|
||||
dgenderSpecies : DGender -> Species -> Role -> DGenderSpecies =
|
||||
\g,spec,role -> case <g,spec> of {
|
||||
<DMasc,Indef> => DMascIndef ;
|
||||
<DMasc,Def> => case role of {
|
||||
RSubj => DMascDefNom ;
|
||||
_ => DMascDef
|
||||
} ;
|
||||
<DMascPersonal,Indef> => DMascPersonalIndef ;
|
||||
<DMascPersonal,Def> => case role of {
|
||||
RSubj => DMascPersonalDefNom ;
|
||||
_ => DMascPersonalDef
|
||||
} ;
|
||||
<DFem ,Indef> => DFemIndef ;
|
||||
<DFem ,Def> => DFemDef ;
|
||||
<DNeut,Indef> => DNeutIndef ;
|
||||
<DNeut,Def> => DNeutDef
|
||||
} ;
|
||||
|
||||
nform2aform : NForm -> DGender -> AForm
|
||||
= \nf,g -> case nf of {
|
||||
NF n spec => aform (gennum g n) spec (RObj Acc) ;
|
||||
NFSgDefNom => aform (gennum g Sg) Def RSubj ;
|
||||
NFPlCount => APl Indef ;
|
||||
NFVocative => aform (gennum g Sg) Indef (RObj Acc)
|
||||
} ;
|
||||
|
||||
indefNForm : NForm -> NForm
|
||||
= \nf -> case nf of {
|
||||
NF n spec => NF n Indef ;
|
||||
NFSgDefNom => NF Sg Indef ;
|
||||
NFPlCount => NFPlCount ;
|
||||
NFVocative => NFVocative
|
||||
} ;
|
||||
|
||||
numNForm : NForm -> Number
|
||||
= \nf -> case nf of {
|
||||
NF n spec => n ;
|
||||
NFSgDefNom => Sg ;
|
||||
NFPlCount => Pl ;
|
||||
NFVocative => Sg
|
||||
} ;
|
||||
|
||||
oper
|
||||
-- For $Verb$.
|
||||
VTable = VForm => Str ;
|
||||
|
||||
Verb : Type = {
|
||||
s : Aspect => VTable ;
|
||||
vtype : VType
|
||||
} ;
|
||||
|
||||
VP : Type = {
|
||||
s : Tense => Anteriority => Polarity => Agr => Bool => Aspect => Str ;
|
||||
imp : Polarity => Number => Aspect => Str ;
|
||||
ad : Bool => Str ; -- sentential adverb
|
||||
s2 : Agr => Str ;
|
||||
subjRole : Role
|
||||
} ;
|
||||
|
||||
predV : Verb -> VP =
|
||||
\verb ->
|
||||
{ s = \\t,a,p,agr,q,asp =>
|
||||
let clitic = case verb.vtype of {
|
||||
VNormal => {s=[]; agr=agr} ;
|
||||
VMedial c => {s=reflClitics ! c; agr=agr} ;
|
||||
VPhrasal c => {s=personalClitics ! c ! agr.gn ! agr.p; agr={gn=GSg Neut; p=P3}}
|
||||
} ;
|
||||
|
||||
present = verb.s ! asp ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ;
|
||||
presentImperf = verb.s ! Imperf ! (VPres (numGenNum clitic.agr.gn) clitic.agr.p) ;
|
||||
aorist = verb.s ! asp ! (VAorist (numGenNum clitic.agr.gn) clitic.agr.p) ;
|
||||
perfect = verb.s ! asp ! (VPerfect (aform clitic.agr.gn Indef (RObj Acc))) ;
|
||||
|
||||
auxPres = auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
|
||||
auxAorist = auxBe ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
|
||||
auxCond = auxWould ! VAorist (numGenNum clitic.agr.gn) clitic.agr.p ;
|
||||
|
||||
apc : Str -> Str = \s ->
|
||||
case <numGenNum clitic.agr.gn, clitic.agr.p> of {
|
||||
<Sg, P3> => clitic.s++s++auxPres ;
|
||||
_ => auxPres++s++clitic.s
|
||||
} ;
|
||||
|
||||
li = case q of {True => "ëè"; False => []} ;
|
||||
|
||||
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => case q of {True => {s1=[]; s2="ëè"++apc []};
|
||||
False => {s1=apc []; s2=[]}} ;
|
||||
Neg => {s1="íå"++apc li; s2=[]}
|
||||
} ;
|
||||
|
||||
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => case q of {True => {s1=[]; s2="ëè"++s};
|
||||
False => {s1=s; s2=[]}} ;
|
||||
Neg => case verb.vtype of
|
||||
{VNormal => {s1="íå"; s2=li} ;
|
||||
_ => {s1="íå"++s++li; s2=[]}}
|
||||
} ;
|
||||
|
||||
vf3 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => {s1="ùå"++s; s2=li} ;
|
||||
Neg => {s1="íÿìà"++li++"äà"++s; s2=[]}
|
||||
} ;
|
||||
|
||||
vf4 : Str -> {s1 : Str; s2 : Str} = \s ->
|
||||
case p of {
|
||||
Pos => {s1= s++li++clitic.s; s2=[]} ;
|
||||
Neg => {s1="íå"++s++li++clitic.s; s2=[]}
|
||||
} ;
|
||||
|
||||
verbs : {aux:{s1:Str; s2:Str}; main:Str}
|
||||
= case <t,a> of {
|
||||
<Pres,Simul> => {aux=vf2 clitic.s; main=presentImperf} ;
|
||||
<Pres,Anter> => {aux=vf1 clitic.s; main=perfect} ;
|
||||
<Past,Simul> => {aux=vf2 clitic.s; main=aorist} ;
|
||||
<Past,Anter> => {aux=vf4 auxAorist; main=perfect} ;
|
||||
<Fut, Simul> => {aux=vf3 clitic.s; main=present} ;
|
||||
<Fut, Anter> => {aux=vf3 (apc []); main=perfect} ;
|
||||
<Cond,_ > => {aux=vf4 auxCond ; main=perfect}
|
||||
}
|
||||
|
||||
in verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ;
|
||||
imp = \\p,n,asp =>
|
||||
case p of {
|
||||
Pos => verb.s ! asp ! VImperative n ;
|
||||
Neg => "íå" ++ verb.s ! Imperf ! VImperative n
|
||||
} ;
|
||||
ad = \\_ => [] ;
|
||||
s2 = \\_ => [] ;
|
||||
subjRole = case verb.vtype of {
|
||||
VNormal => RSubj ;
|
||||
VMedial _ => RSubj ;
|
||||
VPhrasal c => RObj c
|
||||
}
|
||||
} ;
|
||||
|
||||
insertObj : (Agr => Str) -> VP -> VP = \obj,vp -> {
|
||||
s = vp.s ;
|
||||
imp = vp.imp ;
|
||||
ad = vp.ad ;
|
||||
s2 = \\a => vp.s2 ! a ++ obj ! a ;
|
||||
subjRole = vp.subjRole
|
||||
} ;
|
||||
|
||||
auxBe : VTable =
|
||||
table {
|
||||
VPres Sg P1 => "ñúì" ;
|
||||
VPres Sg P2 => "ñè" ;
|
||||
VPres Sg P3 => "å" ;
|
||||
VPres Pl P1 => "ñìå" ;
|
||||
VPres Pl P2 => "ñòå" ;
|
||||
VPres Pl P3 => "ñà" ;
|
||||
VAorist Sg P1 => "áÿõ" ;
|
||||
VAorist Sg _ => "áåøå" ;
|
||||
VAorist Pl P1 => "áÿõìå" ;
|
||||
VAorist Pl P2 => "áÿõòå" ;
|
||||
VAorist Pl P3 => "áÿõà" ;
|
||||
VImperfect Sg P1 => "áÿõ" ;
|
||||
VImperfect Sg _ => "áåøå" ;
|
||||
VImperfect Pl P1 => "áÿõìå" ;
|
||||
VImperfect Pl P2 => "áÿõòå" ;
|
||||
VImperfect Pl P3 => "áÿõà" ;
|
||||
VPerfect aform => regAdjective "áèë" ! aform ;
|
||||
VPluPerfect aform => regAdjective "áèë" ! aform ;
|
||||
VPassive aform => regAdjective "áúäåí" ! aform ;
|
||||
VPresPart aform => regAdjective "áúäåù" ! aform ;
|
||||
VImperative Sg => "áúäè" ;
|
||||
VImperative Pl => "áúäåòå" ;
|
||||
VGerund => "áèäåéêè"
|
||||
} ;
|
||||
|
||||
auxWould : VTable =
|
||||
table {
|
||||
VPres Sg P1 => "áúäà" ;
|
||||
VPres Sg P2 => "áúäåø" ;
|
||||
VPres Sg P3 => "áúäå" ;
|
||||
VPres Pl P1 => "áúäåì" ;
|
||||
VPres Pl P2 => "áúäåòå" ;
|
||||
VPres Pl P3 => "áúäàò" ;
|
||||
VAorist Sg P1 => "áèõ" ;
|
||||
VAorist Sg _ => "áè" ;
|
||||
VAorist Pl P1 => "áèõìå" ;
|
||||
VAorist Pl P2 => "áèõòå" ;
|
||||
VAorist Pl P3 => "áèõà" ;
|
||||
VImperfect Sg P1 => "áúäåõ" ;
|
||||
VImperfect Sg _ => "áúäåøå" ;
|
||||
VImperfect Pl P1 => "áúäåõìå" ;
|
||||
VImperfect Pl P2 => "áúäåõòå" ;
|
||||
VImperfect Pl P3 => "áúäåõà" ;
|
||||
VPerfect aform => regAdjective "áèë" ! aform ;
|
||||
VPluPerfect aform => regAdjective "áúäåë" ! aform ;
|
||||
VPassive aform => regAdjective "áúäåí" ! aform ;
|
||||
VPresPart aform => regAdjective "áúäåù" ! aform ;
|
||||
VImperative Sg => "áúäè" ;
|
||||
VImperative Pl => "áúäåòå" ;
|
||||
VGerund => "áúäåéêè"
|
||||
} ;
|
||||
|
||||
verbBe : Verb = {s=\\_=>auxBe ; vtype=VNormal} ;
|
||||
verbWould : Verb = {s=\\_=>auxWould ; vtype=VNormal} ;
|
||||
|
||||
reflClitics : Case => Str = table {Acc => "ñå"; Dat => "ñè"} ;
|
||||
|
||||
personalClitics : Case => GenNum => Person => Str =
|
||||
table {
|
||||
Acc => table {
|
||||
GSg g => table {
|
||||
P1 => "ìå" ;
|
||||
P2 => "òå" ;
|
||||
P3 => case g of {
|
||||
Masc => "ãî" ;
|
||||
Fem => "ÿ" ;
|
||||
Neut => "ãî"
|
||||
}
|
||||
} ;
|
||||
GPl => table {
|
||||
P1 => "íè" ;
|
||||
P2 => "âè" ;
|
||||
P3 => "ãè"
|
||||
}
|
||||
} ;
|
||||
Dat => table {
|
||||
GSg g => table {
|
||||
P1 => "ìè" ;
|
||||
P2 => "òè" ;
|
||||
P3 => case g of {
|
||||
Masc => "ìó" ;
|
||||
Fem => "é" ;
|
||||
Neut => "ìó"
|
||||
}
|
||||
} ;
|
||||
GPl => table {
|
||||
P1 => "íè" ;
|
||||
P2 => "âè" ;
|
||||
P3 => "èì"
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "à","ú","î" or "ó"
|
||||
\s -> case s of {
|
||||
x@(_*+_) + "ÿ" + y@(("á"|"â"|"ã"|"ä"|"æ"|"ç"|"ê"|"ë"|"ì"|"í"|"ï"|"ð"|"ñ"|"ò"|"ô"|"õ"|"ö"|"÷"|"ø"|"ù")*)
|
||||
=> x+"e"+y;
|
||||
_ => s
|
||||
};
|
||||
|
||||
regAdjective : Str -> AForm => Str =
|
||||
\base -> table {
|
||||
ASg Masc Indef => base ;
|
||||
ASg Masc Def => (base+"èÿ") ;
|
||||
ASgMascDefNom => (base+"èÿò") ;
|
||||
ASg Fem Indef => (base+"a") ;
|
||||
ASg Fem Def => (base+"àòà") ;
|
||||
ASg Neut Indef => (base+"î") ;
|
||||
ASg Neut Def => (base+"îòî") ;
|
||||
APl Indef => (ia2e base+"è") ;
|
||||
APl Def => (ia2e base+"èòå")
|
||||
};
|
||||
|
||||
-- For $Sentence$.
|
||||
|
||||
Clause : Type = {
|
||||
s : Tense => Anteriority => Polarity => Order => Str
|
||||
} ;
|
||||
|
||||
mkClause : Str -> Agr -> VP -> Clause =
|
||||
\subj,agr,vp -> {
|
||||
s = \\t,a,p,o =>
|
||||
let
|
||||
verb : Bool => Str
|
||||
= \\q => vp.ad ! q ++ vp.s ! t ! a ! p ! agr ! q ! Perf ;
|
||||
compl = vp.s2 ! agr
|
||||
in case o of {
|
||||
Main => subj ++ verb ! False ++ compl ;
|
||||
Inv => verb ! False ++ compl ++ subj ;
|
||||
Quest => subj ++ verb ! True ++ compl
|
||||
}
|
||||
} ;
|
||||
|
||||
-- For $Numeral$.
|
||||
|
||||
mkDigit : Str -> Str -> Str -> Str -> Str -> {s : DForm => CardOrd => Str} =
|
||||
\dva, dvama, dve, vtori, dvesta ->
|
||||
{s = table {
|
||||
unit => mkCardOrd dva dvama dve vtori ;
|
||||
teen => mkCardOrd (dva+"íàäåñåò") (dva+"íàäåñåòèìà") (dva+"íàäåñåò") (dva+"íàäåñåòè") ;
|
||||
ten => mkCardOrd (dva+"äåñåò") (dva+"äåñåòèìà") (dva+"äåñåò") (dva+"äåñåòè") ;
|
||||
hundred => let dvesten : Str
|
||||
= case dvesta of {
|
||||
dvest+"à" => dvest+"åí" ;
|
||||
chetiristot+"èí" => chetiristot+"åí"
|
||||
}
|
||||
in mkCardOrd dvesta dvesta dvesta dvesten
|
||||
}
|
||||
} ;
|
||||
|
||||
mkCardOrd : Str -> Str -> Str -> Str -> CardOrd => Str =
|
||||
\dva, dvama, dve, vtori ->
|
||||
table {
|
||||
NCard dg => digitGenderSpecies dva dvama dve ! dg ;
|
||||
NOrd aform => let vtora = init vtori + "à" ;
|
||||
vtoro = init vtori + "î"
|
||||
in case aform of {
|
||||
ASg Masc Indef => vtori ;
|
||||
ASg Masc Def => vtori+"ÿ" ;
|
||||
ASgMascDefNom => vtori+"ÿò" ;
|
||||
ASg Fem Indef => vtora ;
|
||||
ASg Fem Def => vtora+"òà" ;
|
||||
ASg Neut Indef => vtoro ;
|
||||
ASg Neut Def => vtoro+"òî" ;
|
||||
APl Indef => vtori ;
|
||||
APl Def => vtori+"òå"
|
||||
}
|
||||
} ;
|
||||
|
||||
digitGenderSpecies : Str -> Str -> Str -> DGenderSpecies => Str =
|
||||
\dva, dvama, dve
|
||||
-> let addDef : Str -> Str =
|
||||
\s -> case s of {
|
||||
dves+"òà" => dves+"òàòå" ;
|
||||
dv+"à" => dv+"àòà" ;
|
||||
x => x+"òå"
|
||||
}
|
||||
in table {
|
||||
DMascIndef => dva ;
|
||||
DMascDef => addDef dva ;
|
||||
DMascDefNom => addDef dva ;
|
||||
DMascPersonalIndef => dvama ;
|
||||
DMascPersonalDef => addDef dvama ;
|
||||
DMascPersonalDefNom => addDef dvama ;
|
||||
DFemIndef => dve ;
|
||||
DFemDef => addDef dve ;
|
||||
DNeutIndef => dve ;
|
||||
DNeutDef => addDef dve
|
||||
} ;
|
||||
|
||||
mkIP : Str -> Str -> GenNum -> {s : Role => Str ; gn : GenNum} =
|
||||
\koi,kogo,gn -> {
|
||||
s = table {
|
||||
RSubj => koi ;
|
||||
RObj Acc => kogo ;
|
||||
RObj Dat => "íà" ++ kogo ;
|
||||
RVoc => koi
|
||||
} ;
|
||||
gn = gn
|
||||
} ;
|
||||
|
||||
mkPron : (az,men,mi,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite : Str) -> GenNum -> Person -> {s : Role => Str; gen : AForm => Str; a : Agr} =
|
||||
\az,men,mi,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite,gn,p -> {
|
||||
s = table {
|
||||
RSubj => az ;
|
||||
RObj Acc => men ;
|
||||
RObj Dat => mi ;
|
||||
RVoc => az
|
||||
} ;
|
||||
gen = table {
|
||||
ASg Masc Indef => moj ;
|
||||
ASg Masc Def => moia ;
|
||||
ASgMascDefNom => moiat ;
|
||||
ASg Fem Indef => moia_ ;
|
||||
ASg Fem Def => moiata ;
|
||||
ASg Neut Indef => moe ;
|
||||
ASg Neut Def => moeto ;
|
||||
APl Indef => moi ;
|
||||
APl Def => moite
|
||||
} ;
|
||||
a = {
|
||||
gn = gn ;
|
||||
p = p
|
||||
}
|
||||
} ;
|
||||
|
||||
mkNP : Str -> GenNum -> Person -> {s : Role => Str; a : Agr} =
|
||||
\s,gn,p -> {
|
||||
s = table {
|
||||
RSubj => s ;
|
||||
RObj Acc => s ;
|
||||
RObj Dat => "íà" ++ s ;
|
||||
RVoc => s
|
||||
} ;
|
||||
a = {
|
||||
gn = gn ;
|
||||
p = p
|
||||
}
|
||||
} ;
|
||||
|
||||
Preposition : Type = {s : Str; c : Case};
|
||||
|
||||
mkQuestion :
|
||||
{s1,s2 : Str} -> Clause ->
|
||||
{s : Tense => Anteriority => Polarity => QForm => Str} = \wh,cl ->
|
||||
{
|
||||
s = \\t,a,p =>
|
||||
let cls = cl.s ! t ! a ! p ;
|
||||
in table {
|
||||
QDir => wh.s1 ++ cls ! Inv ;
|
||||
QIndir => wh.s2 ++ cls ! Main
|
||||
}
|
||||
} ;
|
||||
|
||||
whichRP : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "êîéòî" ;
|
||||
GSg Fem => "êîÿòî" ;
|
||||
GSg Neut => "êîåòî" ;
|
||||
GPl => "êîèòî"
|
||||
} ;
|
||||
|
||||
suchRP : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "òàêúâ" ;
|
||||
GSg Fem => "òàêàâà" ;
|
||||
GSg Neut => "òàêîâà" ;
|
||||
GPl => "òàêèâà"
|
||||
} ;
|
||||
|
||||
thisRP : GenNum => Str
|
||||
= table {
|
||||
GSg Masc => "òîçè" ;
|
||||
GSg Fem => "òaçè" ;
|
||||
GSg Neut => "òîâà" ;
|
||||
GPl => "òåçè"
|
||||
} ;
|
||||
}
|
||||
60
lib/resource-1.4/bulgarian/SentenceBul.gf
Normal file
60
lib/resource-1.4/bulgarian/SentenceBul.gf
Normal file
@@ -0,0 +1,60 @@
|
||||
concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
PredVP np vp = mkClause (np.s ! vp.subjRole) np.a vp ;
|
||||
|
||||
PredSCVP sc vp = mkClause sc.s {gn=GSg Masc; p=P3} vp ;
|
||||
|
||||
ImpVP vp = {
|
||||
s = \\p,gn =>
|
||||
let agr = {gn = gn ; p = P2} ;
|
||||
verb = vp.imp ! p ! numGenNum gn ! Perf ;
|
||||
compl = vp.s2 ! agr
|
||||
in
|
||||
verb ++ compl
|
||||
} ;
|
||||
|
||||
SlashVP np vp =
|
||||
mkClause (np.s ! RSubj) np.a vp ** {c2 = vp.c2} ;
|
||||
|
||||
AdvSlash slash adv = {
|
||||
s = \\t,a,b,o => slash.s ! t ! a ! b ! o ++ adv.s ;
|
||||
c2 = slash.c2
|
||||
} ;
|
||||
|
||||
SlashPrep cl prep = cl ** {c2 = prep} ;
|
||||
|
||||
SlashVS np vs slash =
|
||||
mkClause (np.s ! RSubj) np.a
|
||||
(insertObj (\\_ => "֌" ++ slash.s) (predV vs)) **
|
||||
{c2 = slash.c2} ;
|
||||
|
||||
EmbedS s = {s = "," ++ "֌" ++ s.s} ;
|
||||
EmbedQS qs = {s = qs.s ! QIndir} ;
|
||||
EmbedVP vp = {s = vp.ad ! False ++ "äà" ++ vp.s ! Pres ! Simul ! Pos ! {gn=GSg Masc; p=P1} ! False ! Perf} ;
|
||||
|
||||
UseCl t a p cl = {
|
||||
s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! Main
|
||||
} ;
|
||||
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 ;
|
||||
role = cl.role
|
||||
} ;
|
||||
UseSlash t a p cl = {
|
||||
s = t.s ++ a.s ++ p.s ++ cl.s ! t.t ! a.a ! p.p ! Main ;
|
||||
c2 = cl.c2
|
||||
} ;
|
||||
|
||||
AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
||||
|
||||
---- FIXME: guessed by AR
|
||||
-- test: she walks , which is good
|
||||
|
||||
RelS s r = {s = s.s ++ "," ++ r.s ! gennum DNeut Sg} ;
|
||||
|
||||
}
|
||||
117
lib/resource-1.4/bulgarian/StructuralBul.gf
Normal file
117
lib/resource-1.4/bulgarian/StructuralBul.gf
Normal file
@@ -0,0 +1,117 @@
|
||||
concrete StructuralBul of Structural = CatBul **
|
||||
open MorphoBul, ParadigmsBul, Prelude in {
|
||||
|
||||
flags optimize=all ;
|
||||
|
||||
lin
|
||||
above_Prep = mkPrep "íàä" Acc ;
|
||||
after_Prep = mkPrep "ñëåä" Acc ;
|
||||
all_Predet = {s = table GenNum ["âñè÷êèÿ";"âñè÷êàòà";"âñè÷êîòî";"âñè÷êèòå"]} ;
|
||||
almost_AdA, almost_AdN = ss "ïî÷òè" ;
|
||||
although_Subj = ss ["âúïðåêè ÷å"] ;
|
||||
always_AdV = ss "âèíàãè" ;
|
||||
and_Conj = {s1 = [] ; s2 = "è" ; n = Pl} ;
|
||||
because_Subj = ss "çàùîòî" ;
|
||||
before_Prep = mkPrep "ïðåäè" Acc ;
|
||||
behind_Prep = mkPrep "çàä" Acc ;
|
||||
between_Prep = mkPrep "ìåæäó" Acc ;
|
||||
both7and_DConj = sd2 "è" "è" ** {n = Pl} ;
|
||||
but_PConj = ss "íî" ;
|
||||
by8agent_Prep = mkPrep "÷ðåç" Acc ;
|
||||
by8means_Prep = mkPrep "÷ðåç" Acc ;
|
||||
can8know_VV, can_VV = mkVV (stateV (mkV166 "ìîãà")) ;
|
||||
during_Prep = mkPrep ["ïî âðåìå íà"] Acc ;
|
||||
either7or_DConj = sd2 "èëè" "èëè" ** {n = Sg} ;
|
||||
everybody_NP = mkNP "âñåêè" (GSg Masc) P3 ;
|
||||
every_Det = mkDeterminerSg "âñåêè" "âñÿêà" "âñÿêî";
|
||||
everything_NP = mkNP "âñè÷êî" (GSg Neut) P3 ;
|
||||
everywhere_Adv = ss "íàâñÿêúäå" ;
|
||||
few_Det = {s = \\_,_ => "íÿêîëêî"; n = Pl; countable = True; spec = Indef} ;
|
||||
--- first_Ord = ss "first" ; DEPRECATED
|
||||
for_Prep = mkPrep "çà" Acc ;
|
||||
from_Prep = mkPrep "îò" Acc ;
|
||||
he_Pron = mkPron "òîé" "íåãî" "ìó" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Masc) P3 ;
|
||||
here_Adv = ss "òóê" ;
|
||||
here7to_Adv = ss ["äî òóê"] ;
|
||||
here7from_Adv = ss ["îò òóê"] ;
|
||||
how_IAdv = mkIAdv "êàê" ;
|
||||
how8many_IDet = {s = \\_ => "êîëêî"; n = Pl ; nonEmpty = False} ; ---- AR nonEmpty
|
||||
if_Subj = ss "àêî" ;
|
||||
in8front_Prep = mkPrep "ïðåä" Acc ;
|
||||
i_Pron = mkPron "àç" "ìåí" "ìè" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Masc) P1 ;
|
||||
in_Prep = mkPrep (pre { "â" ;
|
||||
"âúâ" / strs {"â" ; "ô" ; "Â" ; "Ô"}
|
||||
}) Acc ;
|
||||
it_Pron = mkPron "òî" "íåãî" "ìó" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Neut) P3 ;
|
||||
less_CAdv = {s="íå"; sn="ïî-ìàëêî"} ;
|
||||
many_Det = mkDeterminerPl "ìíîãî" ;
|
||||
more_CAdv = {s=[]; sn="ïîâå÷å"} ;
|
||||
most_Predet = {s = \\_ => "ïîâå÷åòî"} ;
|
||||
much_Det = mkDeterminerSg "ìíîãî" "ìíîãî" "ìíîãî";
|
||||
must_VV =
|
||||
mkVV {
|
||||
s = \\_=>table {
|
||||
VPres _ _ => "òðÿáâà" ;
|
||||
VAorist _ _ => "òðÿáâàøå" ;
|
||||
VImperfect _ _ => "òðÿáâàëî" ;
|
||||
VPerfect aform => regAdjective "òðÿáâàë" ! aform ;
|
||||
VPluPerfect aform => regAdjective "òðÿáâàë" ! aform ;
|
||||
VPassive aform => regAdjective "òðÿáâàë" ! aform ;
|
||||
VPresPart aform => regAdjective "òðÿáâàë" ! aform ;
|
||||
VImperative Sg => "òðÿáâàé" ;
|
||||
VImperative Pl => "òðÿáâàéòå" ;
|
||||
VGerund => "òðÿáâàéêè"
|
||||
} ;
|
||||
vtype=VNormal ;
|
||||
lock_V=<>
|
||||
} ;
|
||||
no_Utt = ss "íå" ;
|
||||
on_Prep = mkPrep "íà" Acc ;
|
||||
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
|
||||
only_Predet = {s = \\_ => "ñàìî"} ;
|
||||
or_Conj = {s1 = [] ; s2 = "èëè" ; n = Sg} ;
|
||||
otherwise_PConj = ss "èíà÷å" ;
|
||||
part_Prep = mkPrep "îò" Acc ;
|
||||
please_Voc = ss "ìîëÿ" ;
|
||||
possess_Prep = mkPrep [] Dat ;
|
||||
quite_Adv = ss "äîñòà" ;
|
||||
she_Pron = mkPron "òÿ" "íåÿ" "è" "íåèí" "íåéíèÿ" "íåéíèÿò" "íåéíà" "íåéíàòà" "íåéíî" "íåéíîòî" "íåéíè" "íåéíèòå" (GSg Fem) P3 ;
|
||||
so_AdA = ss "òîëêîâà" ;
|
||||
somebody_NP = mkNP "íÿêîé" (GSg Masc) P3 ;
|
||||
someSg_Det = mkDeterminerSg "íÿêîé" "íÿêîÿ" "íÿêîå" ;
|
||||
somePl_Det = mkDeterminerPl "íÿêîè" ;
|
||||
something_NP = mkNP "íåùî" (GSg Neut) P3 ;
|
||||
somewhere_Adv = ss "íÿêúäå" ;
|
||||
that_Quant = mkQuant "îíçè" "îíàçè" "îíîâà" "îíåçè" ;
|
||||
there_Adv = ss "òàì" ;
|
||||
there7to_Adv = ss ["äî òàì"] ;
|
||||
there7from_Adv = ss ["îò òàì"] ;
|
||||
therefore_PConj = ss ["òàêà ÷å"] ;
|
||||
they_Pron = mkPron "òå" "òÿõ" "èì" "òåõåí" "òåõíèÿ" "òåõíèÿò" "òÿõíà" "òÿõíàòà" "òÿõíî" "òÿõíîòî" "òåõíè" "òåõíèòå" GPl P3 ;
|
||||
this_Quant = mkQuant "òîçè" "òaçè" "òîâà" "òåçè" ;
|
||||
through_Prep = mkPrep "ïðåç" Acc ;
|
||||
too_AdA = ss "ïðåêàëåíî" ;
|
||||
to_Prep = mkPrep "äî" Acc ;
|
||||
under_Prep = mkPrep "ïîä" Acc ;
|
||||
very_AdA = ss "ìíîãî" ;
|
||||
want_VV = mkVV (stateV (mkV186 "èñêàì")) ;
|
||||
we_Pron = mkPron "íèå" "íàñ" "íè" "íàø" "íàøèÿ" "íàøèÿò" "íàøà" "íàøàòà" "íàøå" "íàøåòî" "íàøè" "íàøèòå" GPl P1 ;
|
||||
whatPl_IP = mkIP "êàêâè" "êàêâè" GPl ;
|
||||
whatSg_IP = mkIP "êàêúâ" "êàêúâ" (GSg Masc) ;
|
||||
when_IAdv = mkIAdv "êîãà" ;
|
||||
when_Subj = ss "êîãàòî" ;
|
||||
where_IAdv = mkIAdv "êúäå" ;
|
||||
which_IQuant = {s = table GenNum ["êîé";"êîÿ";"êîå";"êîè"]} ; ---- FIXME AR
|
||||
whoSg_IP = mkIP "êîé" "êîãî" (GSg Masc) ;
|
||||
whoPl_IP = mkIP "êîè" "êîè" GPl ;
|
||||
why_IAdv = mkIAdv "çàùî" ;
|
||||
without_Prep = mkPrep "áåç" Acc ;
|
||||
with_Prep = mkPrep (pre { "ñ" ;
|
||||
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
|
||||
}) Acc ;
|
||||
yes_Utt = ss "äà" ;
|
||||
youSg_Pron = mkPron "òè" "òåá" "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Masc) P2 ;
|
||||
youPl_Pron = mkPron "âèå" "âàñ" "âè" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl P2 ;
|
||||
youPol_Pron = mkPron "âèå" "âàñ" "âè" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl P2 ;
|
||||
}
|
||||
|
||||
11
lib/resource-1.4/bulgarian/TextBul.gf
Normal file
11
lib/resource-1.4/bulgarian/TextBul.gf
Normal file
@@ -0,0 +1,11 @@
|
||||
concrete TextBul of Text = CatBul ** {
|
||||
|
||||
-- This will work for almost all languages except Spanish.
|
||||
|
||||
lin
|
||||
TEmpty = {s = []} ;
|
||||
TFullStop x xs = {s = x.s ++ "." ++ xs.s} ;
|
||||
TQuestMark x xs = {s = x.s ++ "?" ++ xs.s} ;
|
||||
TExclMark x xs = {s = x.s ++ "!" ++ xs.s} ;
|
||||
|
||||
}
|
||||
121
lib/resource-1.4/bulgarian/VerbBul.gf
Normal file
121
lib/resource-1.4/bulgarian/VerbBul.gf
Normal file
@@ -0,0 +1,121 @@
|
||||
concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
UseV = predV ;
|
||||
|
||||
SlashV2a v = predV v ** {c2 = v.c2} ;
|
||||
|
||||
Slash2V3 v np =
|
||||
insertObj (\\_ => v.c2.s ++ np.s ! RObj v.c2.c) (predV v) ** {c2 = v.c3} ;
|
||||
|
||||
Slash3V3 v np =
|
||||
insertObj (\\_ => v.c3.s ++ np.s ! RObj v.c2.c) (predV v) ** {c2 = v.c2} ;
|
||||
|
||||
ComplVV vv vp = {
|
||||
s = \\t,a,p,agr,q,asp =>
|
||||
let
|
||||
vv_verb = (predV vv).s ! t ! a ! p ! agr ! q ! asp ;
|
||||
vp_verb = vp.s ! Pres ! Simul ! Pos ! agr ! False ! Perf ;
|
||||
in vv_verb ++ vp.ad ! False ++ "äà" ++ vp_verb ;
|
||||
imp = vp.imp ;
|
||||
ad = \\_ => [] ;
|
||||
s2 = vp.s2 ;
|
||||
subjRole = vp.subjRole
|
||||
} ;
|
||||
|
||||
ComplVS v s = insertObj (\\_ => "," ++ "֌" ++ s.s) (predV v) ;
|
||||
ComplVQ v q = insertObj (\\_ => q.s ! QIndir) (predV v) ;
|
||||
|
||||
ComplVA v ap =
|
||||
insertObj (\\agr => ap.s ! aform agr.gn Indef (RObj Acc)) (predV v) ;
|
||||
|
||||
|
||||
SlashV2A v ap =
|
||||
insertObj (\\a => v.c2.s ++ ap.s ! aform a.gn Indef (RObj Acc))
|
||||
(predV v) ** {c2 = v.c2} ; ---- FIXME: agreement with obj.a
|
||||
|
||||
|
||||
SlashV2A v ap =
|
||||
insertObj (\\a => v.c2.s ++ ap.s ! aform a.gn Indef (RObj Acc))
|
||||
(predV v) ** {c2 = v.c2} ; ---- FIXME: agreement with obj.a
|
||||
|
||||
|
||||
---- AR guessed these five, copying from Compl(VS,VQ,VV)
|
||||
|
||||
-- test: I saw a boy to whom she said that they are here
|
||||
SlashV2S v s = insertObj (\\_ => "," ++ "֌" ++ s.s) (predV v) ** {c2 = v.c2} ;
|
||||
|
||||
-- test: I saw a boy whom she asked who is here
|
||||
SlashV2Q v q = insertObj (\\_ => q.s ! QIndir) (predV v) ** {c2 = v.c2} ;
|
||||
|
||||
-- test: I saw a boy whom she begged to walk
|
||||
SlashV2V vv vp = {
|
||||
s = \\t,a,p,agr,q,asp =>
|
||||
let
|
||||
vv_verb = (predV vv).s ! t ! a ! p ! agr ! q ! asp ;
|
||||
vp_verb = vp.s ! Pres ! Simul ! Pos ! agr ! False ! Perf ;
|
||||
in vv_verb ++ vp.ad ! False ++ "äà" ++ vp_verb ;
|
||||
imp = vp.imp ;
|
||||
ad = \\_ => [] ;
|
||||
s2 = vp.s2 ;
|
||||
subjRole = vp.subjRole
|
||||
} ** {c2 = vv.c2} ;
|
||||
|
||||
-- test: I saw a car whom she wanted to buy
|
||||
SlashVV vv vp = {
|
||||
s = \\t,a,p,agr,q,asp =>
|
||||
let
|
||||
vv_verb = (predV vv).s ! t ! a ! p ! agr ! q ! asp ;
|
||||
vp_verb = vp.s ! Pres ! Simul ! Pos ! agr ! False ! Perf ;
|
||||
in vv_verb ++ vp.ad ! False ++ "äà" ++ vp_verb ;
|
||||
imp = vp.imp ;
|
||||
ad = \\_ => [] ;
|
||||
s2 = vp.s2 ;
|
||||
subjRole = vp.subjRole
|
||||
} ** {c2 = vp.c2} ;
|
||||
|
||||
-- test: I saw a car whom she begged me to buy
|
||||
SlashV2VNP vv np vp =
|
||||
insertObj (\\_ => vv.c2.s ++ np.s ! RObj vv.c2.c) {
|
||||
s = \\t,a,p,agr,q,asp =>
|
||||
let
|
||||
vv_verb = (predV vv).s ! t ! a ! p ! agr ! q ! asp ;
|
||||
vp_verb = vp.s ! Pres ! Simul ! Pos ! agr ! False ! Perf ;
|
||||
in vv_verb ++ vp.ad ! False ++ "äà" ++ vp_verb ;
|
||||
imp = vp.imp ;
|
||||
ad = \\_ => [] ;
|
||||
s2 = vp.s2 ;
|
||||
subjRole = vp.subjRole
|
||||
} ** {c2 = vp.c2} ;
|
||||
|
||||
---- END guesses by AR
|
||||
|
||||
ComplSlash vp np = insertObj (\\_ => vp.c2.s ++ np.s ! RObj vp.c2.c) vp ;
|
||||
|
||||
UseComp comp = insertObj comp.s (predV verbBe) ;
|
||||
|
||||
AdvVP vp adv = insertObj (\\_ => adv.s) vp ;
|
||||
|
||||
AdVVP adv vp = {
|
||||
s = \\t,a,p,agr,q,asp => vp.s ! t ! a ! p ! agr ! False ! asp ;
|
||||
imp = vp.imp ;
|
||||
ad = \\q => vp.ad ! q ++ adv.s ++ case q of {True => "ëè"; False => []} ;
|
||||
s2 = vp.s2 ;
|
||||
subjRole = vp.subjRole
|
||||
} ;
|
||||
|
||||
---- ReflV2 v = predV (reflV (v ** {lock_V=<>}) v.c2.c) ;
|
||||
|
||||
---- FIXME: AR cannot do this
|
||||
---- ReflVP : VPSlash -> VP
|
||||
|
||||
PassV2 v = insertObj (\\a => v.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc))) (predV verbWould) ;
|
||||
|
||||
---- UseVS, UseVQ = \vv -> {s = vv.s; c2 = noPrep; vtype = vv.vtype} ; -- no "to"
|
||||
|
||||
CompAP ap = {s = \\agr => ap.s ! aform agr.gn Indef (RObj Acc)} ;
|
||||
CompNP np = {s = \\_ => np.s ! RObj Acc} ;
|
||||
CompAdv a = {s = \\_ => a.s} ;
|
||||
}
|
||||
@@ -1,152 +1,153 @@
|
||||
! date >echo treebank.txt
|
||||
dc %ttb pt #1 | tb | af treebank.txt
|
||||
%ttb PositA warm_A
|
||||
%ttb ComparA warm_A (UsePron i_Pron)
|
||||
%ttb ComplA2 married_A2 (UsePron she_Pron)
|
||||
%ttb ReflA2 married_A2
|
||||
%ttb PositA (UseA2 married_A2)
|
||||
%ttb SentAP (PositA good_A) (EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseComp (CompAdv here_Adv)))))
|
||||
%ttb AdAP very_AdA (PositA warm_A)
|
||||
%ttb PositAdvAdj warm_A
|
||||
%ttb PrepNP in_Prep (DetArtSg DefArt (UseN house_N))
|
||||
%ttb ComparAdvAdj more_CAdv warm_A (UsePN john_PN)
|
||||
%ttb ComparAdvAdjS more_CAdv warm_A (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV run_V)))
|
||||
%ttb SubjS when_Subj (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
||||
%ttb AdNum (AdnCAdv more_CAdv) (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
||||
%ttb ConjS and_Conj (BaseS (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV walk_V))) (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
||||
%ttb ConjAP and_Conj (BaseAP (PositA cold_A) (PositA warm_A))
|
||||
%ttb ConjNP or_Conj (BaseNP (UsePron she_Pron) (UsePron we_Pron))
|
||||
%ttb ConjAdv or_Conj (BaseAdv here_Adv there_Adv)
|
||||
%ttb DConjS either7or_DConj (BaseS (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV walk_V))) (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
||||
%ttb DConjAP both7and_DConj (BaseAP (PositA warm_A) (PositA cold_A))
|
||||
%ttb DConjNP either7or_DConj (BaseNP (UsePron he_Pron) (UsePron she_Pron))
|
||||
%ttb DConjAdv both7and_DConj (BaseAdv here_Adv there_Adv)
|
||||
%ttb ImpersCl (UseComp (CompAP (PositA hot_A)))
|
||||
%ttb GenericCl (UseV sleep_V)
|
||||
%ttb CleftNP (UsePron i_Pron) (UseRCl TPast ASimul PPos (RelVP IdRP (ComplSlash (SlashV2a do_V2) (UsePron it_Pron))))
|
||||
%ttb CleftAdv here_Adv (UseCl TPast ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
||||
%ttb ExistNP (DetArtSg IndefArt (UseN house_N))
|
||||
%ttb ExistIP (IdetCN (IdetQuant which_IQuant NumPl) (UseN house_N))
|
||||
%ttb PredVP (UsePron i_Pron) (ProgrVP (UseV sleep_V))
|
||||
%ttb ImpPl1 (UseV go_V)
|
||||
%ttb DetArtSg DefArt (UseN man_N)
|
||||
%ttb UsePN john_PN
|
||||
%ttb UsePron he_Pron
|
||||
%ttb PredetNP only_Predet (DetArtSg DefArt (UseN man_N))
|
||||
%ttb PPartNP (DetArtSg DefArt (UseN man_N)) see_V2
|
||||
%ttb AdvNP (UsePN paris_PN) today_Adv
|
||||
%ttb RelNP (UsePN paris_PN) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAdv here_Adv))))
|
||||
%ttb DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
||||
%ttb DetCN (DetQuantOrd this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
||||
%ttb DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN man_N)
|
||||
%ttb DetCN (DetQuant this_Quant NumPl) (UseN man_N)
|
||||
%ttb DetCN (DetQuant this_Quant NumSg) (UseN man_N)
|
||||
%ttb NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
||||
%ttb NumCard (NumDigits (IIDig D_5 (IDig D_1)))
|
||||
%ttb NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01)))))
|
||||
%ttb NumCard (AdNum almost_AdN (NumDigits (IIDig D_5 (IDig D_1))))
|
||||
%ttb OrdDigits (IIDig D_5 (IDig D_1))
|
||||
%ttb OrdNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01))))
|
||||
%ttb OrdSuperl warm_A
|
||||
%ttb DetCN (DetArtOrd DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
||||
%ttb DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (UseN man_N)
|
||||
%ttb DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
||||
%ttb DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
||||
%ttb DetArtSg DefArt (UseN man_N)
|
||||
%ttb DetArtPl DefArt (UseN man_N)
|
||||
%ttb MassNP (UseN beer_N)
|
||||
%ttb DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN house_N)
|
||||
%ttb UseN house_N
|
||||
%ttb ComplN2 mother_N2 (DetArtSg DefArt (UseN king_N))
|
||||
%ttb ComplN2 (ComplN3 distance_N3 (DetCN (DetQuant this_Quant NumSg) (UseN city_N))) (UsePN paris_PN)
|
||||
%ttb UseN2 mother_N2
|
||||
%ttb ComplN2 (Use2N3 distance_N3) (DetCN (DetQuant this_Quant NumSg) (UseN city_N))
|
||||
%ttb ComplN2 (Use3N3 distance_N3) (UsePN paris_PN)
|
||||
%ttb UseN2 (Use2N3 distance_N3)
|
||||
%ttb AdjCN (PositA big_A) (UseN house_N)
|
||||
%ttb RelCN (UseN house_N) (UseRCl TPast ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a buy_V2))))
|
||||
%ttb AdvCN (UseN house_N) (PrepNP on_Prep (DetArtSg DefArt (UseN hill_N)))
|
||||
%ttb SentCN (UseN question_N) (EmbedQS (UseQCl TPres ASimul PPos (QuestIAdv where_IAdv (PredVP (UsePron she_Pron) (UseV sleep_V)))))
|
||||
%ttb ApposCN (UseN city_N) (UsePN paris_PN)
|
||||
%ttb num (pot2as3 (pot1as2 (pot0as1 (pot0 n6))))
|
||||
%ttb num (pot2as3 (pot1as2 (pot0as1 pot01)))
|
||||
%ttb num (pot2as3 (pot1as2 (pot1 n6)))
|
||||
%ttb num (pot2as3 (pot1as2 pot110))
|
||||
%ttb num (pot2as3 (pot1as2 pot111))
|
||||
%ttb num (pot2as3 (pot1as2 (pot1to19 n6)))
|
||||
%ttb num (pot2as3 (pot1as2 (pot1 n6)))
|
||||
%ttb num (pot2as3 (pot1as2 (pot1plus n6 (pot0 n5))))
|
||||
%ttb num (pot2as3 (pot2 (pot0 n4)))
|
||||
%ttb num (pot2as3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
||||
%ttb num (pot3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
||||
%ttb num (pot3plus (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))) (pot1as2 (pot1plus n8 (pot0 n9))))
|
||||
%ttb IDig D_8
|
||||
%ttb IIDig D_8 (IIDig D_0 (IIDig D_0 (IIDig D_1 (IIDig D_7 (IIDig D_8 (IDig D_9))))))
|
||||
%ttb PhrUtt but_PConj (UttImpSg PPos (ImpVP (AdvVP (UseV come_V) here_Adv))) (VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N)))
|
||||
%ttb PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc
|
||||
%ttb UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron it_Pron) (UseComp (CompAP (PositA good_A))))))
|
||||
%ttb UttImpSg PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
||||
%ttb UttImpPl PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
||||
%ttb UttImpPol PNeg (ImpVP (UseV sleep_V))
|
||||
%ttb UttIP whoPl_IP
|
||||
%ttb UttIP whoSg_IP
|
||||
%ttb UttIAdv why_IAdv
|
||||
%ttb UttNP (DetCN (DetQuant this_Quant NumSg) (UseN man_N))
|
||||
%ttb UttAdv here_Adv
|
||||
%ttb UttVP (UseV sleep_V)
|
||||
%ttb VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N))
|
||||
%ttb QuestCl (PredVP (UsePN john_PN) (UseV walk_V))
|
||||
%ttb QuestVP whoSg_IP (UseV walk_V)
|
||||
%ttb QuestSlash whoSg_IP (SlashVP (UsePN john_PN) (SlashV2a love_V2))
|
||||
%ttb QuestIAdv why_IAdv (PredVP (UsePN john_PN) (UseV walk_V))
|
||||
%ttb QuestIComp (CompIAdv where_IAdv) (UsePN john_PN)
|
||||
%ttb IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN song_N)
|
||||
%ttb IdetIP (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
||||
%ttb AdvIP whoSg_IP (PrepNP in_Prep (UsePN paris_PN))
|
||||
%ttb IdetIP (IdetQuant which_IQuant NumSg)
|
||||
%ttb PrepIP with_Prep whoSg_IP
|
||||
%ttb QuestIComp (CompIAdv where_IAdv) (UsePron it_Pron)
|
||||
%ttb QuestIComp (CompIP whoSg_IP) (UsePron it_Pron)
|
||||
%ttb ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelCl (PredVP (UsePN john_PN) (ComplSlash (SlashV2a love_V2) (UsePron she_Pron)))))))
|
||||
%ttb ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelVP IdRP (ComplSlash (SlashV2a love_V2) (UsePN john_PN))))))
|
||||
%ttb ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a love_V2))))))
|
||||
%ttb ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelSlash (FunRP possess_Prep (DetArtSg DefArt (UseN2 mother_N2)) IdRP) (SlashVP (UsePN john_PN) (SlashV2a love_V2))))))
|
||||
%ttb PredVP (UsePN john_PN) (UseV walk_V)
|
||||
%ttb PredSCVP (EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV go_V)))) (UseComp (CompAP (PositA good_A)))
|
||||
%ttb RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron he_Pron) (SlashV2a see_V2))))
|
||||
%ttb RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (AdvSlash (SlashVP (UsePron he_Pron) (SlashV2a see_V2)) today_Adv)))
|
||||
%ttb RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron he_Pron) (UseV walk_V)) with_Prep)))
|
||||
%ttb RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVS (UsePron she_Pron) say_VS (UseSlash TPres ASimul PPos (SlashVP (UsePron he_Pron) (SlashV2a love_V2))))))
|
||||
%ttb ImpVP (ReflVP (SlashV2a love_V2))
|
||||
%ttb EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV go_V)))
|
||||
%ttb EmbedQS (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV go_V)))
|
||||
%ttb EmbedVP (UseV go_V)
|
||||
%ttb UseCl TCond AAnter PNeg (PredVP (UsePN john_PN) (UseV walk_V))
|
||||
%ttb UseQCl TCond AAnter PNeg (QuestCl (PredVP (UsePN john_PN) (UseV walk_V)))
|
||||
%ttb RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelVP IdRP (UseV walk_V)))
|
||||
%ttb RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV walk_V)) with_Prep)))
|
||||
%ttb RelS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V))) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAP (PositA good_A)))))
|
||||
%ttb TEmpty
|
||||
%ttb TFullStop (PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc) TEmpty
|
||||
%ttb TQuestMark (PhrUtt NoPConj (UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron they_Pron) (UseComp (CompAdv here_Adv)))))) NoVoc) TEmpty
|
||||
%ttb TExclMark (PhrUtt NoPConj (ImpPl1 (UseV go_V)) NoVoc) TEmpty
|
||||
%ttb PredVP (UsePron i_Pron) (UseV sleep_V)
|
||||
%ttb PredVP (UsePron i_Pron) (ComplVV want_VV (UseV run_V))
|
||||
%ttb PredVP (UsePron i_Pron) (ComplVS say_VS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
||||
%ttb PredVP (UsePron i_Pron) (ComplVQ wonder_VQ (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV run_V))))
|
||||
%ttb PredVP (UsePron they_Pron) (ComplVA become_VA (PositA red_A))
|
||||
%ttb PredVP (UsePron i_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron he_Pron)) (UsePron it_Pron))
|
||||
%ttb PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron she_Pron))
|
||||
%ttb PredVP (UsePron i_Pron) (ComplSlash (SlashV2S answer_V2S (UseCl TPres ASimul PPos (PredVP (UsePron it_Pron) (UseComp (CompAP (PositA good_A)))))) (UsePron he_Pron))
|
||||
%ttb PredVP (UsePron i_Pron) (ComplSlash (SlashV2Q ask_V2Q (UseQCl TPast ASimul PPos (QuestVP whoSg_IP (UseV come_V)))) (UsePron he_Pron))
|
||||
%ttb PredVP (UsePron i_Pron) (ComplSlash (SlashV2A paint_V2A (PositA red_A)) (UsePron it_Pron))
|
||||
%ttb RelCN (UseN car_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (SlashVV want_VV (SlashV2a buy_V2)))))
|
||||
%ttb RelCN (UseN car_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron they_Pron) (SlashV2VNP beg_V2V (UsePron i_Pron) (SlashV2a buy_V2)))))
|
||||
%ttb PredVP (UsePron he_Pron) (ReflVP (SlashV2a love_V2))
|
||||
%ttb PredVP (DetNP (DetQuant this_Quant NumSg)) (UseComp (CompAP (PositA warm_A)))
|
||||
%ttb PredVP (UsePron we_Pron) (PassV2 love_V2)
|
||||
%ttb PredVP (UsePron we_Pron) (AdvVP (UseV sleep_V) here_Adv)
|
||||
%ttb PredVP (UsePron we_Pron) (AdVVP always_AdV (UseV sleep_V))
|
||||
%ttb PredVP (UsePron we_Pron) (UseComp (CompAP (PositA small_A)))
|
||||
%ttb PredVP (UsePron i_Pron) (UseComp (CompNP (DetArtSg IndefArt (UseN man_N))))
|
||||
%ttb PredVP (UsePron i_Pron) (UseComp (CompAdv here_Adv))
|
||||
i english/LangEng.gf
|
||||
i finnish/LangFin.gf
|
||||
|
||||
l PositA warm_A
|
||||
l ComparA warm_A (UsePron i_Pron)
|
||||
l ComplA2 married_A2 (UsePron she_Pron)
|
||||
l ReflA2 married_A2
|
||||
l PositA (UseA2 married_A2)
|
||||
l SentAP (PositA good_A) (EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseComp (CompAdv here_Adv)))))
|
||||
l AdAP very_AdA (PositA warm_A)
|
||||
l PositAdvAdj warm_A
|
||||
l PrepNP in_Prep (DetArtSg DefArt (UseN house_N))
|
||||
l ComparAdvAdj more_CAdv warm_A (UsePN john_PN)
|
||||
l ComparAdvAdjS more_CAdv warm_A (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV run_V)))
|
||||
l SubjS when_Subj (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
||||
l AdNum (AdnCAdv more_CAdv) (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
||||
l ConjS and_Conj (BaseS (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV walk_V))) (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
||||
l ConjAP and_Conj (BaseAP (PositA cold_A) (PositA warm_A))
|
||||
l ConjNP or_Conj (BaseNP (UsePron she_Pron) (UsePron we_Pron))
|
||||
l ConjAdv or_Conj (BaseAdv here_Adv there_Adv)
|
||||
l DConjS either7or_DConj (BaseS (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV walk_V))) (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
||||
l DConjAP both7and_DConj (BaseAP (PositA warm_A) (PositA cold_A))
|
||||
l DConjNP either7or_DConj (BaseNP (UsePron he_Pron) (UsePron she_Pron))
|
||||
l DConjAdv both7and_DConj (BaseAdv here_Adv there_Adv)
|
||||
l ImpersCl (UseComp (CompAP (PositA hot_A)))
|
||||
l GenericCl (UseV sleep_V)
|
||||
l CleftNP (UsePron i_Pron) (UseRCl TPast ASimul PPos (RelVP IdRP (ComplSlash (SlashV2a do_V2) (UsePron it_Pron))))
|
||||
l CleftAdv here_Adv (UseCl TPast ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
||||
l ExistNP (DetArtSg IndefArt (UseN house_N))
|
||||
l ExistIP (IdetCN (IdetQuant which_IQuant NumPl) (UseN house_N))
|
||||
l PredVP (UsePron i_Pron) (ProgrVP (UseV sleep_V))
|
||||
l ImpPl1 (UseV go_V)
|
||||
l DetArtSg DefArt (UseN man_N)
|
||||
l UsePN john_PN
|
||||
l UsePron he_Pron
|
||||
l PredetNP only_Predet (DetArtSg DefArt (UseN man_N))
|
||||
l PPartNP (DetArtSg DefArt (UseN man_N)) see_V2
|
||||
l AdvNP (UsePN paris_PN) today_Adv
|
||||
l RelNP (UsePN paris_PN) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAdv here_Adv))))
|
||||
l DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
||||
l DetCN (DetQuantOrd this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
||||
l DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN man_N)
|
||||
l DetCN (DetQuant this_Quant NumPl) (UseN man_N)
|
||||
l DetCN (DetQuant this_Quant NumSg) (UseN man_N)
|
||||
l NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
||||
l NumCard (NumDigits (IIDig D_5 (IDig D_1)))
|
||||
l NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01)))))
|
||||
l NumCard (AdNum almost_AdN (NumDigits (IIDig D_5 (IDig D_1))))
|
||||
l OrdDigits (IIDig D_5 (IDig D_1))
|
||||
l OrdNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01))))
|
||||
l OrdSuperl warm_A
|
||||
l DetCN (DetArtOrd DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
||||
l DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (UseN man_N)
|
||||
l DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
||||
l DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
||||
l DetArtSg DefArt (UseN man_N)
|
||||
l DetArtPl DefArt (UseN man_N)
|
||||
l MassNP (UseN beer_N)
|
||||
l DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN house_N)
|
||||
l UseN house_N
|
||||
l ComplN2 mother_N2 (DetArtSg DefArt (UseN king_N))
|
||||
l ComplN2 (ComplN3 distance_N3 (DetCN (DetQuant this_Quant NumSg) (UseN city_N))) (UsePN paris_PN)
|
||||
l UseN2 mother_N2
|
||||
l ComplN2 (Use2N3 distance_N3) (DetCN (DetQuant this_Quant NumSg) (UseN city_N))
|
||||
l ComplN2 (Use3N3 distance_N3) (UsePN paris_PN)
|
||||
l UseN2 (Use2N3 distance_N3)
|
||||
l AdjCN (PositA big_A) (UseN house_N)
|
||||
l RelCN (UseN house_N) (UseRCl TPast ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a buy_V2))))
|
||||
l AdvCN (UseN house_N) (PrepNP on_Prep (DetArtSg DefArt (UseN hill_N)))
|
||||
l SentCN (UseN question_N) (EmbedQS (UseQCl TPres ASimul PPos (QuestIAdv where_IAdv (PredVP (UsePron she_Pron) (UseV sleep_V)))))
|
||||
l ApposCN (UseN city_N) (UsePN paris_PN)
|
||||
l num (pot2as3 (pot1as2 (pot0as1 (pot0 n6))))
|
||||
l num (pot2as3 (pot1as2 (pot0as1 pot01)))
|
||||
l num (pot2as3 (pot1as2 (pot1 n6)))
|
||||
l num (pot2as3 (pot1as2 pot110))
|
||||
l num (pot2as3 (pot1as2 pot111))
|
||||
l num (pot2as3 (pot1as2 (pot1to19 n6)))
|
||||
l num (pot2as3 (pot1as2 (pot1 n6)))
|
||||
l num (pot2as3 (pot1as2 (pot1plus n6 (pot0 n5))))
|
||||
l num (pot2as3 (pot2 (pot0 n4)))
|
||||
l num (pot2as3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
||||
l num (pot3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
||||
l num (pot3plus (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))) (pot1as2 (pot1plus n8 (pot0 n9))))
|
||||
l IDig D_8
|
||||
l IIDig D_8 (IIDig D_0 (IIDig D_0 (IIDig D_1 (IIDig D_7 (IIDig D_8 (IDig D_9))))))
|
||||
l PhrUtt but_PConj (UttImpSg PPos (ImpVP (AdvVP (UseV come_V) here_Adv))) (VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N)))
|
||||
l PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc
|
||||
l UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron it_Pron) (UseComp (CompAP (PositA good_A))))))
|
||||
l UttImpSg PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
||||
l UttImpPl PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
||||
l UttImpPol PNeg (ImpVP (UseV sleep_V))
|
||||
l UttIP whoPl_IP
|
||||
l UttIP whoSg_IP
|
||||
l UttIAdv why_IAdv
|
||||
l UttNP (DetCN (DetQuant this_Quant NumSg) (UseN man_N))
|
||||
l UttAdv here_Adv
|
||||
l UttVP (UseV sleep_V)
|
||||
l VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N))
|
||||
l QuestCl (PredVP (UsePN john_PN) (UseV walk_V))
|
||||
l QuestVP whoSg_IP (UseV walk_V)
|
||||
l QuestSlash whoSg_IP (SlashVP (UsePN john_PN) (SlashV2a love_V2))
|
||||
l QuestIAdv why_IAdv (PredVP (UsePN john_PN) (UseV walk_V))
|
||||
l QuestIComp (CompIAdv where_IAdv) (UsePN john_PN)
|
||||
l IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN song_N)
|
||||
l IdetIP (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
||||
l AdvIP whoSg_IP (PrepNP in_Prep (UsePN paris_PN))
|
||||
l IdetIP (IdetQuant which_IQuant NumSg)
|
||||
l PrepIP with_Prep whoSg_IP
|
||||
l QuestIComp (CompIAdv where_IAdv) (UsePron it_Pron)
|
||||
l QuestIComp (CompIP whoSg_IP) (UsePron it_Pron)
|
||||
l ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelCl (PredVP (UsePN john_PN) (ComplSlash (SlashV2a love_V2) (UsePron she_Pron)))))))
|
||||
l ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelVP IdRP (ComplSlash (SlashV2a love_V2) (UsePN john_PN))))))
|
||||
l ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a love_V2))))))
|
||||
l ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelSlash (FunRP possess_Prep (DetArtSg DefArt (UseN2 mother_N2)) IdRP) (SlashVP (UsePN john_PN) (SlashV2a love_V2))))))
|
||||
l PredVP (UsePN john_PN) (UseV walk_V)
|
||||
l PredSCVP (EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV go_V)))) (UseComp (CompAP (PositA good_A)))
|
||||
l RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron he_Pron) (SlashV2a see_V2))))
|
||||
l RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (AdvSlash (SlashVP (UsePron he_Pron) (SlashV2a see_V2)) today_Adv)))
|
||||
l RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron he_Pron) (UseV walk_V)) with_Prep)))
|
||||
l RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVS (UsePron she_Pron) say_VS (UseSlash TPres ASimul PPos (SlashVP (UsePron he_Pron) (SlashV2a love_V2))))))
|
||||
l ImpVP (ReflVP (SlashV2a love_V2))
|
||||
l EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV go_V)))
|
||||
l EmbedQS (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV go_V)))
|
||||
l EmbedVP (UseV go_V)
|
||||
l UseCl TCond AAnter PNeg (PredVP (UsePN john_PN) (UseV walk_V))
|
||||
l UseQCl TCond AAnter PNeg (QuestCl (PredVP (UsePN john_PN) (UseV walk_V)))
|
||||
l RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelVP IdRP (UseV walk_V)))
|
||||
l RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV walk_V)) with_Prep)))
|
||||
l RelS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V))) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAP (PositA good_A)))))
|
||||
l TEmpty
|
||||
l TFullStop (PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc) TEmpty
|
||||
l TQuestMark (PhrUtt NoPConj (UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron they_Pron) (UseComp (CompAdv here_Adv)))))) NoVoc) TEmpty
|
||||
l TExclMark (PhrUtt NoPConj (ImpPl1 (UseV go_V)) NoVoc) TEmpty
|
||||
l PredVP (UsePron i_Pron) (UseV sleep_V)
|
||||
l PredVP (UsePron i_Pron) (ComplVV want_VV (UseV run_V))
|
||||
l PredVP (UsePron i_Pron) (ComplVS say_VS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
||||
l PredVP (UsePron i_Pron) (ComplVQ wonder_VQ (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV run_V))))
|
||||
l PredVP (UsePron they_Pron) (ComplVA become_VA (PositA red_A))
|
||||
l PredVP (UsePron i_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron he_Pron)) (UsePron it_Pron))
|
||||
l PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron she_Pron))
|
||||
l PredVP (UsePron i_Pron) (ComplSlash (SlashV2S answer_V2S (UseCl TPres ASimul PPos (PredVP (UsePron it_Pron) (UseComp (CompAP (PositA good_A)))))) (UsePron he_Pron))
|
||||
l PredVP (UsePron i_Pron) (ComplSlash (SlashV2Q ask_V2Q (UseQCl TPast ASimul PPos (QuestVP whoSg_IP (UseV come_V)))) (UsePron he_Pron))
|
||||
l PredVP (UsePron i_Pron) (ComplSlash (SlashV2A paint_V2A (PositA red_A)) (UsePron it_Pron))
|
||||
l RelCN (UseN car_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (SlashVV want_VV (SlashV2a buy_V2)))))
|
||||
l RelCN (UseN car_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron they_Pron) (SlashV2VNP beg_V2V (UsePron i_Pron) (SlashV2a buy_V2)))))
|
||||
l PredVP (UsePron he_Pron) (ReflVP (SlashV2a love_V2))
|
||||
l PredVP (DetNP (DetQuant this_Quant NumSg)) (UseComp (CompAP (PositA warm_A)))
|
||||
l PredVP (UsePron we_Pron) (PassV2 love_V2)
|
||||
l PredVP (UsePron we_Pron) (AdvVP (UseV sleep_V) here_Adv)
|
||||
l PredVP (UsePron we_Pron) (AdVVP always_AdV (UseV sleep_V))
|
||||
l PredVP (UsePron we_Pron) (UseComp (CompAP (PositA small_A)))
|
||||
l PredVP (UsePron i_Pron) (UseComp (CompNP (DetArtSg IndefArt (UseN man_N))))
|
||||
l PredVP (UsePron i_Pron) (UseComp (CompAdv here_Adv))
|
||||
|
||||
Reference in New Issue
Block a user