1
0
forked from GitHub/gf-core
Files
gf-core/lib/src/latvian/ExtraLav.gf
normundsg 53397db86a Latvian: CN and NP types are extended with a Bool field for tracking whether a relative clause has been used
This is used for inserting the closing comma if necessary, and later will be used also for adjusting the word order.
2013-12-12 20:42:55 +00:00

95 lines
2.1 KiB
Plaintext

--# -path=.:../abstract:../common:../prelude
concrete ExtraLav of ExtraLavAbs = CatLav ** open
ParadigmsLav,
ParadigmsPronounsLav,
VerbLav,
ResLav,
Coordination
in {
flags coding = utf8 ;
lin
-- NP -> CN -> CN
GenCN np cn = {
s = \\d,n,c => np.s ! Gen ++ closeRelCl np.isRel ++ cn.s ! d ! n ! c ;
gend = cn.gend ;
isRel = cn.isRel
} ;
aiz_Prep = mkPrep "aiz" Gen Dat ;
ap_Prep = mkPrep "ap" Acc Dat ;
gar_Prep = mkPrep "gar" Acc Dat ;
kopsh_Prep = mkPrep "kopš" Gen Dat ;
liidz_Prep = mkPrep "līdz" Dat Dat ;
pa_Prep = mkPrep "pa" Acc Dat ;
--par_Prep = mkPrep "par" Acc Dat ;
paar_Prep = mkPrep "pār" Acc Dat ;
pie_Prep = mkPrep "pie" Gen Dat ;
pret_Prep = mkPrep "pret" Acc Dat ;
i8fem_Pron = mkPronoun_I Fem ;
we8fem_Pron = mkPronoun_We Fem ;
youSg8fem_Pron = mkPronoun_You_Sg Fem ;
youPol8fem_Pron = mkPronoun_You_Pol Fem ;
youPl8fem_Pron = mkPronoun_You_Pl Fem ;
they8fem_Pron = mkPronoun_They Fem ;
it8fem_Pron = mkPronoun_It_Sg Fem ;
have_V3 = mkV3 (mkV "būt" Dat) nom_Prep dat_Prep ;
{-
empty_Det num def pol = \num,def,pol -> {
s = \\_,_ => [] ;
n = num ;
d = def ;
pol = pol
} ;
-}
-- Zemāk esošās f-cijas nav ExtraLavAbs, tās ir abstract/Extra.gf
-- NP -> Quant
GenNP np = {
s = \\_,_,_ => np.s ! Gen ;
defin = Def ;
pol = np.pol
} ;
--ICompAP ap = { s = \\g,n => "cik" ++ ap.s ! Indef ! g ! n ! Nom } ;
IAdvAdv adv = { s = "cik" ++ adv.s } ;
-- VP conjunction:
lincat
VPS = { s : AgrAgr => Str } ;
[VPS] = { s1,s2 : AgrAgr => Str } ;
lin
BaseVPS = twoTable AgrAgr ;
ConsVPS = consrTable AgrAgr comma ;
-- NP -> VPS -> S
PredVPS np vps = { s = np.s ! Nom ++ vps.s ! { agr = np.agr ; pol = np.pol } } ;
-- Temp -> Pol -> VP -> VPS
MkVPS temp pol vp = {
s = \\agrAgr =>
temp.s ++
-- TODO: verb moods other than Ind
buildVerb vp.v (Ind temp.a temp.t) pol.p agrAgr.agr agrAgr.pol vp.rightPol ++
vp.compl ! agrAgr.agr
} ;
-- Conj -> [VPS] -> VPS
ConjVPS = conjunctDistrTable AgrAgr ;
oper AgrAgr : Type = { agr : Agreement ; pol : Polarity } ;
}