mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-08-22 04:06:23 -06:00
czech: implement three-place verbs (V3)
Add a proper V3 category to the Czech RGL, previously absent (V3 fell
through to the {s:Str} default and Slash2V3/Slash3V3 were notYet stubs).
- CatCze: lincat V3 = VerbForms ** {c, c2 : ComplementCase}; extend
VPSlash with a trailing `ind` field for the incorporated indirect
object (mirrors the English VPSlash c2 field).
- VerbCze: implement Slash2V3 and Slash3V3; ComplSlash now renders the
`ind` string after the object slot, and SlashV2a sets ind = []. This
keeps the object before the indirect object under the shared
ComplV3 v o d = ComplSlash (Slash3V3 v d) o.
- ParadigmsCze: add the mkV3 paradigm (default acc/dat, plus an
explicit two-complement-case form).
- MissingCze: drop the now-implemented Slash2V3/Slash3V3 stubs.
V2 predication is unchanged (ind is empty for V2-derived VPSlash).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+2
-1
@@ -21,9 +21,10 @@ concrete CatCze of Cat =
|
||||
RP = AdjForms ;
|
||||
|
||||
VP = {verb : VerbForms ; clit,compl : Agr => Str} ; ---- more fields probably needed
|
||||
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase} ; ----
|
||||
VPSlash = {verb : VerbForms ; clit,compl : Agr => Str ; c : ComplementCase ; ind : Agr => Str} ; -- ind : incorporated indirect object, rendered after the object slot
|
||||
V = ResCze.VerbForms ;
|
||||
V2 = ResCze.VerbForms ** {c : ComplementCase} ;
|
||||
V3 = ResCze.VerbForms ** {c,c2 : ComplementCase} ; -- c : direct object, c2 : indirect object
|
||||
VS,VQ,VV = ResCze.VerbForms ;
|
||||
|
||||
A = ResCze.AdjForms ;
|
||||
|
||||
@@ -61,8 +61,6 @@ oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
|
||||
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
|
||||
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
|
||||
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||
oper Slash2V3 : V3 -> NP -> VPSlash = notYet "Slash2V3" ;
|
||||
oper Slash3V3 : V3 -> NP -> VPSlash = notYet "Slash3V3" ;
|
||||
oper SlashPrep : Cl -> Prep -> ClSlash = notYet "SlashPrep" ;
|
||||
oper SlashV2A : V2A -> AP -> VPSlash = notYet "SlashV2A" ;
|
||||
oper SlashV2Q : V2Q -> QS -> VPSlash = notYet "SlashV2Q" ;
|
||||
|
||||
@@ -122,6 +122,14 @@ oper
|
||||
= \vf,c -> vf ** {c = c} ;
|
||||
} ;
|
||||
|
||||
mkV3 = overload {
|
||||
mkV3 : VerbForms -> VerbForms ** {c,c2 : ComplementCase}
|
||||
= \vf -> vf ** {c = {s = [] ; c = Acc ; hasPrep = False} ;
|
||||
c2 = {s = [] ; c = Dat ; hasPrep = False}} ;
|
||||
mkV3 : VerbForms -> ComplementCase -> ComplementCase -> VerbForms ** {c,c2 : ComplementCase}
|
||||
= \vf,c,c2 -> vf ** {c = c ; c2 = c2} ;
|
||||
} ;
|
||||
|
||||
------------------------
|
||||
-- Adverbs, prepositions, conjunctions, ...
|
||||
|
||||
|
||||
+21
-3
@@ -8,17 +8,35 @@ lin
|
||||
|
||||
ComplSlash vps np = case <np.hasClit, vps.c.hasPrep> of {
|
||||
<True,False> => vps ** {
|
||||
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c
|
||||
clit = \\a => vps.clit ! a ++ np.clit ! vps.c.c ;
|
||||
compl = \\a => vps.compl ! a ++ vps.ind ! a
|
||||
} ;
|
||||
_ => vps ** {
|
||||
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c
|
||||
compl = \\a => vps.compl ! a ++ vps.c.s ++ np.s ! vps.c.c ++ vps.ind ! a
|
||||
}
|
||||
} ;
|
||||
|
||||
SlashV2a v = {
|
||||
verb = v ;
|
||||
clit,compl = \\_ => [] ;
|
||||
c = v.c
|
||||
c = v.c ;
|
||||
ind = \\_ => []
|
||||
} ;
|
||||
|
||||
-- three-place verbs: c = direct object case, c2 = indirect object case
|
||||
Slash2V3 v np = { -- fill the direct object, leave the indirect open
|
||||
verb = v ;
|
||||
clit = \\_ => [] ;
|
||||
compl = \\_ => v.c.s ++ np.s ! v.c.c ;
|
||||
c = v.c2 ;
|
||||
ind = \\_ => []
|
||||
} ;
|
||||
Slash3V3 v np = { -- fill the indirect object (rendered after the object slot)
|
||||
verb = v ;
|
||||
clit = \\_ => [] ;
|
||||
compl = \\_ => [] ;
|
||||
c = v.c ;
|
||||
ind = \\_ => v.c2.s ++ np.s ! v.c2.c
|
||||
} ;
|
||||
|
||||
UseComp comp = {
|
||||
|
||||
Reference in New Issue
Block a user