forked from GitHub/gf-rgl
support for measurement units
This commit is contained in:
@@ -44,4 +44,8 @@ abstract Common = {
|
||||
Pol ; -- polarity e.g. positive, negative
|
||||
Ant ; -- anteriority e.g. simultaneous, anterior
|
||||
|
||||
--2 Measures
|
||||
|
||||
MU ; -- unit of measurement e.g. "km", "cm", "%"
|
||||
|
||||
}
|
||||
|
||||
@@ -156,4 +156,9 @@ abstract Noun = Cat ** {
|
||||
AdjDAP : DAP -> AP -> DAP ; -- the large (one)
|
||||
DetDAP : Det -> DAP ; -- this (or that)
|
||||
|
||||
--2 Quantities
|
||||
|
||||
QuantityNP : Digits -> MU -> NP ;
|
||||
QuantityFloatNP : Digits -> Digits -> MU -> NP ;
|
||||
|
||||
}
|
||||
|
||||
@@ -179,4 +179,16 @@ concrete NounAfr of Noun = CatAfr ** open ResAfr, Prelude in {
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -494,4 +494,6 @@ oper
|
||||
--
|
||||
--}
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -240,4 +240,17 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
p = dap.p
|
||||
} ;
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -2116,4 +2116,7 @@ oper
|
||||
|
||||
adjAdv : A -> Str -> A =
|
||||
\a,adv -> a ** {adv = adv} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -553,6 +553,6 @@ oper
|
||||
mk2V2 : V -> Prep -> V2 ;
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -215,6 +215,8 @@ oper
|
||||
= \s -> lin RP {s = table {True => [] ; False => word s}} ;
|
||||
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
--. auxiliary
|
||||
|
||||
oper
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
concrete CommonX of Common = open (R = ParamX) in {
|
||||
concrete CommonX of Common = open (R = ParamX), Prelude in {
|
||||
|
||||
lincat
|
||||
Text = {s : Str} ;
|
||||
@@ -20,4 +20,6 @@ concrete CommonX of Common = open (R = ParamX) in {
|
||||
Ant = {s : Str ; a : R.Anteriority} ;
|
||||
Pol = {s : Str ; p : R.Polarity} ;
|
||||
|
||||
MU = {s : Str ; isPre : Bool} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -201,4 +201,16 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in {
|
||||
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -439,4 +439,6 @@ oper
|
||||
--
|
||||
--}
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -176,4 +176,14 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
|
||||
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -795,6 +795,8 @@ mkVoc s = lin Voc (ss s) ;
|
||||
mk2Conj : Str -> Str -> Number -> Conj = \x,y,n ->
|
||||
lin Conj (sd2 x y ** {n = n}) ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
---- obsolete
|
||||
|
||||
-- Comparison adjectives may two more forms.
|
||||
|
||||
@@ -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
|
||||
|
||||
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
|
||||
numN : NForm -> Number = \nf -> case nf of {
|
||||
NCase n _ => n
|
||||
|
||||
@@ -922,4 +922,6 @@ oper
|
||||
mkAV a = a ;
|
||||
mkA2V a p = mkA2 a p ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -296,6 +296,20 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
|
||||
|
||||
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
|
||||
numN : NForm -> Number = \nf -> case nf of {
|
||||
NCase n _ => n ;
|
||||
|
||||
@@ -1050,4 +1050,6 @@ mkVS = overload {
|
||||
mkAV v = v ** {lock_A = <>} ;
|
||||
--- mkA2V v p = mkA2 <v : A> p ** {lock_A2 = <>} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -574,5 +574,6 @@ oper
|
||||
_ => VFalse -- prend-il
|
||||
} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -240,4 +240,20 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
||||
|
||||
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 = "" ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -771,4 +771,6 @@ mkV2 : overload {
|
||||
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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -558,4 +558,6 @@ oper
|
||||
mk2V2 : V -> Prep -> V2 ;
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -198,4 +198,6 @@ oper
|
||||
} ;
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1423,4 +1423,6 @@ resource ParadigmsMlt = open
|
||||
|
||||
mkOrd : Str -> Ord = \x -> lin Ord { s = \\c => x };
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -210,4 +210,18 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol, Mor
|
||||
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
-- Inari Listenmaa, 2020
|
||||
|
||||
resource ParadigmsPol = open
|
||||
CatPol, MorphoPol, ResPol, (NM=NounMorphoPol)
|
||||
CatPol, MorphoPol, ResPol, (NM=NounMorphoPol), Prelude
|
||||
in
|
||||
{
|
||||
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
|
||||
} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -564,5 +564,7 @@ oper
|
||||
|
||||
reflVerboV : Verbum -> V = \ve -> reflV (lin V (verboV ve)) ; --%
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -207,4 +207,16 @@ incomplete concrete NounRomance of Noun =
|
||||
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -308,5 +308,4 @@ in {
|
||||
isComp = True
|
||||
} ;
|
||||
|
||||
|
||||
};
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -241,4 +241,16 @@ lin
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -597,4 +597,7 @@ oper
|
||||
Second | SecondA => (Z.sg1StemFromVerb sg1) + "ит" ;
|
||||
_ => (Z.sg1StemFromVerb sg1) + "ет"
|
||||
} in (guessVerbForms asp Transitive inf sg1 sg3) ** {lock_V=<>} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -263,4 +263,16 @@ incomplete concrete NounScand of Noun =
|
||||
|
||||
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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -850,4 +850,7 @@ oper
|
||||
|
||||
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") ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -286,4 +286,6 @@ oper
|
||||
} ;
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -604,4 +604,6 @@ oper
|
||||
mk2V2 : V -> Prep -> V2 ;
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -431,6 +431,7 @@ mkN2 = overload {
|
||||
regPN : Str ->Gender -> PN ;
|
||||
nounPN : N -> PN ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -821,5 +821,6 @@ oper
|
||||
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -100,5 +100,6 @@ oper
|
||||
mkPrep : Str -> Prep =
|
||||
\s -> lin Prep (ss s) ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -632,4 +632,7 @@ resource ParadigmsTur = open
|
||||
-- kal-, ol-, öl-, var-, ver-, vur-, san- )
|
||||
| SgSylConReg ; -- one syllable ending with consonant, takes -er
|
||||
|
||||
oper
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user