packages feed

gf-3.4: lib/src/latvian/CatLav.gf

--# -path=.:../abstract:../common:../prelude

concrete CatLav of Cat = CommonX - [CAdv, Voc] **
open
  Prelude,
  ResLav
in {

flags
  coding = utf8 ;
  optimize = all_subs ;

lincat

  -- Tensed / Untensed

  S, QS = { s : Str } ;
  RS = { s : Agr => Str } ;
  SSlash = { s : Str ; p : ResLav.Prep } ;

  -- Sentence

  Cl = { s : VerbMood => Polarity => Str } ;
  ClSlash = { s : VerbMood => Polarity => Str ; p : ResLav.Prep } ;
  Imp = { s : Polarity => Number => Str } ;

  -- Question

  QCl = { s : VerbMood => Polarity => Str } ;
  IP = { s : Case => Str ; n: Number } ;
  IDet = { s : Gender => Str ; n : Number } ;
  IQuant = { s : Gender => Number => Str } ;
  -- TODO: IComp = { s : Str ; a : ResLav.Agr } ;

  -- Relative

  RCl = { s : VerbMood => Polarity => Agr => Str } ;
  RP = { s : Gender => Case => Str } ;

  -- Verb

  VP = ResLav.VP ;
  VPSlash = ResLav.VP ** { p : ResLav.Prep } ; -- the object agreement
  Comp = { s : ResLav.Agr => Str } ;

  -- Adjective

  AP = { s : Definite => Gender => Number => Case => Str } ;

  -- Noun

  CN = { s : Definite => Number => Case => Str ; g : Gender } ;
  NP = { s : Case => Str ; a : ResLav.Agr ; isNeg : Bool } ;
  Pron = { s : Case => Str ; a : ResLav.Agr ; possessive : Gender => Number => Case => Str } ;
  Det = { s : Gender => Case => Str ; n : Number ; d : Definite ; isNeg : Bool } ;
  Predet = { s : Gender => Str } ;
  Ord = { s : Gender => Case => Str } ;
  Num = { s : Gender => Case => Str ; n : Number ; hasCard : Bool } ;
  Card = { s : Gender => Case => Str ; n : Number } ;
  Quant = { s : Gender => Number => Case => Str ; d : Definite ; isNeg : Bool } ;

  -- Numeral

  Numeral = { s : CardOrd => Gender => Case => Str ; n : Number } ;
  Digits = { s : CardOrd => Str ; n : Number } ;

  -- Structural

  Conj = { s1, s2 : Str ; n : Number } ;
  Subj = { s : Str } ;
  Prep = ResLav.Prep ;
  
  -- Open lexical classes (lexicon)

  N = { s : Number => Case => Str ; g : Gender } ;
  N2 = { s : Number => Case => Str ; g : Gender } ** { p : ResLav.Prep ; isPre : Bool } ; -- If isPre then located before the noun
  N3 = { s : Number => Case => Str ; g : Gender } ** { p1, p2 : ResLav.Prep ; isPre1, isPre2 : Bool } ;
  PN = { s : Case => Str ; g : Gender ; n : Number } ;

  A = { s : AForm => Str } ;
  A2 = A ** { p : ResLav.Prep } ;

  V, VA = Verb ;
  VV, VQ = Verb ** { topic : Case } ;
  VS = Verb ** { subj : Subj ; topic : Case } ;
  V2A, V2Q, V2V = Verb ** { p : ResLav.Prep } ;
  V2S = Verb ** { p : ResLav.Prep ; subj : Subj } ;
  
  V2 = Verb ** { p : ResLav.Prep ; topic : Case } ;
  V3 = Verb ** { p1, p2 : ResLav.Prep ; topic : Case } ;

  CAdv = { s, p : Str ; d : Degree } ;
}