1
0
forked from GitHub/gf-rgl

support for measurement units

This commit is contained in:
Krasimir Angelov
2023-07-25 19:38:43 +02:00
parent 5d912f78a4
commit 22a168198b
39 changed files with 198 additions and 4 deletions

View File

@@ -44,4 +44,8 @@ abstract Common = {
Pol ; -- polarity e.g. positive, negative Pol ; -- polarity e.g. positive, negative
Ant ; -- anteriority e.g. simultaneous, anterior Ant ; -- anteriority e.g. simultaneous, anterior
--2 Measures
MU ; -- unit of measurement e.g. "km", "cm", "%"
} }

View File

@@ -156,4 +156,9 @@ abstract Noun = Cat ** {
AdjDAP : DAP -> AP -> DAP ; -- the large (one) AdjDAP : DAP -> AP -> DAP ; -- the large (one)
DetDAP : Det -> DAP ; -- this (or that) DetDAP : Det -> DAP ; -- this (or that)
--2 Quantities
QuantityNP : Digits -> MU -> NP ;
QuantityFloatNP : Digits -> Digits -> MU -> NP ;
} }

View File

@@ -179,4 +179,16 @@ concrete NounAfr of Noun = CatAfr ** open ResAfr, Prelude in {
isMod = cn.isMod isMod = cn.isMod
} ; } ;
QuantityNP n m = {
s = \\c => preOrPost m.isPre m.s (n.s ! NCard Neutr Nom) ;
a = agrP3 n.n ;
isPron = False
} ;
QuantityFloatNP n1 n2 m = {
s = \\c => preOrPost m.isPre m.s (n1.s ! NCard Neutr Nom ++ BIND ++ "." ++ BIND ++ n1.s ! NCard Neutr Nom) ;
a = agrP3 Pl ;
isPron = False
} ;
} }

View File

@@ -494,4 +494,6 @@ oper
-- --
--} --}
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -240,4 +240,17 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
p = dap.p p = dap.p
} ; } ;
DetDAP det = det ; DetDAP det = det ;
QuantityNP n m = {
s = \\role => preOrPost m.isPre m.s (n.s ! NCard (CFMasc Indef NonHuman)) ;
gn = gennum (AMasc NonHuman) n.n ;
p = NounP3 Pos
} ;
QuantityFloatNP n1 n2 m = {
s = \\role => preOrPost m.isPre m.s (n1.s ! NCard (CFMasc Indef NonHuman) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard (CFMasc Indef NonHuman)) ;
gn = gennum (AMasc NonHuman) Pl ;
p = NounP3 Pos
} ;
} }

View File

@@ -2116,4 +2116,7 @@ oper
adjAdv : A -> Str -> A = adjAdv : A -> Str -> A =
\a,adv -> a ** {adv = adv} ; \a,adv -> a ** {adv = adv} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -553,6 +553,6 @@ oper
mk2V2 : V -> Prep -> V2 ; mk2V2 : V -> Prep -> V2 ;
dirV2 : V -> V2 ; dirV2 : V -> V2 ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -215,6 +215,8 @@ oper
= \s -> lin RP {s = table {True => [] ; False => word s}} ; = \s -> lin RP {s = table {True => [] ; False => word s}} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
--. auxiliary --. auxiliary
oper oper

View File

@@ -1,4 +1,4 @@
concrete CommonX of Common = open (R = ParamX) in { concrete CommonX of Common = open (R = ParamX), Prelude in {
lincat lincat
Text = {s : Str} ; Text = {s : Str} ;
@@ -20,4 +20,6 @@ concrete CommonX of Common = open (R = ParamX) in {
Ant = {s : Str ; a : R.Anteriority} ; Ant = {s : Str ; a : R.Anteriority} ;
Pol = {s : Str ; p : R.Polarity} ; Pol = {s : Str ; p : R.Polarity} ;
MU = {s : Str ; isPre : Bool} ;
} }

View File

@@ -201,4 +201,16 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in {
DetDAP det = det ; DetDAP det = det ;
QuantityNP n m = noMerge ** {
s = \\c => preOrPost m.isPre m.s (n.s ! NCard Utr Nom) ;
a = agrP3 n.n ;
isPron = False
} ;
QuantityFloatNP n1 n2 m = noMerge ** {
s = \\role => preOrPost m.isPre m.s (n1.s ! NCard Utr Nom ++ BIND ++ "." ++ BIND ++ n2.s ! NCard Utr Nom) ;
a = agrP3 Pl ;
isPron = False
} ;
} }

View File

