forked from GitHub/gf-rgl
Merge remote-tracking branch 'origin/master' into basque
This commit is contained in:
@@ -109,6 +109,12 @@ abstract Extend = Cat ** {
|
||||
|
||||
ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers
|
||||
|
||||
-- existentials with a/no variation
|
||||
|
||||
ExistCN : CN -> Cl ; -- there is a car / there is no car
|
||||
ExistMassCN : CN -> Cl ; -- there is beer / there is no beer
|
||||
ExistPluralCN : CN -> Cl ; -- there are trees / there are no trees
|
||||
|
||||
-- infinitive for purpose AR 21/8/2013
|
||||
|
||||
PurposeVP : VP -> Adv ; -- to become happy
|
||||
|
||||
24
src/api/libraryBrowser/LibraryBrowserIta.gf
Normal file
24
src/api/libraryBrowser/LibraryBrowserIta.gf
Normal file
@@ -0,0 +1,24 @@
|
||||
--# -path=.:alltenses
|
||||
|
||||
concrete LibraryBrowserIta of LibraryBrowser =
|
||||
GrammarIta - [
|
||||
UseCopula
|
||||
],
|
||||
LexiconIta
|
||||
** open (S = SyntaxIta) in {
|
||||
|
||||
lin
|
||||
i_NP = S.i_NP ;
|
||||
you_NP = S.you_NP ;
|
||||
he_NP = S.he_NP ;
|
||||
she_NP = S.she_NP ;
|
||||
we_NP = S.we_NP ;
|
||||
youPl_NP = S.youPl_NP ;
|
||||
youPol_NP = S.youPol_NP ;
|
||||
they_NP = S.they_NP ;
|
||||
|
||||
a_Det = S.mkDet S.a_Quant ;
|
||||
the_Det = S.mkDet S.the_Quant ;
|
||||
aPl_Det = S.mkDet S.a_Quant S.plNum ;
|
||||
thePl_Det = S.mkDet S.the_Quant S.plNum ;
|
||||
}
|
||||
@@ -51,7 +51,10 @@ lin
|
||||
PastPartAP = variants {} ; -- VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
||||
PastPartAgentAP = variants {} ; -- VPSlash -> NP -> AP ; -- (opportunity) lost by the company
|
||||
NominalizeVPSlashNP = variants {} ; -- VPSlash -> NP -> NP ;
|
||||
ExistsNP = variants {} ; -- NP -> Cl ; -- there exists a number / there exist numbers
|
||||
ExistsNP = ExistNP ; -- NP -> Cl ; -- there exists a number / there exist numbers
|
||||
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||
ExistMassCN cn = ExistNP (MassNP cn) ;
|
||||
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||
PurposeVP = variants {} ; -- VP -> Adv ; -- to become happy
|
||||
ComplBareVS = ComplVS ; -- VS -> S -> VP ; -- say she runs ; DEFAULT say that she runs
|
||||
SlashBareV2S = SlashV2S ; -- V2S -> S -> VPSlash ; -- answer (to him) it is good ; DEFAULT answer that it is good
|
||||
|
||||
@@ -68,7 +68,7 @@ concrete StructuralDut of Structural = CatDut, Prelude **
|
||||
so_AdA = ss "zo" ;
|
||||
somebody_NP = mkNP "iemand" Utr Sg ;
|
||||
somePl_Det = mkDet "sommige" "sommige" Pl ;
|
||||
someSg_Det = mkDet "sommige" "sommige" Sg ;
|
||||
someSg_Det = mkDet "enige" "enig" Sg ;
|
||||
something_NP = mkNP "iets" Utr Sg ;
|
||||
somewhere_Adv = ss "ergens" ;
|
||||
that_Quant = mkQuant "die" "dat" ;
|
||||
|
||||
@@ -14607,7 +14607,7 @@ lin deed_N = mkN "deed" "deeds";
|
||||
lin deed_box_N = mkN "deed-box" "deed-boxes";
|
||||
lin deedpoll_N = mkN "deedpoll" "deedpolls";
|
||||
lin deem_V2 = mkV2 (mkV "deem" "deems" "deemed" "deemed" "deeming");
|
||||
lin deem_V2A = mkV2V (mkV "deem") noPrep to_Prep;
|
||||
lin deem_V2A = mkV2A (mkV "deem") noPrep ;
|
||||
lin deem_V2V = mkV2V (mkV "deem") noPrep to_Prep;
|
||||
lin deep_A = mkA "deep" "deeper";
|
||||
lin deep_Adv = mkAdv "deep";
|
||||
|
||||
@@ -11,7 +11,8 @@ concrete ExtendEng of Extend =
|
||||
Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN,
|
||||
CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP,
|
||||
CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPFem, EmbedPresPart, EmptyRelSlash,
|
||||
ExistsNP, FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
||||
ExistsNP, ExistCN, ExistMassCN, ExistPluralCN,
|
||||
FocusAP, FocusAdV, FocusAdv, FocusObj, GenIP, GenModIP, GenModNP, GenNP, GenRP,
|
||||
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, MkVPS, NominalizeVPSlashNP,
|
||||
PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN,
|
||||
PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
|
||||
@@ -220,6 +221,22 @@ concrete ExtendEng of Extend =
|
||||
mkClause "there" (agrP3 (fromAgr np.a).n)
|
||||
(insertObj (\\_ => np.s ! NPAcc) (predV (regV "exist"))) ;
|
||||
|
||||
ExistCN cn =
|
||||
let
|
||||
pos = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||
neg = ExistNP (DetCN (DetQuant no_Quant NumSg) cn) ;
|
||||
in posNegClause pos neg ;
|
||||
ExistMassCN cn =
|
||||
let
|
||||
pos = ExistNP (MassNP cn) ;
|
||||
neg = ExistNP (DetCN (DetQuant no_Quant NumSg) cn) ;
|
||||
in posNegClause pos neg ;
|
||||
ExistPluralCN cn =
|
||||
let
|
||||
pos = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||
neg = ExistNP (DetCN (DetQuant no_Quant NumPl) cn) ;
|
||||
in posNegClause pos neg ;
|
||||
|
||||
|
||||
ComplBareVS v s = insertExtra s.s (predV v) ;
|
||||
SlashBareV2S v s = insertExtrac s.s (predVc v) ;
|
||||
|
||||
@@ -313,7 +313,11 @@ oper
|
||||
mkVV : V -> VV ; -- e.g. want (to VP)
|
||||
infVV : V -> VV ; -- e.g. want (to VP)
|
||||
ingVV : V -> VV ; -- e.g. start (VPing)
|
||||
mkV2V : V -> Prep -> Prep -> V2V ; -- e.g. want (noPrep NP) (to VP)
|
||||
mkV2V : overload {
|
||||
mkV2V : Str -> V2V ;
|
||||
mkV2V : V -> V2V ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V ; -- e.g. want (noPrep NP) (to VP)
|
||||
} ;
|
||||
ingV2V : V -> Prep -> Prep -> V2V ; -- e.g. prevent (noPrep NP) (from VP-ing)
|
||||
mkVA : V -> VA ; -- e.g. become (AP)
|
||||
mkV2A : V -> Prep -> V2A ; -- e.g. paint (NP) (AP)
|
||||
@@ -502,12 +506,14 @@ mkInterj : Str -> Interj
|
||||
cries = (regN cry).s ! Pl ! Nom ; -- !
|
||||
cried : Str = case cries of {
|
||||
_ + "es" => init cries + "d" ;
|
||||
_ + "ers" => init cries + "ed" ;
|
||||
_ => duplFinal cry + "ed"
|
||||
} ;
|
||||
crying : Str = case cry of {
|
||||
_ + "ee" => cry + "ing" ;
|
||||
d + "ie" => d + "ying" ;
|
||||
us + "e" => us + "ing" ;
|
||||
ent + "er" => ent + "ered" ;
|
||||
_ => duplFinal cry + "ing"
|
||||
}
|
||||
in mk5V cry cries cried cried crying ;
|
||||
@@ -582,7 +588,12 @@ mkInterj : Str -> Interj
|
||||
|
||||
mkV0 v = v ;
|
||||
mkV2S v p = lin V2S (prepV2 v p) ;
|
||||
mkV2V v p t = lin V2V (prepV2 v p ** {c3 = t.s ; typ = VVAux}) ;
|
||||
mkV2V = overload {
|
||||
mkV2V : Str -> V2V = \s -> lin V2V (dirV2 (regV s) ** {c3 = [] ; typ = VVAux}) ;
|
||||
mkV2V : V -> V2V = \v -> lin V2V (dirV2 v ** {c3 = [] ; typ = VVAux}) ;
|
||||
mkV2V : V -> Prep -> Prep -> V2V = \v,p,t -> lin V2V (prepV2 v p ** {c3 = t.s ; typ = VVAux}) ;
|
||||
} ;
|
||||
|
||||
ingV2V v p t = lin V2V (prepV2 v p ** {c3 = t.s ; typ = VVPresPart}) ;
|
||||
mkVA v = lin VA v ;
|
||||
mkV2A v p = lin V2A (prepV2 v p) ;
|
||||
|
||||
@@ -556,6 +556,14 @@ param
|
||||
}
|
||||
} ;
|
||||
|
||||
-- for pos/neg variation other than negation word, e.g. "there is a car"/"there is no car"
|
||||
posNegClause : Clause -> Clause -> Clause = \pos,neg -> {
|
||||
s = \\t,a,b,o => case b of {
|
||||
CPos => pos.s ! t ! a ! b ! o ;
|
||||
_ => neg.s ! t ! a ! CPos ! o
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
-- For $Numeral$.
|
||||
|
||||
|
||||
112
src/finnish/ExtendFin.gf
Normal file
112
src/finnish/ExtendFin.gf
Normal file
@@ -0,0 +1,112 @@
|
||||
--# -path=.:../common:../abstract
|
||||
|
||||
concrete ExtendFin of Extend =
|
||||
CatFin ** ExtendFunctor - [
|
||||
VPI2,VPS2,MkVPS2,ConjVPS2,ComplVPS2,MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
|
||||
,ExistCN, ExistMassCN
|
||||
]
|
||||
with
|
||||
(Grammar = GrammarFin) **
|
||||
|
||||
open
|
||||
GrammarFin,
|
||||
ResFin,
|
||||
(S=StemFin),
|
||||
IdiomFin,
|
||||
Coordination,
|
||||
Prelude,
|
||||
MorphoFin,
|
||||
ParadigmsFin in {
|
||||
|
||||
lin
|
||||
ExistCN cn =
|
||||
let
|
||||
pos = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||
neg = ExistNP (partCN cn) ;
|
||||
in posNegClause pos neg ;
|
||||
ExistMassCN cn = ExistNP (partCN cn) ;
|
||||
|
||||
oper
|
||||
partCN : CN -> GrammarFin.NP ;
|
||||
partCN cn =
|
||||
let
|
||||
acn = DetCN (DetQuant IndefArt NumSg) cn
|
||||
in acn ** {
|
||||
s = table {
|
||||
NPCase Nom | NPAcc => acn.s ! NPCase ResFin.Part ;
|
||||
c => acn.s ! c
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
lincat
|
||||
VPS = {s : Agr => Str } ;
|
||||
[VPS] = {s1,s2 : Agr => Str } ;
|
||||
VPI = {s : VVType => Agr => Str ; sc : SubjCase } ; -- Agr needed for possessive suffix:
|
||||
[VPI] = {s1,s2 : VVType => Agr => Str ; sc : SubjCase } ; -- e.g. toivon nukkuva+ni
|
||||
|
||||
lin
|
||||
BaseVPS = twoTable Agr ;
|
||||
ConsVPS = consrTable Agr comma ;
|
||||
|
||||
BaseVPI = twoTable2 VVType Agr ;
|
||||
ConsVPI = consrTable2 VVType Agr comma ;
|
||||
|
||||
MkVPS t p vp = mkVPS t p (lin VP vp) ;
|
||||
ConjVPS c xs = conjunctDistrTable Agr c xs ;
|
||||
PredVPS np vps = {s = np.s ! npNom ++ vps.s ! np.a} ;
|
||||
|
||||
|
||||
MkVPI vp = mkVPI vp ;
|
||||
ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ;
|
||||
ComplVPIVV vv vpi =
|
||||
S.insertObj (\\_,_,a => vpi.s ! vv.vi ! a)
|
||||
(S.predV (vv ** {sc = case vpi.sc of {
|
||||
SCNom => vv.sc ; -- minun täytyy pestä auto
|
||||
c => c }}) -- minulla täytyy olla auto
|
||||
) ;
|
||||
|
||||
|
||||
-------- two-place verb conjunction
|
||||
|
||||
lincat
|
||||
-- Polarity needed to pick the right object case
|
||||
VPS2 = {s : Agr => Str ; c2 : Compl ; p : Polarity } ;
|
||||
[VPS2] = {s1,s2 : Agr => Str ; c2 : Compl ; p : Polarity } ;
|
||||
-- A version with
|
||||
VPI2 = {s : VVType => Agr => Str ; c2 : Compl ; sc : SubjCase } ;
|
||||
[VPI2] = {s1,s2 : VVType => Agr => Str ; c2 : Compl ; sc : SubjCase } ;
|
||||
|
||||
lin
|
||||
-- : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
|
||||
MkVPS2 t p vpsl = mkVPS t p (lin VP vpsl) ** {c2 = vpsl.c2 ; p = p.p } ;
|
||||
|
||||
-- : VPSlash -> VPI2 ; -- to love
|
||||
MkVPI2 vpsl = mkVPI (lin VP vpsl) ** {c2 = vpsl.c2} ;
|
||||
|
||||
BaseVPS2 x y = twoTable Agr x y ** {c2 = y.c2 ; p = xs.p } ; ---- just remembering the compl. case of the latter verb
|
||||
ConsVPS2 x xs = consrTable Agr comma x xs ** {c2 = xs.c2 ; p = xs.p } ;
|
||||
|
||||
BaseVPI2 x y = twoTable2 VVType Agr x y ** {c2 = y.c2} ; ---- just remembering the compl. case of the latter verb
|
||||
ConsVPI2 x xs = consrTable2 VVType Agr comma x xs ** {c2 = xs.c2} ;
|
||||
|
||||
|
||||
ConjVPS2 c xs = conjunctDistrTable Agr c xs ** {c2 = xs.c2 ; p = xs.p } ;
|
||||
ConjVPI2 c xs = conjunctDistrTable2 VVType Agr c xs ** {c2 = xs.c2 ; p = xs.p ; sc = xs.sc } ;
|
||||
|
||||
|
||||
-- appCompl : Bool -> Polarity -> Compl -> ResFin.NP -> Str
|
||||
ComplVPS2 v np = { s = \\agr => v.s ! agr ++ appCompl True v.p v.c2 np } ;
|
||||
|
||||
-- TODO: Version with variable polarity?
|
||||
ComplVPI2 v np = v ** { s = \\vt,a => v.s ! vt ! a ++ appCompl True Pos v.c2 np };
|
||||
|
||||
oper
|
||||
mkVPS : Temp -> Pol -> VP -> VPS = \tem,pol,vp -> lin VPS {
|
||||
s = \\agr => (UseCl tem pol (S.mkClause (\_ -> []) agr vp)).s } ;
|
||||
|
||||
mkVPI : VP -> VPI = \vp -> lin VPI {
|
||||
s = \\vt,agr => S.infVP vp.s.sc Pos agr vp (vvtype2infform vt) ;
|
||||
sc = vp.s.sc } ;
|
||||
|
||||
}
|
||||
@@ -305,7 +305,13 @@ oper
|
||||
|
||||
glueTok : Str -> Str = \s -> "&+" ++ s ;
|
||||
|
||||
|
||||
-- for pos/neg variation other than just negation word, e.g. case in "on ongelma"/"ei ole ongelmaa"
|
||||
posNegClause : Clause -> Clause -> Clause = \pos,neg -> {
|
||||
s = \\t,a,b,o => case b of {
|
||||
Pos => pos.s ! t ! a ! b ! o ;
|
||||
_ => neg.s ! t ! a ! b ! o
|
||||
}
|
||||
} ;
|
||||
-- This is used for subjects of passives: therefore isFin in False.
|
||||
|
||||
subjForm : NP -> SubjCase -> Polarity -> Str = \np,sc,b ->
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
concrete AllFre of AllFreAbs =
|
||||
LangFre,
|
||||
IrregFre,
|
||||
ExtraFre
|
||||
ExtendFre ---- ExtraFre
|
||||
** {} ;
|
||||
|
||||
43
src/french/ExtendFre.gf
Normal file
43
src/french/ExtendFre.gf
Normal file
@@ -0,0 +1,43 @@
|
||||
--# -path=alltenses:../common:../abstract
|
||||
|
||||
concrete ExtendFre of Extend =
|
||||
CatFre ** ExtendFunctor -
|
||||
[
|
||||
---- iFem_Pron, youFem_Pron, weFem_Pron, youPlFem_Pron, theyFem_Pron, youPolFem_Pron, youPolPl_Pron, youPolPlFem_Pron,
|
||||
ExistCN, ExistMassCN, ExistPluralCN
|
||||
] -- put the names of your own definitions here
|
||||
with
|
||||
(Grammar = GrammarFre) **
|
||||
open
|
||||
GrammarFre,
|
||||
ResFre,
|
||||
MorphoFre,
|
||||
PhonoFre,
|
||||
Coordination,
|
||||
Prelude,
|
||||
ParadigmsFre in {
|
||||
-- put your own definitions here
|
||||
|
||||
lin
|
||||
ExistCN cn =
|
||||
let
|
||||
pos = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||
neg = ExistNP (DetCN (DetQuant de_Quant NumSg) cn) ;
|
||||
in posNegClause pos neg PNeg.p ;
|
||||
ExistMassCN cn =
|
||||
let
|
||||
pos = ExistNP (MassNP cn) ;
|
||||
neg = ExistNP (DetCN (DetQuant de_Quant NumSg) cn) ;
|
||||
in posNegClause pos neg PNeg.p ;
|
||||
ExistPluralCN cn =
|
||||
let
|
||||
pos = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||
neg = ExistNP (DetCN (DetQuant de_Quant NumPl) cn) ;
|
||||
in posNegClause pos neg PNeg.p ;
|
||||
|
||||
oper
|
||||
de_Quant : Quant = IndefArt ** {s = \\_,_,_,_ => elisDe} ;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -99,9 +99,21 @@ concrete ExtraFre of ExtraFreAbs = ExtraRomanceFre **
|
||||
let cls = cl.s ! DInv ! t ! a ! p
|
||||
in table {
|
||||
QDir => cls ! Indic ;
|
||||
QIndir => subjIf ++ cls ! Indic
|
||||
QIndir => subjIf ++ cl.s ! DDir ! t ! a ! p ! Indic
|
||||
}
|
||||
} ;
|
||||
InvQuestIAdvCl iadv cl = {s = \\t,a,p => -- dort-il ?
|
||||
let cls = cl.s ! DInv ! t ! a ! p
|
||||
in table {
|
||||
QDir => iadv.s ++ cls ! Indic ;
|
||||
QIndir => iadv.s ++ cl.s ! DDir ! t ! a ! p ! Indic
|
||||
}
|
||||
} ;
|
||||
|
||||
quel_IComp = {
|
||||
s = aagrForms "quel" "quelle" "quels" "quelles" ;
|
||||
cop = <> ;
|
||||
} ;
|
||||
|
||||
--- in ExtraRomance
|
||||
-- PassAgentVPSlash vps np = passVPSlash
|
||||
|
||||
@@ -56,6 +56,9 @@ abstract ExtraFreAbs = ExtraRomanceAbs - [ProDrop] ** {
|
||||
|
||||
EstcequeQuestCl : Cl -> QCl ; -- est-ce qu'il dort
|
||||
InvQuestCl : Cl -> QCl ; -- dort-il
|
||||
InvQuestIAdvCl : IAdv -> Cl -> QCl ; -- dort-il
|
||||
|
||||
quel_IComp : IComp ; -- quelle est votre nationalité
|
||||
|
||||
|
||||
}
|
||||
|
||||
3
src/french/MarkupFre.gf
Normal file
3
src/french/MarkupFre.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:../abstract:../common:../romance
|
||||
|
||||
concrete MarkupFre of Markup = CatFre, MarkHTMLX ** MarkupRomance with (ResRomance = ResFre) ;
|
||||
@@ -20,6 +20,10 @@ concrete ConjunctionGer of Conjunction =
|
||||
c = ss.c
|
||||
} ;
|
||||
|
||||
ConjCN conj ss = conjunctDistrTable3 Adjf Number Case conj ss ** {
|
||||
rc = \\_ => [] ; ext = [] ; adv = [] ; g = ss.g
|
||||
} ;
|
||||
|
||||
|
||||
-- These fun's are generated from the list cat's.
|
||||
|
||||
@@ -56,6 +60,17 @@ concrete ConjunctionGer of Conjunction =
|
||||
ext = []} ;
|
||||
BaseRS x y = twoTable RelGenNum x y ** {c = y.c} ;
|
||||
ConsRS xs x = consrTable RelGenNum comma xs x ** {c = xs.c} ;
|
||||
BaseCN x y = {
|
||||
s1 = bigCN x ;
|
||||
s2 = bigCN y ;
|
||||
g = x.g ; --- gender of first CN, used e.g. in articles
|
||||
} ;
|
||||
ConsCN x xs = {
|
||||
s1 = \\a,n,c => bigCN x ! a ! n ! c ++ comma ++ xs.s1 ! a ! n ! c ;
|
||||
s2 = xs.s2 ;
|
||||
g = x.g ; --- gender of first CN, used e.g. in articles
|
||||
} ;
|
||||
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Order => Str} ;
|
||||
@@ -63,8 +78,12 @@ concrete ConjunctionGer of Conjunction =
|
||||
[NP] = {s1,s2 : PCase => Str ; a : Agr} ;
|
||||
[AP] = {s1,s2 : AForm => Str ; isPre : Bool; c : Str * Str ; ext : Str} ;
|
||||
[RS] = {s1,s2 : RelGenNum => Str ; c : Case} ;
|
||||
[CN] = {s1,s2 : Adjf => Number => Case => Str ; g : Gender} ;
|
||||
|
||||
oper
|
||||
bigAP : AP -> AForm => Str = \ap ->
|
||||
\\a => ap.c.p1 ++ ap.s ! a ++ ap.c.p2 ++ ap.ext;
|
||||
bigCN : CN -> Adjf => Number => Case => Str = \cn ->
|
||||
\\a,n,c => cn.s ! a ! n ! c ++ cn.adv ++ cn.ext ++ cn.rc ! n ;
|
||||
|
||||
}
|
||||
|
||||
@@ -35875,7 +35875,7 @@ lin
|
||||
ss_mann_N = mkN "SS-Mann" "SS-Männer" masculine ;
|
||||
ss_N = mkN "ẞ" "ẞ" neuter ;
|
||||
st_vincent_undgrenadinen_N = mkN "St. Vincent undGrenadinen" "St. Vincent undGrenadinen" neuter ;
|
||||
staat_N = mkN "Staat" "Staaten" masculine ;
|
||||
staat_N = mkN "Staat" "Staat" "Staat" "Staats" "Staaten" "Staaten" masculine ;
|
||||
staatlich_A = regA "staatlich" ;
|
||||
staatsanleihe_N = mkN "Staatsanleihe" "Staatsanleihen" feminine ;
|
||||
staatsanwaeltin_N = mkN "Staatsanwältin" "Staatsanwältinnen" feminine ;
|
||||
|
||||
16
src/german/MarkupGer.gf
Normal file
16
src/german/MarkupGer.gf
Normal file
@@ -0,0 +1,16 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete MarkupGer of Markup = CatGer, MarkHTMLX ** {
|
||||
|
||||
lin
|
||||
MarkupCN m cn = cn ** {s = \\a,n,c => appMark m (cn.s ! a ! n ! c)} ; --- other fields e.g ext intact
|
||||
MarkupNP m np = np ** {s = \\c => appMark m (np.s ! c)} ;
|
||||
MarkupAP m ap = ap ** {s = \\a => appMark m (ap.s ! a)} ;
|
||||
MarkupAdv m adv = {s = appMark m adv.s} ;
|
||||
MarkupS m s = {s = \\o => appMark m (s.s ! o)} ;
|
||||
MarkupUtt m utt = {s = appMark m utt.s} ;
|
||||
MarkupPhr m phr = {s = appMark m phr.s} ;
|
||||
MarkupText m txt = {s = appMark m txt.s} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -192,10 +192,11 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
||||
} ;
|
||||
|
||||
|
||||
RelCN cn rs = cn ** {rc = \\n => embedInCommas (rs.s ! RGenNum (gennum cn.g n))} ;
|
||||
|
||||
RelCN cn rs = cn ** {rc = \\n => (cn.rc ! n ++ embedInCommas (rs.s ! RGenNum (gennum cn.g n)))} ;
|
||||
---- another layer of embedInCommas needed if there is a non-empty rc
|
||||
|
||||
RelNP np rs = np ** {
|
||||
rc = embedInCommas (rs.s ! RGenNum (gennum (genderAgr np.a) (numberAgr np.a))) ;
|
||||
rc = (np.rc ++ embedInCommas (rs.s ! RGenNum (gennum (genderAgr np.a) (numberAgr np.a)))) ;
|
||||
isPron = False } ;
|
||||
|
||||
SentCN cn s = cn ** {ext = embedInCommas s.s} ;
|
||||
|
||||
@@ -755,14 +755,14 @@ resource ResGer = ParamX ** open Prelude in {
|
||||
infVP : Bool -> VP -> ((Agr => Str) * Str * Str * Str) = \isAux, vp -> let vps = useVP vp in
|
||||
<
|
||||
\\agr => (vp.nn ! agr).p1 ++ (vp.nn ! agr).p2 ++ vp.a2,
|
||||
vp.a1 ! Pos ++ (vps.s ! (notB isAux) ! agrP3 Sg ! VPInfinit Simul).inf,
|
||||
vp.a1 ! Pos ++ vp.adj ++ (vps.s ! (notB isAux) ! agrP3 Sg ! VPInfinit Simul).inf,
|
||||
vp.inf,
|
||||
vp.ext
|
||||
vp.infExt ++ vp.ext
|
||||
> ;
|
||||
|
||||
useInfVP : Bool -> VP -> Str = \isAux,vp ->
|
||||
let vpi = infVP isAux vp in
|
||||
vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ;
|
||||
vpi.p1 ! agrP3 Sg ++ vpi.p3 ++ vpi.p2 ++ vpi.p4 ;
|
||||
|
||||
-- The nominative case is not used as reflexive, but defined here
|
||||
-- so that we can reuse this in personal pronouns.
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
resource MakeStructuralIta = open CatIta, ParadigmsIta, MorphoIta, Prelude in {
|
||||
|
||||
oper
|
||||
mkConj : Str -> Str -> ParadigmsIta.Number -> Conj = \x,y,n ->
|
||||
oper
|
||||
mkConj : Str -> Str -> ParadigmsIta.Number -> Conj = \x,y,n ->
|
||||
{s1 = x ; s2 = y ; n = n ; lock_Conj = <>} ;
|
||||
mkSubj : Str -> Subj = \x ->
|
||||
mkSubj : Str -> Subj = \x ->
|
||||
{s = x ; m = Indic ; lock_Subj = <>} ;
|
||||
mkSubjSubj : Str -> Subj = \x ->
|
||||
mkSubjSubj : Str -> Subj = \x ->
|
||||
{s = x ; m = Conjunct ; lock_Subj = <>} ;
|
||||
|
||||
mkIQuant : Str -> IQuant = \s ->
|
||||
@@ -21,9 +21,62 @@ oper
|
||||
} ;
|
||||
mkPredet : Str -> Str -> Prep -> Bool -> Predet = \m,f,c,p -> lin Predet {
|
||||
s = \\g,k => prepCase k ++ case g.g of {Masc => m ; Fem => f} ; ---- number?
|
||||
c = c.c ;
|
||||
c = c.c ;
|
||||
a = if_then_else PAgr p (PAg Sg) PNoAg ---- e,g, "chacun de"; other possibilities?
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkQuant = overload {
|
||||
-- Does not inflect for number or gender
|
||||
mkQuant : Str -> Quant = \s ->
|
||||
let
|
||||
questo : Number => Gender => Case => Str = \\n,g,c => prepCase c ++ s ;
|
||||
in lin Quant {
|
||||
s = \\b => questo ;
|
||||
sp = questo ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
-- Inflects for number and gender
|
||||
mkQuant : Str -> Str -> Str -> Str -> Quant = \tutto,tutta,tutti,tutte ->
|
||||
let
|
||||
questo : Number => Gender => Case => Str = table {
|
||||
Sg => table {
|
||||
Masc => \\c => prepCase c ++ tutto ;
|
||||
Fem => \\c => prepCase c ++ tutta
|
||||
} ;
|
||||
Pl => table {
|
||||
Masc => \\c => prepCase c ++ tutti ;
|
||||
Fem => \\c => prepCase c ++ tutte
|
||||
}
|
||||
}
|
||||
in lin Quant {
|
||||
s = \\b => questo ;
|
||||
sp = questo ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkDet = overload {
|
||||
-- Does not inflect for number
|
||||
mkDet : Str -> Number -> Det = \piu,n -> lin Det {
|
||||
s,sp = \\_,_ => piu ;
|
||||
n = n ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
-- Inflects for number
|
||||
mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det {
|
||||
s,sp = table {
|
||||
Masc => \\_ => alcuni ;
|
||||
Fem => \\_ => alcune
|
||||
} ;
|
||||
n = n ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
3
src/italian/MarkupIta.gf
Normal file
3
src/italian/MarkupIta.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:../abstract:../common:../romance
|
||||
|
||||
concrete MarkupIta of Markup = CatIta, MarkHTMLX ** MarkupRomance with (ResRomance = ResIta) ;
|
||||
@@ -8,7 +8,7 @@
|
||||
-- syntax. To build a lexicon, it is better to use $ParadigmsIta$, which
|
||||
-- gives a higher-level access to this module.
|
||||
|
||||
resource MorphoIta = CommonRomance, ResIta **
|
||||
resource MorphoIta = CommonRomance, ResIta **
|
||||
open PhonoIta, Prelude, Predef in {
|
||||
|
||||
flags optimize=all ;
|
||||
@@ -23,7 +23,7 @@ resource MorphoIta = CommonRomance, ResIta **
|
||||
|
||||
oper
|
||||
numForms : (_,_ : Str) -> Number => Str = \vino, vini ->
|
||||
table {Sg => vino ; Pl => vini} ;
|
||||
table {Sg => vino ; Pl => vini} ;
|
||||
|
||||
-- For example:
|
||||
|
||||
@@ -41,19 +41,23 @@ oper
|
||||
|
||||
-- Common nouns are inflected in number and have an inherent gender.
|
||||
|
||||
mkNoun : (Number => Str) -> Gender -> Noun = \mecmecs,gen ->
|
||||
mkNoun : (Number => Str) -> Gender -> Noun = \mecmecs,gen ->
|
||||
{s = mecmecs ; g = gen} ;
|
||||
|
||||
mkNounIrreg : Str -> Str -> Gender -> Noun = \mec,mecs ->
|
||||
mkNounIrreg : Str -> Str -> Gender -> Noun = \mec,mecs ->
|
||||
mkNoun (numForms mec mecs) ;
|
||||
|
||||
mkNomReg : Str -> Noun = \vino ->
|
||||
mkNomReg : Str -> Noun = \vino ->
|
||||
let
|
||||
o = last vino ;
|
||||
vin = init vino ;
|
||||
n = last vin
|
||||
in
|
||||
case vino of {
|
||||
_ + "ico" => {s = numForms vino (vin + "i") -- amico -> amici
|
||||
; g = Masc} ;
|
||||
_ + "ccia" => {s = numForms vino (init vin + "e") -- doccia -> docce
|
||||
; g = Fem} ;
|
||||
_ + "o" => {s = case n of {
|
||||
"c" | "g" => numForms vino (vin + "hi") ;
|
||||
"i" => numForms vino vin ;
|
||||
@@ -90,22 +94,22 @@ oper
|
||||
|
||||
-- Then the regular and invariant patterns.
|
||||
|
||||
adjSolo : Str -> Adj = \solo ->
|
||||
let
|
||||
adjSolo : Str -> Adj = \solo ->
|
||||
let
|
||||
sol = Predef.tk 1 solo
|
||||
in
|
||||
mkAdj solo (sol + "a") (sol + "i") (sol + "e") (sol + "amente") ;
|
||||
|
||||
adjTale : Str -> Adj = \tale ->
|
||||
let
|
||||
adjTale : Str -> Adj = \tale ->
|
||||
let
|
||||
tal = Predef.tk 1 tale ;
|
||||
tali = tal + "i" ;
|
||||
tala = if_then_Str (pbool2bool (Predef.occur (Predef.dp 1 tal) "lr")) tal tale
|
||||
in
|
||||
mkAdj tale tale tali tali (tala + "mente") ;
|
||||
|
||||
adjBlu : Str -> Adj = \blu ->
|
||||
mkAdj blu blu blu blu blu ; ---
|
||||
adjBlu : Str -> Adj = \blu ->
|
||||
mkAdj blu blu blu blu blu ; ---
|
||||
|
||||
|
||||
mkAdjReg : Str -> Adj = \solo ->
|
||||
@@ -117,7 +121,12 @@ oper
|
||||
in
|
||||
case o of {
|
||||
"o" => case l of {
|
||||
"c" | "g" => mkAdj solo (sol + "a") (sol + "hi") (sol + "he") solamente ;
|
||||
-- "c" | "g" => mkAdj solo (sol + "a") (sol + "hi") (sol + "he") solamente ;
|
||||
"c" => case last (init sol) of {
|
||||
"i" => mkAdj solo (sol + "a") (sol + "i") (sol + "he") solamente ; -- pubblico -> pubblici
|
||||
_ => mkAdj solo (sol + "a") (sol + "hi") (sol + "he") solamente -- ricco -> ricchi
|
||||
} ;
|
||||
"g" => mkAdj solo (sol + "a") (sol + "hi") (sol + "he") solamente ;
|
||||
"i" => mkAdj solo (sol + "a") sol (sol + "e") solamente ;
|
||||
_ => mkAdj solo (sol + "a") (sol + "i") (sol + "e") solamente
|
||||
} ;
|
||||
@@ -138,7 +147,7 @@ oper
|
||||
-- given in $DiffIta.argPron$ and therefore wouldn't be needed in the
|
||||
-- pronoun itself.)
|
||||
|
||||
mkPronoun : (_,_,_,_,_,_,_,_,_ : Str) ->
|
||||
mkPronoun : (_,_,_,_,_,_,_,_,_ : Str) ->
|
||||
Gender -> Number -> Person -> Pronoun =
|
||||
\il,le,lui,glie,Lui,son,sa,ses,see,g,n,p ->
|
||||
let
|
||||
@@ -155,14 +164,14 @@ oper
|
||||
<Sg,Masc> => son ;
|
||||
<Sg,Fem> => sa ;
|
||||
<Pl,Masc> => ses ;
|
||||
<Pl,Fem> => see
|
||||
<Pl,Fem> => see
|
||||
} ;
|
||||
a = Ag g n p ;
|
||||
hasClit = True ; isPol = False
|
||||
} ;
|
||||
|
||||
{- --e
|
||||
mkPronoun : (_,_,_,_,_,_,_,_,_ : Str) ->
|
||||
mkPronoun : (_,_,_,_,_,_,_,_,_ : Str) ->
|
||||
Gender -> Number -> Person -> Pronoun =
|
||||
\il,le,lui,glie,Lui,son,sa,ses,see,g,n,p ->
|
||||
{s = table {
|
||||
|
||||
@@ -7,8 +7,8 @@ concrete SymbolPes of Symbol = CatPes ** open Prelude, ResPes in {
|
||||
lin
|
||||
-- SymbPN i = {s = \\_ => i.s ; g = Masc} ;
|
||||
SymbPN i = {s = i.s ; animacy = Inanimate} ; -- "از" is removed for Phrasebook
|
||||
IntPN i = {s = i.s ++ "از" ; animacy = Inanimate} ;
|
||||
FloatPN i = {s = i.s ++ "از" ; animacy = Inanimate} ;
|
||||
IntPN i = {s = i.s ; animacy = Inanimate} ;
|
||||
FloatPN i = {s = i.s ; animacy = Inanimate} ;
|
||||
NumPN i = {s = i.s ; animacy = Inanimate} ;
|
||||
CNIntNP cn i = {
|
||||
s = \\ez => cn.s ! aEzafa ! Sg ++ i.s ;
|
||||
|
||||
21
src/romance/MarkupRomance.gf
Normal file
21
src/romance/MarkupRomance.gf
Normal file
@@ -0,0 +1,21 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
incomplete concrete MarkupRomance of Markup = CatRomance, MarkHTMLX ** {
|
||||
|
||||
lin
|
||||
MarkupCN m cn = cn ** {s = \\n => appMark m (cn.s ! n)} ;
|
||||
MarkupNP m np = np ** {s = \\c => {
|
||||
c1 = appMark m (np.s ! c).c1 ;
|
||||
c2 = appMark m (np.s ! c).c2 ;
|
||||
comp = appMark m (np.s ! c).comp ;
|
||||
ton = appMark m (np.s ! c).ton
|
||||
}
|
||||
} ;
|
||||
MarkupAP m ap = ap ** {s = \\a => appMark m (ap.s ! a)} ;
|
||||
MarkupAdv m adv = {s = appMark m adv.s} ;
|
||||
MarkupS m s = {s = \\md => appMark m (s.s ! md)} ;
|
||||
MarkupUtt m utt = {s = appMark m utt.s} ;
|
||||
MarkupPhr m phr = {s = appMark m phr.s} ;
|
||||
MarkupText m txt = {s = appMark m txt.s} ;
|
||||
|
||||
}
|
||||
@@ -178,6 +178,16 @@ oper
|
||||
|
||||
mkVPSlash : Compl -> VP -> VP ** {c2 : Compl} = \c,vp -> vp ** {c2 = c} ;
|
||||
|
||||
Clause : Type = {s : Direct => RTense => Anteriority => RPolarity => Mood => Str} ;
|
||||
|
||||
-- for pos/neg variation other than negation word, e.g. "il y a du vin" / "il n'y a pas de vin"
|
||||
posNegClause : Clause -> Clause -> RPolarity -> Clause = \pos,neg,pol -> {
|
||||
s = \\d,t,a,b,m => case b of {
|
||||
RPos => pos.s ! d ! t ! a ! b ! m ;
|
||||
_ => neg.s ! d ! t ! a ! pol ! m
|
||||
}
|
||||
} ;
|
||||
|
||||
mkClause : Str -> Bool -> Bool -> Agr -> VP ->
|
||||
{s : Direct => RTense => Anteriority => RPolarity => Mood => Str} =
|
||||
mkClausePol False ;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--# -path=.:../romance:../abstract:../common:prelude
|
||||
|
||||
instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRomance, PhonoSpa, BeschSpa, Prelude in {
|
||||
instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits,contractInf] = open CommonRomance, PhonoSpa, BeschSpa, Prelude in {
|
||||
|
||||
flags optimize=noexpand ;
|
||||
coding=utf8 ;
|
||||
@@ -10,7 +10,7 @@ instance DiffSpa of DiffRomance - [partAgr,vpAgrSubj,vpAgrClits] = open CommonRo
|
||||
partAgr : VType -> Bool = \vtyp -> False ;
|
||||
vpAgrSubj : Verb -> VPAgrType = \v -> <verbDefaultPart v, False> ;
|
||||
vpAgrClits : Verb -> AAgr -> VPAgrType = \v,a -> <verbDefaultPart v, False> ;
|
||||
|
||||
contractInf : Bool -> Bool -> Bool = orB ; --- the effect of this is that the clitic is bound to the infinitive: matarte
|
||||
--------------------------------
|
||||
|
||||
param
|
||||
|
||||
@@ -80,4 +80,10 @@ concrete ExtraSpa of ExtraSpaAbs = ExtraRomanceSpa **
|
||||
|
||||
UseComp_estar comp = insertComplement comp.s (predV I.estar_V) ;
|
||||
|
||||
cual_IComp = {
|
||||
s = aagrForms "cual" "cual" "cuáles" "cuáles" ;
|
||||
cop = serCopula ;
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -34,4 +34,6 @@ abstract ExtraSpaAbs = ExtraRomanceAbs ** {
|
||||
|
||||
UseComp_estar : Comp -> VP ; -- esta lleno, as opposed to es lleno
|
||||
|
||||
cual_IComp : IComp ; -- cual es ...
|
||||
|
||||
}
|
||||
|
||||
@@ -20,4 +20,56 @@ oper
|
||||
} ;
|
||||
|
||||
|
||||
mkQuant = overload {
|
||||
-- Does not inflect for number or gender
|
||||
mkQuant : Str -> Quant = \s ->
|
||||
let
|
||||
questo : Number => Gender => Case => Str = \\n,g,c => prepCase c ++ s ;
|
||||
in lin Quant {
|
||||
s = \\b => questo ;
|
||||
sp = questo ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
-- Inflects for number and gender
|
||||
mkQuant : Str -> Str -> Str -> Str -> Quant = \tutto,tutta,tutti,tutte ->
|
||||
let
|
||||
questo : Number => Gender => Case => Str = table {
|
||||
Sg => table {
|
||||
Masc => \\c => prepCase c ++ tutto ;
|
||||
Fem => \\c => prepCase c ++ tutta
|
||||
} ;
|
||||
Pl => table {
|
||||
Masc => \\c => prepCase c ++ tutti ;
|
||||
Fem => \\c => prepCase c ++ tutte
|
||||
}
|
||||
}
|
||||
in lin Quant {
|
||||
s = \\b => questo ;
|
||||
sp = questo ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
} ;
|
||||
|
||||
mkDet = overload {
|
||||
-- Does not inflect for number
|
||||
mkDet : Str -> Number -> Det = \piu,n -> lin Det {
|
||||
s,sp = \\_,_ => piu ;
|
||||
n = n ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
-- Inflects for number
|
||||
mkDet : Str -> Str -> Number -> Det = \alcuni,alcune,n -> lin Det {
|
||||
s,sp = table {
|
||||
Masc => \\_ => alcuni ;
|
||||
Fem => \\_ => alcune
|
||||
} ;
|
||||
n = n ;
|
||||
s2 = [] ;
|
||||
isNeg = False
|
||||
} ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
3
src/spanish/MarkupSpa.gf
Normal file
3
src/spanish/MarkupSpa.gf
Normal file
@@ -0,0 +1,3 @@
|
||||
--# -path=.:../abstract:../common:../romance
|
||||
|
||||
concrete MarkupSpa of Markup = CatSpa, MarkHTMLX ** MarkupRomance with (ResRomance = ResSpa) ;
|
||||
@@ -139,8 +139,8 @@ lin
|
||||
when_Subj = ss "cuando" ** {m = Indic} ;
|
||||
where_IAdv = ss "dónde" ;
|
||||
which_IQuant = {s = table {
|
||||
Sg => \\g,c => prepCase c ++ "qué" ; --- cual
|
||||
Pl => \\g,c => prepCase c ++ "qué"
|
||||
Sg => \\g,c => prepCase c ++ "cual" ;
|
||||
Pl => \\g,c => prepCase c ++ "cuales"
|
||||
}
|
||||
} ;
|
||||
whoPl_IP = {s = \\c => prepCase c ++ "quién" ; a = aagr Masc Pl} ;
|
||||
|
||||
@@ -15125,7 +15125,7 @@ lin deed_N = mkN "deed" "deeds";
|
||||
lin deed_box_N = variants {mkN "deed-box" "deed-boxes"; mkN "deedbox" "deedboxes"};
|
||||
lin deedpoll_N = mkN "deedpoll" "deedpolls";
|
||||
lin deem_V2 = mkV2 (mkV "deem" "deems" "deemed" "deemed" "deeming");
|
||||
lin deem_V2A = mkV2V (mkV "deem") noPrep to_Prep;
|
||||
lin deem_V2A = mkV2A (mkV "deem") noPrep;
|
||||
lin deem_V2V = mkV2V (mkV "deem") noPrep to_Prep;
|
||||
lin deep_A = mkA "deep" "deeper";
|
||||
lin deep_Adv = mkAdv "deep";
|
||||
|
||||
@@ -347,6 +347,35 @@ concrete LexiconTur of Lexicon = CatTur **
|
||||
watch_V2 = mkV2 (mkV "izlemek") ;
|
||||
win_V2 = mkV2 (mkV "kazanmak") ;
|
||||
wipe_V2 = mkV2 (mkV "silmek") ;
|
||||
wonder_VQ = mkV "merak" et_Aux ;
|
||||
write_V2 = mkV2 (mkV "yazmak") ;
|
||||
|
||||
wonder_VQ = mkV "merak" et_Aux ;
|
||||
know_VQ = mkV "bilmek" SgSylConIrreg ;
|
||||
|
||||
alas_Interj = { s = "ne yazık ki" } ;
|
||||
|
||||
already_Adv = mkAdv "zaten" ;
|
||||
far_Adv = mkAdv "uzak" ;
|
||||
now_Adv = mkAdv "şimdi" ;
|
||||
today_Adv = mkAdv "bugün" ;
|
||||
|
||||
-- TODO: should `linearize easy_A2V` be (A) "kolay" (Eng "easy") or (B)
|
||||
-- ("için kolay") (Eng "easy for")? I got the latter from the English
|
||||
-- linearization but the following seems to be the correct way using the
|
||||
-- paradigms. I might need to do something so that the resulting
|
||||
-- linearization is (B).
|
||||
easy_A2V = mkA2 (mkA "kolay") icinP ;
|
||||
|
||||
-- TODO: It is not obvious to me why these are inflected so putting
|
||||
-- this here as an implementation stub.
|
||||
left_Ord = { s = \\_,_ => "sol" } ;
|
||||
right_Ord = { s = \\_,_ => "sağ" } ;
|
||||
|
||||
probable_AS = mkAS (mkA "olası") ;
|
||||
|
||||
fun_AV = mkAV (mkA "neşe") ;
|
||||
|
||||
|
||||
oper
|
||||
icinP = mkPrep "için" Gen ;
|
||||
}
|
||||
|
||||
@@ -13,8 +13,9 @@ resource ParadigmsTur = open
|
||||
coding=utf8 ; optimize=noexpand ;
|
||||
|
||||
oper
|
||||
-- Paradigms for verb
|
||||
AS, AV : Type = A ;
|
||||
|
||||
-- Paradigms for verb
|
||||
mkV : overload {
|
||||
-- make regular verbs, one form is enough
|
||||
mkV : (esmek : Str) -> V ;
|
||||
@@ -155,6 +156,9 @@ resource ParadigmsTur = open
|
||||
mkA : Str -> Str -> HarVowP -> A ;
|
||||
} ;
|
||||
|
||||
mkAS : A -> AS ;
|
||||
mkAV : A -> AV ;
|
||||
|
||||
mkA2 : overload {
|
||||
-- (biri) ile evli
|
||||
mkA2 : A -> Prep -> A2 ;
|
||||
@@ -184,6 +188,10 @@ resource ParadigmsTur = open
|
||||
makeDigit : Str -> Str -> Number -> {s : CardOrd => Number => Case => Str ; n : Number} ;
|
||||
|
||||
|
||||
-- Adverbs
|
||||
|
||||
mkAdv : Str -> Adv ;
|
||||
|
||||
--Implementation of verb paradigms
|
||||
|
||||
mkV = overload {
|
||||
@@ -425,6 +433,9 @@ resource ParadigmsTur = open
|
||||
|
||||
mkN3 base = (mkN base) ** lin N3 {c1,c2 = lin Prep {s=[]; c=Gen}} ;
|
||||
|
||||
-- Implementation for adverb paradigms.
|
||||
mkAdv s = lin Adv { s = s } ;
|
||||
|
||||
-- Implementation of adjactive paradigms
|
||||
mkA = overload {
|
||||
-- güzel
|
||||
@@ -441,6 +452,9 @@ resource ParadigmsTur = open
|
||||
mkA : (base, base1 : Str) -> (ih_har : HarVowP) -> A = \base,base1,ih_har -> (irregN_h base base ih_har) ** lin A {adv = addSuffix base (mkHar ih_har (getHarConP base)) adjAdvSuffix};
|
||||
} ;
|
||||
|
||||
mkAS v = v ;
|
||||
mkAV v = v ;
|
||||
|
||||
mkA2 =
|
||||
overload {
|
||||
mkA2 : A -> Prep -> A2 = \base,c -> base ** lin A2 {c = c} ;
|
||||
|
||||
Reference in New Issue
Block a user