diff --git a/src/czech/SymbolCze.gf b/src/czech/SymbolCze.gf index 7cef10b4..a64c3a76 100644 --- a/src/czech/SymbolCze.gf +++ b/src/czech/SymbolCze.gf @@ -3,9 +3,48 @@ concrete SymbolCze of Symbol = CatCze ** open Prelude, ResCze in { lincat - Symb = {s : Str} ; + Symb, [Symb] = SS ; + lin MkSymb s = s ; - SymbPN s = lin PN {s = \\_ => s.s ; g = Neutr} ; + + 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 = { + s,clit,prep = \\c => cn.s ! Sg ! c ++ card.s ! cn.g ! Nom ; + a = Ag cn.g Sg P3 ; + hasClit = False ; + } ; + + CNIntNP cn i = { + s,clit,prep = \\c => cn.s ! Sg ! c ++ i.s ; + a = Ag cn.g Sg P3 ; + hasClit = False ; + } ; + + -- as DetCN in NounCze, with the symbols in apposition + CNSymbNP det cn xs = { + s,clit,prep = \\c => det.s ! cn.g ! c ++ numSizeForm cn.s det.size c ++ xs.s ; + a = numSizeAgr cn.g det.size P3 ; + hasClit = False ; + } ; + + SymbS sy = sy ; + + SymbNum sy = {s = \\_,_ => sy.s ; size = Num5} ; -- "n čísel", like numerals from 5 up + SymbOrd sy = {s = glue sy.s "-tý"} ; ---- Ord is still an uninflected string + +oper + symbolPN : Str -> PN + = \s -> lin PN {s = \\_ => s ; g = Neutr} ; }