From db0bbfd1fb0d4f66331ef3f2d908f97ceb3a67b0 Mon Sep 17 00:00:00 2001 From: Inari Listenmaa Date: Tue, 18 Sep 2018 11:30:58 +0200 Subject: [PATCH] (Ara) Add various functions to make SymbolicAra work. --- src/arabic/CatAra.gf | 6 +++--- src/arabic/NounAra.gf | 3 ++- src/arabic/PhraseAra.gf | 4 ++-- src/arabic/ResAra.gf | 10 ++++++++- src/arabic/SymbolAra.gf | 48 +++++++++++++++++++++-------------------- 5 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/arabic/CatAra.gf b/src/arabic/CatAra.gf index 37725ec2c..e46d2f35a 100644 --- a/src/arabic/CatAra.gf +++ b/src/arabic/CatAra.gf @@ -41,14 +41,14 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in { -- -- Adjective - AP = {s : Species => Gender => NTable } ; + AP = ResAra.AP ; -- Noun CN = ResAra.Noun ** {adj : NTable}; NP, Pron = ResAra.NP; --{s : Case => Str ; a : Agr } ; - Num, Ord, Card = {s : Gender => State => Case => Str ; - n : Size }; + Num, Ord, Card = ResAra.NumOrdCard ; + Predet = ResAra.Predet ; -- DEPRECATED diff --git a/src/arabic/NounAra.gf b/src/arabic/NounAra.gf index 350d7b4db..6dfe6727e 100644 --- a/src/arabic/NounAra.gf +++ b/src/arabic/NounAra.gf @@ -189,5 +189,6 @@ lin -- AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s} ; -- -- SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s} ; - -- ApposCN cn np = + ApposCN cn np = cn ** { + s = \\n,d,c => cn.s ! n ! d ! c ++ np.s ! c } ; } diff --git a/src/arabic/PhraseAra.gf b/src/arabic/PhraseAra.gf index 8f5f2bb01..3ed1a2597 100644 --- a/src/arabic/PhraseAra.gf +++ b/src/arabic/PhraseAra.gf @@ -18,9 +18,9 @@ concrete PhraseAra of Phrase = CatAra ** open UttIP ip = {s = \\_ => ip.s} ; ---- AR -- AP = { s : Species => Gender => Number => State => Case => Str } ; - UttAP ap = {s = \\g => ap.s ! NoHum ! g ! ResAra.Sg ! Def ! Nom } ; ---- OK? IL + UttAP ap = {s = ResAra.uttAP ap} ; --IL -- Card = {s : Gender => State => Case => Str } ; - UttCard c = {s = \\g => c.s ! g ! Def ! Nom } ; ---- OK? IL + UttCard c = {s = ResAra.uttNum c} ; --IL -- UttIAdv iadv = iadv ; UttNP np = {s = \\_ => np.s ! Nom} ; diff --git a/src/arabic/ResAra.gf b/src/arabic/ResAra.gf index 598983975..0405a7105 100644 --- a/src/arabic/ResAra.gf +++ b/src/arabic/ResAra.gf @@ -109,6 +109,14 @@ resource ResAra = PatternsAra ** open Prelude, Predef in { -- Adj : Type = {s : Gender => NTable} ; Adj : Type = {s : AForm => Str} ; Verb : Type = {s : VForm => Str} ; + + AP : Type = {s : Species => Gender => NTable } ; + uttAP : AP -> (Gender => Str) ; + uttAP ap = \\g => ap.s ! NoHum ! g ! Sg ! Def ! Nom ; ----IL + + NumOrdCard : Type = {s : Gender => State => Case => Str ; n : Size }; + uttNum : NumOrdCard -> (Gender => Str) ; + uttNum n = \\g => n.s ! g ! Def ! Nom ; ----IL param VForm = @@ -975,7 +983,7 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf -> mkIP : Str -> Number -> {s : Str ; n : Number} = \s,n -> {s = s ; n = n} ; - mkOrd : (_,_ : Str) -> {s : Gender => State => Case => Str ; n : Size } = + mkOrd : (_,_ : Str) -> NumOrdCard = \aysar,yusra -> { s = \\g,s,c => case g of { diff --git a/src/arabic/SymbolAra.gf b/src/arabic/SymbolAra.gf index 3d62fc851..625fcfc52 100644 --- a/src/arabic/SymbolAra.gf +++ b/src/arabic/SymbolAra.gf @@ -2,34 +2,32 @@ concrete SymbolAra of Symbol = CatAra ** open Prelude, ResAra in { -{- -lin - SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c - IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c - FloatPN i = {s = \\c => i.s ; g = Neutr} ; --- c - NumPN i = {s = i.s ! Neutr ; g = Neutr} ; --- c - CNIntNP cn i = { - s = \\c => cn.s ! Weak ! Sg ! Nom ++ i.s ; - a = agrP3 Sg ; - isPron = False - } ; - CNSymbNP det cn xs = let g = cn.g in { - s = \\c => det.s ! g ! c ++ cn.s ! adjfCase det.a c ! det.n ! c ++ xs.s ; - a = agrP3 det.n ; - isPron = False +lin + SymbPN i = {s = \\c => i.s ; g = Masc ; h = NoHum } ; --IL + IntPN i = {s = \\c => i.s ; g = Masc ; h = NoHum } ; --IL + FloatPN i = {s = \\c => i.s ; g = Masc ; h = NoHum } ; --IL + NumPN i = {s = \\c => uttNum i ! Masc ; g = Masc ; h = NoHum } ; --IL + -- CNIntNP cn i = { + -- s = \\c => cn.s ! Sg ! Def ! c ++ uttNum i ! Masc ; + -- a = dummyAgrP3 Sg ; + -- } ; + --IL TODO: check out some opers regarding state in ResAra. These are just dummy values. + CNSymbNP det cn xs = + let g = cn.g ; n = sizeToNumber det.n in { + s = \\c => det.s ! NoHum ! g ! c ++ cn.s ! Sg ! Def ! c ++ cn.adj ! n ! Def ! c ++ xs.s; ----IL word order?? Seems to be nontrivial according to ResAra comments. + a = dummyAgrP3 n ; } ; CNNumNP cn i = { - s = \\c => artDef ! (GSg cn.g) ! c ++ cn.s ! Weak ! Sg ! Nom ++ i.s ! Neutr ! c ; - a = agrP3 Sg ; - isPron = False + s = \\c => cn.s ! Sg ! Def ! c ++ uttNum i ! Masc ; + a = dummyAgrP3 Sg ; } ; - SymbS sy = {s = \\_ => sy.s} ; + SymbS sy = sy ; - SymbNum n = {s = \\_,_ => n.s ; n = Pl ; isNum = True} ; - SymbOrd n = {s = \\_ => n.s ++ "."} ; + SymbOrd n = {s = \\_,_,_ => n.s ; n = None } ; + SymbNum n = SymbOrd n ** { n = ThreeTen } ; ----IL lincat @@ -39,9 +37,13 @@ lin MkSymb s = s ; - BaseSymb = infixSS "und" ; + BaseSymb = infixSS "und" ; ---- ConsSymb = infixSS "," ; --} + +oper + + dummyAgrP3 : Number -> Agr = \n -> + { pgn = Per3 Masc n ; isPron = False } ; }