mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-09 11:12:51 -06:00
260 lines
8.2 KiB
Plaintext
260 lines
8.2 KiB
Plaintext
--# -path=.:../abstract:../common:../prelude
|
|
|
|
resource ParadigmsAdjectivesLav = open ResLav, CatLav, Predef, Prelude in {
|
|
|
|
flags coding = utf8 ;
|
|
|
|
oper
|
|
|
|
-- ADJECTIVES
|
|
|
|
-- TODO: Parameters and paradigms should be redesigned due to the many NON_EXISTENT forms..?
|
|
|
|
-- To keep the code and user interface (parameters) simple, Masc lemmas are expected.
|
|
|
|
-- No parameters - default assumptions (type)
|
|
mkAdjective : Str -> Adjective = \lemma ->
|
|
case lemma of {
|
|
s + "ais" => mkAdjective_Rel lemma ;
|
|
s + ("s"|"š") => mkAdjective_Qual lemma ;
|
|
s + #vowel => mkAdjective_Indecl lemma
|
|
} ;
|
|
|
|
-- Specified type - no defaults
|
|
mkAdjectiveByType : Str -> AType -> Adjective = \lemma,type ->
|
|
case type of {
|
|
AQual => mkAdjective_Qual lemma ;
|
|
ARel => mkAdjective_Rel lemma ;
|
|
AIndecl => mkAdjective_Indecl lemma
|
|
} ;
|
|
|
|
-- Indeclinable adjective: theoretically, any #vowel ending
|
|
mkAdjective_Indecl : Str -> Adjective = \lemma -> {
|
|
s = table{
|
|
AAdj Superl Indef _ _ _ => NON_EXISTENT ;
|
|
AAdj _ _ _ _ _ => lemma ;
|
|
AAdv d => mkAdjective_Adverb lemma ! d-- TODO - notestēt šādu keisu
|
|
}
|
|
} ;
|
|
|
|
-- Qualitative adjective: -s, -š
|
|
mkAdjective_Qual : Str -> Adjective = \lemma -> {
|
|
s = table {
|
|
AAdj Posit d g n c => mkAdjective_Pos lemma d ! g ! n ! c ;
|
|
AAdj Compar d g n c => mkAdjective_Comp lemma d ! g ! n ! c ;
|
|
AAdj Superl Def g n c => mkAdjective_Sup lemma ! g ! n ! c ;
|
|
AAdj Superl Indef _ _ _ => NON_EXISTENT ;
|
|
AAdv d => mkAdjective_Adverb lemma ! d
|
|
}
|
|
} ;
|
|
|
|
-- Relative adjective: -ais (Def only); -s, -š (Indef and Def)
|
|
mkAdjective_Rel : Str -> Adjective = \lemma -> {
|
|
s = table {
|
|
AAdj Posit Def g n c => mkAdjective_Pos lemma Def ! g ! n ! c ;
|
|
AAdj Posit Indef g n c => case lemma of {
|
|
s + "ais" => mkAdjective_Pos lemma Def ! g ! n ! c ;
|
|
_ => mkAdjective_Pos lemma Indef ! g ! n ! c
|
|
} ;
|
|
AAdj _ _ _ _ _ => NON_EXISTENT ;
|
|
AAdv d => mkAdjective_Adverb lemma ! d
|
|
}
|
|
};
|
|
|
|
-- TODO: Vai vajag iznest polaritāti ārpusē lai ir noliegtie kā atsevišķi īpašībasvārdi?
|
|
-- Praksē lielākoties pietiek ar palīgverba noliegumu?
|
|
-- TODO: Jāpieliek parametrs Tense: present = ziedošs, izsalkstošs; past = ziedējis, izsalcis.
|
|
-- Vai arī jāpadod Str "-is"/"-ošs" un pa tiešo jāizsauc mkParticiple, bet
|
|
-- kā šis mkA(Str) atšķirsies no citiem mkA(Str)?
|
|
mkAdjective_Participle : Verb -> Voice -> Adjective = \v,p -> {
|
|
s = table {
|
|
AAdj Posit Indef g n c => v.s ! Pos ! (VPart p g n c) ;
|
|
_ => NON_EXISTENT
|
|
}
|
|
};
|
|
|
|
-- Positive degree: -s, -š (Indef and Def); -ais (Def only)
|
|
-- TODO: atsaukties uz lietvārdu locīšanas tabulām?
|
|
mkAdjective_Pos : Str -> Definiteness -> Gender => Number => Case => Str = \lemma,defin ->
|
|
let stem : Str = case lemma of {
|
|
s + "ais" => s ;
|
|
_ => Predef.tk 1 lemma
|
|
}
|
|
in case defin of {
|
|
Indef => table {
|
|
Masc => table {
|
|
Sg => table {
|
|
Nom => lemma ;
|
|
Gen => stem + "a" ;
|
|
Dat => stem + "am" ;
|
|
Acc => stem + "u" ;
|
|
Loc => stem + "ā" ;
|
|
Voc => stem + "ais"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "i" ;
|
|
Gen => stem + "u" ;
|
|
Dat => stem + "iem" ;
|
|
Acc => stem + "us" ;
|
|
Loc => stem + "os" ;
|
|
Voc => stem + "ie"
|
|
}
|
|
} ;
|
|
Fem => table {
|
|
Sg => table {
|
|
Nom => stem + "a" ;
|
|
Gen => stem + "as" ;
|
|
Dat => stem + "ai" ;
|
|
Acc => stem + "u" ;
|
|
Loc => stem + "ā" ;
|
|
Voc => stem + "ā"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "as" ;
|
|
Gen => stem + "u" ;
|
|
Dat => stem + "ām" ;
|
|
Acc => stem + "as" ;
|
|
Loc => stem + "ās" ;
|
|
Voc => stem + "ās"
|
|
}
|
|
}
|
|
} ;
|
|
Def => table {
|
|
Masc => table {
|
|
Sg => table {
|
|
Nom => stem + "ais" ;
|
|
Gen => stem + "ā" ;
|
|
Dat => case stem of {s + "ēj" => stem + "am" ; _ => stem + "ajam"} ;
|
|
Acc => stem + "o" ;
|
|
Loc => case stem of {s + "ēj" => stem + "ā" ; _ => stem + "ajā"} ;
|
|
Voc => stem + "ais"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "ie" ;
|
|
Gen => stem + "o" ;
|
|
Dat => case stem of {s + "ēj" => stem + "iem" ; _ => stem + "ajiem"} ;
|
|
Acc => stem + "os" ;
|
|
Loc => case stem of {s + "ēj" => stem + "os" ; _ => stem + "ajos"} ;
|
|
Voc => stem + "ie"
|
|
}
|
|
} ;
|
|
Fem => table {
|
|
Sg => table {
|
|
Nom => stem + "ā" ;
|
|
Gen => stem + "ās" ;
|
|
Dat => case stem of {s + "ēj" => stem + "ai" ; _ => stem + "ajai"} ;
|
|
Acc => stem + "o" ;
|
|
Loc => case stem of {s + "ēj" => stem + "ā" ; _ => stem + "ajā"} ;
|
|
Voc => stem + "ā"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "ās" ;
|
|
Gen => stem + "o" ;
|
|
Dat => case stem of {s + "ēj" => stem + "ām" ; _ => stem + "ajām"} ;
|
|
Acc => stem + "ās" ;
|
|
Loc => case stem of {s + "ēj" => stem + "ās" ; _ => stem + "ajās"} ;
|
|
Voc => stem + "ās"
|
|
}
|
|
}
|
|
}
|
|
} ;
|
|
|
|
-- Comparative degree: Qual only
|
|
mkAdjective_Comp : Str -> Definiteness -> Gender => Number => Case => Str = \lemma,defin ->
|
|
let stem : Str = Predef.tk 1 lemma
|
|
in case defin of {
|
|
Indef => table {
|
|
Masc => table {
|
|
Sg => table {
|
|
Nom => stem + "āks" ;
|
|
Gen => stem + "āka" ;
|
|
Dat => stem + "ākam" ;
|
|
Acc => stem + "āku" ;
|
|
Loc => stem + "ākā" ;
|
|
Voc => stem + "ākais"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "āki" ;
|
|
Gen => stem + "āku" ;
|
|
Dat => stem + "ākiem" ;
|
|
Acc => stem + "ākus" ;
|
|
Loc => stem + "ākos" ;
|
|
Voc => stem + "ākie"
|
|
}
|
|
} ;
|
|
Fem => table {
|
|
Sg => table {
|
|
Nom => stem + "āka" ;
|
|
Gen => stem + "ākas" ;
|
|
Dat => stem + "ākai" ;
|
|
Acc => stem + "āku" ;
|
|
Loc => stem + "ākā" ;
|
|
Voc => stem + "ākā"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "ākas" ;
|
|
Gen => stem + "āku" ;
|
|
Dat => stem + "ākām" ;
|
|
Acc => stem + "ākas" ;
|
|
Loc => stem + "ākās" ;
|
|
Voc => stem + "ākās"
|
|
}
|
|
}
|
|
} ;
|
|
Def => table {
|
|
Masc => table {
|
|
Sg => table {
|
|
Nom => stem + "ākais" ;
|
|
Gen => stem + "ākā" ;
|
|
Dat => stem + "ākajam" ;
|
|
Acc => stem + "āko" ;
|
|
Loc => stem + "ākajā" ;
|
|
Voc => stem + "ākais"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "ākie" ;
|
|
Gen => stem + "āko" ;
|
|
Dat => stem + "ākajiem" ;
|
|
Acc => stem + "ākos" ;
|
|
Loc => stem + "ākajos" ;
|
|
Voc => stem + "ākie"
|
|
}
|
|
} ;
|
|
Fem => table {
|
|
Sg => table {
|
|
Nom => stem + "ākā" ;
|
|
Gen => stem + "ākās" ;
|
|
Dat => stem + "ākajai" ;
|
|
Acc => stem + "āko" ;
|
|
Loc => stem + "ākajā" ;
|
|
Voc => stem + "ākā"
|
|
} ;
|
|
Pl => table {
|
|
Nom => stem + "ākās" ;
|
|
Gen => stem + "āko" ;
|
|
Dat => stem + "ākajām" ;
|
|
Acc => stem + "ākās" ;
|
|
Loc => stem + "ākajās" ;
|
|
Voc => stem + "ākās"
|
|
}
|
|
}
|
|
}
|
|
} ;
|
|
|
|
-- Superlative degree: Qual only, Def only
|
|
mkAdjective_Sup : Str -> Gender => Number => Case => Str = \lemma ->
|
|
\\g,n,c => "vis" + (mkAdjective_Comp lemma Def) ! g ! n ! c ;
|
|
|
|
-- Adverbial form, all 3 degrees
|
|
mkAdjective_Adverb : Str -> Degree => Str = \lemma ->
|
|
let stem : Str = case lemma of {
|
|
s + "ais" => s ;
|
|
_ => Predef.tk 1 lemma
|
|
} in table {
|
|
Posit => stem + "i" ;
|
|
Compar => stem + "āk" ;
|
|
Superl => "vis" + stem + "āk"
|
|
} ;
|
|
|
|
} ;
|