From e8cce483c5b65d993d3644a5934dc377636863c8 Mon Sep 17 00:00:00 2001 From: David Bamutura Date: Fri, 10 May 2019 18:08:35 +0200 Subject: [PATCH] Implemented functions NumDigits, NumNumeral, OrdDigits,OrdNumeral, OrdSuperl but with changes in Structural and CatCgg for the categories --- src/rukiga/CatCgg.gf | 5 +++-- src/rukiga/NounCgg.gf | 34 +++++++++++++++++++--------------- src/rukiga/NumeralCgg.gf | 2 +- src/rukiga/StructuralCgg.gf | 4 ++-- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/rukiga/CatCgg.gf b/src/rukiga/CatCgg.gf index c61bb2cb..134b9d29 100755 --- a/src/rukiga/CatCgg.gf +++ b/src/rukiga/CatCgg.gf @@ -62,9 +62,10 @@ lincat root : Str; morphs : Res.VFormMini => Res.VerbMorphPos =>Str --; compl : Str -- after verb: complement, adverbs } ; - Numeral = {s : Str ; g : Res.Gender; n: Res.Number} ; + Numeral = {s : Res.CardOrd=>Res.Agreement=> Str ; g : Res.Gender; n: Res.Number} ; Digits = {s : Res.CardOrd => Res.Agreement=>Str ; n : Res.Number ; tail : Px.DTail} ; - + Ord = {s :Res.Agreement=>Str; position1:Res.Position1} ; + Card = {s :Res.Agreement=>Str; n : Res.Number} ; --VV = {- --1 Cat: the Category System diff --git a/src/rukiga/NounCgg.gf b/src/rukiga/NounCgg.gf index 59dc3bc0..daf922e1 100755 --- a/src/rukiga/NounCgg.gf +++ b/src/rukiga/NounCgg.gf @@ -1,7 +1,7 @@ --# -path=.:../prelude:../abstract:../common concrete NounCgg of Noun = CatCgg ** - open ResCgg, Prelude in { + open ResCgg, Prelude, Predef in { lin @@ -76,7 +76,7 @@ lin AdvNP np adv = {s= \\c => np.s ! c ++ adv.s; agr = np.agr }; --PPartNP : NP -> V2 -> NP ; -- the man seen use the Passive form of the verb see. abantu abarebirwe PPartNP np v2 = - {s= \\c => np.s!c ++ mkSubjClitic np.agr ++ v2.s ++ Predef.BIND ++ v2.morphs!VFPastPart!RestOfVerb; agr = np.agr}; + {s= \\c => np.s!c ++ mkSubjClitic np.agr ++ v2.s ++ BIND ++ v2.morphs!VFPastPart!RestOfVerb; agr = np.agr}; {-What the hell does this mean?-} ExtAdvNP np adv = {s= \\c => np.s ! c ++ embedInCommas adv.s; agr = np.agr}; -- how do I do the adverbial clause? @@ -88,23 +88,27 @@ lin DetQuant quant num = {s=[]; s2 = quant.s2; ntype = Incomplete; num = num.n; pos=PreDeterminer; doesAgree = quant.doesAgree}; -- --DetQuantOrd : Quant -> Num -> Ord -> Det ; -- these five best + --DetQuantOrd quant num ord = {}; - - - - -{- - Need sample quatitifiers in Runynakore. Immediate, Far, Distant. so DetQuant is commented out --} ---DetQuant quant num = {s = quant.s ++ num.s ; ntype = Complete ; num = num.n ; pos = PostDeterminer } ; - - --NumSg = {s=[]; n=Sg}; - --NumPl = {s=[]; n=Pl}; + NumSg = {s=[]; n=Sg}; + NumPl = {s=[]; n=Pl}; -- NumCard card = {...}; + --Quant = {s : Str ; s2 :Res.Agreement => Str; doesAgree : Bool} ; + IndefArt = {s=[]; s2 = \\_=>[]; doesAgree = False}; + DefArt = {s=[]; s2 = \\_=>[]; doesAgree = False}; -- noun with initial vowel - --IndefArt = {s=[]}; - --DefArt = {s=[]} ; + --NumDigits : Digits -> Card ; -- 51 + NumDigits dig = {s = dig.s!NCard ; n=dig.n}; + --NumNumeral : Numeral -> Card ; -- fifty-one + NumNumeral numeral = {s=numeral.s!NCard; n=numeral.n}; + --OrdDigits : Digits -> Ord ; -- 51st + OrdDigits dig ={s=dig.s!NOrd ; position1 = Post}; + --OrdNumeral : Numeral -> Ord ; -- fifty-first + OrdNumeral numeral ={s=numeral.s!NOrd; position1 = Post}; + --OrdSuperl : A -> Ord ; -- warmest + --Adjective : Type = {s : Str ; position1 : Position1; isProper : Bool; isPrep: Bool}; + OrdSuperl a = {s= \\c => a.s ++ "kukira" ++ (mkAdjPronIVClitic c) ++ BIND ++ "ona"; position1 = a.position1}; -- AdvCN : CN -> Adv -> CN ; -- house on the hill --AdvCN cn adv ={s=\\ntype,num =>cn.s!ntype!num ++ adv.s!(AgP3 num cn.nc); nc=cn.nc}; {- diff --git a/src/rukiga/NumeralCgg.gf b/src/rukiga/NumeralCgg.gf index bdb6b723..87168fd8 100755 --- a/src/rukiga/NumeralCgg.gf +++ b/src/rukiga/NumeralCgg.gf @@ -11,7 +11,7 @@ lincat Sub1000000 = {s : Str ; g:Gender; n : Number} ; -lin num x = x ; --Numeral = {s : Res.CardOrd => Res.Agreement => Str ; n : Res.Number} ; +lin num x = {s = \\_,_=> x.s; g=x.g; n=x.n} ; --Numeral = {s : Res.CardOrd => Res.Agreement => Str ; n : Res.Number} ; lin n2 = mkNum "biri" "ibiri" ZERO_ZERO "abiri" I_MA True; lin n3 = mkNum "shatu" "ishatu" I_ZERO "ashatu" I_MA True; lin n4 = mkNum "na" "ina" I_ZERO "ana" I_MA True; diff --git a/src/rukiga/StructuralCgg.gf b/src/rukiga/StructuralCgg.gf index dd5e977e..4a858a1d 100755 --- a/src/rukiga/StructuralCgg.gf +++ b/src/rukiga/StructuralCgg.gf @@ -133,8 +133,8 @@ here_Adv = {s = "hanu"; agr = AgrNo}; For DetQuant function to work, we need sample quatitifiers in Runynakore. Proximal, Medial, Distant We need a table to provide all of these. -} -that_Quant = {s =[]; s2 = mkThat; doesAgree = True}; --: Quant ; -this_Quant = {s =[]; s2 = mkThis; doesAgree = True}; --: Quant ; +that_Quant = {s=[]; s2 = mkThat; doesAgree = True}; --: Quant ; +this_Quant = {s=[]; s2 = mkThis; doesAgree = True}; --: Quant ; these_Quant = {s =[]; s2 = mkThese; doesAgree = True}; those_Quant = {s =[]; s2 = mkThose; doesAgree = True}; no_Quant = {s ="tihariho"; s2 =\\_=> []; doesAgree = False};--: Quant ;