@@ -439,4 +439,6 @@ oper
-- --
--} --}
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -176,4 +176,14 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
DetDAP d = d ; DetDAP d = d ;
QuantityNP n m = {
s = \\c => preOrPost m.isPre m.s (n.s ! NCard ! Nom) ;
a = agrgP3 n.n Neutr
} ;
QuantityFloatNP n1 n2 m = {
s = \\c => preOrPost m.isPre m.s (n1.s ! NCard ! Nom ++ BIND ++ "." ++ BIND ++ n2.s ! NCard ! Nom) ;
a = agrgP3 Pl Neutr
} ;
} }

View File

@@ -795,6 +795,8 @@ mkVoc s = lin Voc (ss s) ;
mk2Conj : Str -> Str -> Number -> Conj = \x,y,n -> mk2Conj : Str -> Str -> Number -> Conj = \x,y,n ->
lin Conj (sd2 x y ** {n = n}) ; lin Conj (sd2 x y ** {n = n}) ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
---- obsolete ---- obsolete
-- Comparison adjectives may two more forms. -- Comparison adjectives may two more forms.

View File

@@ -219,6 +219,18 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in
ApposCN cn np = cn ** {postmod = cn.postmod ++ linNP (NPCase Nom) np} ; --- luvun x ApposCN cn np = cn ** {postmod = cn.postmod ++ linNP (NPCase Nom) np} ; --- luvun x
QuantityNP n m = emptyNP ** {
s = \\c => preOrPost m.isPre m.s (n.s ! NCard (NCase Sg Nom)) ;
a = agrP3 n.n ;
isPron = False
} ;
QuantityFloatNP n1 n2 m = emptyNP ** {
s = \\role => preOrPost m.isPre m.s (n1.s ! NCard (NCase Sg Nom) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard (NCase Sg Nom)) ;
a = agrP3 Pl ;
isPron = False
} ;
oper oper
numN : NForm -> Number = \nf -> case nf of { numN : NForm -> Number = \nf -> case nf of {
NCase n _ => n NCase n _ => n

View File

@@ -922,4 +922,6 @@ oper
mkAV a = a ; mkAV a = a ;
mkA2V a p = mkA2 a p ; mkA2V a p = mkA2 a p ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -296,6 +296,20 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
DetDAP d = d ; DetDAP d = d ;
QuantityNP n m = {
s = \\c => preOrPost m.isPre m.s (n.s ! NCard (NCase Sg Nom)) ;
a = agrP3 n.n ;
isPron = False ;
isNeg = False
} ;
QuantityFloatNP n1 n2 m = {
s = \\role => preOrPost m.isPre m.s (n1.s ! NCard (NCase Sg Nom) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard (NCase Sg Nom)) ;
a = agrP3 Pl ;
isPron = False ;
isNeg = False
} ;
oper oper
numN : NForm -> Number = \nf -> case nf of { numN : NForm -> Number = \nf -> case nf of {
NCase n _ => n ; NCase n _ => n ;

View File

@@ -1050,4 +1050,6 @@ mkVS = overload {
mkAV v = v ** {lock_A = <>} ; mkAV v = v ** {lock_A = <>} ;
--- mkA2V v p = mkA2 <v : A> p ** {lock_A2 = <>} ; --- mkA2V v p = mkA2 <v : A> p ** {lock_A2 = <>} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -574,5 +574,6 @@ oper
_ => VFalse -- prend-il _ => VFalse -- prend-il
} ; } ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -240,4 +240,20 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
DetDAP det = det ; DetDAP det = det ;
QuantityNP dig m = {
s = \\c => preOrPost m.isPre m.s (dig.s ! invNum) ;
a = agrP3 Pl ;
w = WLight ;
rc = "" ;
ext = "" ;
} ;
QuantityFloatNP dig1 dig2 m = {
s = \\c => preOrPost m.isPre m.s (dig1.s ! invNum ++ BIND ++ "." ++ BIND ++ dig2.s ! invNum) ;
a = agrP3 Pl ;
w = WLight ;
rc = "" ;
ext = "" ;
} ;
} }

View File

@@ -771,4 +771,6 @@ mkV2 : overload {
mkV2 : V -> Case -> V2 = \v,c -> prepV2 v (lin Prep {s,s2 = [] ; c = c ; isPrep = False}) ; mkV2 : V -> Case -> V2 = \v,c -> prepV2 v (lin Prep {s,s2 = [] ; c = c ; isPrep = False}) ;
} ; } ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -558,4 +558,6 @@ oper
mk2V2 : V -> Prep -> V2 ; mk2V2 : V -> Prep -> V2 ;
dirV2 : V -> V2 ; dirV2 : V -> V2 ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -198,4 +198,6 @@ oper
} ; } ;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -1423,4 +1423,6 @@ resource ParadigmsMlt = open
mkOrd : Str -> Ord = \x -> lin Ord { s = \\c => x }; mkOrd : Str -> Ord = \x -> lin Ord { s = \\c => x };
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -210,4 +210,18 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol, Mor
DetDAP d = d ; DetDAP d = d ;
QuantityNP n m = {
nom,voc = preOrPost m.isPre m.s n.s;
dep = \\cc => preOrPost m.isPre m.s n.s ;
gn = OthersPl;
p = P3
} ;
QuantityFloatNP n1 n2 m = {
nom,voc = preOrPost m.isPre m.s (n1.s ++ BIND ++ "." ++ BIND ++ n2.s) ;
dep = \\cc => preOrPost m.isPre m.s (n1.s ++ BIND ++ "." ++ BIND ++ n2.s) ;
gn = OthersPl;
p = P3
} ;
} }

