From 9bb33b76104e72f9bdf284e98ccec4c76b03ae1f Mon Sep 17 00:00:00 2001 From: krasimir Date: Tue, 3 May 2016 08:56:50 +0000 Subject: [PATCH] cardinal numbers in Slovenian --- lib/src/slovenian/CatSlv.gf | 8 ++++++-- lib/src/slovenian/GrammarSlv.gf | 17 ++++++++--------- lib/src/slovenian/NounSlv.gf | 24 +++++++++++++++++++----- lib/src/slovenian/PhraseSlv.gf | 1 + lib/src/slovenian/ResSlv.gf | 5 ++++- 5 files changed, 38 insertions(+), 17 deletions(-) diff --git a/lib/src/slovenian/CatSlv.gf b/lib/src/slovenian/CatSlv.gf index e06d4a89d..2603f4c1b 100644 --- a/lib/src/slovenian/CatSlv.gf +++ b/lib/src/slovenian/CatSlv.gf @@ -16,10 +16,14 @@ lincat Pron = {s : Case => Str ; a : Agr} ; - Det = {s : Case => Str; spec : Species; n : Number} ; - Num = {s : Case => Str ; n : Number} ; + Det = {s : Gender => Case => Str; spec : Species; n : NumAgr} ; + Num = {s : Gender => Case => Str ; n : NumAgr} ; + Card = {s : Gender => Case => Str ; n : NumAgr} ; Quant = {s : Str; spec : Species} ; + -- Numeral + Numeral = {s : Gender => Case => Str ; n : NumAgr} ; + -- Structural Prep = {s : Str; c : Case} ; diff --git a/lib/src/slovenian/GrammarSlv.gf b/lib/src/slovenian/GrammarSlv.gf index 3ec64a023..2992b833f 100644 --- a/lib/src/slovenian/GrammarSlv.gf +++ b/lib/src/slovenian/GrammarSlv.gf @@ -4,18 +4,17 @@ concrete GrammarSlv of Grammar = NounSlv, VerbSlv, AdjectiveSlv, -{- AdverbEng, - NumeralEng, --} +{- AdverbSlv,-} + NumeralSlv, SentenceSlv, -{- QuestionEng, - RelativeEng, - ConjunctionEng,-} +{- QuestionSlv, + RelativeSlv, + ConjunctionSlv,-} PhraseSlv, TextX - [Pol,PPos,PNeg], - StructuralSlv -{- IdiomEng, - TenseX -} + StructuralSlv, +{- IdiomSlv, -} + TenseX ** { flags startcat = Phr ; unlexer = text ; lexer = text ; diff --git a/lib/src/slovenian/NounSlv.gf b/lib/src/slovenian/NounSlv.gf index a6360834c..36cdbffa3 100644 --- a/lib/src/slovenian/NounSlv.gf +++ b/lib/src/slovenian/NounSlv.gf @@ -2,20 +2,34 @@ concrete NounSlv of Noun = CatSlv ** open ResSlv in { lin DetCN det cn = { - s = \\c => det.s ! c ++ cn.s ! det.spec ! c ! det.n ; - a = {g=cn.g; n=det.n; p=P3} + s = \\c => det.s ! cn.g ! c ++ + case det.n of { + UseNum n => cn.s ! det.spec ! c ! n ; + UseGen => cn.s ! det.spec ! Gen ! Pl + } ; + a = {g = cn.g ; + n = case det.n of { + UseNum n => n ; + UseGen => Pl + } ; + p = P3 + } } ; UsePron p = p ; DetQuant quant num = { - s = \\c => quant.s ++ num.s ! c; + s = \\c,g => quant.s ++ num.s ! c ! g; spec = quant.spec ; n = num.n ; } ; - NumSg = {s = \\_ => []; n = Sg} ; - NumPl = {s = \\_ => []; n = Pl} ; + NumSg = {s = \\_,_ => []; n = UseNum Sg} ; + NumPl = {s = \\_,_ => []; n = UseNum Pl} ; + + NumCard n = n ; + + NumNumeral numeral = {s = numeral.s; n = numeral.n} ; DefArt = { s = "" ; diff --git a/lib/src/slovenian/PhraseSlv.gf b/lib/src/slovenian/PhraseSlv.gf index 1a3f51dc4..f169fc502 100644 --- a/lib/src/slovenian/PhraseSlv.gf +++ b/lib/src/slovenian/PhraseSlv.gf @@ -7,6 +7,7 @@ concrete PhraseSlv of Phrase = CatSlv ** open Prelude, ResSlv in { UttNP np = {s = np.s ! Nom} ; UttAdv adv = adv ; UttCN n = {s = n.s ! Indef ! Nom ! Sg} ; + UttCard n = {s = n.s ! Fem ! Nom} ; UttAP ap = {s = ap.s ! Indef ! Masc ! Nom ! Sg} ; UttInterj i = i ; diff --git a/lib/src/slovenian/ResSlv.gf b/lib/src/slovenian/ResSlv.gf index 4503fa62d..22ce6db0d 100644 --- a/lib/src/slovenian/ResSlv.gf +++ b/lib/src/slovenian/ResSlv.gf @@ -6,7 +6,10 @@ param Gender = Masc | Fem | Neut ; Person = P1 | P2 | P3 ; Species = Indef | Def ; - + + NumAgr = UseNum Number | UseGen; + DForm = Unit Gender | Teen | Ten | Hundred; + VForm = VInf | VSup | VPastPart Gender Number