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
|
i english/LangEng.gf
|
||||||
dc %ttb pt #1 | tb | af treebank.txt
|
i finnish/LangFin.gf
|
||||||
%ttb PositA warm_A
|
|
||||||
%ttb ComparA warm_A (UsePron i_Pron)
|
l PositA warm_A
|
||||||
%ttb ComplA2 married_A2 (UsePron she_Pron)
|
l ComparA warm_A (UsePron i_Pron)
|
||||||
%ttb ReflA2 married_A2
|
l ComplA2 married_A2 (UsePron she_Pron)
|
||||||
%ttb PositA (UseA2 married_A2)
|
l ReflA2 married_A2
|
||||||
%ttb SentAP (PositA good_A) (EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseComp (CompAdv here_Adv)))))
|
l PositA (UseA2 married_A2)
|
||||||
%ttb AdAP very_AdA (PositA warm_A)
|
l SentAP (PositA good_A) (EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseComp (CompAdv here_Adv)))))
|
||||||
%ttb PositAdvAdj warm_A
|
l AdAP very_AdA (PositA warm_A)
|
||||||
%ttb PrepNP in_Prep (DetArtSg DefArt (UseN house_N))
|
l PositAdvAdj warm_A
|
||||||
%ttb ComparAdvAdj more_CAdv warm_A (UsePN john_PN)
|
l PrepNP in_Prep (DetArtSg DefArt (UseN house_N))
|
||||||
%ttb ComparAdvAdjS more_CAdv warm_A (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV run_V)))
|
l ComparAdvAdj more_CAdv warm_A (UsePN john_PN)
|
||||||
%ttb SubjS when_Subj (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
l ComparAdvAdjS more_CAdv warm_A (UseCl TPres ASimul PPos (PredVP (UsePron he_Pron) (UseV run_V)))
|
||||||
%ttb AdNum (AdnCAdv more_CAdv) (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
l SubjS when_Subj (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
||||||
%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))))
|
l AdNum (AdnCAdv more_CAdv) (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
||||||
%ttb ConjAP and_Conj (BaseAP (PositA cold_A) (PositA warm_A))
|
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))))
|
||||||
%ttb ConjNP or_Conj (BaseNP (UsePron she_Pron) (UsePron we_Pron))
|
l ConjAP and_Conj (BaseAP (PositA cold_A) (PositA warm_A))
|
||||||
%ttb ConjAdv or_Conj (BaseAdv here_Adv there_Adv)
|
l ConjNP or_Conj (BaseNP (UsePron she_Pron) (UsePron we_Pron))
|
||||||
%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))))
|
l ConjAdv or_Conj (BaseAdv here_Adv there_Adv)
|
||||||
%ttb DConjAP both7and_DConj (BaseAP (PositA warm_A) (PositA cold_A))
|
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))))
|
||||||
%ttb DConjNP either7or_DConj (BaseNP (UsePron he_Pron) (UsePron she_Pron))
|
l DConjAP both7and_DConj (BaseAP (PositA warm_A) (PositA cold_A))
|
||||||
%ttb DConjAdv both7and_DConj (BaseAdv here_Adv there_Adv)
|
l DConjNP either7or_DConj (BaseNP (UsePron he_Pron) (UsePron she_Pron))
|
||||||
%ttb ImpersCl (UseComp (CompAP (PositA hot_A)))
|
l DConjAdv both7and_DConj (BaseAdv here_Adv there_Adv)
|
||||||
%ttb GenericCl (UseV sleep_V)
|
l ImpersCl (UseComp (CompAP (PositA hot_A)))
|
||||||
%ttb CleftNP (UsePron i_Pron) (UseRCl TPast ASimul PPos (RelVP IdRP (ComplSlash (SlashV2a do_V2) (UsePron it_Pron))))
|
l GenericCl (UseV sleep_V)
|
||||||
%ttb CleftAdv here_Adv (UseCl TPast ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
l CleftNP (UsePron i_Pron) (UseRCl TPast ASimul PPos (RelVP IdRP (ComplSlash (SlashV2a do_V2) (UsePron it_Pron))))
|
||||||
%ttb ExistNP (DetArtSg IndefArt (UseN house_N))
|
l CleftAdv here_Adv (UseCl TPast ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))
|
||||||
%ttb ExistIP (IdetCN (IdetQuant which_IQuant NumPl) (UseN house_N))
|
l ExistNP (DetArtSg IndefArt (UseN house_N))
|
||||||
%ttb PredVP (UsePron i_Pron) (ProgrVP (UseV sleep_V))
|
l ExistIP (IdetCN (IdetQuant which_IQuant NumPl) (UseN house_N))
|
||||||
%ttb ImpPl1 (UseV go_V)
|
l PredVP (UsePron i_Pron) (ProgrVP (UseV sleep_V))
|
||||||
%ttb DetArtSg DefArt (UseN man_N)
|
l ImpPl1 (UseV go_V)
|
||||||
%ttb UsePN john_PN
|
l DetArtSg DefArt (UseN man_N)
|
||||||
%ttb UsePron he_Pron
|
l UsePN john_PN
|
||||||
%ttb PredetNP only_Predet (DetArtSg DefArt (UseN man_N))
|
l UsePron he_Pron
|
||||||
%ttb PPartNP (DetArtSg DefArt (UseN man_N)) see_V2
|
l PredetNP only_Predet (DetArtSg DefArt (UseN man_N))
|
||||||
%ttb AdvNP (UsePN paris_PN) today_Adv
|
l PPartNP (DetArtSg DefArt (UseN man_N)) see_V2
|
||||||
%ttb RelNP (UsePN paris_PN) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAdv here_Adv))))
|
l AdvNP (UsePN paris_PN) today_Adv
|
||||||
%ttb DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
l RelNP (UsePN paris_PN) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAdv here_Adv))))
|
||||||
%ttb DetCN (DetQuantOrd this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
l DetNP (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
||||||
%ttb DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN man_N)
|
l DetCN (DetQuantOrd this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
||||||
%ttb DetCN (DetQuant this_Quant NumPl) (UseN man_N)
|
l DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN man_N)
|
||||||
%ttb DetCN (DetQuant this_Quant NumSg) (UseN man_N)
|
l DetCN (DetQuant this_Quant NumPl) (UseN man_N)
|
||||||
%ttb NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
l DetCN (DetQuant this_Quant NumSg) (UseN man_N)
|
||||||
%ttb NumCard (NumDigits (IIDig D_5 (IDig D_1)))
|
l NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))
|
||||||
%ttb NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01)))))
|
l NumCard (NumDigits (IIDig D_5 (IDig D_1)))
|
||||||
%ttb NumCard (AdNum almost_AdN (NumDigits (IIDig D_5 (IDig D_1))))
|
l NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01)))))
|
||||||
%ttb OrdDigits (IIDig D_5 (IDig D_1))
|
l NumCard (AdNum almost_AdN (NumDigits (IIDig D_5 (IDig D_1))))
|
||||||
%ttb OrdNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01))))
|
l OrdDigits (IIDig D_5 (IDig D_1))
|
||||||
%ttb OrdSuperl warm_A
|
l OrdNumeral (num (pot2as3 (pot1as2 (pot1plus n5 pot01))))
|
||||||
%ttb DetCN (DetArtOrd DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
l OrdSuperl warm_A
|
||||||
%ttb DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (UseN man_N)
|
l DetCN (DetArtOrd DefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (OrdSuperl good_A)) (UseN man_N)
|
||||||
%ttb DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
l DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))) (UseN man_N)
|
||||||
%ttb DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
l DetCN (DetArtCard IndefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
||||||
%ttb DetArtSg DefArt (UseN man_N)
|
l DetCN (DetArtCard DefArt (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01)))))) (UseN man_N)
|
||||||
%ttb DetArtPl DefArt (UseN man_N)
|
l DetArtSg DefArt (UseN man_N)
|
||||||
%ttb MassNP (UseN beer_N)
|
l DetArtPl DefArt (UseN man_N)
|
||||||
%ttb DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN house_N)
|
l MassNP (UseN beer_N)
|
||||||
%ttb UseN house_N
|
l DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN house_N)
|
||||||
%ttb ComplN2 mother_N2 (DetArtSg DefArt (UseN king_N))
|
l UseN house_N
|
||||||
%ttb ComplN2 (ComplN3 distance_N3 (DetCN (DetQuant this_Quant NumSg) (UseN city_N))) (UsePN paris_PN)
|
l ComplN2 mother_N2 (DetArtSg DefArt (UseN king_N))
|
||||||
%ttb UseN2 mother_N2
|
l ComplN2 (ComplN3 distance_N3 (DetCN (DetQuant this_Quant NumSg) (UseN city_N))) (UsePN paris_PN)
|
||||||
%ttb ComplN2 (Use2N3 distance_N3) (DetCN (DetQuant this_Quant NumSg) (UseN city_N))
|
l UseN2 mother_N2
|
||||||
%ttb ComplN2 (Use3N3 distance_N3) (UsePN paris_PN)
|
l ComplN2 (Use2N3 distance_N3) (DetCN (DetQuant this_Quant NumSg) (UseN city_N))
|
||||||
%ttb UseN2 (Use2N3 distance_N3)
|
l ComplN2 (Use3N3 distance_N3) (UsePN paris_PN)
|
||||||
%ttb AdjCN (PositA big_A) (UseN house_N)
|
l UseN2 (Use2N3 distance_N3)
|
||||||
%ttb RelCN (UseN house_N) (UseRCl TPast ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a buy_V2))))
|
l AdjCN (PositA big_A) (UseN house_N)
|
||||||
%ttb AdvCN (UseN house_N) (PrepNP on_Prep (DetArtSg DefArt (UseN hill_N)))
|
l RelCN (UseN house_N) (UseRCl TPast ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a buy_V2))))
|
||||||
%ttb SentCN (UseN question_N) (EmbedQS (UseQCl TPres ASimul PPos (QuestIAdv where_IAdv (PredVP (UsePron she_Pron) (UseV sleep_V)))))
|
l AdvCN (UseN house_N) (PrepNP on_Prep (DetArtSg DefArt (UseN hill_N)))
|
||||||
%ttb ApposCN (UseN city_N) (UsePN paris_PN)
|
l SentCN (UseN question_N) (EmbedQS (UseQCl TPres ASimul PPos (QuestIAdv where_IAdv (PredVP (UsePron she_Pron) (UseV sleep_V)))))
|
||||||
%ttb num (pot2as3 (pot1as2 (pot0as1 (pot0 n6))))
|
l ApposCN (UseN city_N) (UsePN paris_PN)
|
||||||
%ttb num (pot2as3 (pot1as2 (pot0as1 pot01)))
|
l num (pot2as3 (pot1as2 (pot0as1 (pot0 n6))))
|
||||||
%ttb num (pot2as3 (pot1as2 (pot1 n6)))
|
l num (pot2as3 (pot1as2 (pot0as1 pot01)))
|
||||||
%ttb num (pot2as3 (pot1as2 pot110))
|
l num (pot2as3 (pot1as2 (pot1 n6)))
|
||||||
%ttb num (pot2as3 (pot1as2 pot111))
|
l num (pot2as3 (pot1as2 pot110))
|
||||||
%ttb num (pot2as3 (pot1as2 (pot1to19 n6)))
|
l num (pot2as3 (pot1as2 pot111))
|
||||||
%ttb num (pot2as3 (pot1as2 (pot1 n6)))
|
l num (pot2as3 (pot1as2 (pot1to19 n6)))
|
||||||
%ttb num (pot2as3 (pot1as2 (pot1plus n6 (pot0 n5))))
|
l num (pot2as3 (pot1as2 (pot1 n6)))
|
||||||
%ttb num (pot2as3 (pot2 (pot0 n4)))
|
l num (pot2as3 (pot1as2 (pot1plus n6 (pot0 n5))))
|
||||||
%ttb num (pot2as3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
l num (pot2as3 (pot2 (pot0 n4)))
|
||||||
%ttb num (pot3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
l num (pot2as3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
||||||
%ttb num (pot3plus (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))) (pot1as2 (pot1plus n8 (pot0 n9))))
|
l num (pot3 (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))))
|
||||||
%ttb IDig D_8
|
l num (pot3plus (pot2plus (pot0 n4) (pot1plus n6 (pot0 n7))) (pot1as2 (pot1plus n8 (pot0 n9))))
|
||||||
%ttb IIDig D_8 (IIDig D_0 (IIDig D_0 (IIDig D_1 (IIDig D_7 (IIDig D_8 (IDig D_9))))))
|
l IDig D_8
|
||||||
%ttb PhrUtt but_PConj (UttImpSg PPos (ImpVP (AdvVP (UseV come_V) here_Adv))) (VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N)))
|
l IIDig D_8 (IIDig D_0 (IIDig D_0 (IIDig D_1 (IIDig D_7 (IIDig D_8 (IDig D_9))))))
|
||||||
%ttb PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc
|
l PhrUtt but_PConj (UttImpSg PPos (ImpVP (AdvVP (UseV come_V) here_Adv))) (VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N)))
|
||||||
%ttb UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron it_Pron) (UseComp (CompAP (PositA good_A))))))
|
l PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc
|
||||||
%ttb UttImpSg PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
l UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron it_Pron) (UseComp (CompAP (PositA good_A))))))
|
||||||
%ttb UttImpPl PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
l UttImpSg PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
||||||
%ttb UttImpPol PNeg (ImpVP (UseV sleep_V))
|
l UttImpPl PNeg (ImpVP (ReflVP (SlashV2a love_V2)))
|
||||||
%ttb UttIP whoPl_IP
|
l UttImpPol PNeg (ImpVP (UseV sleep_V))
|
||||||
%ttb UttIP whoSg_IP
|
l UttIP whoPl_IP
|
||||||
%ttb UttIAdv why_IAdv
|
l UttIP whoSg_IP
|
||||||
%ttb UttNP (DetCN (DetQuant this_Quant NumSg) (UseN man_N))
|
l UttIAdv why_IAdv
|
||||||
%ttb UttAdv here_Adv
|
l UttNP (DetCN (DetQuant this_Quant NumSg) (UseN man_N))
|
||||||
%ttb UttVP (UseV sleep_V)
|
l UttAdv here_Adv
|
||||||
%ttb VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N))
|
l UttVP (UseV sleep_V)
|
||||||
%ttb QuestCl (PredVP (UsePN john_PN) (UseV walk_V))
|
l VocNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN friend_N))
|
||||||
%ttb QuestVP whoSg_IP (UseV walk_V)
|
l QuestCl (PredVP (UsePN john_PN) (UseV walk_V))
|
||||||
%ttb QuestSlash whoSg_IP (SlashVP (UsePN john_PN) (SlashV2a love_V2))
|
l QuestVP whoSg_IP (UseV walk_V)
|
||||||
%ttb QuestIAdv why_IAdv (PredVP (UsePN john_PN) (UseV walk_V))
|
l QuestSlash whoSg_IP (SlashVP (UsePN john_PN) (SlashV2a love_V2))
|
||||||
%ttb QuestIComp (CompIAdv where_IAdv) (UsePN john_PN)
|
l QuestIAdv why_IAdv (PredVP (UsePN john_PN) (UseV walk_V))
|
||||||
%ttb IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN song_N)
|
l QuestIComp (CompIAdv where_IAdv) (UsePN john_PN)
|
||||||
%ttb IdetIP (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
l IdetCN (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN song_N)
|
||||||
%ttb AdvIP whoSg_IP (PrepNP in_Prep (UsePN paris_PN))
|
l IdetIP (IdetQuant which_IQuant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5))))))))
|
||||||
%ttb IdetIP (IdetQuant which_IQuant NumSg)
|
l AdvIP whoSg_IP (PrepNP in_Prep (UsePN paris_PN))
|
||||||
%ttb PrepIP with_Prep whoSg_IP
|
l IdetIP (IdetQuant which_IQuant NumSg)
|
||||||
%ttb QuestIComp (CompIAdv where_IAdv) (UsePron it_Pron)
|
l PrepIP with_Prep whoSg_IP
|
||||||
%ttb QuestIComp (CompIP whoSg_IP) (UsePron it_Pron)
|
l QuestIComp (CompIAdv where_IAdv) (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)))))))
|
l QuestIComp (CompIP whoSg_IP) (UsePron it_Pron)
|
||||||
%ttb 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 (RelCl (PredVP (UsePN john_PN) (ComplSlash (SlashV2a love_V2) (UsePron she_Pron)))))))
|
||||||
%ttb 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 (RelVP IdRP (ComplSlash (SlashV2a love_V2) (UsePN john_PN))))))
|
||||||
%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))))))
|
l ExistNP (DetArtSg IndefArt (RelCN (UseN woman_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePN john_PN) (SlashV2a love_V2))))))
|
||||||
%ttb PredVP (UsePN john_PN) (UseV walk_V)
|
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))))))
|
||||||
%ttb PredSCVP (EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV go_V)))) (UseComp (CompAP (PositA good_A)))
|
l PredVP (UsePN john_PN) (UseV walk_V)
|
||||||
%ttb RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron he_Pron) (SlashV2a see_V2))))
|
l 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 (AdvSlash (SlashVP (UsePron he_Pron) (SlashV2a see_V2)) today_Adv)))
|
l 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 (SlashPrep (PredVP (UsePron he_Pron) (UseV walk_V)) with_Prep)))
|
l 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 (SlashVS (UsePron she_Pron) say_VS (UseSlash TPres ASimul PPos (SlashVP (UsePron he_Pron) (SlashV2a love_V2))))))
|
l RelCN (UseN girl_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashPrep (PredVP (UsePron he_Pron) (UseV walk_V)) with_Prep)))
|
||||||
%ttb ImpVP (ReflVP (SlashV2a love_V2))
|
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))))))
|
||||||
%ttb EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV go_V)))
|
l ImpVP (ReflVP (SlashV2a love_V2))
|
||||||
%ttb EmbedQS (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV go_V)))
|
l EmbedS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV go_V)))
|
||||||
%ttb EmbedVP (UseV go_V)
|
l EmbedQS (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV go_V)))
|
||||||
%ttb UseCl TCond AAnter PNeg (PredVP (UsePN john_PN) (UseV walk_V))
|
l EmbedVP (UseV go_V)
|
||||||
%ttb UseQCl TCond AAnter PNeg (QuestCl (PredVP (UsePN john_PN) (UseV walk_V)))
|
l UseCl TCond AAnter PNeg (PredVP (UsePN john_PN) (UseV walk_V))
|
||||||
%ttb RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelVP IdRP (UseV walk_V)))
|
l UseQCl TCond AAnter PNeg (QuestCl (PredVP (UsePN john_PN) (UseV walk_V)))
|
||||||
%ttb RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV walk_V)) with_Prep)))
|
l RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelVP IdRP (UseV walk_V)))
|
||||||
%ttb RelS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V))) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAP (PositA good_A)))))
|
l RelCN (UseN girl_N) (UseRCl TCond AAnter PNeg (RelSlash IdRP (SlashPrep (PredVP (UsePron i_Pron) (UseV walk_V)) with_Prep)))
|
||||||
%ttb TEmpty
|
l RelS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV sleep_V))) (UseRCl TPres ASimul PPos (RelVP IdRP (UseComp (CompAP (PositA good_A)))))
|
||||||
%ttb TFullStop (PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc) TEmpty
|
l TEmpty
|
||||||
%ttb TQuestMark (PhrUtt NoPConj (UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron they_Pron) (UseComp (CompAdv here_Adv)))))) NoVoc) TEmpty
|
l TFullStop (PhrUtt NoPConj (UttS (UseCl TPres ASimul PPos (PredVP (UsePN john_PN) (UseV walk_V)))) NoVoc) TEmpty
|
||||||
%ttb TExclMark (PhrUtt NoPConj (ImpPl1 (UseV go_V)) NoVoc) TEmpty
|
l TQuestMark (PhrUtt NoPConj (UttQS (UseQCl TPres ASimul PPos (QuestCl (PredVP (UsePron they_Pron) (UseComp (CompAdv here_Adv)))))) NoVoc) TEmpty
|
||||||
%ttb PredVP (UsePron i_Pron) (UseV sleep_V)
|
l TExclMark (PhrUtt NoPConj (ImpPl1 (UseV go_V)) NoVoc) TEmpty
|
||||||
%ttb PredVP (UsePron i_Pron) (ComplVV want_VV (UseV run_V))
|
l PredVP (UsePron i_Pron) (UseV sleep_V)
|
||||||
%ttb PredVP (UsePron i_Pron) (ComplVS say_VS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
l PredVP (UsePron i_Pron) (ComplVV want_VV (UseV run_V))
|
||||||
%ttb PredVP (UsePron i_Pron) (ComplVQ wonder_VQ (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV run_V))))
|
l PredVP (UsePron i_Pron) (ComplVS say_VS (UseCl TPres ASimul PPos (PredVP (UsePron she_Pron) (UseV run_V))))
|
||||||
%ttb PredVP (UsePron they_Pron) (ComplVA become_VA (PositA red_A))
|
l PredVP (UsePron i_Pron) (ComplVQ wonder_VQ (UseQCl TPres ASimul PPos (QuestVP whoSg_IP (UseV run_V))))
|
||||||
%ttb PredVP (UsePron i_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron he_Pron)) (UsePron it_Pron))
|
l PredVP (UsePron they_Pron) (ComplVA become_VA (PositA red_A))
|
||||||
%ttb PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron she_Pron))
|
l PredVP (UsePron i_Pron) (ComplSlash (Slash3V3 give_V3 (UsePron he_Pron)) (UsePron it_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))
|
l PredVP (UsePron i_Pron) (ComplSlash (SlashV2V beg_V2V (UseV go_V)) (UsePron she_Pron))
|
||||||
%ttb 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 (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 (SlashV2A paint_V2A (PositA red_A)) (UsePron it_Pron))
|
l PredVP (UsePron i_Pron) (ComplSlash (SlashV2Q ask_V2Q (UseQCl TPast ASimul PPos (QuestVP whoSg_IP (UseV come_V)))) (UsePron he_Pron))
|
||||||
%ttb RelCN (UseN car_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (SlashVV want_VV (SlashV2a buy_V2)))))
|
l 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 they_Pron) (SlashV2VNP beg_V2V (UsePron i_Pron) (SlashV2a buy_V2)))))
|
l RelCN (UseN car_N) (UseRCl TPres ASimul PPos (RelSlash IdRP (SlashVP (UsePron i_Pron) (SlashVV want_VV (SlashV2a buy_V2)))))
|
||||||
%ttb PredVP (UsePron he_Pron) (ReflVP (SlashV2a love_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)))))
|
||||||
%ttb PredVP (DetNP (DetQuant this_Quant NumSg)) (UseComp (CompAP (PositA warm_A)))
|
l PredVP (UsePron he_Pron) (ReflVP (SlashV2a love_V2))
|
||||||
%ttb PredVP (UsePron we_Pron) (PassV2 love_V2)
|
l PredVP (DetNP (DetQuant this_Quant NumSg)) (UseComp (CompAP (PositA warm_A)))
|
||||||
%ttb PredVP (UsePron we_Pron) (AdvVP (UseV sleep_V) here_Adv)
|
l PredVP (UsePron we_Pron) (PassV2 love_V2)
|
||||||
%ttb PredVP (UsePron we_Pron) (AdVVP always_AdV (UseV sleep_V))
|
l PredVP (UsePron we_Pron) (AdvVP (UseV sleep_V) here_Adv)
|
||||||
%ttb PredVP (UsePron we_Pron) (UseComp (CompAP (PositA small_A)))
|
l PredVP (UsePron we_Pron) (AdVVP always_AdV (UseV sleep_V))
|
||||||
%ttb PredVP (UsePron i_Pron) (UseComp (CompNP (DetArtSg IndefArt (UseN man_N))))
|
l PredVP (UsePron we_Pron) (UseComp (CompAP (PositA small_A)))
|
||||||
%ttb PredVP (UsePron i_Pron) (UseComp (CompAdv here_Adv))
|
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