View File

@@ -4,7 +4,7 @@
-- Inari Listenmaa, 2020 -- Inari Listenmaa, 2020
resource ParadigmsPol = open resource ParadigmsPol = open
CatPol, MorphoPol, ResPol, (NM=NounMorphoPol) CatPol, MorphoPol, ResPol, (NM=NounMorphoPol), Prelude
in in
{ {
flags coding=utf8; flags coding=utf8;
@@ -383,4 +383,6 @@
_ => NM.mkNTable0171 sgnom -- Alternatives: mkNTable0000,mkNTable0001,mkNTable0002,mkNTable0003,mkNTable0010,mkNTable0015,mkNTable0028,mkNTable0037,mkNTable0043,mkNTable0044,mkNTable0053,mkNTable0064,mkNTable0067,mkNTable0075,mkNTable0091,mkNTable0096,mkNTable0111,mkNTable0117,mkNTable0118,mkNTable0129,mkNTable0131,mkNTable0168,mkNTable0171,mkNTable0173,mkNTable0176,mkNTable0181,mkNTable0191,mkNTable0197,mkNTable0213,mkNTable0243,mkNTable0244,mkNTable0247,mkNTable0248,mkNTable0271,mkNTable0281,mkNTable0282,mkNTable0286,mkNTable0304,mkNTable0309,mkNTable0312,mkNTable0315,mkNTable0324,mkNTable0333,mkNTable0338,mkNTable0348,mkNTable0350,mkNTable0365,mkNTable0373,mkNTable0375,mkNTable0428,mkNTable0444,mkNTable0467,mkNTable0495,mkNTable0497,mkNTable0500,mkNTable0503,mkNTable0514,mkNTable0516,mkNTable0518,mkNTable0519,mkNTable0523,mkNTable0539,mkNTable0542,mkNTable0550,mkNTable0552,mkNTable0570,mkNTable0578,mkNTable0583,mkNTable0589,mkNTable0648,mkNTable0662,mkNTable0691,mkNTable0696,mkNTable0717,mkNTable0773,mkNTable0803,mkNTable0826,mkNTable0828,mkNTable0859,mkNTable0868,mkNTable0869,mkNTable0944,mkNTable0964,mkNTable0965,mkNTable0966,mkNTable0970,mkNTable0981,mkNTable0991,mkNTable0995 _ => NM.mkNTable0171 sgnom -- Alternatives: mkNTable0000,mkNTable0001,mkNTable0002,mkNTable0003,mkNTable0010,mkNTable0015,mkNTable0028,mkNTable0037,mkNTable0043,mkNTable0044,mkNTable0053,mkNTable0064,mkNTable0067,mkNTable0075,mkNTable0091,mkNTable0096,mkNTable0111,mkNTable0117,mkNTable0118,mkNTable0129,mkNTable0131,mkNTable0168,mkNTable0171,mkNTable0173,mkNTable0176,mkNTable0181,mkNTable0191,mkNTable0197,mkNTable0213,mkNTable0243,mkNTable0244,mkNTable0247,mkNTable0248,mkNTable0271,mkNTable0281,mkNTable0282,mkNTable0286,mkNTable0304,mkNTable0309,mkNTable0312,mkNTable0315,mkNTable0324,mkNTable0333,mkNTable0338,mkNTable0348,mkNTable0350,mkNTable0365,mkNTable0373,mkNTable0375,mkNTable0428,mkNTable0444,mkNTable0467,mkNTable0495,mkNTable0497,mkNTable0500,mkNTable0503,mkNTable0514,mkNTable0516,mkNTable0518,mkNTable0519,mkNTable0523,mkNTable0539,mkNTable0542,mkNTable0550,mkNTable0552,mkNTable0570,mkNTable0578,mkNTable0583,mkNTable0589,mkNTable0648,mkNTable0662,mkNTable0691,mkNTable0696,mkNTable0717,mkNTable0773,mkNTable0803,mkNTable0826,mkNTable0828,mkNTable0859,mkNTable0868,mkNTable0869,mkNTable0944,mkNTable0964,mkNTable0965,mkNTable0966,mkNTable0970,mkNTable0981,mkNTable0991,mkNTable0995
} ; } ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -564,5 +564,7 @@ oper
reflVerboV : Verbum -> V = \ve -> reflV (lin V (verboV ve)) ; --% reflVerboV : Verbum -> V = \ve -> reflV (lin V (verboV ve)) ; --%
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -207,4 +207,16 @@ incomplete concrete NounRomance of Noun =
DetDAP det = det ; DetDAP det = det ;
QuantityNP n m = heavyNPpol False {
s = \\c => preOrPost m.isPre m.s (n.s ! NCard Masc);
a = agrP3 Masc n.n ;
hasClit = False
} ;
QuantityFloatNP n1 n2 m = heavyNPpol False {
s = \\c => preOrPost m.isPre m.s (n1.s ! NCard Masc ++ BIND ++ "." ++ BIND ++ n2.s ! NCard Masc) ;
a = agrP3 Masc Pl ;
hasClit = False
} ;
} }

