mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-22 19:22:50 -06:00
Extends the previously introduced support for specifying the verb valence (verb-dependent subject and object cases), involving functions up to PredVP and RelVP.
In Latvian, the passive voice is not used if the agent (subject) is known; to preserve the information structure (i.e. the word order), a clause like 'A is <done> by B' is linearized in the active voice ('A <does> B') where A has the object case (e.g. Acc), and B - the subject case (e.g. Nom). Thus, the verb valence patterns are swapped on-the-fly.
This is still a rather quick & dirty implementation: parameters and linearization types have to be optimized (VerbLav), the use of PassV2 in AdvVP is problematic as it doesn't apply VPSlashPrep / ComplSlash, etc.
35 lines
838 B
Plaintext
35 lines
838 B
Plaintext
--# -path=.:../abstract:../common:../prelude
|
|
|
|
concrete AdverbLav of Adverb = CatLav ** open
|
|
ResLav,
|
|
Prelude
|
|
in {
|
|
|
|
flags
|
|
coding = utf8 ;
|
|
|
|
lin
|
|
PositAdvAdj a = { s = a.s ! (AAdv Posit) } ;
|
|
|
|
-- TODO: vajag arī 'ātrāks par Jāni' un 'ātrāks nekā Jānis' pie more_CAdv
|
|
-- TODO: vai te tiešām veido 'ātrāk par Jāni'? kurš ir pareizais adverbs? nevis 'ātrāks par Jāni'?
|
|
ComparAdvAdj cadv a np = { s = cadv.s ++ a.s ! (AAdv cadv.d) ++ cadv.p ++ np.s ! Nom } ;
|
|
|
|
ComparAdvAdjS cadv a s = { s = cadv.s ++ a.s ! (AAdv cadv.d) ++ cadv.p ++ s.s } ;
|
|
|
|
-- FIXME: postpozīcijas prievārdi
|
|
PrepNP prep np = { s = prep.s ++ np.s ! (prep.c ! (fromAgr np.a).num) } ;
|
|
|
|
AdAdv = cc2 ;
|
|
|
|
SubjS = cc2 ;
|
|
|
|
AdnCAdv cadv = {
|
|
s = case cadv.d of {
|
|
Posit => cadv.s ++ cadv.p ;
|
|
_ => NON_EXISTENT
|
|
}
|
|
} ;
|
|
|
|
}
|