1
0
forked from GitHub/gf-rgl

Merge pull request #42 from inariksit/arabic

Arabic
This commit is contained in:
Inari Listenmaa
2018-10-15 16:51:53 +02:00
committed by GitHub
6 changed files with 43 additions and 39 deletions

View File

@@ -49,8 +49,8 @@ concrete CatAra of Cat = CommonX - [Utt] ** open ResAra, Prelude, ParamX in {
CN = ResAra.Noun ** {adj : NTable}; CN = ResAra.Noun ** {adj : NTable};
NP, Pron = ResAra.NP; --{s : Case => Str ; a : Agr } ; NP, Pron = ResAra.NP; --{s : Case => Str ; a : Agr } ;
Ord,
Num, Num,
Ord,
Card = ResAra.NumOrdCard ; Card = ResAra.NumOrdCard ;
Predet = ResAra.Predet ; Predet = ResAra.Predet ;

View File

@@ -19,7 +19,8 @@ flags
ask_V2Q = dirV2 (regV "يَس؟َل") ; ask_V2Q = dirV2 (regV "يَس؟َل") ;
-- ask_V2Q = dirV2 (v1 "س؟ل" a a) ; -- ask_V2Q = dirV2 (v1 "س؟ل" a a) ;
baby_N = brkN "طفل" "فِعل" "أَفعال" Masc Hum; baby_N = brkN "طفل" "فِعل" "أَفعال" Masc Hum;
bad_A = sndA "سو؟" "فَيِّع" ; -- bad_A = sndA "سو؟" "فَيِّع" ;
bad_A = mkA "سَيِّئ" "سَيِّئَة" "سَيِّئِين" ;
bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ; bank_N = brkN "بنك" "فَعل" "فُعُول" Masc NoHum ;
beautiful_A = sndA "جمل" "فَعِيل" ; beautiful_A = sndA "جمل" "فَعِيل" ;
become_VA = mkVA (v4 "صبح") ; become_VA = mkVA (v4 "صبح") ;
@@ -248,8 +249,8 @@ flags
jump_V = regV "يَقفِز" ; jump_V = regV "يَقفِز" ;
-- jump_V = v1 "قفز" a i ; -- jump_V = v1 "قفز" a i ;
left_Ord = mkOrd "أَيسَر" "يُسرَى"; left_Ord = mkOrd "أَيسَر" "يُسرَى" One;
right_Ord = mkOrd "أَيمَن" "يُمنَى" ; right_Ord = mkOrd "أَيمَن" "يُمنَى" One;
far_Adv = mkAdv "بَعِيداً" ; far_Adv = mkAdv "بَعِيداً" ;
correct_A = sndA "صحّ" "فَعِيل" ; correct_A = sndA "صحّ" "فَعِيل" ;

View File

@@ -78,9 +78,8 @@ lin
n = num.n; n = num.n;
d = quant.d; d = quant.d;
isPron = quant.isPron; isPron = quant.isPron;
isNum = isNum = case num.n of {
case num.n of { None => ord.isNum ; -- ord may come from OrdDigits or OrdNumeral
None => False;
_ => True _ => True
} }
} ; } ;
@@ -91,20 +90,13 @@ lin
n = num.n; n = num.n;
d = quant.d; d = quant.d;
isPron = quant.isPron; isPron = quant.isPron;
isNum = isNum = -- Num may come from NumCard : Card -> Num
case num.n of { case num.n of {
None => False; None => False;
_ => True _ => True
} }
} ; } ;
--DEPRECATED
-- SgQuant quant = {s = quant.s ! Sg ; d = quant.d;
-- isPron = quant.isPron; isNum = False} ;
-- PlQuant quant = {s = quant.s ! Pl ; d = quant.d;
-- isPron = quant.isPron; isNum = False} ;
PossPron p = { PossPron p = {
s = \\_,_,_,_ => p.s ! Gen; s = \\_,_,_,_ => p.s ! Gen;
d = Const; d = Const;
@@ -113,37 +105,39 @@ lin
NumSg = { NumSg = {
s = \\_,_,_ => [] ; s = \\_,_,_ => [] ;
n = One } ; n = One ;
isNum = False } ;
NumPl = { NumPl = {
s = \\_,_,_ => [] ; s = \\_,_,_ => [] ;
n = None } ; n = None ;
isNum = False } ;
NumDigits digits = { NumDigits digits = digits ** {
s = \\_,_,_ => digits.s; s = \\_,_,_ => digits.s ;
n = digits.n isNum = True
}; };
NumNumeral numeral = { NumNumeral numeral = numeral ** {
s = numeral.s ! NCard ; s = numeral.s ! NCard ;
n = numeral.n isNum = True
}; };
NumCard n = n ; NumCard n = n ;
AdNum adn num = { AdNum adn num = num ** {
s = \\g,d,c => adn.s ++ num.s ! g ! d ! c ; s = \\g,d,c => adn.s ++ num.s ! g ! d ! c ;
n = num.n } ; } ;
OrdDigits digits = { OrdDigits digits = digits ** {
s = \\_,d,_ => Al ! d ++ digits.s; s = \\_,d,_ => Al ! d ++ digits.s;
n = digits.n isNum = True
}; };
-- OrdNumeral : Numeral -> Ord ; -- fifty-first -- OrdNumeral : Numeral -> Ord ; -- fifty-first
OrdNumeral numeral = { OrdNumeral numeral = numeral ** {
s = numeral.s ! NOrd ; s = numeral.s ! NOrd ;
n = numeral.n isNum = True
}; };
-- FIXME, "the biggest house" would better translate into -- FIXME, "the biggest house" would better translate into
@@ -151,7 +145,8 @@ lin
-- DetCN (DetSg DefArt (OrdSuperl big_A)) (UseN house_N) -- DetCN (DetSg DefArt (OrdSuperl big_A)) (UseN house_N)
OrdSuperl a = { OrdSuperl a = {
s = \\_,d,c => a.s ! AComp d c; s = \\_,d,c => a.s ! AComp d c;
n = One n = One ;
isNum = False
} ; } ;
DefArt = { DefArt = {
@@ -167,7 +162,8 @@ lin
} ; } ;
MassNP cn = ---- AR MassNP cn = ---- AR
{s = cn.s ! Sg ! Indef ; a = {pgn = Per3 cn.g Sg ; isPron = False}} ; {s = \\c => cn.s ! Sg ! Indef ! c ++ cn.adj ! Sg ! Indef ! c ;
a = {pgn = Per3 cn.g Sg ; isPron = False}} ;
-- MassDet = {s = \\_,_,_,_ => [] ; d = Indef; -- MassDet = {s = \\_,_,_,_ => [] ; d = Indef;
-- isNum = False; isPron = False} ; -- isNum = False; isPron = False} ;

View File

@@ -478,7 +478,7 @@ resource ParadigmsAra = open
<Hum,_,_,_> => ula'ika; <Hum,_,_,_> => ula'ika;
_ => tilka _ => tilka
}; };
d = Def; d = det;
isPron = False; isPron = False;
isNum = False; isNum = False;
lock_Quant = <> lock_Quant = <>

