mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-28 09:28:54 -06:00
(Ara) Better checks if a Num or Ord is a numeral
This commit is contained in:
@@ -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 ;
|
||||||
|
|
||||||
|
|||||||
@@ -249,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 "صحّ" "فَعِيل" ;
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
|||||||
@@ -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 = <>
|
||||||
|
|||||||
@@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user