Icelandic: added VInf Middle, which was a missing form, as well as a constructor depV for deponent verbs, also matched by -st ending in one-place mkV

This commit is contained in:
Aarne Ranta
2019-08-02 11:35:32 +02:00
parent a1d1966d70
commit 5762461bea
3 changed files with 32 additions and 9 deletions

View File

@@ -905,7 +905,7 @@ resource MorphoIce = ResIce ** open Prelude, (Predef=Predef), ResIce in {
pastSub = mforms ! Subjunctive ! DPast
in {
s = table {
VInf => inf ;
VInf v => mkVoice v inf ;
VPres v Indicative Sg p => persList (mkVoice v (presInd ! 0)) (mkVoice v (presInd ! 1)) (mkVoice v (presInd ! 2)) ! p;
VPres v Indicative Pl p => persList (mkVoice v (presInd ! 3)) (mkVoice v (presInd ! 4)) (mkVoice v (presInd ! 5)) ! p;
VPast v Indicative Sg p => persList (mkVoice v (pastInd ! 0)) (mkVoice v (pastInd ! 1)) (mkVoice v (pastInd ! 2)) ! p;
@@ -933,6 +933,21 @@ resource MorphoIce = ResIce ** open Prelude, (Predef=Predef), ResIce in {
sup =\\v => mkVoice v sup
} ;
-- AR 2019-08-02: deponent verbs use the Middle voice everywhere, instead of Active
--- some forms may be inadequate, but they are in the table anyway
deponentVerb : Verb -> Verb = \verb ->
verb ** {
s = table {
VInf _ => verb.s ! VInf Middle ;
VPres _ m n p => verb.s ! VPres Middle m n p ;
VPast _ m n p => verb.s ! VPast Middle m n p ;
VImp _ n => verb.s ! VImp Middle n ;
vf => verb.s ! vf
} ;
sup = \\v => verb.sup ! Middle ;
} ;
----------------------
-- Noun Auxiliaries --

View File

@@ -403,7 +403,11 @@ resource ParadigmsIce = open
mkV = overload {
-- Given the infinitive
mkV : Str -> V = \telja -> mk1V telja;
mkV : Str -> V
= \telja -> case telja of {
otta + "st" => depV (mk1V otta) ;
_ => mk1V telja
} ;
-- Given also the first person singular present tense indicative mood
mkV : (_,_ : Str) -> V = \telja,tel -> mk2V telja tel ;
@@ -434,6 +438,8 @@ resource ParadigmsIce = open
weakSgMascNom weakSgMascAccDatGen weakSgFemNom weakSgFemAccDatGen weakSgNeut weakPl flogið) ;
};
depV : V -> V = \verb -> lin V (deponentVerb verb) ;
mk1V : Str -> V = \inf ->
lin V (vForms2Verb inf (indsub1 inf) (impSg inf) (impPl inf) (presPart inf) (sup inf) (weakPP inf) (strongPP inf)) ;

View File

@@ -41,12 +41,14 @@ resource ResIce = ParamX ** open Prelude in {
PForm = PWeak Number Gender Case | PStrong Number Gender Case | PPres ;
VForm =
VInf
VInf Voice -- AR 2019-08-02 added voice to enable Middle infinitives
| VPres Voice Mood Number Person
| VPast Voice Mood Number Person
| VImp Voice Number
;
oper vInf = VInf Active ; -- AR 2019-08-02
param
VPForm = VPInf
| VPImp
| VPMood Tense Anteriority -- is this a describing name ?
@@ -151,7 +153,7 @@ resource ResIce = ParamX ** open Prelude in {
plFemNom,plFemAcc,plFemDat,plFemGen,plNeutNom,plNeutAcc,plNeutDat,plNeutGen,
weakSgMascNom,weakSgMascAccDatGen,weakSgFemNom,weakSgFemAccDatGen,weakSgNeut,weakPl,flogið -> {
s = table {
VInf => fljúga1 ;
VInf v => mkVoice v fljúga1 ; -- AR 2019-08-02
VPres v Indicative Sg P1 => mkVoice v flýg ;
VPres v Indicative Sg P2 => mkVoice v flýgur2 ;
VPres v Indicative Sg P3 => mkVoice v flýgur3 ;
@@ -227,7 +229,7 @@ resource ResIce = ParamX ** open Prelude in {
predV : Verb -> VP = \v -> {
s = \\vpform,pol,agr => case vpform of {
VPInf => vf (v.s ! VInf) [] (negation pol) False ;
VPInf => vf (v.s ! vInf) [] (negation pol) False ;
VPImp => vf (v.s ! VImp Active agr.n) [] (negation pol) False ;
VPMood ten ant => vff v ten ant pol agr
} ;
@@ -268,13 +270,13 @@ resource ResIce = ParamX ** open Prelude in {
-- hann hafði []/ekki sofið - he had/hadn't slept
<Past,Anter> => vf (verbHave.s ! VPast Active Indicative agr.n agr.p) (v.sup ! Active) (negation pol) True ;
-- hann mun []/ekki sofa - he will/won't sleep
<Fut,Simul> => vf (verbWill.s ! VPres Active Indicative agr.n agr.p) (v.s ! VInf) (negation pol) True ;
<Fut,Simul> => vf (verbWill.s ! VPres Active Indicative agr.n agr.p) (v.s ! vInf) (negation pol) True ;
-- hann mun []/ekki hafa sofið - 'he will/won't have slept'
<Fut,Anter> => vf (verbWill.s ! VPres Active Indicative agr.n agr.p) (verbHave.s ! VInf ++ v.sup ! Active) (negation pol) True ;
<Fut,Anter> => vf (verbWill.s ! VPres Active Indicative agr.n agr.p) (verbHave.s ! vInf ++ v.sup ! Active) (negation pol) True ;
-- hann myndi []/ekki sofa 'he would/wouldn't sleep'
<Cond,Simul> => vf (verbWill.s ! VPast Active Subjunctive agr.n agr.p) (v.s ! VInf) (negation pol) True ;
<Cond,Simul> => vf (verbWill.s ! VPast Active Subjunctive agr.n agr.p) (v.s ! vInf) (negation pol) True ;
-- hann myndi []/ekki hafa sofið 'he would/wouldn't have slept'
<Cond,Anter> => vf (verbWill.s ! VPast Active Subjunctive agr.n agr.p) (verbHave.s ! VInf ++ v.sup ! Active) (negation pol) True
<Cond,Anter> => vf (verbWill.s ! VPast Active Subjunctive agr.n agr.p) (verbHave.s ! vInf ++ v.sup ! Active) (negation pol) True
} ;
-- Auxilary verbs --