View File

@@ -117,8 +117,10 @@ resource ResAra = PatternsAra ** open Prelude, Predef, OrthoAra, ParamX in {
NumOrdCard : Type = { NumOrdCard : Type = {
s : Gender => State => Case => Str ; s : Gender => State => Case => Str ;
n : Size ; n : Size ;
isNum : Bool
} ; } ;
uttNum : NumOrdCard -> (Gender => Str) ; uttNum : NumOrdCard -> (Gender => Str) ;
uttNum n = \\g => n.s ! g ! Def ! Nom ; ----IL uttNum n = \\g => n.s ! g ! Def ! Nom ; ----IL
@@ -1085,21 +1087,26 @@ patHollowImp : (_,_ :Str) -> Gender => Number => Str =\xaf,xAf ->
case pgn of { case pgn of {
Per3 gn nm => {g = gn; n = nm}; Per3 gn nm => {g = gn; n = nm};
Per2 gn nm => {g = gn; n = nm}; Per2 gn nm => {g = gn; n = nm};
_ => {g = Masc; n = Sg} --randomly Per1 nm => {g = Masc; --randomly
n = case nm of {
Sing => Sg ;
Plur => Pl}
}
}; };
mkIP : Str -> Number -> IP = mkIP : Str -> Number -> IP =
\s,n -> {s = \\_g,_s,_c => s ; n = n} ; \s,n -> {s = \\_g,_s,_c => s ; n = n} ;
mkOrd : (_,_ : Str) -> NumOrdCard = mkOrd : (_,_ : Str) -> Size -> NumOrdCard =
\aysar,yusra -> \aysar,yusra,sz ->
{ s = \\g,s,c => { s = \\g,s,c =>
case g of { case g of {
Masc => (sing aysar) ! s ! c; Masc => (sing aysar) ! s ! c;
Fem => (sing yusra) ! s ! c Fem => (sing yusra) ! s ! c
}; };
n = None n = sz ;
isNum = False
}; };

View File

@@ -26,8 +26,8 @@ lin
SymbS sy = sy ; SymbS sy = sy ;
SymbOrd n = {s = \\_,_,_ => n.s ; n = None } ; SymbOrd n = {s = \\_,_,_ => n.s ; n = One ; isNum = False } ;
SymbNum n = SymbOrd n ** { n = ThreeTen } ; ----IL SymbNum n = SymbOrd n ** { n = ThreeTen ; isNum = True } ; ----IL
lincat lincat