mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-21 17:12:50 -06:00
took back smart type of Int ; Digits type in resource and some adjustments of Det syntax (not yet for romance and russian)
This commit is contained in:
@@ -53,13 +53,14 @@ concrete CatEng of Cat = CommonX ** open ResEng, Prelude in {
|
||||
CN = {s : Number => Case => Str} ;
|
||||
NP, Pron = {s : Case => Str ; a : Agr} ;
|
||||
Det = {s : Str ; n : Number} ;
|
||||
Predet, QuantSg, QuantPl, Ord = {s : Str} ;
|
||||
Predet, Ord = {s : Str} ;
|
||||
Num = {s : Str; n : Number } ;
|
||||
Quant = {s : Number => Str} ;
|
||||
|
||||
-- Numeral
|
||||
|
||||
Numeral = {s : CardOrd => Str ; n : Number} ;
|
||||
Digits = {s : CardOrd => Str ; n : Number ; tail : DTail} ;
|
||||
|
||||
-- Structural
|
||||
|
||||
|
||||
@@ -26,33 +26,37 @@ concrete NounEng of Noun = CatEng ** open ResEng, Prelude in {
|
||||
} ;
|
||||
|
||||
DetSg quant ord = {
|
||||
s = quant.s ++ ord.s ;
|
||||
s = quant.s ! Sg ++ ord.s ;
|
||||
n = Sg
|
||||
} ;
|
||||
|
||||
DetPl quant num ord = {
|
||||
s = quant.s ++ num.s ++ ord.s ;
|
||||
s = quant.s ! num.n ++ num.s ++ ord.s ;
|
||||
n = num.n
|
||||
} ;
|
||||
|
||||
SgQuant quant = {s = quant.s ! Sg} ;
|
||||
PlQuant quant = {s = quant.s ! Pl} ;
|
||||
--- SgQuant quant = {s = quant.s ! Sg} ; DEPRECATED
|
||||
--- PlQuant quant = {s = quant.s ! Pl} ;
|
||||
|
||||
PossPron p = {s = \\_ => p.s ! Gen} ;
|
||||
|
||||
NoNum = {s = []; n = Pl } ;
|
||||
NoOrd = {s = []} ;
|
||||
|
||||
NumInt n = {s = n.s; n = table (Predef.Ints 1 * Predef.Ints 9) {
|
||||
<0,1> => Sg ;
|
||||
_ => Pl
|
||||
} ! ---- <1,2> ---- parser bug (AR 2/6/2007)
|
||||
<n.size,n.last>
|
||||
} ;
|
||||
NumDigits n = {s = n.s ! NCard ; n = n.n} ;
|
||||
|
||||
OrdInt n = {s = n.s ++ "th"} ; ---
|
||||
NumInt n = {s = n.s ; n = Pl} ;
|
||||
--table (Predef.Ints 1 * Predef.Ints 9) {
|
||||
-- <0,1> => Sg ;
|
||||
-- _ => Pl -- DEPRECATED
|
||||
-- } ! <1,2> ---- parser bug (AR 2/6/2007)
|
||||
-- ---- <n.size,n.last>
|
||||
-- } ;
|
||||
|
||||
NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n } ;
|
||||
OrdInt n = {s = n.s ++ "th"} ; --- DEPRECATED
|
||||
OrdDigits n = {s = n.s ! NOrd} ;
|
||||
|
||||
NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n} ;
|
||||
OrdNumeral numeral = {s = numeral.s ! NOrd} ;
|
||||
|
||||
AdNum adn num = {s = adn.s ++ num.s; n = num.n } ;
|
||||
@@ -68,7 +72,7 @@ concrete NounEng of Noun = CatEng ** open ResEng, Prelude in {
|
||||
}
|
||||
} ;
|
||||
|
||||
MassDet = {s = [] ; n = Sg} ;
|
||||
MassDet = {s = \\_ => []} ;
|
||||
|
||||
UseN n = n ;
|
||||
UseN2 n = n ;
|
||||
|
||||
@@ -41,4 +41,55 @@ lin pot3 n = {
|
||||
s = \\c => n.s ! NCard ++ mkCard c "thousand" ; n = Pl} ;
|
||||
lin pot3plus n m = {
|
||||
s = \\c => n.s ! NCard ++ "thousand" ++ m.s ! c ; n = Pl} ;
|
||||
|
||||
-- numerals as sequences of digits
|
||||
|
||||
lincat
|
||||
Dig = TDigit ;
|
||||
|
||||
lin
|
||||
IDig d = d ** {tail = T1} ;
|
||||
|
||||
IIDig d i = {
|
||||
s = \\o => d.s ! o ++ commaIf i.tail ++ i.s ! o ;
|
||||
n = Pl ;
|
||||
tail = inc i.tail
|
||||
} ;
|
||||
|
||||
D_0 = mkDig "0" ;
|
||||
D_1 = mk3Dig "1" "1st" Sg ;
|
||||
D_2 = mk2Dig "2" "2nd" ;
|
||||
D_3 = mk2Dig "3" "3rd" ;
|
||||
D_4 = mkDig "4" ;
|
||||
D_5 = mkDig "5" ;
|
||||
D_6 = mkDig "6" ;
|
||||
D_7 = mkDig "7" ;
|
||||
D_8 = mkDig "8" ;
|
||||
D_9 = mkDig "9" ;
|
||||
|
||||
oper
|
||||
commaIf : DTail -> Str = \t -> case t of {
|
||||
T3 => "," ;
|
||||
_ => []
|
||||
} ;
|
||||
|
||||
inc : DTail -> DTail = \t -> case t of {
|
||||
T1 => T2 ;
|
||||
T2 => T3 ;
|
||||
T3 => T1
|
||||
} ;
|
||||
|
||||
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c o Pl ;
|
||||
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "th") ;
|
||||
|
||||
mk3Dig : Str -> Str -> Number -> TDigit = \c,o,n -> {
|
||||
s = table {NCard => c ; NOrd => o} ;
|
||||
n = n
|
||||
} ;
|
||||
|
||||
TDigit = {
|
||||
n : Number ;
|
||||
s : CardOrd => Str
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ concrete StructuralEng of Structural = CatEng **
|
||||
everything_NP = regNP "everything" Sg ;
|
||||
everywhere_Adv = ss "everywhere" ;
|
||||
few_Det = mkDeterminer Pl "few" ;
|
||||
first_Ord = ss "first" ;
|
||||
--- first_Ord = ss "first" ; DEPRECATED
|
||||
for_Prep = ss "for" ;
|
||||
from_Prep = ss "from" ;
|
||||
he_Pron = mkNP "he" "him" "his" Sg P3 ;
|
||||
@@ -71,7 +71,7 @@ concrete StructuralEng of Structural = CatEng **
|
||||
} ;
|
||||
no_Phr = ss "no" ;
|
||||
on_Prep = ss "on" ;
|
||||
one_Quant = mkDeterminer Sg "one" ;
|
||||
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
|
||||
only_Predet = ss "only" ;
|
||||
or_Conj = ss "or" ** {n = Sg} ;
|
||||
otherwise_PConj = ss "otherwise" ;
|
||||
|
||||
Reference in New Issue
Block a user