1
0
forked from GitHub/gf-rgl

(Hun) Stems in N+CN, full infl table in NP.

This commit is contained in:
Inari Listenmaa
2020-04-23 13:36:57 +02:00
parent 15040355e6
commit d7d5f4aa59
8 changed files with 105 additions and 88 deletions

View File

@@ -12,7 +12,7 @@ concrete AdjectiveHun of Adjective = CatHun ** open ResHun, Prelude in {
-- : A -> NP -> AP ; -- : A -> NP -> AP ;
ComparA a np = emptyAP ** { ComparA a np = emptyAP ** {
s = a.s ! Compar ; s = a.s ! Compar ;
compar = applyAdp (caseAdp "nál" "nél") np ; -- Adessive compar = np.s ! Ade ;
-- compar = applyAdp (prepos Nom "mint") np ; -- compar = applyAdp (prepos Nom "mint") np ;
} ; } ;

View File

@@ -11,8 +11,8 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
s = \\c => case det.caseagr of { s = \\c => case det.caseagr of {
True => det.s ! c ; True => det.s ! c ;
False => det.s ! Nom False => det.s ! Nom
} ++ cn.s ! det.n ! case2stem c } ++ caseFromStem True c cn det.n
++ cn.rs ! det.n ! c ; ++ cn.compl ! det.n ! c ;
agr = <P3,det.n> ; agr = <P3,det.n> ;
} ; } ;
@@ -57,7 +57,8 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
-- : CN -> NP ; -- : CN -> NP ;
MassNP cn = emptyNP ** { MassNP cn = emptyNP ** {
s = \\c => cn.s ! Sg ! c ; s = \\c => caseFromStem True c cn Sg ++
cn.compl ! Sg ! c ;
agr = <P3,Sg> ; agr = <P3,Sg> ;
} ; } ;
@@ -161,7 +162,7 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
-- : N -> CN -- : N -> CN
-- : N2 -> CN ; -- : N2 -> CN ;
UseN,UseN2 = \n -> n ** { UseN,UseN2 = \n -> n ** {
rs = \\_,_ => [] ; compl = \\_,_ => [] ;
} ; } ;
-- : N2 -> NP -> CN ; -- : N2 -> NP -> CN ;
@@ -179,17 +180,18 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
-- : AP -> CN -> CN -- : AP -> CN -> CN
AdjCN ap cn = cn ** { AdjCN ap cn = cn ** {
s = \\n,c => ap.s ! Sg ++ cn.s ! n ! c ++ ap.compar s = \\n,c => ap.s ! Sg ++ cn.s ! n ! c ;
compl = \\n,c => ap.compar ++ cn.compl ! n ! c ;
} ; } ;
-- : CN -> RS -> CN ; -- : CN -> RS -> CN ;
RelCN cn rs = cn ** { RelCN cn rs = cn ** {
rs = \\n,c => rs.s ! n ! c compl = \\n,c => cn.compl ! n ! c ++ rs.s ! n ! c
} ; } ;
-- : CN -> Adv -> CN ; -- : CN -> Adv -> CN ;
AdvCN cn adv = cn ** { AdvCN cn adv = cn ** {
s = \\n,c => cn.s ! n ! c ++ adv.s compl = \\n,c => cn.compl ! n ! c ++ adv.s
} ; } ;
-- Nouns can also be modified by embedded sentences and questions. -- Nouns can also be modified by embedded sentences and questions.
@@ -205,7 +207,7 @@ concrete NounHun of Noun = CatHun ** open ResHun, Prelude, Coordination in {
-- : CN -> NP -> CN ; -- city Paris (, numbers x and y) -- : CN -> NP -> CN ; -- city Paris (, numbers x and y)
ApposCN cn np = cn ** { ApposCN cn np = cn ** {
s = \\n,c => cn.s ! n ! c ++ np.s ! Nom compl = \\n,c => cn.compl ! n ! c ++ np.s ! Nom
} ; } ;
--2 Possessive and partitive constructs --2 Possessive and partitive constructs

View File

@@ -1,7 +1,7 @@
resource NounMorphoHun = ParamHun ** open Prelude, Predef in { resource NounMorphoHun = ParamHun ** open Prelude, Predef in {
oper oper
Noun = {s : Number => Case => Str ; h : Harm} ; Noun = {s : Number => CaseStem => Str ; h : Harm} ;
-- Paradigm functions -- Paradigm functions
-- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf -- http://www.cse.chalmers.se/~aarne/articles/smart-preprint.pdf
@@ -15,7 +15,7 @@ oper
in nAlmá ** { in nAlmá ** {
s = \\n,c => case <n,c> of { s = \\n,c => case <n,c> of {
-- Singular nominative uses the given form, e.g. "alma" or "kefe" -- Singular nominative uses the given form, e.g. "alma" or "kefe"
<Sg,Nom> => alma ; <Sg,NomFull> => alma ;
-- The rest of the forms are formed with the regular constructor, -- The rest of the forms are formed with the regular constructor,
-- using "almá" or "kefé" as the stem. -- using "almá" or "kefé" as the stem.
@@ -35,8 +35,8 @@ oper
s = \\n,c => case <n,c> of { s = \\n,c => case <n,c> of {
-- All plural forms and Sg Acc, Sg Sup use the "lova" stem -- All plural forms and Sg Acc, Sg Sup use the "lova" stem
<Pl,_>| <Sg,Acc> => nLova.s ! n ! c ; <Pl,_>| <Sg,AccFull> => nLova.s ! n ! c ;
<Sg,Sup> => nLov.s ! n ! c ; <Sg,SupFull> => nLov.s ! n ! c ;
-- The rest of the forms are formed with the regular constructor, -- The rest of the forms are formed with the regular constructor,
-- using "ló" as the stem. -- using "ló" as the stem.
@@ -74,8 +74,8 @@ oper
in nMajmo ** { in nMajmo ** {
s = \\n,c => case <n,c> of { s = \\n,c => case <n,c> of {
-- All plural forms and Sg Acc and Sg Sup use the "majmo" stem -- All plural forms and Sg Acc and Sg Sup use the "majmo" stem
<Pl,_> | <Sg,Acc> => nMajmo.s ! n ! c ; <Pl,_> | <Sg,AccFull> => nMajmo.s ! n ! c ;
<Sg,Sup> => nMajmo.s ! n ! c ; <Sg,SupFull> => nMajmo.s ! n ! c ;
-- The rest of the forms are formed with the regular constructor, -- The rest of the forms are formed with the regular constructor,
-- using "majom" as the stem. -- using "majom" as the stem.
@@ -93,7 +93,7 @@ oper
in nTolla ** { in nTolla ** {
s = \\n,c => case <n,c> of { s = \\n,c => case <n,c> of {
-- All plural forms and Sg Acc use the "tolla" stem -- All plural forms and Sg Acc use the "tolla" stem
<Pl,_> | <Sg,Acc> => nTolla.s ! n ! c ; <Pl,_> | <Sg,AccFull> => nTolla.s ! n ! c ;
-- The rest of the forms are formed with the regular constructor, -- The rest of the forms are formed with the regular constructor,
-- using "toll" as the stem. -- using "toll" as the stem.
@@ -300,22 +300,28 @@ oper
harm1 : Str -> HarmForms = \i -> harm i i ; harm1 : Str -> HarmForms = \i -> harm i i ;
-- Variant of case forms when the noun stem ends in consonant. -- Variant of case forms when the noun stem ends in consonant.
endCaseCons : Case -> HarmForms = \c -> case c of { endCaseCons : CaseStem -> HarmForms = \c -> case c of {
AccFull => harm3 "ot" "et" "öt" ;
SupFull => harm3 "on" "en" "ön" ;
_ => harm1 []
} ;
endCase : Case -> HarmForms = \c -> case c of {
Nom => harm1 [] ;
Acc => harm3 "ot" "et" "öt" ; Acc => harm3 "ot" "et" "öt" ;
Sup => harm3 "on" "en" "ön" ; Dat => harm "nak" "nek" ;
Ins => harm "al" "el" ; Ins => harm "al" "el" ;
Tra => harm "á" "é" ; Tra => harm "á" "é" ;
Dat => harm "nak" "nek" ; Ill => harm "ba" "be" ;
_Nom => harm1 [] Ine => harm "ban" "ben" ;
-- All => harm3 "hoz" "hez" "höz" ; Ela => harm "ból" "ből" ;
-- Ade => harm "nál" "nél" ; All => harm3 "hoz" "hez" "höz" ;
-- Abl => harm "l" "l" ; Ade => harm "l" "l" ;
-- Sub => harm "ra" "re" ; Abl => harm "tól" "től" ;
-- Ill => harm "ba" "be" ; Sub => harm "ra" "re" ;
-- Ine => harm "ban" "ben" ; Sup => harm3 "on" "en" "ön" ;
-- Ela => harm "ból" "ből" ; Del => harm "ról" "ről" ;
-- Del => harm "ról" "ről" ; Cau => harm1 "ért"
-- Cau => harm1 "ért" ;
-- Ess => harm "stul" "stül" ; -- Essive-modal 'with <the noun> and its parts' -- Ess => harm "stul" "stül" ; -- Essive-modal 'with <the noun> and its parts'
-- Ter => harm1 "ig" ; -- Terminative 'as far as <the noun>' -- Ter => harm1 "ig" ; -- Terminative 'as far as <the noun>'
-- For => harm1 "ként" ; -- Formal 'as <the noun>' -- For => harm1 "ként" ; -- Formal 'as <the noun>'
@@ -323,25 +329,23 @@ oper
} ; } ;
-- Variant where accusative has the allomorph -at -- Variant where accusative has the allomorph -at
endCaseConsAccAt : Case -> HarmForms = \c -> case c of { endCaseConsAccAt : CaseStem -> HarmForms = \c -> case c of {
Acc => harm3 "at" "et" "öt" ; AccFull => harm3 "at" "et" "öt" ;
_ => endCaseCons c _ => endCaseCons c
} ; } ;
-- Variant where accusative has the allomorph -t for consonants -- Variant where accusative has the allomorph -t for consonants
-- Examples: "pénz, bor, orr, szín, lány, kés, dal" -- Examples: "pénz, bor, orr, szín, lány, kés, dal"
endCaseConsAcc : Case -> HarmForms = \c -> case c of { endCaseConsAcc : CaseStem -> HarmForms = \c -> case c of {
Acc => harm1 "t" ; AccFull => harm1 "t" ;
_ => endCaseCons c _ => endCaseCons c
} ; } ;
-- Variant of case forms when the noun stem ends in vowel. -- Variant of case forms when the noun stem ends in vowel.
endCaseVow : Case -> HarmForms = \c -> case c of { endCaseVow : CaseStem -> HarmForms = \c -> case c of {
Acc => harm1 "t" ; AccFull => harm1 "t" ;
Sup => harm1 "n" ; SupFull => harm1 "n" ;
Ins => harm "val" "vel" ; InsTraStem => harm1 "v" ;
Tra => harm "vá" "vé" ;
-- Other forms are shared with endCaseCons. -- Other forms are shared with endCaseCons.
_ => endCaseCons c _ => endCaseCons c
} ; } ;
@@ -368,7 +372,7 @@ oper
mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ; mkNounHarm : Harm -> (plural : Str) -> Str -> Noun = mkNounHarmAcc True ;
mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w -> mkNounHarmAcc : (useAt : Bool) -> Harm -> (plural : Str) -> Str -> Noun = \useAt,h,plural,w ->
let endCaseSg : Case -> HarmForms = case <useAt, w> of { let endCaseSg : CaseStem -> HarmForms = case <useAt, w> of {
<_,_ + #v> => endCaseVow ; <_,_ + #v> => endCaseVow ;
<_,_ + #v + ("sz"|"z"|"s"|"zs"|"j" <_,_ + #v + ("sz"|"z"|"s"|"zs"|"j"
|"ly"|"l"|"r"|"n"|"ny"|"ssz"|"zz" |"ly"|"l"|"r"|"n"|"ny"|"ssz"|"zz"
@@ -376,7 +380,7 @@ oper
|"nz")> => endCaseConsAcc ; |"nz")> => endCaseConsAcc ;
<True,_> => endCaseConsAccAt ; <True,_> => endCaseConsAccAt ;
_ => endCaseCons } ; _ => endCaseCons } ;
endCasePl : Case -> HarmForms = case <plural, useAt> of { endCasePl : CaseStem -> HarmForms = case <plural, useAt> of {
<"ak",_> => endCaseConsAccAt ; <"ak",_> => endCaseConsAccAt ;
<_,True> => endCaseConsAccAt ; <_,True> => endCaseConsAccAt ;
_ => endCaseCons } ; _ => endCaseCons } ;
@@ -390,12 +394,12 @@ oper
s = table { s = table {
Sg => table { Sg => table {
-- Double the last letter (if consonant) before Ins, Tra -- Double the last letter (if consonant) before Ins, Tra
c@(Ins|Tra) => duplConsStem + endCaseSg c ! h ; c@(InsTraStem) => duplConsStem + endCaseSg c ! h ;
c@_ => w + endCaseSg c ! h } ; c@_ => w + endCaseSg c ! h } ;
Pl => table { Pl => table {
-- Double the plural k before Ins, Tra -- Double the plural k before Ins, Tra
c@(Ins|Tra) => w + plural + "k" + endCasePl c ! h ; c@(InsTraStem) => w + plural + "k" + endCasePl c ! h ;
-- endCaseCons, because we only use -k as plural morpheme. -- endCaseCons, because we only use -k as plural morpheme.
-- If we add possessive forms with allomorph -i, then revise. -- If we add possessive forms with allomorph -i, then revise.

View File

@@ -20,27 +20,26 @@ oper
param param
Case = CaseStem =
Nom | Acc -- Practical to have core cases as full strings NomFull | AccFull | SupFull -- These may use 2-3 different stems
| Dat -- Would be nice but is very regular, so skip it | InsTraStem -- Instrumental and translative: -v after vowels
| Sup -- Depends on the word which stem it uses
-- | All -- Can have irregularities in suffix (k)
| Ins | Tra -- Different for vowels and consonants
| OblStem ; -- The rest of the cases are regular and attach to this stem | OblStem ; -- The rest of the cases are regular and attach to this stem
-- | Ill | Ine | Ela | Ade | Abl | Sub | Sup | Del -- Locatives
-- | Cau -- Causal-final 'for the purpose of, for the reason that' Case =
-- | Ins -- Instrumental Nom | Acc | Dat
-- | Tra -- Translative | Ill | Ine | Ela | All | Ade | Abl | Sub | Sup | Del -- Locatives
| Cau -- Causal-final 'for the purpose of, for the reason that'
| Ins -- Instrumental
| Tra -- Translative
-- | Ess | Ter | For -- | Ess | Ter | For
-- | Tem -- Temporal, e.g. hatkor six oclock (from hat 6) -- | Tem -- Temporal, e.g. hatkor six oclock (from hat 6)
;
SubjCase = SCNom | SCDat ; -- Limited set of subject cases SubjCase = SCNom | SCDat ; -- Limited set of subject cases
Possessor = NoPoss | Poss Number Person ; Possessor = NoPoss | Poss Number Person ;
oper oper
case2stem : Case -> Case = id Case ; -- TODO add stems and cases as separate types
caseTable : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Case=>Str = caseTable : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,x15 : Str) -> Case=>Str =
\n,a,d,il,ine,el,al,ad,ab,sub,sup,del,ca,ins,tra -> table { \n,a,d,il,ine,el,al,ad,ab,sub,sup,del,ca,ins,tra -> table {
@@ -49,7 +48,6 @@ oper
Dat => d ; Dat => d ;
Ins => ins ; Ins => ins ;
Tra => tra ; Tra => tra ;
OblStem => init a ;
Sup => sup ; Sup => sup ;
Sub => sub ; Sub => sub ;
Del => del ; Del => del ;

View File

@@ -15,7 +15,7 @@ concrete PhraseHun of Phrase = CatHun ** open Prelude, ResHun in {
UttNP = \np -> {s = np.s ! Nom} ; UttNP = \np -> {s = np.s ! Nom} ;
UttVP vp = {s = vp.obj ++ vp.adv ++ vp.s ! VInf} ; UttVP vp = {s = vp.obj ++ vp.adv ++ vp.s ! VInf} ;
UttAdv adv = adv ; UttAdv adv = adv ;
UttCN cn = {s = cn.s ! Sg ! Nom} ; UttCN cn = {s = linCN cn} ;
UttCard n = {s = n.s ! Indep} ; UttCard n = {s = n.s ! Indep} ;
UttAP ap = {s = ap.s ! Sg ++ ap.compar} ; UttAP ap = {s = ap.s ! Sg ++ ap.compar} ;
UttInterj i = i ; UttInterj i = i ;

View File

@@ -14,14 +14,28 @@ resource ResHun = NounMorphoHun ** open Prelude, Predef in {
oper oper
CNoun : Type = Noun ** { CNoun : Type = Noun ** {
rs : Number => Case => Str ; compl : Number => Case => Str ;
} ; } ;
mkCaseNoun : Str -> Number => Case => Str = \s ->
\\n,c => caseFromStem False c (mkNoun s) n ;
mkCaseNoun2 : (n,a : Str) -> Number => Case => Str = \no,ac ->
\\n,c => caseFromStem False c (regNounNomAcc no ac) n ;
caseFromStem : Bool -> Case -> Noun -> Number -> Str = \usebind,cas,cn,n ->
case cas of {
Nom => cn.s ! n ! NomFull ;
Acc => cn.s ! n ! AccFull ;
Sup => cn.s ! n ! SupFull ;
Ins => glueIf usebind (cn.s ! n ! InsTraStem) (endCase Ins ! cn.h) ;
Tra => glueIf usebind (cn.s ! n ! InsTraStem) (endCase Tra ! cn.h) ;
_ => applyOblCase usebind (endCase cas) n cn
} ;
BaseNP : Type = { BaseNP : Type = {
agr : Person*Number ; agr : Person*Number ;
objdef : ObjDef ; objdef : ObjDef ;
empty : Str ; -- standard trick for pro-drop empty : Str ; -- standard trick for pro-drop
h : Harm ;
} ; } ;
NounPhrase : Type = BaseNP ** { NounPhrase : Type = BaseNP ** {
@@ -39,12 +53,12 @@ oper
indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\c => s} ; indeclNP : Str -> NounPhrase = \s -> emptyNP ** {s = \\c => s} ;
defNP : Str -> Number -> NounPhrase = \s,n -> emptyNP ** { defNP : Str -> Number -> NounPhrase = \s,n -> emptyNP ** {
s = (mkNoun s).s ! n ; s = mkCaseNoun s ! n ;
n = n ; n = n ;
objdef = Def ; objdef = Def ;
} ; } ;
linCN : CNoun -> Str = \cn -> cn.s ! Sg ! Nom ++ cn.rs ! Sg ! Nom ; linCN : CNoun -> Str = \cn -> cn.s ! Sg ! NomFull ++ cn.compl ! Sg ! Nom ;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Pronouns -- Pronouns
@@ -69,8 +83,8 @@ oper
} ; } ;
mkQuant : (s,sp : Str) -> Quant = \s,sp -> { mkQuant : (s,sp : Str) -> Quant = \s,sp -> {
s = (mkNoun s).s ; s = mkCaseNoun s ;
sp = (mkNoun sp).s ; sp = mkCaseNoun sp ;
isIndefArt = False ; isIndefArt = False ;
objdef = Def ; objdef = Def ;
caseagr = True ; caseagr = True ;
@@ -87,7 +101,7 @@ oper
mkDet : (s : Str) -> ObjDef -> Number -> Bool -> Determiner = \s,d,n,ca -> { mkDet : (s : Str) -> ObjDef -> Number -> Bool -> Determiner = \s,d,n,ca -> {
s, s,
sp = (mkNoun s).s ! n ; sp = mkCaseNoun s ! n ;
n = n ; n = n ;
numtype = NoNum ; numtype = NoNum ;
objdef = d ; objdef = d ;
@@ -97,7 +111,7 @@ oper
mkDet2 : (n,a : Str) -> ObjDef -> Number -> Bool -> Determiner = \no,ac,d,n,ca -> mkDet2 : (n,a : Str) -> ObjDef -> Number -> Bool -> Determiner = \no,ac,d,n,ca ->
let reg : Determiner = mkDet no d n ca let reg : Determiner = mkDet no d n ca
in reg ** { in reg ** {
s,sp = (regNounNomAcc no ac).s ! n ; s,sp = mkCaseNoun2 no ac ! n ;
} ; } ;
@@ -128,35 +142,29 @@ oper
-- TODO: personal suffixes, e.g. felettem, általam, not *felett/által én -- TODO: personal suffixes, e.g. felettem, általam, not *felett/által én
Adposition : Type = { Adposition : Type = {
pr : Str ; -- Preposition pr : Str ; -- Preposition
s : HarmForms ; -- Postposition s : Str ; -- Postposition
c : Case ; c : Case ;
} ; } ;
nomAdp : Str -> Adposition = \s -> postpos Nom (harm1 s) ; nomAdp : Str -> Adposition = \s -> postpos Nom s ;
caseAdp = overload { caseAdp = overload {
caseAdp : Case -> Adposition = \c -> postpos c (harm1 []) ; caseAdp : Case -> Adposition = \c -> postpos c [] ;
caseAdp : Case -> Str -> Adposition = \c,s -> postpos c (harm1 s) ; caseAdp : Case -> Str -> Adposition = \c,s -> postpos c s ;
caseAdp : Str -> Adposition = \ért ->
postpos OblStem (harm1 ért) ;
caseAdp : (x,y : Str) -> Adposition = \nál,nél ->
postpos OblStem (harm nál nél) ;
caseAdp : (x,y,z : Str) -> Adposition = \hoz,hez,höz ->
postpos OblStem (harm3 hoz hez höz)
} ; } ;
postpos : Case -> HarmForms -> Adposition = \c,h-> {s=h ; c=c ; pr=[]} ; postpos : Case -> Str -> Adposition = \c,s-> {s=s ; c=c ; pr=[]} ;
prepos : Case -> Str -> Adposition = \c,s -> {s=harm1 [] ; c=c ; pr=s} ; prepos : Case -> Str -> Adposition = \c,s -> {s=[] ; c=c ; pr=s} ;
emptyAdp : Adposition = nomAdp [] ; emptyAdp : Adposition = nomAdp [] ;
applyAdp : Adposition -> NounPhrase -> Str = \adp,np -> applyAdp : Adposition -> NounPhrase -> Str = \adp,np ->
adp.pr ++ glueIf adp.c (np.s ! adp.c) (adp.s ! np.h) ; adp.pr ++ np.s ! adp.c ++ adp.s ;
glueIf : Case -> (_,_ : Str) -> Str = \cas,a,b -> applyOblCase : Bool -> HarmForms -> Number -> Noun -> Str = \usebind,adp,n,np ->
case cas of { glueIf usebind (np.s ! n ! OblStem) (adp ! np.h) ;
OblStem => glue a b ;
_ => a ++ b glueIf : Bool -> (_,_ : Str) -> Str = \f,a,b ->
} ; if_then_Str f (glue a b) (a + b) ;
------------------ ------------------
-- Conj -- Conj

View File

@@ -106,12 +106,12 @@ lin by8means_Prep = caseAdp Ins ;
lin for_Prep = caseAdp Dat ; lin for_Prep = caseAdp Dat ;
-- lin from_Prep = mkPrep "" ; -- lin from_Prep = mkPrep "" ;
-- lin in8front_Prep = mkPrep "" ; -- lin in8front_Prep = mkPrep "" ;
lin in_Prep = caseAdp "ban" "ben" ; lin in_Prep = caseAdp Ine ;
lin on_Prep = caseAdp Sup ; lin on_Prep = caseAdp Sup ;
-- lin part_Prep = casePrep ; -- lin part_Prep = casePrep ;
-- lin possess_Prep = -- Suffix attaches to possessee, not possessor -- lin possess_Prep = -- Suffix attaches to possessee, not possessor
-- lin through_Prep = mkPrep ; -- lin through_Prep = mkPrep ;
lin to_Prep = caseAdp "hoz" "hez" "höz" ; lin to_Prep = caseAdp All ;
lin under_Prep = nomAdp "alatt" ; lin under_Prep = nomAdp "alatt" ;
-- lin with_Prep = mkPrep "" ; -- lin with_Prep = mkPrep "" ;
-- lin without_Prep = mkPrep "" ; -- lin without_Prep = mkPrep "" ;

View File

@@ -118,9 +118,14 @@ lin
-- : CN -> Comp ; -- : CN -> Comp ;
CompCN cn = UseCopula ** { CompCN cn = UseCopula ** {
s = \\vf => case vf of { s = \\vf => case vf of {
VPres P3 n => cn.s ! n ! Nom ; VPres P3 n => cn.s ! n ! NomFull
VPres _ n => cn.s ! n ! Nom ++ copula.s ! vf ; ++ cn.compl ! n ! Nom ;
_ => cn.s ! Sg ! Nom ++ copula.s ! vf} ; VPres _ n => cn.s ! n ! NomFull
++ cn.compl ! n ! Nom
++ copula.s ! vf ;
_ => cn.s ! Sg ! NomFull
++ cn.compl ! Sg ! Nom
++ copula.s ! vf} ;
} ; } ;
-- : NP -> Comp ; -- : NP -> Comp ;