mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-05-27 08:58:55 -06:00
Compare commits
9 Commits
somali-ver
...
misc-malay
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc8da4a212 | ||
|
|
e91b613e1a | ||
|
|
f7e9357ed4 | ||
|
|
22a168198b | ||
|
|
5d912f78a4 | ||
|
|
cb26429655 | ||
|
|
1910ba1b2a | ||
|
|
645de9955a | ||
|
|
2023af9a45 |
@@ -128,7 +128,8 @@ abstract Cat = Common ** {
|
||||
N3 ; -- three-place relational noun e.g. "connection"
|
||||
GN ; -- given name e.g. "George"
|
||||
SN ; -- second name e.g. "Washington"
|
||||
PN ; -- proper name e.g. "Paris"
|
||||
LN ; -- location name e.g. "Sweden"
|
||||
PN ; -- proper name
|
||||
|
||||
-- DEPRECATED: QuantSg, QuantPl
|
||||
--- QuantSg ;-- quantifier ('nucleus' of sing. Det) e.g. "every"
|
||||
|
||||
@@ -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", "%"
|
||||
|
||||
}
|
||||
|
||||
@@ -297,12 +297,6 @@ fun
|
||||
fun
|
||||
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
|
||||
|
||||
GivenName : GN -> PN ;
|
||||
MaleSurname : SN -> PN ;
|
||||
FemaleSurname : SN -> PN ;
|
||||
PlSurname : SN -> PN ;
|
||||
FullName : GN -> SN -> PN ;
|
||||
|
||||
fun
|
||||
AnaphPron : NP -> Pron ;
|
||||
|
||||
|
||||
@@ -19,6 +19,6 @@ abstract Grammar =
|
||||
Structural,
|
||||
Idiom,
|
||||
Tense,
|
||||
Names,
|
||||
Transfer
|
||||
;
|
||||
|
||||
|
||||
14
src/abstract/Names.gf
Normal file
14
src/abstract/Names.gf
Normal file
@@ -0,0 +1,14 @@
|
||||
abstract Names = Cat ** {
|
||||
|
||||
fun GivenName : GN -> NP ;
|
||||
MaleSurname : SN -> NP ;
|
||||
FemaleSurname : SN -> NP ;
|
||||
PlSurname : SN -> NP ;
|
||||
FullName : GN -> SN -> NP ;
|
||||
|
||||
fun UseLN : LN -> NP ;
|
||||
PlainLN : LN -> NP ;
|
||||
InLN : LN -> Adv ;
|
||||
AdjLN : AP -> LN -> LN ;
|
||||
|
||||
}
|
||||
@@ -58,6 +58,7 @@ abstract Noun = Cat ** {
|
||||
|
||||
data
|
||||
NumDigits : Digits -> Card ; -- 51
|
||||
NumFloat : Digits -> Digits -> Card ; -- 3.14
|
||||
NumNumeral : Numeral -> Card ; -- fifty-one
|
||||
|
||||
-- The construction of numerals is defined in [Numeral Numeral.html].
|
||||
@@ -155,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 ;
|
||||
|
||||
}
|
||||
|
||||
@@ -83,6 +83,6 @@ concrete CatAfr of Cat =
|
||||
N = Noun ;
|
||||
N2 = {s : NForm => Str ; g : Gender} ** {c2 : Preposition} ;
|
||||
N3 = {s : NForm => Str ; g : Gender} ** {c2,c3 : Preposition} ;
|
||||
GN, SN, PN = {s : NPCase => Str} ;
|
||||
GN, SN, LN, PN = {s : NPCase => Str} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -12,9 +12,4 @@ lin PassVPSlash vps =
|
||||
PassAgentVPSlash vps np =
|
||||
insertAdv (appPrep "door" np.s) (insertInf (vps.s.s ! VPerf) (predV word_V)) ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ! NPNom ++ sn.s ! c ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -14,4 +14,5 @@ concrete GrammarAfr of Grammar =
|
||||
TextX,
|
||||
IdiomAfr,
|
||||
StructuralAfr,
|
||||
TenseX ;
|
||||
TenseX,
|
||||
NamesAfr ;
|
||||
|
||||
6
src/afrikaans/NamesAfr.gf
Normal file
6
src/afrikaans/NamesAfr.gf
Normal file
@@ -0,0 +1,6 @@
|
||||
concrete NamesAfr of Names = CatAfr ** open ResAfr, Prelude in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> {s = n.s ; a = agrP3 Sg ; isPron = False} ;
|
||||
lin FullName gn sn =
|
||||
{s = \\c => gn.s ! NPNom ++ sn.s ! c ; a = agrP3 Sg ; isPron = False} ;
|
||||
}
|
||||
@@ -77,6 +77,8 @@ concrete NounAfr of Noun = CatAfr ** open ResAfr, Prelude in {
|
||||
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ;
|
||||
|
||||
NumFloat n1 n2 = {s = \\g,c => n1.s ! NCard Neutr Nom ++ BIND ++ "." ++ BIND ++ n1.s ! NCard g c; n = Pl } ;
|
||||
|
||||
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ;
|
||||
|
||||
@@ -177,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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ incomplete concrete CatBantu of Cat =
|
||||
-- N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str} ;
|
||||
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Prep} ;
|
||||
N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Prep} ;
|
||||
GN, SN, PN = {s : Case => Str ; g : Gender} ;
|
||||
GN, SN, LN, PN = {s : Case => Str ; g : Gender} ;
|
||||
--Tense = {s : Str ; t : ResKam.Tense} ;
|
||||
|
||||
linref
|
||||
|
||||
@@ -88,7 +88,7 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (
|
||||
N3 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2,c3 : Preposition} ;
|
||||
GN = {s : Str; g : Sex} ;
|
||||
SN = {s : Sex => Str; pl : Str} ;
|
||||
PN = {s : Str; gn : GenNum} ;
|
||||
LN, PN = {s : Str; gn : GenNum} ;
|
||||
|
||||
lindef
|
||||
SSlash = \s -> {s = \\_ => s; c2 = {s=""; c=Acc}};
|
||||
|
||||
@@ -303,27 +303,6 @@ lin UseDAP dap = {
|
||||
lin UseComp_estar = UseComp ;
|
||||
UseComp_ser = UseComp ;
|
||||
|
||||
lin GivenName = \n -> {
|
||||
s = n.s ;
|
||||
gn = GSg (sex2gender n.g)
|
||||
} ;
|
||||
lin MaleSurname = \n -> {
|
||||
s = n.s ! Male ;
|
||||
gn = GSg Masc
|
||||
} ;
|
||||
lin FemaleSurname = \n -> {
|
||||
s = n.s ! Female;
|
||||
gn = GSg Fem
|
||||
} ;
|
||||
lin PlSurname = \n -> {
|
||||
s = n.pl ;
|
||||
gn = GPl
|
||||
} ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ! gn.g ;
|
||||
gn = GSg (sex2gender gn.g)
|
||||
} ;
|
||||
|
||||
lin ProDrop pro = pro ;
|
||||
|
||||
lin AnaphPron np =
|
||||
|
||||
@@ -15,7 +15,8 @@ concrete GrammarBul of Grammar =
|
||||
TextBul,
|
||||
StructuralBul,
|
||||
IdiomBul,
|
||||
TenseX - [CAdv,IAdv,AdV,SC]
|
||||
TenseX - [CAdv,IAdv,AdV,SC],
|
||||
NamesBul
|
||||
** {
|
||||
flags coding=utf8 ;
|
||||
|
||||
|
||||
39
src/bulgarian/NamesBul.gf
Normal file
39
src/bulgarian/NamesBul.gf
Normal file
@@ -0,0 +1,39 @@
|
||||
concrete NamesBul of Names = CatBul ** open ResBul in {
|
||||
|
||||
lin GivenName = \n -> {
|
||||
s = table { RObj c => linCase c Pos ++ n.s;
|
||||
_ => n.s
|
||||
} ;
|
||||
gn = GSg (sex2gender n.g) ;
|
||||
p = NounP3 Pos
|
||||
} ;
|
||||
lin MaleSurname = \n -> {
|
||||
s = table { RObj c => linCase c Pos ++ n.s ! Male;
|
||||
_ => n.s ! Male
|
||||
} ;
|
||||
gn = GSg Masc ;
|
||||
p = NounP3 Pos
|
||||
} ;
|
||||
lin FemaleSurname = \n -> {
|
||||
s = table { RObj c => linCase c Pos ++ n.s ! Female;
|
||||
_ => n.s ! Female
|
||||
} ;
|
||||
gn = GSg Fem ;
|
||||
p = NounP3 Pos
|
||||
} ;
|
||||
lin PlSurname = \n -> {
|
||||
s = table { RObj c => linCase c Pos ++ n.pl ;
|
||||
_ => n.pl
|
||||
} ;
|
||||
gn = GPl ;
|
||||
p = NounP3 Pos
|
||||
} ;
|
||||
lin FullName gn sn = {
|
||||
s = table { RObj c => linCase c Pos ++ gn.s ++ sn.s ! gn.g ;
|
||||
_ => gn.s ++ sn.s ! gn.g
|
||||
} ;
|
||||
gn = GSg (sex2gender gn.g) ;
|
||||
p = NounP3 Pos
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -118,6 +118,8 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
|
||||
NumDigits n = {s = \\gspec => n.s ! NCard gspec; nn = case n.n of {Sg => NNum Sg; Pl => NCountable}} ;
|
||||
OrdDigits n = {s = \\aform => n.s ! NOrd aform} ;
|
||||
|
||||
NumFloat n1 n2 = {s = \\gspec => n1.s ! NCard (CFMasc Indef NonHuman) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard gspec ; nn = NCountable} ;
|
||||
|
||||
NumNumeral numeral = {s = \\gspec => numeral.s ! NCard gspec; nn = case numeral.n of {Sg => NNum Sg; Pl => NCountable}} ;
|
||||
OrdNumeral numeral = {s = \\aform => numeral.s ! NOrd aform} ;
|
||||
|
||||
@@ -238,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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -225,4 +225,7 @@ oper
|
||||
|
||||
polNegDirSubj = RPos ;
|
||||
|
||||
param
|
||||
HasArt = NoArt | UseArt ;
|
||||
|
||||
}
|
||||
|
||||
@@ -15,10 +15,4 @@ concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
|
||||
ParadigmsCat in {
|
||||
-- put your own definitions here
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarCat of Grammar =
|
||||
TextX - [SC,Temp,Tense,Pol,PPos,PNeg],
|
||||
IdiomCat,
|
||||
StructuralCat,
|
||||
TenseCat
|
||||
TenseCat,
|
||||
NamesCat
|
||||
|
||||
** {
|
||||
|
||||
|
||||
9
src/catalan/NamesCat.gf
Normal file
9
src/catalan/NamesCat.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
concrete NamesCat of Names = CatCat ** open ResCat in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> pn2np n ;
|
||||
lin FullName gn sn = pn2np {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -553,6 +553,6 @@ oper
|
||||
mk2V2 : V -> Prep -> V2 ;
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -80,7 +80,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
|
||||
N = ResChi.Noun ;
|
||||
N2 = ResChi.Noun ** {c2 : Preposition} ;
|
||||
N3 = ResChi.Noun ** {c2,c3 : Preposition} ;
|
||||
GN, SN, PN = SS ;
|
||||
GN, SN, LN, PN = SS ;
|
||||
|
||||
-- overridden
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ concrete ExtendChi of Extend = CatChi **
|
||||
, MkVPI2, BaseVPI2, ConsVPI2, ConjVPI2, ComplVPI2
|
||||
, ProDrop, ComplDirectVS, ComplDirectVQ
|
||||
, PassVPSlash, PassAgentVPSlash
|
||||
, GerundAdv, GerundNP, ByVP ]
|
||||
, GerundAdv, GerundNP, ByVP, ApposNP ]
|
||||
with (Grammar=GrammarChi) ** open
|
||||
Prelude
|
||||
, Coordination
|
||||
@@ -83,13 +83,11 @@ concrete ExtendChi of Extend = CatChi **
|
||||
AdvVP (UseV <lin V vq : V>)
|
||||
(mkAdv (":" ++ quoted utt.s)) ; -- DEFAULT complement added as Adv in quotes
|
||||
|
||||
lin
|
||||
ApposNP np1 np2 = {s = np1.s ++ np2.s; det = np1.det} ;
|
||||
|
||||
oper
|
||||
mkAdv : Str -> CatChi.Adv ;
|
||||
mkAdv str = lin Adv {s = str ; advType = ATManner ; hasDe = False} ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s
|
||||
} ;
|
||||
|
||||
};
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarChi of Grammar =
|
||||
TextChi,
|
||||
StructuralChi,
|
||||
IdiomChi,
|
||||
TenseChi
|
||||
TenseChi,
|
||||
NamesChi
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
9
src/chinese/NamesChi.gf
Normal file
9
src/chinese/NamesChi.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
concrete NamesChi of Names = CatChi ** {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ** {det = []} ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ;
|
||||
det = []
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -81,6 +81,6 @@ concrete CatDut of Cat =
|
||||
N = Noun ;
|
||||
N2 = {s : NForm => Str ; g : Gender} ** {c2 : Preposition} ;
|
||||
N3 = {s : NForm => Str ; g : Gender} ** {c2,c3 : Preposition} ;
|
||||
GN, SN, PN = {s : NPCase => Str} ;
|
||||
GN, SN, LN, PN = {s : NPCase => Str} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -121,9 +121,4 @@ lin
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ! NPNom ++ sn.s ! c
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -14,4 +14,5 @@ concrete GrammarDut of Grammar =
|
||||
TextX,
|
||||
IdiomDut,
|
||||
StructuralDut,
|
||||
TenseX ;
|
||||
TenseX,
|
||||
NamesDut ;
|
||||
|
||||
7
src/dutch/NamesDut.gf
Normal file
7
src/dutch/NamesDut.gf
Normal file
@@ -0,0 +1,7 @@
|
||||
concrete NamesDut of Names = CatDut ** open Prelude, ResDut in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> noMerge ** {s = n.s ; a = agrP3 Sg ; isPron = False} ;
|
||||
lin FullName gn sn =
|
||||
noMerge ** {s = \\c => gn.s ! NPNom ++ sn.s ! c ; a = agrP3 Sg ; isPron = False} ;
|
||||
|
||||
}
|
||||
@@ -85,6 +85,8 @@ concrete NounDut of Noun = CatDut ** open ResDut, Prelude in {
|
||||
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ;
|
||||
|
||||
NumFloat n1 n2 = {s = \\g,c => n1.s ! NCard Utr Nom ++ BIND ++ "." ++ BIND ++ n2.s ! NCard g c; n = Pl } ;
|
||||
|
||||
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
OrdNumeral numeral = {s = let tiende : AForm => Str = \\af => numeral.s ! NOrd af
|
||||
in table {APred => tiende ! AAttr Utr ;
|
||||
@@ -199,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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -107,6 +107,11 @@ concrete CatEng of Cat = CommonX - [Pol,CAdv] ** open ResEng, Prelude in {
|
||||
N2 = {s : Number => Case => Str ; g : Gender} ** {c2 : Str} ;
|
||||
N3 = {s : Number => Case => Str ; g : Gender} ** {c2,c3 : Str} ;
|
||||
GN, SN, PN = {s : Case => Str ; g : Gender} ;
|
||||
LN = {s : Case => Str;
|
||||
p : Str; -- preposition "in Scandinavia", "on the Balkans"
|
||||
art : Bool; -- plain name "United States" vs "the United States"
|
||||
a : Agr;
|
||||
} ;
|
||||
|
||||
lindef
|
||||
SSlash = \s -> {s = s; c2 = ""} ;
|
||||
|
||||
@@ -474,13 +474,6 @@ lin CardCNCard card cn =
|
||||
lin theyFem_Pron = mkPron "they" "them" "their" "theirs" plural P3 feminine ;
|
||||
lin theyNeutr_Pron = mkPron "they" "them" "their" "theirs" plural P3 nonhuman ;
|
||||
|
||||
lin GivenName gn = gn ;
|
||||
lin MaleSurname, FemaleSurname = \sn -> sn ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ! Nom ++ sn.s ! c ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
lin AnaphPron np =
|
||||
case np.a of {
|
||||
AgP1 Sg => i_Pron ;
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarEng of Grammar =
|
||||
TextX - [Pol,PPos,PNeg,SC,CAdv],
|
||||
StructuralEng,
|
||||
IdiomEng,
|
||||
TenseX - [Pol,PPos,PNeg,SC,CAdv]
|
||||
TenseX - [Pol,PPos,PNeg,SC,CAdv],
|
||||
NamesEng
|
||||
** open ResEng, Prelude in {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
31
src/english/NamesEng.gf
Normal file
31
src/english/NamesEng.gf
Normal file
@@ -0,0 +1,31 @@
|
||||
concrete NamesEng of Names = CatEng ** open Prelude, ResEng in {
|
||||
|
||||
lin GivenName gn = {s = \\c => gn.s ! npcase2case c ; a = agrgP3 Sg gn.g} ;
|
||||
lin MaleSurname, FemaleSurname = \sn -> {s = \\c => sn.s ! npcase2case c ; a = agrgP3 Sg sn.g} ;
|
||||
lin FullName gn sn = {s = \\c => gn.s ! Nom ++ sn.s ! npcase2case c ; a = agrgP3 Sg gn.g} ;
|
||||
|
||||
lin UseLN n = {
|
||||
s = \\c => case n.art of {
|
||||
True => "the" ++ n.s ! npcase2case c ;
|
||||
False => n.s ! npcase2case c
|
||||
} ;
|
||||
a = n.a
|
||||
} ;
|
||||
|
||||
lin PlainLN n = {
|
||||
s = \\c => n.s ! npcase2case c ;
|
||||
a = n.a
|
||||
} ;
|
||||
|
||||
lin InLN n = {
|
||||
s = n.p ++ case n.art of {
|
||||
True => "the" ++ n.s ! Nom ;
|
||||
False => n.s ! Nom
|
||||
} ;
|
||||
} ;
|
||||
|
||||
lin AdjLN ap n = n ** {
|
||||
s = \\c => preOrPost ap.isPre (ap.s ! n.a) (n.s ! c) ;
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -77,6 +77,8 @@ concrete NounEng of Noun = CatEng ** open MorphoEng, ResEng, Prelude in {
|
||||
NumDigits n = {s,sp = \\_ => n.s ! NCard ; n = n.n} ;
|
||||
OrdDigits n = {s = n.s ! NOrd} ;
|
||||
|
||||
NumFloat n1 n2 = {s,sp = \\_,c => n1.s ! NCard ! Nom ++ BIND ++ "." ++ BIND ++ n2.s ! NCard ! c ; n = Pl} ;
|
||||
|
||||
NumNumeral numeral = {s,sp = \\d => numeral.s ! d ! NCard; n = numeral.n} ;
|
||||
OrdNumeral numeral = {s = numeral.s ! True ! NOrd} ;
|
||||
|
||||
@@ -174,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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -129,6 +129,24 @@ oper
|
||||
--
|
||||
-- Proper names, with a regular genitive, are formed from strings.
|
||||
|
||||
oper
|
||||
mkLN = overload {
|
||||
mkLN : Str -> LN = \s ->
|
||||
lin LN {s = table {Gen => s + "'s" ; _ => s} ;
|
||||
p = "in" ;
|
||||
art = False ;
|
||||
a = agrP3 Sg} ;
|
||||
|
||||
mkLN : Str -> Number -> LN = \s,n ->
|
||||
lin LN {s = table {Gen => s + "'s" ; _ => s} ;
|
||||
p = "in" ;
|
||||
art = False ;
|
||||
a = agrP3 n} ;
|
||||
} ;
|
||||
|
||||
defLN : LN -> LN = \n -> n ** {art = True} ;
|
||||
prepLN : LN -> Str -> LN = \n,s -> n ** {p = s} ;
|
||||
|
||||
mkPN : overload {
|
||||
|
||||
mkPN : Str -> PN ;
|
||||
@@ -598,6 +616,8 @@ mkVoc s = lin Voc (ss s) ;
|
||||
us_britishV : Str -> V = \s -> case s of {
|
||||
_ + ("el" | "al" | "ol") => regV s | mkV s (s + "s") (s + "led") (s + "led") (s + "ling") ;
|
||||
_ + "or" => regV s | regV (Predef.tk 2 s + "our") ;
|
||||
_ + "ise" => regV (Predef.tk 2 s + "ze") | regV s ;
|
||||
_ + "ize" => regV s | regV (Predef.tk 2 s + "se") ;
|
||||
_ => regV s
|
||||
} ;
|
||||
|
||||
@@ -777,6 +797,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.
|
||||
|
||||
@@ -91,7 +91,7 @@ concrete CatEst of Cat = CommonX ** open HjkEst, ResEst, Prelude in {
|
||||
c2,c3 : Compl ;
|
||||
isPre,isPre2 : Bool
|
||||
} ;
|
||||
GN, SN, PN = {s : Case => Str} ;
|
||||
GN, SN, LN, PN = {s : Case => Str} ;
|
||||
|
||||
linref
|
||||
VP = \vp -> linV vp.v ;
|
||||
|
||||
@@ -436,10 +436,4 @@ concrete ExtendEst of Extend =
|
||||
-- : VP -> Adv ; -- ilma raamatut nägemata
|
||||
WithoutVP vp = {s = "ilma" ++ infVPdefault vp InfMata} ;
|
||||
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ! Nom ++ sn.s ! c
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@ concrete GrammarEst of Grammar =
|
||||
TextX,
|
||||
IdiomEst,
|
||||
StructuralEst,
|
||||
TenseX
|
||||
TenseX,
|
||||
NamesEst
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = finnish ; lexer = text ;
|
||||
|
||||
14
src/estonian/NamesEst.gf
Normal file
14
src/estonian/NamesEst.gf
Normal file
@@ -0,0 +1,14 @@
|
||||
concrete NamesEst of Names = CatEst ** open ResEst, Prelude in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> emptyNP ** {
|
||||
s = \\c => n.s ! npform2case Sg c ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False
|
||||
} ;
|
||||
lin FullName gn sn = emptyNP ** {
|
||||
s = \\c => gn.s ! Nom ++ sn.s ! npform2case Sg c ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -120,6 +120,11 @@ concrete NounEst of Noun = CatEst ** open ResEst, HjkEst, MorphoEst, Prelude in
|
||||
} ;
|
||||
OrdDigits numeral = {s = \\nc => numeral.s ! NOrd nc} ;
|
||||
|
||||
NumFloat n1 n2 = {
|
||||
s = \\n,c => n1.s ! NCard (NCase Sg Nom) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard (NCase n c) ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
NumNumeral numeral = {
|
||||
s = \\n,c => numeral.s ! NCard (NCase n c) ;
|
||||
n = numeral.n
|
||||
@@ -214,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} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -95,7 +95,7 @@ concrete CatFin of Cat = CommonX ** open ResFin, StemFin, Prelude in {
|
||||
N = SNoun ;
|
||||
N2 = SNoun ** {c2 : Compl ; isPre : Bool ; postmod : Number => Str} ;
|
||||
N3 = SNoun ** {c2,c3 : Compl ; isPre,isPre2 : Bool} ;
|
||||
GN, SN, PN = SPN ;
|
||||
GN, SN, LN, PN = SPN ;
|
||||
|
||||
linref
|
||||
SSlash = \ss -> ss.s ++ ss.c2.s.p1 ;
|
||||
|
||||
@@ -241,10 +241,4 @@ lin UttAccNP np = {s = P.addNegation np.isNeg ++ np.s ! NPAcc} ;
|
||||
lin AdjAsCN ap = {s = ap.s ! True ; postmod = \\_ => ap.p ; h = Back} ; ---- Harmony just a guess
|
||||
lin AdjAsNP ap = MassNP (AdjAsCN ap) ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ! Nom ++ sn.s ! c
|
||||
} ;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarFin of Grammar =
|
||||
TextX,
|
||||
IdiomFin,
|
||||
StructuralFin,
|
||||
TenseX
|
||||
TenseX,
|
||||
NamesFin
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = finnish ; lexer = text ;
|
||||
|
||||
14
src/finnish/NamesFin.gf
Normal file
14
src/finnish/NamesFin.gf
Normal file
@@ -0,0 +1,14 @@
|
||||
concrete NamesFin of Names = CatFin ** open ResFin, StemFin, Prelude in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> {
|
||||
s = snoun2np Sg n ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False ; isNeg = False
|
||||
} ;
|
||||
lin FullName gn sn = {
|
||||
s = snoun2np Sg {s = \\c => gn.s ! Nom ++ sn.s ! c} ;
|
||||
a = agrP3 Sg ;
|
||||
isPron = False ; isNeg = False
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -143,6 +143,11 @@ concrete NounFin of Noun = CatFin ** open ResFin, MorphoFin, StemFin, Prelude in
|
||||
} ;
|
||||
OrdDigits numeral = {s = \\f => numeral.s ! NOrd f} ;
|
||||
|
||||
NumFloat n1 n2 = {
|
||||
s = \\n,c => n1.s ! NCard (NCase Sg Nom) ++ BIND ++ "." ++ BIND ++ n2.s ! NCard (NCase n c) ;
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
NumNumeral numeral = {
|
||||
s = \\n,c => numeral.s ! NCard (NCase n c) ;
|
||||
n = numeral.n
|
||||
@@ -291,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} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -338,4 +338,7 @@ instance DiffFre of DiffRomance - [
|
||||
|
||||
verbHyphen : Verb -> Str = \v -> v.s ! (VInfin True) ; --- kluge: use this field to store - or -t-
|
||||
|
||||
param
|
||||
HasArt = NoArt | UseArt | AlwaysArt ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -59,10 +59,4 @@ lin ApposNP np1 np2 = np1 ** { -- guessed by KA
|
||||
} ;
|
||||
} ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarFre of Grammar =
|
||||
TextX - [SC,Temp,Tense,Pol,PPos,PNeg],
|
||||
IdiomFre,
|
||||
StructuralFre,
|
||||
TenseFre
|
||||
TenseFre,
|
||||
NamesFre
|
||||
** {
|
||||
|
||||
flags startcat = Phr ;
|
||||
|
||||
36
src/french/NamesFre.gf
Normal file
36
src/french/NamesFre.gf
Normal file
@@ -0,0 +1,36 @@
|
||||
concrete NamesFre of Names = CatFre ** open Prelude, ResFre, CommonRomance, PhonoFre in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> pn2np n ;
|
||||
lin FullName gn sn = pn2np {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
lin PlainLN n = heavyNP {
|
||||
s = \\c => n.s;
|
||||
a = {g = n.g ; n = n.num ; p = P3}
|
||||
} ;
|
||||
|
||||
|
||||
lin UseLN n = heavyNP {
|
||||
s = \\c => case n.art of {
|
||||
AlwaysArt | UseArt => artDef True n.g n.num c ++ n.s ;
|
||||
_ => n.s
|
||||
} ;
|
||||
a = {g = n.g ; n = n.num ; p = P3}
|
||||
} ;
|
||||
|
||||
|
||||
lin InLN n = {
|
||||
s = n.p.s ++ case n.art of {
|
||||
AlwaysArt => artDef True n.g n.num n.p.c ++ n.s;
|
||||
_ => prepCase n.p.c ++ n.s
|
||||
} ;
|
||||
} ;
|
||||
|
||||
|
||||
lin AdjLN ap n = n ** {
|
||||
s = preOrPost ap.isPre (ap.s ! AF n.g n.num) n.s ;
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -132,6 +132,27 @@ oper
|
||||
-- Proper names need a string and a gender. If no gender is given, the
|
||||
-- feminine is used for strings ending with "e", the masculine for other strings.
|
||||
|
||||
mkLN = overload {
|
||||
mkLN : Str -> Gender -> LN = \s,g ->
|
||||
lin LN {s = s ;
|
||||
p = {s=""; c=CPrep P_a; isDir=True} ;
|
||||
art = NoArt ;
|
||||
g = g ;
|
||||
num = Sg} ;
|
||||
|
||||
mkLN : Str -> Gender -> Number -> LN = \s,g,num ->
|
||||
lin LN {s = s ;
|
||||
p = {s=""; c=CPrep P_a; isDir=True} ;
|
||||
art = NoArt ;
|
||||
g = g ;
|
||||
num = num} ;
|
||||
} ;
|
||||
|
||||
|
||||
defLN : LN -> LN = \n -> n ** {art = AlwaysArt} ;
|
||||
useDefLN : LN -> LN = \n -> n ** {art = UseArt} ;
|
||||
prepLN : LN -> Compl -> LN = \n,s -> n ** {p = s} ;
|
||||
|
||||
mkPN : overload {
|
||||
mkPN : Str -> PN ; -- feminine if ends with "e", otherwise masculine
|
||||
mkPN : Str -> Gender -> PN ; -- gender deviant from the simple rule
|
||||
@@ -553,5 +574,6 @@ oper
|
||||
_ => VFalse -- prend-il
|
||||
} ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -102,7 +102,7 @@ concrete CatGer of Cat =
|
||||
N3 = ResGer.Noun ** {c2,c3 : Preposition} ;
|
||||
GN = {s : Case => Str; g : Sex} ;
|
||||
SN = {s : Sex => Case => Str} ;
|
||||
PN = {s : Case => Str; g : Gender; n : Number} ;
|
||||
LN, PN = {s : Case => Str; g : Gender; n : Number} ;
|
||||
|
||||
-- tense with possibility to choose conjunctive forms
|
||||
|
||||
|
||||
@@ -142,16 +142,6 @@ lin
|
||||
n = Pl
|
||||
} ;
|
||||
|
||||
lin GivenName = \n -> { s = n.s; g = sex2gender n.g; n = Sg } ;
|
||||
lin MaleSurname = \n -> { s = n.s ! Male ; g = Masc; n = Sg } ;
|
||||
lin FemaleSurname = \n -> { s = n.s ! Female ; g = Fem; n = Sg } ;
|
||||
lin PlSurname = \n -> { s = n.s ! Male ; g = Masc; n = Pl } ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ! Nom ++ sn.s ! gn.g ! c ;
|
||||
g = sex2gender gn.g ;
|
||||
n = Sg
|
||||
} ;
|
||||
|
||||
lin PassVPSlash vp =
|
||||
insertObj (\\_ => (PastPartAP vp).s ! APred) (predV werdenPass) **
|
||||
{ c1 = subjPrep vp.c2 } ;
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarGer of Grammar =
|
||||
TextX - [Tense,Temp],
|
||||
IdiomGer,
|
||||
StructuralGer,
|
||||
TenseGer
|
||||
TenseGer,
|
||||
NamesGer
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
38
src/german/NamesGer.gf
Normal file
38
src/german/NamesGer.gf
Normal file
@@ -0,0 +1,38 @@
|
||||
concrete NamesGer of Names = CatGer ** open ResGer in {
|
||||
|
||||
lin GivenName gn = {
|
||||
s = \\c => usePrepC c (\k -> gn.s ! k) ;
|
||||
a = agrgP3 (sex2gender gn.g) Sg ;
|
||||
w = WLight ;
|
||||
rc, ext = []
|
||||
} ;
|
||||
|
||||
lin MaleSurname sn = {
|
||||
s = \\c => usePrepC c (\k -> sn.s ! Male ! k) ;
|
||||
a = agrgP3 Masc Sg ;
|
||||
w = WLight ;
|
||||
rc, ext = []
|
||||
} ;
|
||||
|
||||
lin FemaleSurname sn = {
|
||||
s = \\c => usePrepC c (\k -> sn.s ! Female ! k) ;
|
||||
a = agrgP3 Fem Sg ;
|
||||
w = WLight ;
|
||||
rc, ext = []
|
||||
} ;
|
||||
|
||||
lin PlSurname sn = {
|
||||
s = \\c => usePrepC c (\k -> sn.s ! Male ! k) ;
|
||||
a = agrgP3 Masc Pl ;
|
||||
w = WLight ;
|
||||
rc, ext = []
|
||||
} ;
|
||||
|
||||
lin FullName gn sn = {
|
||||
s = \\c => usePrepC c (\k -> gn.s ! Nom ++ sn.s ! gn.g ! k) ;
|
||||
a = agrgP3 (sex2gender gn.g) Sg ;
|
||||
w = WLight ;
|
||||
rc, ext = []
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -122,6 +122,8 @@ concrete NounGer of Noun = CatGer ** open ResGer, MorphoGer, Prelude in {
|
||||
NumDigits numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
OrdDigits numeral = {s = \\af => numeral.s ! NOrd af} ;
|
||||
|
||||
NumFloat dig1 dig2 = {s = \\g,c => dig1.s ! invNum ++ BIND ++ "." ++ BIND ++ dig2.s ! NCard g c ; n = Pl } ;
|
||||
|
||||
NumNumeral numeral = {s = \\g,c => numeral.s ! NCard g c; n = numeral.n } ;
|
||||
OrdNumeral numeral = {s = \\af => numeral.s ! NOrd af} ;
|
||||
|
||||
@@ -238,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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -251,4 +251,7 @@ instance DiffIta of DiffRomance - [contractInf] = open CommonRomance, PhonoIta,
|
||||
|
||||
polNegDirSubj = RPos ;
|
||||
|
||||
param
|
||||
HasArt = NoArt | UseArt ;
|
||||
|
||||
}
|
||||
|
||||
@@ -16,12 +16,6 @@ concrete ExtendIta of Extend = CatIta ** ExtendRomanceFunctor -
|
||||
ParadigmsIta in {
|
||||
-- put your own definitions here
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
|
||||
lin PassVPSlash vps = passVPSlash vps [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarIta of Grammar =
|
||||
TextX - [SC,Temp,Tense,Pol,PPos,PNeg,TPres,TPast,TFut,TCond],
|
||||
IdiomIta,
|
||||
StructuralIta,
|
||||
TenseIta
|
||||
TenseIta,
|
||||
NamesIta
|
||||
|
||||
** {
|
||||
|
||||
|
||||
9
src/italian/NamesIta.gf
Normal file
9
src/italian/NamesIta.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
concrete NamesIta of Names = CatIta ** open ResIta in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> pn2np n ;
|
||||
lin FullName gn sn = pn2np {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -558,4 +558,6 @@ oper
|
||||
mk2V2 : V -> Prep -> V2 ;
|
||||
dirV2 : V -> V2 ;
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -115,7 +115,7 @@ concrete CatKor of Cat = CommonX ** open ResKor, Prelude in {
|
||||
N = ResKor.Noun ;
|
||||
N2 = ResKor.Noun2 ;
|
||||
N3 = ResKor.Noun3 ;
|
||||
GN, SN, PN = ResKor.NounPhrase ;
|
||||
GN, SN, LN, PN = ResKor.NounPhrase ;
|
||||
|
||||
linref
|
||||
V, V2, V3 = linVerb ;
|
||||
|
||||
@@ -9,10 +9,4 @@ concrete ExtendKor of Extend = CatKor
|
||||
-- : NP -> NP -> NP
|
||||
ApposNP np1 np2 = np1 ** {s = \\nf => np1.s ! nf ++ np2.s ! nf} ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = \\nf => gn.s ! nf ++ sn.s ! nf ;
|
||||
p = gn.p
|
||||
} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -12,7 +12,8 @@ concrete GrammarKor of Grammar =
|
||||
TextX,
|
||||
StructuralKor,
|
||||
IdiomKor,
|
||||
TenseX
|
||||
TenseX,
|
||||
NamesKor
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
9
src/korean/NamesKor.gf
Normal file
9
src/korean/NamesKor.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
concrete NamesKor of Names = CatKor ** open ResKor in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = \\nf => gn.s ! nf ++ sn.s ! nf ;
|
||||
p = gn.p
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -107,6 +107,12 @@ concrete NounKor of Noun = CatKor ** open ResKor, Prelude in {
|
||||
numtype = IsDig
|
||||
} ;
|
||||
|
||||
NumFloat dig1 dig2 = baseNum ** {
|
||||
s = \\_,_ => dig1.s ! NCard ++ BIND ++ "." ++ BIND ++ dig2.s ! NCard ;
|
||||
n = Pl ;
|
||||
numtype = IsDig
|
||||
} ;
|
||||
|
||||
-- : Numeral -> Card ;
|
||||
NumNumeral num = num ;
|
||||
|
||||
|
||||
@@ -198,4 +198,6 @@ oper
|
||||
} ;
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
concrete ConstructionMay of Construction = CatMay ** open ParadigmsMay in {
|
||||
concrete ConstructionMay of Construction = CatMay ** open ParadigmsMay, (L=LexiconMay), SyntaxMay in {
|
||||
|
||||
lincat
|
||||
Timeunit = N ;
|
||||
@@ -6,9 +6,16 @@ lincat
|
||||
Monthday = NP ;
|
||||
Month = N ;
|
||||
Year = NP ;
|
||||
{-
|
||||
|
||||
lin
|
||||
|
||||
has_age_VP card = mkVP umur_V2 (mkNP <lin Card card : Card> L.year_N) ;
|
||||
|
||||
oper
|
||||
umur_V2 : V2 = mkV2 (mkV "umur") noPrep ;
|
||||
|
||||
{-
|
||||
|
||||
timeunitAdv n time =
|
||||
let n_card : Card = n ;
|
||||
n_hours_NP : NP = mkNP n_card time ;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
resource MissingMay = open GrammarMay, Prelude in {
|
||||
oper AdAP : AdA -> AP -> AP = notYet "AdAP" ;
|
||||
oper AdAdv : AdA -> Adv -> Adv = notYet "AdAdv" ;
|
||||
oper AdNum : AdN -> Card -> Card = notYet "AdNum" ;
|
||||
oper AdVVP : AdV -> VP -> VP = notYet "AdVVP" ;
|
||||
oper AdVVPSlash : AdV -> VPSlash -> VPSlash = notYet "AdVVPSlash" ;
|
||||
oper AddAdvQVP : QVP -> IAdv -> QVP = notYet "AddAdvQVP" ;
|
||||
@@ -54,7 +53,6 @@ oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||
oper ImpP3 : NP -> VP -> Utt = notYet "ImpP3" ;
|
||||
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
|
||||
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
|
||||
oper OrdNumeralSuperl : Numeral -> A -> Ord = notYet "OrdNumeralSuperl" ;
|
||||
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
|
||||
@@ -113,14 +111,11 @@ oper art_N : N = notYet "art_N" ;
|
||||
oper as_CAdv : CAdv = notYet "as_CAdv" ;
|
||||
oper ashes_N : N = notYet "ashes_N" ;
|
||||
oper ask_V2Q : V2Q = notYet "ask_V2Q" ;
|
||||
oper at_least_AdN : AdN = notYet "at_least_AdN" ;
|
||||
oper at_most_AdN : AdN = notYet "at_most_AdN" ;
|
||||
oper baby_N : N = notYet "baby_N" ;
|
||||
oper back_N : N = notYet "back_N" ;
|
||||
oper bad_A : A = notYet "bad_A" ;
|
||||
oper bank_N : N = notYet "bank_N" ;
|
||||
oper bark_N : N = notYet "bark_N" ;
|
||||
oper because_Subj : Subj = notYet "because_Subj" ;
|
||||
oper become_VA : VA = notYet "become_VA" ;
|
||||
oper beer_N : N = notYet "beer_N" ;
|
||||
oper before_Prep : Prep = notYet "before_Prep" ;
|
||||
|
||||
@@ -104,13 +104,13 @@ concrete NounMay of Noun = CatMay ** open ResMay, Prelude in {
|
||||
-- : Numeral -> Card ;
|
||||
NumNumeral num = num ;
|
||||
|
||||
{-
|
||||
|
||||
-- : AdN -> Card -> Card ;
|
||||
AdNum adn card = card ** { s = adn.s ++ card.s } ;
|
||||
|
||||
-- : Digits -> Ord ;
|
||||
OrdDigits digs = digs ** { s = digs.s ! NOrd } ;
|
||||
-}
|
||||
|
||||
-- : Numeral -> Ord ;
|
||||
OrdNumeral num = {
|
||||
s = num.ord
|
||||
|
||||
@@ -3,11 +3,11 @@ concrete StructuralMay of Structural = CatMay **
|
||||
|
||||
-------
|
||||
-- Ad*
|
||||
lin at_least_AdN = ss "sekurangnya" ;
|
||||
lin at_most_AdN = ss "paling tua" ;
|
||||
{-
|
||||
lin almost_AdA = mkAdA "" ;
|
||||
lin almost_AdN = ss "" ;
|
||||
lin at_least_AdN = ss "" ;
|
||||
lin at_most_AdN = ss "" ;
|
||||
lin so_AdA = ss "" ;
|
||||
lin too_AdA = ss "" ;
|
||||
lin very_AdA = mkAdA "" ;
|
||||
@@ -154,7 +154,7 @@ lin whoSg_IP = mkIP "siapa";
|
||||
-- Subj
|
||||
|
||||
-- lin although_Subj =
|
||||
-- lin because_Subj =
|
||||
lin because_Subj = ss "kerana" ;
|
||||
lin if_Subj = ss "sekiranya" ;
|
||||
lin that_Subj = ss "yang" ;
|
||||
lin when_Subj = ss "kalau" ;
|
||||
|
||||
@@ -118,7 +118,7 @@ concrete CatMlt of Cat = CommonX - [Adv] ** open ResMlt, Prelude in {
|
||||
N = Noun ;
|
||||
N2 = Noun ** {c2 : Compl} ;
|
||||
N3 = Noun ** {c2, c3 : Compl} ;
|
||||
GN, SN, PN = ProperNoun ;
|
||||
GN, SN, LN, PN = ProperNoun ;
|
||||
|
||||
-- Overridden from CommonX
|
||||
|
||||
|
||||
@@ -24,10 +24,4 @@ concrete ExtraMlt of ExtraMltAbs = CatMlt **
|
||||
a = p.a ;
|
||||
} ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ;
|
||||
a = gn.a
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -20,7 +20,8 @@ concrete GrammarMlt of Grammar =
|
||||
TextX - [Adv],
|
||||
StructuralMlt,
|
||||
IdiomMlt,
|
||||
TenseX - [Adv]
|
||||
TenseX - [Adv],
|
||||
NamesMlt
|
||||
** {
|
||||
|
||||
flags coding=utf8 ;
|
||||
|
||||
16
src/maltese/NamesMlt.gf
Normal file
16
src/maltese/NamesMlt.gf
Normal file
@@ -0,0 +1,16 @@
|
||||
concrete NamesMlt of Names = CatMlt ** open ResMlt, Prelude in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> {
|
||||
s = \\c => n.s ;
|
||||
a = n.a ;
|
||||
isPron = False ;
|
||||
isDefn = False
|
||||
} ;
|
||||
lin FullName gn sn = {
|
||||
s = \\c => gn.s ++ sn.s ;
|
||||
a = gn.a ;
|
||||
isPron = False ;
|
||||
isDefn = False
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -189,6 +189,10 @@ concrete NounMlt of Noun = CatMlt ** open ResMlt, Prelude, Maybe in {
|
||||
-- 51
|
||||
NumDigits d = {s = d.s ; n = d.n} ;
|
||||
|
||||
-- Digits -> Digits -> Card
|
||||
-- 3.14
|
||||
NumFloat d1 d2 = {s = \\c => d1.s ! NumNom ++ BIND ++ "." ++ BIND ++ d2.s ! c ; n = d1.n} ;
|
||||
|
||||
-- Digits -> Ord
|
||||
-- 51st
|
||||
OrdDigits d = {s = d.s} ;
|
||||
|
||||
@@ -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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ concrete CatPol of Cat = CommonX - [CAdv] ** open ResPol, Prelude, (R = ParamX)
|
||||
|
||||
N3 = Noun ** { c1, c2 : Complement } ;
|
||||
|
||||
GN, SN, PN = NounPhrase;
|
||||
GN, SN, LN, PN = NounPhrase;
|
||||
|
||||
CAdv = {s,p,sn,pn : Str} ;
|
||||
|
||||
|
||||
@@ -40,13 +40,4 @@ oper
|
||||
-- KA: PassVPSlash is derived from PassV2. Objects might be ignored
|
||||
lin PassVPSlash vps = setImienne vps True;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
nom = gn.nom ++ sn.nom ;
|
||||
voc = gn.nom ++ sn.voc ;
|
||||
dep = \\c => gn.nom ++ sn.dep ! c ;
|
||||
gn = gn.gn ;
|
||||
p = gn.p
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ concrete GrammarPol of Grammar =
|
||||
PhrasePol,
|
||||
TenseX - [CAdv],
|
||||
TextX - [CAdv],
|
||||
NamesPol,
|
||||
StructuralPol,
|
||||
IdiomPol
|
||||
** { flags startcat = Phr ; unlexer = text ; lexer = text ;} ;
|
||||
|
||||
12
src/polish/NamesPol.gf
Normal file
12
src/polish/NamesPol.gf
Normal file
@@ -0,0 +1,12 @@
|
||||
concrete NamesPol of Names = CatPol ** {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
nom = gn.nom ++ sn.nom ;
|
||||
voc = gn.nom ++ sn.voc ;
|
||||
dep = \\c => gn.nom ++ sn.dep ! c ;
|
||||
gn = gn.gn ;
|
||||
p = gn.p
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -163,6 +163,8 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol, Mor
|
||||
|
||||
-- NumDigits : Digits -> Card ; -- 51
|
||||
NumDigits n = { s=\\_,_ => n.s; a=n.a; n=n.n };
|
||||
|
||||
NumFloat n1 n2 = { s=\\_,_ => n1.s ++ BIND ++ "." ++ BIND ++ n2.s; a=n1.a; n=Pl };
|
||||
|
||||
-- NumCard : Card -> Num ;
|
||||
NumCard c = c ** { hasCard = True };
|
||||
@@ -208,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} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -291,4 +291,7 @@ instance DiffPor of DiffRomance - [iAdvQuestionInv,chooseTA,otherInv,partAgr,sta
|
||||
-- make a verb of type haver
|
||||
verboV v = verbBesch v ** {vtyp = VTer ; p = [] } ;
|
||||
|
||||
param
|
||||
HasArt = NoArt | UseArt ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -116,10 +116,4 @@ concrete ExtendPor of Extend = CatPor ** ExtendRomanceFunctor -
|
||||
youPolPlFem_Pron = pronAgr youPolPl_Pron Fem Pl P2 ;
|
||||
theyFem_Pron = mkPronFrom S.they_Pron "elas" "as" "lhes" "elas" Fem Pl P3 ;
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> n ;
|
||||
lin FullName gn sn = {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -14,7 +14,8 @@ concrete GrammarPor of Grammar =
|
||||
TextPor - [SC,Temp,Tense,Pol,PPos,PNeg], -- special punctuation
|
||||
IdiomPor,
|
||||
StructuralPor,
|
||||
TensePor
|
||||
TensePor,
|
||||
NamesPor
|
||||
|
||||
** {
|
||||
|
||||
|
||||
9
src/portuguese/NamesPor.gf
Normal file
9
src/portuguese/NamesPor.gf
Normal file
@@ -0,0 +1,9 @@
|
||||
concrete NamesPor of Names = CatPor ** open ResPor in {
|
||||
|
||||
lin GivenName, MaleSurname, FemaleSurname = \n -> pn2np n ;
|
||||
lin FullName gn sn = pn2np {
|
||||
s = gn.s ++ sn.s ;
|
||||
g = gn.g
|
||||
} ;
|
||||
|
||||
}
|
||||
@@ -564,5 +564,7 @@ oper
|
||||
|
||||
reflVerboV : Verbum -> V = \ve -> reflV (lin V (verboV ve)) ; --%
|
||||
|
||||
mkMU : Str -> MU = \s -> lin MU {s=s; isPre=False} ;
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
@@ -111,6 +111,13 @@ incomplete concrete CatRomance of Cat = CommonX - [SC,Pol]
|
||||
N2 = Noun ** {c2 : Compl} ;
|
||||
N3 = Noun ** {c2,c3 : Compl} ;
|
||||
GN, SN, PN = {s : Str ; g : Gender} ;
|
||||
|
||||
lincat LN = {s : Str;
|
||||
p : Compl;
|
||||
art : HasArt;
|
||||
g : Gender;
|
||||
num : Number;
|
||||
} ;
|
||||
|
||||
-- tense augmented with passé simple
|
||||
lincat
|
||||
|
||||
@@ -218,4 +218,6 @@ oper
|
||||
stare_V : Verb ;
|
||||
stare_V = essere_V ;
|
||||
|
||||
param HasArt ;
|
||||
|
||||
} ;
|
||||
|
||||
@@ -96,6 +96,8 @@ incomplete concrete NounRomance of Noun =
|
||||
NumDigits nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ;
|
||||
OrdDigits nu = {s = \\a => nu.s ! NOrd a.g a.n} ;
|
||||
|
||||
NumFloat n1 n2 = {s = \\g => n1.s ! NCard Masc ++ BIND ++ "." ++ BIND ++ n2.s ! NCard g ; n = Pl} ;
|
||||
|
||||
NumNumeral nu = {s = \\g => nu.s ! NCard g ; n = nu.n} ;
|
||||
OrdNumeral nu = {s = \\a => nu.s ! NOrd a.g a.n} ;
|
||||
|
||||
@@ -205,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
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user