support for verbs with prepositions

This commit is contained in:
Krasimir Angelov
2026-09-26 14:38:24 +02:00
parent fd0e838fba
commit 4bbc7c7d59
9 changed files with 96 additions and 36 deletions
+37 -9
View File
@@ -41,6 +41,22 @@ oper
mkN : Str -> Bizi -> N = \s,bizi -> lin N (mkNoun s ** { anim = bizi }) ;
} ;
-- Keep the noun's lexical final -a inside compounds with a following
-- adjective or adverb, but let case and number suffixes attach at the
-- compound's right edge: bonba atomiko+a, bonba atomiko+ek, ...
compoundN = overload {
compoundN : N -> A -> N = \noun,adj ->
lin N {
s = noun.s ++ artIndef ! Abs ! noun.ph ++ adj.s ! AF Posit ;
ph = adj.ph ;
anim = noun.anim
} ;
compoundN : N -> Str -> N = \noun,adv ->
let compound = mkNoun (noun.s ++ artIndef ! Abs ! noun.ph ++ adv)
in lin N (compound ** {anim = noun.anim}) ;
} ;
mkPN : Str -> PN = \s -> lin PN (mkPNoun s) ;
mkLN : Str -> LN = \s -> lin LN (mkPNoun s) ;
mkGN : Str -> GN = \s -> lin GN (mkPNoun s) ;
@@ -88,31 +104,43 @@ oper
-- For verbs with non-inflecting participle, see izanV, egonV and ukanV.
mkV2 = overload {
mkV2 : Str -> V2 = \s -> lin V2 (mkVerbDu s) ;
mkV2 : Str -> V2 = \s -> lin V2 (mkVerbDu s ** {c2 = noPost}) ;
mkV2 : Str -> AuxType -> V2 = \s,val -> lin V2 (mkVerbDa s ** { val = val }) ;
mkV2 : Str -> AuxType -> V2 = \s,val -> lin V2 (mkVerbDa s ** {val = val ; c2 = noPost}) ;
mkV2 : Str -> V -> V2 = \lo,egin ->
lin V2 (egin ** { prc = \\t => lo ++ egin.prc ! t ;
val = Du Ukan }) ;
val = Du Ukan ;
c2 = noPost}) ;
-- A V2 always selects the transitive auxiliary. Keeping the auxiliary
-- inherited from mkV made the very common `mkV2 (mkV "...")` idiom
-- produce absolutive subjects and forms of izan (e.g. *hura ... da).
mkV2 : V -> V2 = \x -> lin V2 x ;
mkV2 : V -> V2 = \x -> lin V2 (x ** {val = Du Ukan ; c2 = noPost}) ;
mkV2 : V -> Prep -> V2 = \v,p ->
lin V2 (v ** {val = Du Ukan ; c2 = p}) ;
} ;
mkVA : Str -> VA = \s -> lin VA (mkVerbDa s) ; -- Nor
mkV2A : Str -> V2A = \s -> lin V2A (mkVerbDu s) ; -- Nor-nork
mkV2A : Str -> V2A = \s -> lin V2A (mkVerbDu s ** {c2 = noPost}) ; -- Nor-nork
mkVQ : Str -> VQ = \s -> lin VQ (mkVerbDu s) ; -- Nor-nork
mkVS : Str -> VS = \s -> lin VS (mkVerbDu s) ; -- Nor-nork
mkVV : V -> VV = \v -> lin VV v ;
mkV2V : Str -> V2V = \s -> lin V2V (mkVerbDio s) ; -- ??? TODO check valency
mkV2S : Str -> V2S = \s -> lin V2S (mkVerbDio s) ; -- Nor-nori-nork: (mutilari) (neska datorrela) erantzun diot
mkV2Q : Str -> V2Q = \s -> lin V2Q (mkVerbDio s) ; -- Nor-nori-nork: (mutilari) (neska datorren) galdetu diot
mkV3 : Str -> V3 = \s -> lin V3 (mkVerbDio s) ; -- Nor-nori-nork: (mutilari) (garagardoa) edan diot
mkV2V : Str -> V2V = \s -> lin V2V (mkVerbDio s ** {c2 = noPost}) ; -- ??? TODO check valency
mkV2S : Str -> V2S = \s -> lin V2S (mkVerbDio s ** {c2 = noPost}) ; -- Nor-nori-nork: (mutilari) (neska datorrela) erantzun diot
mkV2Q : Str -> V2Q = \s -> lin V2Q (mkVerbDio s ** {c2 = noPost}) ; -- Nor-nori-nork: (mutilari) (neska datorren) galdetu diot
mkV3 = overload {
mkV3 : Str -> V3 = \s ->
lin V3 (mkVerbDio s ** {c2 = noPost ; c3 = mkPost [] Dat False}) ;
mkV3 : V -> Prep -> V3 = \v,p3 ->
lin V3 (v ** {val = Dio ; c2 = noPost ; c3 = p3}) ;
mkV3 : V -> Prep -> Prep -> V3 = \v,p2,p3 ->
lin V3 (v ** {val = Dio ; c2 = p2 ; c3 = p3}) ;
} ; -- Nor-nori-nork: (mutilari) (garagardoa) edan diot
-----