View File

@@ -308,5 +308,4 @@ in {
isComp = True isComp = True
} ; } ;
}; };

View File

@@ -559,6 +559,7 @@ mkPronoun :(_,_,_,_,_,_,_,_,_ : Str) -> Gender -> Number -> Person -> Pron =\eu,
-- in this case we add a case to the complement, so that the right gender is chosen. -- in this case we add a case to the complement, so that the right gender is chosen.
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -241,4 +241,16 @@ lin
preferShort=PreferFull preferShort=PreferFull
} ; } ;
QuantityNP n m = {
s = \\cas => preOrPost m.isPre m.s n.s;
pron=False ;
a=Ag (gennum Masc (numSizeNumber n.size)) P3
} ;
QuantityFloatNP n1 n2 m = {
s = \\cas => preOrPost m.isPre m.s (n1.s ++ BIND ++ "." ++ BIND ++ n2.s) ;
pron=False ;
a=Ag GPl P3
} ;
} }

View File

@@ -597,4 +597,7 @@ oper
Second | SecondA => (Z.sg1StemFromVerb sg1) + "ит" ; Second | SecondA => (Z.sg1StemFromVerb sg1) + "ит" ;
_ => (Z.sg1StemFromVerb sg1) + "ет" _ => (Z.sg1StemFromVerb sg1) + "ет"
} in (guessVerbForms asp Transitive inf sg1 sg3) ** {lock_V=<>} ; } in (guessVerbForms asp Transitive inf sg1 sg3) ** {lock_V=<>} ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -263,4 +263,16 @@ incomplete concrete NounScand of Noun =
DetDAP d = d ; DetDAP d = d ;
QuantityNP n m = {
s = \\c => preOrPost m.isPre m.s (n.s ! NCard neutrum);
a = agrP3 Utr n.n ;
isPron = False
} ;
QuantityFloatNP n1 n2 m = {
s = \\c => preOrPost m.isPre m.s (n1.s ! NCard neutrum ++ BIND ++ "." ++ BIND ++ n2.s ! NCard neutrum) ;
a = agrP3 Utr Pl ;
isPron = False
} ;
} }

View File

@@ -850,4 +850,7 @@ oper
vowel : pattern Str = #("a"|"e"|"i"|"o"|"u") ; vowel : pattern Str = #("a"|"e"|"i"|"o"|"u") ;
consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"r"|"s"|"t"|"v"|"x"|"z") ; consonant : pattern Str = #("b"|"c"|"d"|"f"|"g"|"h"|"j"|"k"|"l"|"m"|"n"|"p"|"r"|"s"|"t"|"v"|"x"|"z") ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -286,4 +286,6 @@ oper
} ; } ;
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -604,4 +604,6 @@ oper
mk2V2 : V -> Prep -> V2 ; mk2V2 : V -> Prep -> V2 ;
dirV2 : V -> V2 ; dirV2 : V -> V2 ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -431,6 +431,7 @@ mkN2 = overload {
regPN : Str ->Gender -> PN ; regPN : Str ->Gender -> PN ;
nounPN : N -> PN ; nounPN : N -> PN ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -821,5 +821,6 @@ oper
dirV2 : V -> V2 ; dirV2 : V -> V2 ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} ; } ;

View File

@@ -100,5 +100,6 @@ oper
mkPrep : Str -> Prep = mkPrep : Str -> Prep =
\s -> lin Prep (ss s) ; \s -> lin Prep (ss s) ;
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }

View File

@@ -632,4 +632,7 @@ resource ParadigmsTur = open
-- kal-, ol-, öl-, var-, ver-, vur-, san- ) -- kal-, ol-, öl-, var-, ver-, vur-, san- )
| SgSylConReg ; -- one syllable ending with consonant, takes -er | SgSylConReg ; -- one syllable ending with consonant, takes -er
oper
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
} }