mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-23 19:42:50 -06:00
smart paradigms for adjectives adapted from Anna Ehrlemark. The adaptation is not perfect because it includes syncretic forms
This commit is contained in:
@@ -145,7 +145,65 @@ oper
|
|||||||
mkVV : V -> VV ;
|
mkVV : V -> VV ;
|
||||||
mkVV v = v ;
|
mkVV v = v ;
|
||||||
|
|
||||||
mkA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
-- Adjectives
|
||||||
|
|
||||||
|
mkA = overload {
|
||||||
|
mkA : (_,_:Str) -> A = regA ;
|
||||||
|
mkA : (x1,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,x166 : Str) -> A = worstA ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
regA : (_,_ :Str) -> A = \star,starejsi -> lin A {
|
||||||
|
s = let starejs = init starejsi
|
||||||
|
in table {
|
||||||
|
APosit gen num c => mkAdjForm star ! c ! gen ! num ;
|
||||||
|
ACompar gen num c => mkAdjForm starejs ! c ! gen ! num ;
|
||||||
|
ASuperl gen num c => mkAdjForm ("naj" + starejs) ! c ! gen ! num ;
|
||||||
|
APositDefNom => mkAdjForm star ! Nom ! Masc ! Pl ;
|
||||||
|
APositIndefAcc => mkAdjForm star ! Nom ! Masc ! Sg ;
|
||||||
|
APositDefAcc => mkAdjForm star ! Nom ! Masc ! Pl ;
|
||||||
|
AComparDefAcc => mkAdjForm starejs ! Nom ! Masc ! Sg ;
|
||||||
|
ASuperlDefAcc => mkAdjForm ("naj" + starejs) ! Nom ! Masc ! Sg
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkAdjForm : Str -> Case => Gender => Number => Str = \lep ->
|
||||||
|
let
|
||||||
|
lp = looseVowel lep --checks for loosewovel in the stem. if there is none, the string comes back the same.
|
||||||
|
in
|
||||||
|
table {
|
||||||
|
Nom => table {
|
||||||
|
Fem => table {Sg=> (lp + "a"); Dl=>(lp + "i"); Pl=>(lp +"e")};
|
||||||
|
Masc => table {Sg=> lep; Dl=>(lp + "a"); Pl=>(lp +"i")};
|
||||||
|
Neut => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "a")}
|
||||||
|
};
|
||||||
|
Acc => table {
|
||||||
|
Fem => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp + "e")};
|
||||||
|
Masc => table {Sg=>lep; Dl=>(lp + "a"); Pl=>(lp + "e")};
|
||||||
|
Neut => table {Sg=>(lp + "o"); Dl=>(lp + "i"); Pl=>(lp +"a")}
|
||||||
|
};
|
||||||
|
Gen => table {
|
||||||
|
Fem => table {Sg=>(lp + "e"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
|
Masc => table {Sg=>(lp + "ega"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
|
Neut => table {Sg=>(lp + "ega"); Dl=>(lp +"ih"); Pl=>(lp +"ih")}
|
||||||
|
};
|
||||||
|
Loc => table {
|
||||||
|
Fem => table {Sg=>(lp + "i"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
|
Masc => table {Sg=>(lp + "em"); Dl=>(lp +"ih"); Pl=>(lp +"ih")};
|
||||||
|
Neut => table {Sg=>(lp + "em"); Dl=>(lp +"ih"); Pl=>(lp +"ih")}
|
||||||
|
};
|
||||||
|
Dat => table {
|
||||||
|
Fem => table {Sg=>(lp + "i"); Dl=>(lp +"ima"); Pl=>(lp +"im")};
|
||||||
|
Masc => table {Sg=>(lp + "emu"); Dl=>(lp +"ima"); Pl=>(lp +"im")};
|
||||||
|
Neut => table {Sg=>(lp + "emu"); Dl=>(lp +"ima"); Pl=>(lp +"im")}
|
||||||
|
};
|
||||||
|
Instr => table {
|
||||||
|
Fem => table {Sg=>(lp + "o"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
||||||
|
Masc => table {Sg=>(lp + "im"); Dl=>(lp +"ima"); Pl=>(lp +"imi")};
|
||||||
|
Neut => table {Sg=>(lp + "im"); Dl=>(lp +"ima"); Pl=>(lp +"imi")}
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
worstA : (_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_ : Str) -> A =
|
||||||
\positMSgNom,positMSgNomDef,positMSgGen,positMSgDat,positMSgAcc,positMSgAccIndef,positMSgAccDef,positMSgLoc,positMSgInstr,
|
\positMSgNom,positMSgNomDef,positMSgGen,positMSgDat,positMSgAcc,positMSgAccIndef,positMSgAccDef,positMSgLoc,positMSgInstr,
|
||||||
positMDlNom,positMDlGen,positMDlDat,positMDlAcc,positMDlLoc,positMDlInstr,
|
positMDlNom,positMDlGen,positMDlDat,positMDlAcc,positMDlLoc,positMDlInstr,
|
||||||
positMPlNom,positMPlGen,positMPlDat,positMPlAcc,positMPlLoc,positMPlInstr,
|
positMPlNom,positMPlGen,positMPlDat,positMPlAcc,positMPlLoc,positMPlInstr,
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ param
|
|||||||
AForm = APosit Gender Number Case
|
AForm = APosit Gender Number Case
|
||||||
| ACompar Gender Number Case
|
| ACompar Gender Number Case
|
||||||
| ASuperl Gender Number Case
|
| ASuperl Gender Number Case
|
||||||
|
|
||||||
|
-- the rest are not really needed because they seem to be syncretic
|
||||||
| APositDefNom
|
| APositDefNom
|
||||||
| APositIndefAcc
|
| APositIndefAcc
|
||||||
| APositDefAcc
|
| APositDefAcc
|
||||||
|
|||||||
Reference in New Issue
Block a user