Files
gf-rgl/src/czech/SymbolCze.gf
T

59 lines
1.7 KiB
Plaintext

--# -path=.:../abstract:../common:../prelude
concrete SymbolCze of Symbol = CatCze ** open Prelude, ResCze in {
lincat
Symb, [Symb] = SS ;
lin
MkSymb s = s ;
BaseSymb = infixSS "a" ;
ConsSymb = infixSS bindComma ;
SymbPN s = symbolPN s.s ;
IntPN i = symbolPN i.s ;
FloatPN f = symbolPN f.s ;
-- unlike a bare symbol, a cardinal used as a name still declines
NumPN card = lin PN {s = \\c => card.s ! Neutr ! c ; g = Neutr} ;
-- the numeral is an invariable label: "úroveň pět", "na úrovni pět"
CNNumNP cn card =
let s : Case => Str = \\c => cn.s ! Sg ! c ++ card.s ! cn.g ! Nom in npForms s s ** {
clit = s ;
a = Ag cn.g Sg P3 ; m = Mod cn.g Sg ;
hasClit = False ; isDrop = False ; isPron = False ;
} ;
CNIntNP cn i =
let s : Case => Str = \\c => cn.s ! Sg ! c ++ i.s in npForms s s ** {
clit = s ;
a = Ag cn.g Sg P3 ; m = Mod cn.g Sg ;
hasClit = False ; isDrop = False ; isPron = False ;
} ;
-- as DetCN in NounCze, with the symbols in apposition
CNSymbNP det cn xs =
let s : Case => Str = \\c => det.s ! nounGender cn (numSizeNumber det.size) ! c ++ numSizeForm cn.s det.size c ++ xs.s ;
agr = numeralAgr (nounGender cn (numSizeNumber det.size)) det P3
in npForms s s ** {
clit = s ;
a = agr ;
m = numeralModAgr (nounGender cn (numSizeNumber det.size)) det ;
hasClit = False ; isDrop = False ; isPron = False ;
} ;
SymbS sy = sentence False sy.s [] [] ;
SymbNum sy = invarNumeral sy.s ; -- "n čísel", like numerals from 5 up
SymbOrd sy = {s = \\g,n,c =>
glue sy.s ((adjFormsAdjective (mladyAdjForms "-tý")).s ! g ! n ! c)
} ;
oper
symbolPN : Str -> PN
= \s -> lin PN {s = \\_ => s ; g = Neutr} ;
}