forked from GitHub/gf-rgl
Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl
This commit is contained in:
@@ -22,7 +22,7 @@ Ice,Icelandic,icelandic,,,,,,n,,y
|
||||
Ina,Interlingua,interlingua,,,y,,n,n,,n
|
||||
Ita,Italian,italian,Romance,,y,,,,y,y
|
||||
Jpn,Japanese,japanese,,,,,,,,y
|
||||
Lat,Latin,latin,,,y,,n,n,,n
|
||||
Lat,Latin,latin,,,,,y,n,n,y
|
||||
Lav,Latvian,latvian,,,,,,,y,y
|
||||
Mlt,Maltese,maltese,,,,,,,,y
|
||||
Mon,Mongolian,mongolian,,,,,,n,,y
|
||||
|
||||
|
@@ -30,7 +30,7 @@ abstract Extend = Cat ** {
|
||||
StrandQuestSlash : IP -> ClSlash -> QCl ; -- whom does John live with
|
||||
StrandRelSlash : RP -> ClSlash -> RCl ; -- that he lives in
|
||||
EmptyRelSlash : ClSlash -> RCl ; -- he lives in
|
||||
|
||||
|
||||
|
||||
-- $VP$ conjunction, separate categories for finite and infinitive forms (VPS and VPI, respectively)
|
||||
-- covering both in the same category leads to spurious VPI parses because VPS depends on many more tenses
|
||||
@@ -45,7 +45,7 @@ abstract Extend = Cat ** {
|
||||
MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept
|
||||
ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep
|
||||
PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep]
|
||||
|
||||
|
||||
MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol)
|
||||
ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk
|
||||
ComplVPIVV : VV -> VPI -> VP ; -- must sleep and walk
|
||||
@@ -59,17 +59,17 @@ abstract Extend = Cat ** {
|
||||
[VPI2] {2} ; -- to love, to hate
|
||||
|
||||
fun
|
||||
MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
|
||||
MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
|
||||
ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
|
||||
ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person
|
||||
|
||||
MkVPI2 : VPSlash -> VPI2 ; -- to love
|
||||
MkVPI2 : VPSlash -> VPI2 ; -- to love
|
||||
ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate
|
||||
ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person
|
||||
|
||||
fun
|
||||
ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired"
|
||||
|
||||
|
||||
ICompAP : AP -> IComp ; -- "how old"
|
||||
IAdvAdv : Adv -> IAdv ; -- "how often"
|
||||
|
||||
@@ -88,15 +88,15 @@ abstract Extend = Cat ** {
|
||||
-- participle constructions
|
||||
PresPartAP : VP -> AP ; -- (the man) looking at Mary
|
||||
EmbedPresPart : VP -> SC ; -- looking at Mary (is fun)
|
||||
|
||||
|
||||
PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
||||
PastPartAgentAP : VPSlash -> NP -> AP ; -- (opportunity) lost by the company
|
||||
|
||||
|
||||
-- this is a generalization of Verb.PassV2 and should replace it in the future.
|
||||
|
||||
PassVPSlash : VPSlash -> VP ; -- be forced to sleep
|
||||
|
||||
-- the form with an agent may result in a different linearization
|
||||
-- the form with an agent may result in a different linearization
|
||||
-- from an adverbial modification by an agent phrase.
|
||||
|
||||
PassAgentVPSlash : VPSlash -> NP -> VP ; -- be begged by her to go
|
||||
@@ -115,6 +115,9 @@ abstract Extend = Cat ** {
|
||||
ExistMassCN : CN -> Cl ; -- there is beer / there is no beer
|
||||
ExistPluralCN : CN -> Cl ; -- there are trees / there are no trees
|
||||
|
||||
-- generalisation of existential, with adverb as a parameter
|
||||
AdvIsNP : Adv -> NP -> Cl ; -- here is the tree / here are the trees
|
||||
|
||||
-- infinitive for purpose AR 21/8/2013
|
||||
|
||||
PurposeVP : VP -> Adv ; -- to become happy
|
||||
@@ -148,8 +151,8 @@ abstract Extend = Cat ** {
|
||||
cat
|
||||
RNP ; -- reflexive noun phrase, e.g. "my family and myself"
|
||||
RNPList ; -- list of reflexives to be coordinated, e.g. "my family, myself, everyone"
|
||||
|
||||
-- Notice that it is enough for one NP in RNPList to be RNP.
|
||||
|
||||
-- Notice that it is enough for one NP in RNPList to be RNP.
|
||||
|
||||
fun
|
||||
ReflRNP : VPSlash -> RNP -> VP ; -- love my family and myself
|
||||
@@ -161,7 +164,7 @@ abstract Extend = Cat ** {
|
||||
|
||||
ConjRNP : Conj -> RNPList -> RNP ; -- my family, John and myself
|
||||
|
||||
Base_rr_RNP : RNP -> RNP -> RNPList ; -- my family, myself
|
||||
Base_rr_RNP : RNP -> RNP -> RNPList ; -- my family, myself
|
||||
Base_nr_RNP : NP -> RNP -> RNPList ; -- John, myself
|
||||
Base_rn_RNP : RNP -> NP -> RNPList ; -- myself, John
|
||||
Cons_rr_RNP : RNP -> RNPList -> RNPList ; -- my family, myself, John
|
||||
@@ -181,8 +184,8 @@ abstract Extend = Cat ** {
|
||||
GerundNP : VP -> NP ; -- publishing the document (by nature definite)
|
||||
GerundAdv : VP -> Adv ; -- publishing the document (prepositionless adverb)
|
||||
|
||||
WithoutVP : VP -> Adv ; -- without publishing the document
|
||||
ByVP : VP -> Adv ; -- by publishing the document
|
||||
WithoutVP : VP -> Adv ; -- without publishing the document
|
||||
ByVP : VP -> Adv ; -- by publishing the document
|
||||
InOrderToVP : VP -> Adv ; -- (in order) to publish the document
|
||||
|
||||
ApposNP : NP -> NP -> NP ; -- Mr Macron, the president of France,
|
||||
@@ -207,7 +210,7 @@ abstract Extend = Cat ** {
|
||||
DetNPFem : Det -> NP ;
|
||||
|
||||
UseComp_estar : Comp -> VP ; -- (Cat, Spa, Por) "está cheio" instead of "é cheio"
|
||||
|
||||
|
||||
iFem_Pron : Pron ; -- I (Fem)
|
||||
youFem_Pron : Pron ; -- you (Fem)
|
||||
weFem_Pron : Pron ; -- we (Fem)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
--# -path=.:../latin:../common:../abstract:../prelude
|
||||
|
||||
resource TryLat = SyntaxLat, LexiconLat, ParadigmsLat - [mkAdv,mkAdN,mkOrd] ;
|
||||
resource TryLat = SyntaxLat, LexiconLat, ParadigmsLat - [mkAdv,mkAdN,mkOrd,mkNum] ;
|
||||
|
||||
@@ -3,5 +3,6 @@
|
||||
concrete AllCat of AllCatAbs =
|
||||
LangCat,
|
||||
IrregCat,
|
||||
ExtraCat
|
||||
** {} ;
|
||||
ExtraCat
|
||||
** open ExtendCat
|
||||
in {} ;
|
||||
|
||||
19
src/catalan/ExtendCat.gf
Normal file
19
src/catalan/ExtendCat.gf
Normal file
@@ -0,0 +1,19 @@
|
||||
--# -path=alltenses:../common:../abstract:../romance
|
||||
concrete ExtendCat of Extend = CatCat ** ExtendRomanceFunctor-- -
|
||||
-- [
|
||||
-- ]
|
||||
-- don't forget to put the names of your own
|
||||
-- definitions here
|
||||
with
|
||||
(Grammar = GrammarCat), (Syntax = SyntaxCat), (ResRomance = ResCat) **
|
||||
open
|
||||
GrammarCat,
|
||||
ResCat,
|
||||
MorphoCat,
|
||||
Coordination,
|
||||
Prelude,
|
||||
ParadigmsCat in {
|
||||
-- put your own definitions here
|
||||
|
||||
|
||||
} ;
|
||||
@@ -29,10 +29,10 @@ lin
|
||||
MkVPI vp = variants {} ; -- Temp -> Pol -> VP -> VPI ; -- to sleep / hasn't slept
|
||||
ConjVPI = variants {} ; -- Conj -> [VPI] -> VPI ; -- has walked and won't sleep
|
||||
ComplVPIVV = variants {} ; -- VV -> VPI -> VP ; -- want to sleep and to walk
|
||||
MkVPS2 = variants {} ; -- : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
|
||||
MkVPS2 = variants {} ; -- : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
|
||||
ConjVPS2 = variants {} ; -- : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
|
||||
ComplVPS2 = variants {} ; -- : VPS2 -> NP -> VPS ; -- has loved and now hates that person
|
||||
MkVPI2 = variants {} ; -- : Ant -> Pol -> VPSlash -> VPI2 ; -- to have loved
|
||||
MkVPI2 = variants {} ; -- : Ant -> Pol -> VPSlash -> VPI2 ; -- to have loved
|
||||
ConjVPI2 = variants {} ; -- : Conj -> [VPI2] -> VPI2 ; -- to love and have hated
|
||||
ComplVPI2 = variants {} ; -- : VPI2 -> NP -> VPI ; -- to love and hate that person
|
||||
ProDrop pro = pro ; -- am tired ; DEFAULT I am tired (no pro drop)
|
||||
@@ -54,6 +54,7 @@ lin
|
||||
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||
ExistMassCN cn = ExistNP (MassNP cn) ;
|
||||
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||
AdvIsNP adv np = PredVP np (UseComp (CompAdv adv)) ; -- here is the tree / here are the trees
|
||||
PurposeVP = variants {} ; -- VP -> Adv ; -- to become happy
|
||||
ComplBareVS = ComplVS ; -- VS -> S -> VP ; -- say she runs ; DEFAULT say that she runs
|
||||
SlashBareV2S = SlashV2S ; -- V2S -> S -> VPSlash ; -- answer (to him) it is good ; DEFAULT answer that it is good
|
||||
|
||||
@@ -11,7 +11,7 @@ resource ParamX = open Prelude in {
|
||||
Simul
|
||||
| Anter --# notpresent
|
||||
;
|
||||
Tense =
|
||||
Tense =
|
||||
Pres
|
||||
| Past --# notpresent
|
||||
| Fut --# notpresent
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
concrete ExtendEng of Extend =
|
||||
CatEng ** ExtendFunctor -
|
||||
[
|
||||
VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList,
|
||||
AdAdV, AdjAsCN, AdjAsNP, ApposNP,
|
||||
VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList,
|
||||
AdAdV, AdjAsCN, AdjAsNP, ApposNP, AdvIsNP,
|
||||
BaseVPS, ConsVPS, BaseVPI, ConsVPI, BaseVPS2, ConsVPS2, BaseVPI2, ConsVPI2,
|
||||
MkVPS, ConjVPS, PredVPS, MkVPI, ConjVPI, ComplVPIVV,
|
||||
MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2,
|
||||
@@ -33,23 +33,23 @@ concrete ExtendEng of Extend =
|
||||
GenNP np = {s = \\_,_ => np.s ! npGen ; sp = \\_,_,_,_ => np.s ! npGen ; isDef = True} ;
|
||||
GenIP ip = {s = \\_ => ip.s ! NCase Gen} ;
|
||||
GenRP nu cn = {
|
||||
s = \\c => "whose" ++ nu.s ! False ! Nom ++
|
||||
s = \\c => "whose" ++ nu.s ! False ! Nom ++
|
||||
case c of {
|
||||
RC _ (NCase Gen) => cn.s ! nu.n ! Gen ;
|
||||
_ => cn.s ! nu.n ! Nom
|
||||
} ;
|
||||
a = RAg (agrP3 nu.n)
|
||||
} ;
|
||||
|
||||
|
||||
GenModNP num np cn = DetCN (DetQuant (GenNP (lin NP np)) num) cn ;
|
||||
GenModIP num ip cn = IdetCN (IdetQuant (GenIP (lin IP ip)) num) cn ;
|
||||
|
||||
StrandQuestSlash ip slash =
|
||||
{s = \\t,a,b,q =>
|
||||
StrandQuestSlash ip slash =
|
||||
{s = \\t,a,b,q =>
|
||||
(mkQuestion (ss (ip.s ! NPAcc)) slash).s ! t ! a ! b ! q ++ slash.c2
|
||||
};
|
||||
StrandRelSlash rp slash = {
|
||||
s = \\t,a,p,ag =>
|
||||
s = \\t,a,p,ag =>
|
||||
rp.s ! RC (fromAgr ag).g NPAcc ++ slash.s ! t ! a ! p ! oDir ++ slash.c2 ;
|
||||
c = NPAcc
|
||||
} ;
|
||||
@@ -70,14 +70,14 @@ concrete ExtendEng of Extend =
|
||||
|
||||
lincat
|
||||
VPS = {s : Agr => Str} ;
|
||||
[VPS] = {s1,s2 : Agr => Str} ;
|
||||
[VPS] = {s1,s2 : Agr => Str} ;
|
||||
VPI = {s : VVType => Agr => Str} ;
|
||||
[VPI] = {s1,s2 : VVType => Agr => Str} ;
|
||||
|
||||
lin
|
||||
BaseVPS = twoTable Agr ;
|
||||
ConsVPS = consrTable Agr comma ;
|
||||
|
||||
|
||||
BaseVPI = twoTable2 VVType Agr ;
|
||||
ConsVPI = consrTable2 VVType Agr comma ;
|
||||
|
||||
@@ -85,7 +85,7 @@ concrete ExtendEng of Extend =
|
||||
ConjVPS c xs = conjunctDistrTable Agr c xs ;
|
||||
PredVPS np vps = {s = np.s ! npNom ++ vps.s ! np.a} ;
|
||||
|
||||
|
||||
|
||||
MkVPI vp = mkVPI (lin VP vp) ;
|
||||
ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ;
|
||||
ComplVPIVV vv vpi = insertObj (\\a => vpi.s ! vv.typ ! a) (predVV vv) ;
|
||||
@@ -94,8 +94,8 @@ concrete ExtendEng of Extend =
|
||||
-------- two-place verb conjunction
|
||||
|
||||
lincat
|
||||
VPS2 = {s : Agr => Str ; c2 : Str} ;
|
||||
[VPS2] = {s1,s2 : Agr => Str ; c2 : Str} ;
|
||||
VPS2 = {s : Agr => Str ; c2 : Str} ;
|
||||
[VPS2] = {s1,s2 : Agr => Str ; c2 : Str} ;
|
||||
VPI2 = {s : VVType => Agr => Str ; c2 : Str} ;
|
||||
[VPI2] = {s1,s2 : VVType => Agr => Str ; c2 : Str} ;
|
||||
|
||||
@@ -105,7 +105,7 @@ concrete ExtendEng of Extend =
|
||||
|
||||
BaseVPS2 x y = twoTable Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb
|
||||
ConsVPS2 x xs = consrTable Agr comma x xs ** {c2 = xs.c2} ;
|
||||
|
||||
|
||||
BaseVPI2 x y = twoTable2 VVType Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb
|
||||
ConsVPI2 x xs = consrTable2 VVType Agr comma x xs ** {c2 = xs.c2} ;
|
||||
|
||||
@@ -121,15 +121,15 @@ concrete ExtendEng of Extend =
|
||||
s = \\t,a => vpi2.s ! t ! a ++ vpi2.c2 ++ np.s ! NPAcc
|
||||
} ;
|
||||
|
||||
oper
|
||||
oper
|
||||
mkVPS : Temp -> Pol -> VP -> VPS = \t,p,vp -> lin VPS {
|
||||
s = \\a =>
|
||||
let
|
||||
s = \\a =>
|
||||
let
|
||||
verb = vp.s ! t.t ! t.a ! p.p ! oDir ! a ;
|
||||
verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ;
|
||||
in t.s ++ p.s ++ vp.ad ! a ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext
|
||||
} ;
|
||||
|
||||
|
||||
mkVPI : VP -> VPI = \vp -> lin VPI {
|
||||
s = table {
|
||||
VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ;
|
||||
@@ -152,11 +152,11 @@ concrete ExtendEng of Extend =
|
||||
|
||||
EmbedPresPart vp = {s = \\a => infVP VVPresPart vp False Simul CPos a} ;
|
||||
|
||||
PastPartAP vp = {
|
||||
PastPartAP vp = {
|
||||
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ vp.ext ;
|
||||
isPre = vp.isSimple -- depends on whether there are complements
|
||||
} ;
|
||||
PastPartAgentAP vp np = {
|
||||
PastPartAgentAP vp np = {
|
||||
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ "by" ++ np.s ! NPAcc ++ vp.ext ;
|
||||
isPre = False
|
||||
} ;
|
||||
@@ -168,45 +168,45 @@ concrete ExtendEng of Extend =
|
||||
<Sg,Gen> => Predef.BIND ++ "'s" ;
|
||||
<Pl,Nom> => Predef.BIND ++ "s" ;
|
||||
<Pl,Gen> => Predef.BIND ++ "s'"
|
||||
} ++
|
||||
vp.p ++ vp.s2 ! AgP3Sg Neutr ++ vp.ext ;
|
||||
} ++
|
||||
vp.p ++ vp.s2 ! AgP3Sg Neutr ++ vp.ext ;
|
||||
g = Neutr
|
||||
} ;
|
||||
|
||||
GerundNP vp =
|
||||
GerundNP vp =
|
||||
let a = AgP3Sg Neutr ---- agr
|
||||
in
|
||||
in
|
||||
{s = \\_ => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext ; a = a} ;
|
||||
|
||||
GerundAdv vp =
|
||||
GerundAdv vp =
|
||||
let a = AgP3Sg Neutr
|
||||
in
|
||||
in
|
||||
{s = vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext} ;
|
||||
|
||||
WithoutVP vp = {s = "without" ++ (GerundAdv (lin VP vp)).s} ;
|
||||
WithoutVP vp = {s = "without" ++ (GerundAdv (lin VP vp)).s} ;
|
||||
|
||||
InOrderToVP vp = {s = ("in order" | []) ++ infVP VVInf vp False Simul CPos (AgP3Sg Neutr)} ;
|
||||
|
||||
PurposeVP vp = {s = infVP VVInf vp False Simul CPos (agrP3 Sg)} ; --- agr
|
||||
|
||||
ByVP vp = {s = "by" ++ (GerundAdv (lin VP vp)).s} ;
|
||||
ByVP vp = {s = "by" ++ (GerundAdv (lin VP vp)).s} ;
|
||||
|
||||
|
||||
NominalizeVPSlashNP vpslash np =
|
||||
NominalizeVPSlashNP vpslash np =
|
||||
let vp : ResEng.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ;
|
||||
a = AgP3Sg Neutr
|
||||
in
|
||||
lin NP {s = \\_ => vp.ad ! a ++ vp.prp ++ vp.s2 ! a ; a = a} ;
|
||||
in
|
||||
lin NP {s = \\_ => vp.ad ! a ++ vp.prp ++ vp.s2 ! a ; a = a} ;
|
||||
|
||||
|
||||
oper passVPSlash : VPSlash -> Str -> ResEng.VP =
|
||||
\vps,ag ->
|
||||
let
|
||||
oper passVPSlash : VPSlash -> Str -> ResEng.VP =
|
||||
\vps,ag ->
|
||||
let
|
||||
be = predAux auxBe ;
|
||||
ppt = vps.ptp
|
||||
in {
|
||||
s = be.s ;
|
||||
p = [] ;
|
||||
p = [] ;
|
||||
prp = be.prp ;
|
||||
ptp = be.ptp ;
|
||||
inf = be.inf ;
|
||||
@@ -216,7 +216,7 @@ concrete ExtendEng of Extend =
|
||||
ext = vps.ext
|
||||
} ;
|
||||
|
||||
lin
|
||||
lin
|
||||
PassVPSlash vps = passVPSlash (lin VPS vps) [] ;
|
||||
PassAgentVPSlash vps np = passVPSlash (lin VPS vps) ("by" ++ np.s ! NPAcc) ;
|
||||
|
||||
@@ -226,8 +226,8 @@ concrete ExtendEng of Extend =
|
||||
} ;
|
||||
|
||||
--- AR 22/5/2013
|
||||
ExistsNP np =
|
||||
mkClause "there" (agrP3 (fromAgr np.a).n)
|
||||
ExistsNP np =
|
||||
mkClause "there" (agrP3 (fromAgr np.a).n)
|
||||
(insertObj (\\_ => np.s ! NPAcc) (predV (regV "exist"))) ;
|
||||
|
||||
ExistCN cn =
|
||||
@@ -263,8 +263,8 @@ concrete ExtendEng of Extend =
|
||||
} ;
|
||||
|
||||
FrontExtPredVP np vp = {
|
||||
s = \\t,a,b,o =>
|
||||
let
|
||||
s = \\t,a,b,o =>
|
||||
let
|
||||
subj = np.s ! npNom ;
|
||||
agr = np.a ;
|
||||
verb = vp.s ! t ! a ! b ! o ! agr ;
|
||||
@@ -277,8 +277,8 @@ concrete ExtendEng of Extend =
|
||||
} ;
|
||||
|
||||
InvFrontExtPredVP np vp = {
|
||||
s = \\t,a,b,o =>
|
||||
let
|
||||
s = \\t,a,b,o =>
|
||||
let
|
||||
subj = np.s ! npNom ;
|
||||
agr = np.a ;
|
||||
verb = vp.s ! t ! a ! b ! o ! agr ;
|
||||
@@ -311,7 +311,7 @@ concrete ExtendEng of Extend =
|
||||
RNP = {s : Agr => Str} ;
|
||||
RNPList = {s1,s2 : Agr => Str} ;
|
||||
|
||||
lin
|
||||
lin
|
||||
ReflRNP vps rnp = insertObjPre (\\a => vps.c2 ++ rnp.s ! a) vps ;
|
||||
ReflPron = {s = reflPron} ;
|
||||
ReflPoss num cn = {s = \\a => possPron ! a ++ num.s ! True ! Nom ++ cn.s ! num.n ! Nom} ;
|
||||
@@ -328,21 +328,23 @@ concrete ExtendEng of Extend =
|
||||
lin
|
||||
ApposNP np1 np2 = {s = \\c => np1.s ! c ++ comma ++ np2.s ! c; a = np1.a} ;
|
||||
|
||||
AdvIsNP adv np = PredVP {s = \\_ => adv.s ; a = np.a} (UseComp (CompNP np)) ;
|
||||
|
||||
---- TODO: RNPList construction
|
||||
|
||||
lin
|
||||
ComplGenVV v a p vp = insertObj (\\agr => a.s ++ p.s ++
|
||||
ComplGenVV v a p vp = insertObj (\\agr => a.s ++ p.s ++
|
||||
infVP v.typ vp False a.a p.p agr)
|
||||
(predVV v) ;
|
||||
|
||||
CompS s = {s = \\_ => "that" ++ s.s} ;
|
||||
CompQS qs = {s = \\_ => qs.s ! QIndir} ;
|
||||
CompVP ant p vp = {s = \\a => ant.s ++ p.s ++
|
||||
CompVP ant p vp = {s = \\a => ant.s ++ p.s ++
|
||||
infVP VVInf vp False ant.a p.p a} ;
|
||||
|
||||
-- quite specific for English anyway
|
||||
|
||||
UncontractedNeg = {s = [] ; p = CNeg False} ;
|
||||
UncontractedNeg = {s = [] ; p = CNeg False} ;
|
||||
UttVPShort vp = {s = infVP VVAux vp False Simul CPos (agrP3 Sg)} ;
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ concrete QuestionEng of Question = CatEng ** open ResEng, Prelude in {
|
||||
} ---- "whether" in ExtEng
|
||||
} ;
|
||||
|
||||
QuestVP qp vp =
|
||||
QuestVP qp vp =
|
||||
let cl = mkClause (qp.s ! npNom) (agrP3 qp.n) vp
|
||||
in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! oDir} ; ----
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ concrete ExtendFin of Extend =
|
||||
VPI2,VPS2,MkVPS,MkVPS2,ConjVPS2,ComplVPS2, ConsVPS, BaseVPS, ListVPS, VPS, ConjVPS,PredVPS,
|
||||
MkVPI2,ConjVPI2,ComplVPI2,ComplVPIVV
|
||||
,ExistCN, ExistMassCN, ICompAP, ByVP
|
||||
,CompoundN, GenNP, GenIP
|
||||
,CompoundN, GenNP, GenIP, AdvIsNP
|
||||
]
|
||||
with
|
||||
(Grammar = GrammarFin) **
|
||||
@@ -120,7 +120,7 @@ lin
|
||||
|
||||
---- copied from VerbFin.CompAP, should be shared
|
||||
ICompAP ap = {
|
||||
s = \\agr =>
|
||||
s = \\agr =>
|
||||
let
|
||||
n = complNumAgr agr ;
|
||||
c = case n of {
|
||||
@@ -133,19 +133,20 @@ lin
|
||||
lin
|
||||
GenNP np = {
|
||||
s1,sp = \\_,_ => np.s ! NPCase Gen ;
|
||||
s2 = case np.isPron of { -- "isän auto", "hänen autonsa"
|
||||
True => table {Front => BIND ++ possSuffixFront np.a ;
|
||||
s2 = case np.isPron of { -- "isän auto", "hänen autonsa"
|
||||
True => table {Front => BIND ++ possSuffixFront np.a ;
|
||||
Back => BIND ++ possSuffix np.a } ;
|
||||
False => \\_ => []
|
||||
} ;
|
||||
isNum = False ;
|
||||
isPoss = np.isPron ; --- also gives "sen autonsa"
|
||||
isDef = True ; --- "Jussin kolme autoa ovat" ; thus "...on" is missing
|
||||
isNeg = False
|
||||
isNeg = False
|
||||
} ;
|
||||
|
||||
GenIP ip = {s = \\_,_ => ip.s ! NPCase Gen} ;
|
||||
|
||||
ByVP vp = lin Adv {s = S.infVP vp.s.sc Pos (Ag Sg P3) vp Inf3Adess} ; ---- Agr ?
|
||||
|
||||
AdvIsNP adv np = S.mkClause (\_ -> adv.s) np.a (UseComp (CompNP np)) ;
|
||||
}
|
||||
|
||||
@@ -4,4 +4,5 @@ concrete AllIta of AllItaAbs =
|
||||
LangIta,
|
||||
-- IrregIta,
|
||||
ExtraIta
|
||||
** {} ;
|
||||
** open ExtendIta
|
||||
in {} ;
|
||||
|
||||
19
src/italian/ExtendIta.gf
Normal file
19
src/italian/ExtendIta.gf
Normal file
@@ -0,0 +1,19 @@
|
||||
--# -path=alltenses:../common:../abstract:../romance
|
||||
concrete ExtendIta of Extend = CatIta ** ExtendRomanceFunctor-- -
|
||||
-- [
|
||||
-- ]
|
||||
-- don't forget to put the names of your own
|
||||
-- definitions here
|
||||
with
|
||||
(Grammar = GrammarIta), (Syntax = SyntaxIta), (ResRomance = ResIta) **
|
||||
open
|
||||
GrammarIta,
|
||||
ResIta,
|
||||
MorphoIta,
|
||||
Coordination,
|
||||
Prelude,
|
||||
ParadigmsIta in {
|
||||
-- put your own definitions here
|
||||
|
||||
|
||||
} ;
|
||||
@@ -2,45 +2,52 @@ concrete AdjectiveLat of Adjective = CatLat ** open ResLat, Prelude in {
|
||||
|
||||
|
||||
lin
|
||||
-- PositA : A -> AP ; -- warm
|
||||
PositA a =
|
||||
{ s = \\ag => a.s ! Posit ! ag };
|
||||
|
||||
PositA a = -- A -> AP
|
||||
{
|
||||
s = table { Ag g n c => a.s ! Posit ! Ag g n c } ;
|
||||
};
|
||||
|
||||
{-
|
||||
-- ComparA : A -> NP -> AP ; -- warmer than I
|
||||
ComparA a np = {
|
||||
s = \\_ => a.s ! AAdj Compar ++ "than" ++ np.s ! Nom ;
|
||||
isPre = False
|
||||
s = \\ag => a.s ! Compar ! ag ++ "quam" ++ np.s ! Nom ;
|
||||
} ;
|
||||
|
||||
-- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||
|
||||
-- ComplA2 : A2 -> NP -> AP ; -- married to her
|
||||
ComplA2 a np = {
|
||||
s = \\_ => a.s ! AAdj Posit ++ a.c2 ++ np.s ! Acc ;
|
||||
isPre = False
|
||||
s = \\ag => a.s ! Posit ! ag ++ a.c.s ++ np.s ! a.c.c ;
|
||||
} ;
|
||||
|
||||
-- ReflA2 : A2 -> AP -- married to myself
|
||||
ReflA2 a = {
|
||||
s = \\ag => a.s ! AAdj Posit ++ a.c2 ++ reflPron ! ag ;
|
||||
isPre = False
|
||||
s = \\ag => a.s ! Posit ! ag ++ a.c.s ++
|
||||
table { Acc => "memet" ; _ => "egomet" } ! a.c.c;
|
||||
} ;
|
||||
|
||||
SentAP ap sc = {
|
||||
s = \\a => ap.s ! a ++ sc.s ;
|
||||
isPre = False
|
||||
} ;
|
||||
-}
|
||||
-- UseA2 : A2 -> AP ; -- married
|
||||
UseA2 = PositA ;
|
||||
|
||||
-- UseComparA : A -> AP ; -- warmer
|
||||
UseComparA a =
|
||||
{ s = \\ag => a.s ! Compar ! ag };
|
||||
|
||||
-- CAdvAP : CAdv -> AP -> NP -> AP ; -- as cool as John
|
||||
CAdvAP cadv ap np =
|
||||
{ s = \\ag => cadv.s ++ ap.s ! ag ++ cadv.p ++ np.s ! Nom } ;
|
||||
|
||||
-- The superlative use is covered in $Ord$.
|
||||
|
||||
-- AdjOrd : Ord -> AP ; -- warmest
|
||||
AdjOrd a = { s = table { Ag g n c => a.s ! g ! n ! c } } ;
|
||||
|
||||
-- SentAP : AP -> SC -> AP ; -- good that she is here
|
||||
SentAP ap sc =
|
||||
{ s = \\a => ap.s ! a ++ sc.s } ;
|
||||
|
||||
|
||||
-- AdAP : AdA -> AP -> AP ; -- very warm
|
||||
AdAP ada ap = {
|
||||
s = \\agr => ada.s ++ ap.s ! agr ;
|
||||
} ;
|
||||
|
||||
-- UseA2 : A2 -> AP
|
||||
UseA2 a = -- A2 -> AP
|
||||
{
|
||||
s = table { Ag g n c => a.s ! Posit ! Ag g n c } ;
|
||||
} ;
|
||||
AdAP ada ap =
|
||||
{ s = \\agr => ada.s ++ ap.s ! agr } ;
|
||||
|
||||
-- AdvAP : AP -> Adv -> AP ; -- warm by nature
|
||||
AdvAP ap adv =
|
||||
{ s = \\ag => ap.s ! ag ++ adv.s ! Posit} ;
|
||||
}
|
||||
|
||||
@@ -1,27 +1,38 @@
|
||||
concrete AdverbLat of Adverb = CatLat ** open ResLat, Prelude in
|
||||
concrete AdverbLat of Adverb = CatLat ** open ResLat, Prelude, ParadigmsLat in
|
||||
{
|
||||
|
||||
lin
|
||||
-- PositAdvAdj a = {s = a.s ! AAdv} ;
|
||||
-- ComparAdvAdj cadv a np = {
|
||||
-- s = cadv.s ++ a.s ! AAdv ++ "than" ++ np.s ! Nom
|
||||
-- } ;
|
||||
-- ComparAdvAdjS cadv a s = {
|
||||
-- s = cadv.s ++ a.s ! AAdv ++ "than" ++ s.s
|
||||
-- } ;
|
||||
|
||||
-- PositAdvAdj : A -> Adv ; -- warmly
|
||||
PositAdvAdj a = a.adv ;
|
||||
|
||||
-- PrepNP : Prep -> NP -> Adv ; -- in the house
|
||||
PrepNP prep np = {s = prep.s ++ np.s ! prep.c } ;
|
||||
PrepNP prep np =
|
||||
mkAdv (prep.s ++ np.adv ++ np.det.s ! np.g ! prep.c ++ np.preap.s ! (Ag np.g np.n prep.c) ++
|
||||
np.s ! prep.c ++ np.postap.s ! (Ag np.g np.n prep.c ) ++ np.det.sp ! np.g ! prep.c ) ;
|
||||
|
||||
-- AdAdv = cc2 ;
|
||||
|
||||
-- ComparAdvAdj : CAdv -> A -> NP -> Adv ; -- more warmly than John
|
||||
ComparAdvAdj cadv a np =
|
||||
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ np.s ! Nom) ;
|
||||
|
||||
-- ComparAdvAdjS : CAdv -> A -> S -> Adv ; -- more warmly than he runs
|
||||
ComparAdvAdjS cadv a s =
|
||||
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ combineSentence s ! SPreS ! PreV ! SOV ) ;
|
||||
|
||||
-- AdAdv : AdA -> Adv -> Adv ; -- very quickly
|
||||
AdAdv ada adv = mkAdv (ada.s ++ (adv.s ! Posit) ) ;
|
||||
|
||||
-- PositAdAAdj : A -> AdA ; -- extremely
|
||||
PositAdAAdj a =
|
||||
{ s = a.adv.s ! Posit } ;
|
||||
|
||||
-- Subordinate clauses can function as adverbs.
|
||||
|
||||
-- SubjS : Subj -> S -> Adv ; -- when she sleeps
|
||||
SubjS = cc2 ;
|
||||
SubjS subj s = mkAdv (subj.s ++ combineSentence s ! SPreS ! PreV ! SOV ) ;
|
||||
|
||||
-----b AdvSC s = s ; --- this rule give stack overflow in ordinary parsing
|
||||
--
|
||||
-- AdnCAdv cadv = {s = cadv.s ++ "than"} ;
|
||||
-- AdnCAdv : CAdv -> AdN ; -- less (than five)
|
||||
AdnCAdv cadv = {s = cadv.s ++ cadv.p} ;
|
||||
--
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
concrete CatLat of Cat = CommonX ** open ResLat, ParamX, Prelude in {
|
||||
concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
@@ -6,7 +6,7 @@ concrete CatLat of Cat = CommonX ** open ResLat, ParamX, Prelude in {
|
||||
|
||||
---- Tensed/Untensed
|
||||
--
|
||||
S = {s : Str} ;
|
||||
S = Sentence ;
|
||||
QS = {s : QForm => Str} ;
|
||||
-- RS = {s : Agr => Str ; c : Case} ; -- c for it clefts
|
||||
-- SSlash = {s : Str ; c2 : Str} ;
|
||||
@@ -15,11 +15,12 @@ concrete CatLat of Cat = CommonX ** open ResLat, ParamX, Prelude in {
|
||||
--
|
||||
Cl = Clause ;
|
||||
ClSlash = Clause ;
|
||||
Imp = {s : Polarity => ImpForm => Str} ;
|
||||
Imp = {s : Polarity => VImpForm => Str} ;
|
||||
--
|
||||
---- Question
|
||||
--
|
||||
QCl = {s : ResLat.Tense => Anteriority => Polarity => QForm => Str } ;
|
||||
--
|
||||
-- TO FIX
|
||||
QCl = Clause ; -- {s : ResLat.Tense => Anteriority => Polarity => QForm => Str } ;
|
||||
IP = {s : Case => Str ; n : Number} ;
|
||||
IComp = {s : Str} ;
|
||||
IDet = Determiner ; --{s : Str ; n : Number} ;
|
||||
@@ -36,37 +37,35 @@ concrete CatLat of Cat = CommonX ** open ResLat, ParamX, Prelude in {
|
||||
---- Verb
|
||||
--
|
||||
VP = ResLat.VerbPhrase ;
|
||||
VPSlash = VP ** {c2 : Preposition} ;
|
||||
VPSlash = ResLat.ObjectVerbPhrase ; -- VP ** {c2 : Preposition} ;
|
||||
Comp = {s : Agr => Str} ;
|
||||
--
|
||||
---- Adjective
|
||||
--
|
||||
-- AP = Adjective ** {isPre : Bool} ; ---- {s : Agr => Str ; isPre : Bool} ;
|
||||
AP =
|
||||
{
|
||||
s : Agr => Str ;
|
||||
-- isPre : Bool ; -- should have no use in latin because adjectives can appear variably before and after nouns
|
||||
} ;
|
||||
AP = AdjectivePhrase ;
|
||||
|
||||
--
|
||||
---- Noun
|
||||
--
|
||||
CN = ResLat.ComplexNoun ;
|
||||
CN = ResLat.CommonNoun ;
|
||||
NP = ResLat.NounPhrase ;
|
||||
Pron = ResLat.Pronoun ;
|
||||
Det = Determiner ;
|
||||
Predet, Ord = {s : Str} ;
|
||||
Predet = {s : Str} ;
|
||||
Ord = Ordinal ;
|
||||
Num = {s : Gender => Case => Str ; n : Number} ;
|
||||
-- Card = {s : Str ; n : Number} ;
|
||||
Card = {s : Gender => Case => Str ; n : Number} ;
|
||||
Quant = Quantifier ;
|
||||
--
|
||||
---- Numeral
|
||||
--
|
||||
-- Numeral = {s : CardOrd => Str ; n : Number} ;
|
||||
Numeral = ResLat.Numeral ;
|
||||
Digits = {s : Str ; unit : Unit} ;
|
||||
--
|
||||
---- Structural
|
||||
--
|
||||
Conj = {s1,s2 : Str ; n : Number} ;
|
||||
Conj = ResLat.Conjunction; --{s1,s2 : Str ; n : Number} ;
|
||||
Subj = {s : Str} ;
|
||||
Prep = ResLat.Preposition ;
|
||||
--
|
||||
@@ -79,10 +78,16 @@ concrete CatLat of Cat = CommonX ** open ResLat, ParamX, Prelude in {
|
||||
V2V = Verb ** {c2 : Str ; isAux : Bool} ;
|
||||
|
||||
A = Adjective ;
|
||||
|
||||
Adv = Adverb ;
|
||||
|
||||
N = Noun ;
|
||||
N2 = Noun ** { c : Prep } ;
|
||||
N3 = Noun ** { c : Prep ; c2 : Prep } ;
|
||||
PN = Noun ;
|
||||
A2 = Adjective ** { c : Prep} ;
|
||||
|
||||
linref
|
||||
NP = \np -> np.preap.s ! Ag np.g np.n Nom ++ np.s ! Nom ++ np.postap.s ! Ag np.g np.n Nom ;
|
||||
VP = \vp -> vp.adv ++ vp.inf ! VInfActPres ++ vp.obj ++ vp.compl ! Ag Masc Sg Nom ;
|
||||
S = \s -> combineSentence s ! SPreO ! PreO ! SOV ;
|
||||
}
|
||||
|
||||
@@ -1,26 +1,41 @@
|
||||
concrete ConjunctionLat of Conjunction =
|
||||
CatLat ** open ResLat, StructuralLat, Coordination, Prelude in {
|
||||
CatLat ** open ResLat, StructuralLat, Coordination, Prelude, ParadigmsLat in {
|
||||
--
|
||||
-- flags optimize=all_subs ;
|
||||
--
|
||||
--
|
||||
|
||||
lin
|
||||
--
|
||||
ConjS = conjunctDistrSS ;
|
||||
--
|
||||
ConjAdv = conjunctDistrSS ;
|
||||
--
|
||||
-- ConjNP conj ss = conjunctDistrTable Case conj ss ** {
|
||||
-- a = conjAgr (agrP3 conj.n) ss.a
|
||||
-- } ;
|
||||
--
|
||||
ConjAP conj ss = conjunctDistrTable Agr conj ss ;
|
||||
--
|
||||
--{---b
|
||||
--
|
||||
-- ConjS = conjunctSS ;
|
||||
-- ConjS : Conj -> ListS -> S ; -- he walks and she runs
|
||||
-- TO FIX
|
||||
-- ConjS conj ss = { s = \\_ => conjunctDistrX conj (ss.l ! conj.c) ; sadv = lin Adv { s = []} ; neg = ss.neg } ;
|
||||
|
||||
-- ConjAdv : Conj -> ListAdv -> Adv ; -- here or there
|
||||
ConjAdv conj ss = mkAdv (conjunctDistrSS conj (ss.l ! conj.c) ).s ;
|
||||
|
||||
-- ConjNP : Conj -> ListNP -> NP ; -- she or we
|
||||
ConjNP conj nps =
|
||||
{
|
||||
s = case conj.c of {
|
||||
And => case nps.isBase of {
|
||||
False => (conjunctDistrTable Case conj (nps.l ! And)).s ;
|
||||
True => \\c => conj.s1 ++ (nps.l ! And).s1 ! c ++ conj.s2 ++ (nps.l ! And).s2 ! c
|
||||
} ;
|
||||
c => (conjunctDistrTable Case conj (nps.l ! And)).s
|
||||
} ;
|
||||
n = case conj.c of { And => Pl ; _ => nps.n } ;
|
||||
g = nps.g ;
|
||||
p = nps.p ;
|
||||
adv = nps.adv ;
|
||||
preap = nps.preap ;
|
||||
postap = nps.postap ;
|
||||
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = nps.n };
|
||||
} ;
|
||||
|
||||
-- ConjAP : Conj -> ListAP -> AP ;
|
||||
ConjAP conj ss = conjunctDistrTable Agr conj (ss.l ! conj.c) ;
|
||||
|
||||
--
|
||||
-- DConjS = conjunctDistrSS ;
|
||||
--
|
||||
-- ConjAdv = conjunctSS ;
|
||||
-- DConjAdv = conjunctDistrSS ;
|
||||
--
|
||||
-- ConjNP conj ss = conjunctTable Case conj ss ** {
|
||||
@@ -29,29 +44,87 @@ concrete ConjunctionLat of Conjunction =
|
||||
-- DConjNP conj ss = conjunctDistrTable Case conj ss ** {
|
||||
-- a = conjAgr (agrP3 conj.n) ss.a
|
||||
-- } ;
|
||||
--
|
||||
-- ConjAP conj ss = conjunctTable Agr conj ss ;
|
||||
--
|
||||
-- DConjAP conj ss = conjunctDistrTable Agr conj ss ** {
|
||||
-- isPre = ss.isPre
|
||||
-- } ;
|
||||
---}
|
||||
--
|
||||
---- These fun's are generated from the list cat's.
|
||||
--
|
||||
-- BaseS = twoSS ;
|
||||
-- ConsS = consrSS comma ;
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS "et" ;
|
||||
-- BaseNP x y = twoTable Case x y ** {a = conjAgr x.a y.a} ;
|
||||
-- ConsNP xs x = consrTable Case comma xs x ** {a = conjAgr xs.a x.a} ;
|
||||
BaseAP x y = lin A ( twoTable Agr x y ) ;
|
||||
ConsAP xs x = lin A ( consrTable Agr and_Conj.s2 xs x );
|
||||
--
|
||||
|
||||
-- BaseS : S -> S -> ListS
|
||||
-- BaseS x y = {
|
||||
-- l = \\c => { s1 = x ; s2 = y } ;
|
||||
-- } ;
|
||||
|
||||
-- ConsS : S -> ListS -> ListS
|
||||
-- TO FIX
|
||||
-- ConsS x xs = { l = \\_ => consrSS bindComma (ss (x.s ! PreS)) (xs.l ! Comma) };
|
||||
-- ConsS s ss = {
|
||||
-- l = \\c =>
|
||||
-- { s1 = ss.s1 ++
|
||||
-- table {
|
||||
-- And => and_Conj
|
||||
-- } ! c
|
||||
-- ++ ss.s2 ;
|
||||
-- s2 = s }
|
||||
-- } ;
|
||||
|
||||
-- BaseAdv : Adv -> Adv -> ListAdv
|
||||
BaseAdv x y = { l = \\c => twoSS (ss (x.s ! Posit)) (ss (y.s ! Posit)) } ;
|
||||
|
||||
-- ConsAdv : Adv -> ListAdv -> ListAdv
|
||||
ConsAdv x xs = { l = \\_ => consrSS bindComma (ss (x.s ! Posit)) (xs.l ! Comma) } ;
|
||||
|
||||
-- BaseNP : NP -> NP -> ListNP ; -- John, Mary
|
||||
BaseNP x y = {
|
||||
l = \\c => twoTable Case x y ;
|
||||
g = Masc ; -- Just guessing (but maybe sexist bullshit)
|
||||
n = matchNumber x.n y.n ;
|
||||
p = P3 ;
|
||||
adv = x.adv ++ y.adv ;
|
||||
preap = lin AP { s = \\a => x.preap.s ! a ++ y.preap.s ! a } ;
|
||||
postap = lin AP { s = \\a => x.postap.s ! a ++ y.postap.s ! a } ;
|
||||
isBase = True ;
|
||||
det = { s = \\g,c => x.det.s ! g ! c ++ y.det.s ! g ! c ; sp = \\g,c => x.det.sp ! g ! c ++ y.det.sp ! g ! c ; n = matchNumber x.get.n y.get.n } ;
|
||||
|
||||
} ;
|
||||
|
||||
-- ConsNP : NP -> ListNP -> ListNP ; -- John, Mary, Bill
|
||||
ConsNP x xs = {
|
||||
l = \\_ => consrTable Case bindComma x ( xs.l ! Comma );
|
||||
n = matchNumber x.n xs.n ;
|
||||
g = xs.g ;
|
||||
p = xs.p ;
|
||||
adv = x.adv ++ xs.adv ;
|
||||
preap = lin AP { s = \\a => x.preap.s ! a ++ xs.preap.s ! a } ;
|
||||
postap = lin AP { s = \\a => x.postap.s ! a ++ xs.postap.s ! a } ;
|
||||
isBase = False
|
||||
-- TODO det
|
||||
} ;
|
||||
|
||||
-- BaseAP : AP -> AP -> ListAP
|
||||
BaseAP x y = { l = \\c => twoTable Agr x y };
|
||||
|
||||
-- ConsAP : AP -> ListAP -> ListAP
|
||||
ConsAP x xs =
|
||||
{ l = \\_ => consrTable Agr and_Conj.s2 x (xs.l ! Comma ) } ;
|
||||
--
|
||||
lincat
|
||||
[S] = {s1,s2 : Str} ;
|
||||
[Adv] = {s1,s2 : Str} ;
|
||||
-- [NP] = {s1,s2 : Case => Str ; a : Agr} ;
|
||||
[AP] = {s1,s2 : Agr => Str } ;
|
||||
-- [S] = { l : Coordinator => {s1,s2 : S} } ; -- TO FIX
|
||||
[Adv] = { l: Coordinator => {s1,s2 : Str}} ;
|
||||
[NP] = {l : Coordinator => {s1,s2 : Case => Str} ; g : Gender ; n : Number ; p : Person ; adv : Str ; preap : AP ; postap : AP ; isBase : Bool } ;
|
||||
[AP] = {l : Coordinator => {s1,s2 : Agr => Str } } ;
|
||||
|
||||
oper
|
||||
-- Generates a new number value given two number values.
|
||||
-- Pl if any of the two is Pl
|
||||
-- Sg otherwise
|
||||
matchNumber : Number -> Number -> Number = \n1,n2 ->
|
||||
case <n1,n2> of {
|
||||
<Pl,_> => Pl ;
|
||||
<_,Pl> => Pl ;
|
||||
<_,_> => Sg
|
||||
} ;
|
||||
--
|
||||
}
|
||||
|
||||
5
src/latin/ConstructionLat.gf
Normal file
5
src/latin/ConstructionLat.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
--# -path=.:api
|
||||
concrete ConstructionLat of Construction = CatLat **
|
||||
open SyntaxLat, SymbolicLat, ParadigmsLat,
|
||||
(L = LexiconLat), (E = ExtraLat), (G = GrammarLat), (I = IrregLat), (R = ResLat), (N = NounLat), Prelude in {
|
||||
}
|
||||
34819
src/latin/DictLat.gf
Normal file
34819
src/latin/DictLat.gf
Normal file
File diff suppressed because it is too large
Load Diff
37214
src/latin/DictLatAbs.gf
Normal file
37214
src/latin/DictLatAbs.gf
Normal file
File diff suppressed because it is too large
Load Diff
2
src/latin/DocumentationLat.gf
Normal file
2
src/latin/DocumentationLat.gf
Normal file
@@ -0,0 +1,2 @@
|
||||
concrete DocumentationLat of Documentation = {
|
||||
}
|
||||
1
src/latin/ExtendLat.gf
Normal file
1
src/latin/ExtendLat.gf
Normal file
@@ -0,0 +1 @@
|
||||
concrete ExtendLat of Extend = ExtendFunctor with (Grammar=GrammarLat);
|
||||
@@ -1,13 +1,54 @@
|
||||
concrete ExtraLat of ExtraLatAbs =
|
||||
CatLat,
|
||||
ExtraLexiconLat **
|
||||
open ResLat, Coordination, Prelude in {
|
||||
CatLat, ExtraLexiconLat, ConjunctionLat **
|
||||
open ResLat, ParadigmsLat, Coordination, Prelude in {
|
||||
lincat CS = Str ;
|
||||
lin
|
||||
useS s = combineSentence s ! SPreO ! PreO ! SOV ;
|
||||
-- PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
|
||||
-- PastPartAP vp = { s = vp.part ! VPassPerf } ;
|
||||
|
||||
UsePronNonDrop p = -- Pron -> NP
|
||||
{
|
||||
g = p.g ;
|
||||
n = p.n ;
|
||||
g = p.pers.g ;
|
||||
n = p.pers.n ;
|
||||
p = p.p ;
|
||||
s = p.pers ! PronNonDrop ! PronNonRefl ;
|
||||
s = p.pers.s ! PronNonDrop ! PronNonRefl ;
|
||||
adv = "" ;
|
||||
preap, postap = { s = \\_ => "" } ;
|
||||
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = p.pers.n } ;
|
||||
} ;
|
||||
|
||||
AdjCNPre ap cn = -- AP -> CN -> CN
|
||||
addAdjToCN (lin AP ap) (lin CN cn) Post ;
|
||||
|
||||
-- ConjNP : Conj -> ListNP -> NP ; -- she or we
|
||||
ConjNPque conj nps =
|
||||
{
|
||||
s = case conj.c of {
|
||||
And => case nps.isBase of {
|
||||
False => (conjunctDistrTable Case conj (nps.l ! And)).s ;
|
||||
True => \\c => (nps.l ! And).s1 ! c ++ (nps.l ! And).s2 ! c ++ BIND ++ "que"
|
||||
} ;
|
||||
c => (conjunctDistrTable Case conj (nps.l ! And)).s
|
||||
} ;
|
||||
n = case conj.c of { And => Pl ; _ => nps.n } ;
|
||||
g = nps.g ;
|
||||
p = nps.p ;
|
||||
adv = nps.adv ;
|
||||
preap = nps.preap ;
|
||||
postap = nps.postap ;
|
||||
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = nps.n };
|
||||
} ;
|
||||
|
||||
everybodyFem_NP = regNP "quisque" "quemque" "cuiusque" "cuique" "quoque" "quisque" Fem Sg ;-- regNP "quisquae" Sg ; -- L...
|
||||
somebodyFem_NP = regNP "aliquis" "aliquem" "alicuius" "clicui" "aliquo" "aliquis" Fem Sg ; -- Bayer-Lindauer 60.1
|
||||
nobodyFem_NP = regNP "nemo" "neminem" "neminis" "nemini" "nemine" "nemo" Fem Sg ; -- Bayer Lindauer 60.4
|
||||
|
||||
Nom_Prep = mkPrep "" Nom ;
|
||||
Gen_Prep = mkPrep "" Gen ;
|
||||
Acc_Prep = mkPrep "" Acc ;
|
||||
Dat_Prep = mkPrep "" Dat ;
|
||||
Abl_Prep = mkPrep "" Abl ;
|
||||
inAbl_Prep = mkPrep "in" Abl ;
|
||||
onAbl_Prep = mkPrep "in" Abl ; -- L...
|
||||
}
|
||||
|
||||
@@ -1,8 +1,32 @@
|
||||
abstract ExtraLatAbs =
|
||||
Extra,
|
||||
ExtraLexiconLatAbs **
|
||||
{
|
||||
Extra, ExtraLexiconLatAbs, Conjunction
|
||||
** {
|
||||
cat CS ;
|
||||
fun
|
||||
UsePronNonDrop : Pron -> NP ;
|
||||
useS : S -> CS ;
|
||||
-- do not drop pronouns
|
||||
UsePronNonDrop : Pron -> NP ;
|
||||
|
||||
-- add adjective before the noun
|
||||
AdjCNPre : AP -> CN -> CN ;
|
||||
|
||||
-- handle conjunction with suffix
|
||||
ConjNPque : Conj -> ListNP -> NP ;
|
||||
|
||||
-- Alternative form for female noun phrase
|
||||
everybodyFem_NP : NP ;
|
||||
somebodyFem_NP : NP ;
|
||||
nobodyFem_NP : NP ;
|
||||
|
||||
|
||||
-- Some empty prepositions to enforce cases
|
||||
Nom_Prep : Prep ;
|
||||
Gen_Prep : Prep ;
|
||||
Acc_Prep : Prep ;
|
||||
Dat_Prep : Prep ;
|
||||
Abl_Prep : Prep ;
|
||||
|
||||
-- Preposition with alternate case
|
||||
inAbl_Prep : Prep ;
|
||||
onAbl_Prep : Prep ;
|
||||
}
|
||||
|
||||
453
src/latin/ExtraLexCaesar.gf
Normal file
453
src/latin/ExtraLexCaesar.gf
Normal file
@@ -0,0 +1,453 @@
|
||||
concrete ExtraLexCaesar of ExtraLexCaesarAbs = CatLat ** open Prelude,ParadigmsLat,ResLat, IrregLat, LexiconLat,StructuralLat in {
|
||||
lin
|
||||
a_Prep = mkPrep "a" Abl ;
|
||||
ab_Prep = mkPrep "ab" Abl ;
|
||||
abdere_V = mkV "abdere" "abdo" "abdidi" "abditum";
|
||||
abducere_V = mkV "abducere" "abduco" "abduxi" "abductum" ; -- prefixVerb "ab" ducere_V; -- ab + ducere, missing abduci (inf VInfPassPres : abduceri)
|
||||
abesse_V = prefixVerb "ab" be_V; -- ab + esse, missing absente?
|
||||
abicere_V = mkV "abicere" "abicio" "abieci" "abiectum"; -- prefixVerb "ab" iacere_V; -- ab + iacere
|
||||
abscisus_A = mkA "abscisus";
|
||||
absens_A = mkA "absens" "absentis"; -- missing absente
|
||||
absimilis_A = mkA "absimilis" "absimile"; -- missing absimili (s Posit (Ag Masc Sg Dat) : absimii)
|
||||
abstinere_V2 = mkV2 (mkV "abstinere"); -- prefixVerb2 "ab" tenere_V2 ; -- -- ab + tenere
|
||||
abstrahere_V2 = mkV2 (mkV "abstrahere" "abstraho" "abstraxi" "abstractum");-- prefixVerb2 "ab" trahere_V2 ; -- ab + trahere
|
||||
-- ac_Conj = mkConj "" "ac" Sg ;
|
||||
accedere_V = mkV "adcedere" "adcedo" "adcessi" "adcessum"; -- prefixVerb "ad" cedere_V ; -- ad + cedere
|
||||
accendere_V = mkV "accendere" "accendo" "accendi" "accensum";
|
||||
accidere_V = mkV "accidere" "accido" "accidi" "accisum"; -- ad + caedere?
|
||||
accipere_V = mkV "accipere" "accipio" "accepi" "acceptum"; -- prefixVerb "ad" capere_V; -- ad + capere
|
||||
acclivis_A = mkA "acclivis" "acclive" ;
|
||||
acclivitas_N = mkN "acclivitas" "acclivitatis" feminine;
|
||||
accommodare_V = mkV "accommodare" ;
|
||||
accommodatus_A = mkA "accommodatus" ;
|
||||
accurrere_V = mkV "accurrere" "accurro" "accucurri" "accursum"; -- prefixVerb "ad" currere_V; -- ad + currere
|
||||
accusare_V = mkV "accusare";
|
||||
acervus_N = mkN "acervus" ;
|
||||
acies_N = mkN "acies" ;
|
||||
acriter_Adv = ss "acriter"; -- comparison???
|
||||
ad_Prep = mkPrep "ad" Acc;
|
||||
adaequare_V = mkV "adaequare"; -- ad + aequare?
|
||||
adamare_V2 = mkV2 (mkV "adamare"); -- prefixVerb2 "ad" love_V2; -- ad + amare, missing adamassent (act (VAct VAnt (VImpf VConj) Pl P3) : adamavissent)?
|
||||
adducere_V = mkV "adducere" "adduco" "adduxi" "adductum"; -- prefixVerb "ad" ducere_V; -- ad + ducere, missing adduci
|
||||
adequitare_V = mkV "adequitare"; -- prefixVerb "ad" equitare_V; -- ad + equitare
|
||||
adesse_V = prefixVerb "ad" be_V; -- ad + esse
|
||||
adferre_V = prefixVerb "ad" ferre_V;-- ad + ferre
|
||||
adfectus_A = mkA "adfectus";
|
||||
adfectus_N = mkN "adfectus" "adfectus" masculine;
|
||||
adficere_V = mkV " adficere" "adfico" "adfeci" "adfectum"; -- ad + facere?, missing adficiebantur
|
||||
adfigere_V = mkV " adfigere" "adfixi" "adfixum"; -- ad + figere?, missing adfixae
|
||||
adfinitas_N = mkN "adfinitas" "adfinitatis" feminine;
|
||||
adflictare_V = mkV "adflictare";
|
||||
adflictus_A = mkA "adflictus";
|
||||
adgredi_V = mkV "adgredi" "adgredior" "adgressus"; -- ad + gradior?, missing adgressi, adgressus
|
||||
adgregare_V = mkV "adgregare"; -- ad + gregare?
|
||||
adhibere_V = mkV "adhibere"; -- ad + habere?
|
||||
adhuc_Adv = ss "adhuc";
|
||||
Adiatunnus_PN = mkPN (lin N (singularN (mkN "Adiatunnus")));
|
||||
adicere_V = mkV "adicere" "adieci" "adiectum"; -- ad + iacere?, missing adiecta
|
||||
adigere_V = mkV "adigere" "adigo" "adegi" "adactum"; -- ad + agere?, missing adigi
|
||||
adire_V = mkV "adire" "adeo" "" ""; -- prefixVerb "ad" ire_V; -- ad + ire, missing adiisset, aditus?
|
||||
aditus_N = mkN "aditus" "aditus" masculine;
|
||||
adiungere_V = mkV "adiungere" "adiungo" "adiunxi" "adiunctum"; -- ad + iungere?
|
||||
adiuvare_V = mkV "adiuvare"; -- ad + iuvare?
|
||||
administrare_V = mkV "administrare"; -- ad + ministrare
|
||||
admirari_V = mkV "admirari" "admiror" "admiratus"; -- ad + mirari?
|
||||
admittere_V = mkV "admittere" "admitto" "admisi" "admissum"; -- ad + mittere?
|
||||
admodum_Adv = ss "admodum";
|
||||
adoriri_V = mkV "adoriri" "adorior" "adortus"; -- ad + oriri?, missing adorti, adortum, adortus
|
||||
adpellere_V = mkV "adpellere" "adpello" "adpuli" "adpulsum"; -- ad + pelere?
|
||||
adpetere_V = mkV "adpetere" "adpeto" "adpetivi" "adpetitum"; -- ad + petere?, missing adpetierit, adpetisse, adpetissent
|
||||
adpropinquare_V = mkV " adpropinquare"; -- ad + propinquare?
|
||||
-- adpulsare_V = mkV "adpulsare";
|
||||
adsciscere_V = mkV "adsciscere" "adscisco" "adscivi" "ascitum"; -- ad + sciscere?
|
||||
adsuere_V = mkV "adsuere" "adsuo" "adsui" "adsutum"; -- ad + suere?, missing adsue
|
||||
adsuefacere_V = mkV "adsuefacere" "adsuefacio" "adsuefeci" "adsuefactum"; -- possibly problematic
|
||||
-- adtectus ???
|
||||
adulescentia_N = mkN "adulescentia";
|
||||
adulescentulus_N = mkN "adulescentulus";
|
||||
advenire_V = mkV "advenire" "advenio" "adveni" "adventum"; -- prefixVerb "ad" venire_V; -- ad + venire
|
||||
advertere_V = mkV "advertere" "adverto" "adverti" "adversum"; -- ad + vertere?
|
||||
adventus_N = mkN "adventus" "adventus" masculine;
|
||||
aedificare_V = mkV "aedificare";
|
||||
aedificium_N = mkN "aedificium";
|
||||
aeger_A = mkA "aeger";
|
||||
aegre_Adv = ss "aegre"; -- comparison?
|
||||
Aemilius_PN = mkPN (lin N (singularN (mkN "Aemilius")));
|
||||
aequaliter_Adv = ss "aequaliter";
|
||||
aequare_V = mkV " aequare";
|
||||
aequinoctium_N = mkN "aequinoctium";
|
||||
aequitas_N = mkN "aequitas" "aequitatis" feminine;
|
||||
aequum_N = mkN "aequum";
|
||||
aequus_A = mkA "aequus";
|
||||
aerarius_A = mkA "aerarius";
|
||||
aerarius_N = mkN "aerarius";
|
||||
aer_f_N = mkN "aer" "aeris" feminine;
|
||||
aer_m_N = mkN "aer" "aeris" masculine;
|
||||
aes_N = mkN "aer" "aeris" neuter;
|
||||
aestas_N = mkN "aestas" "aestatis" feminine;
|
||||
aestimare_V = mkV "aestimare";
|
||||
aestuarium_N = mkN "aestuarium";
|
||||
aestus_N = mkN "aestus" "aestus" masculine;
|
||||
aetas_N = mkN "aetas" "aetatis" feminine;
|
||||
ager_N = mkN "ager";
|
||||
agere_V = mkV "agere" "ago" "egi" "actum";
|
||||
agger_N = mkN "agger" "aggeris" masculine;
|
||||
agmen_N = mkN "agmen" "agminis" neuter;
|
||||
alacer_A = mkA "alacer" "alacris";
|
||||
alacritas_N = mkN "alacritas" "alacritatis" feminine;
|
||||
alarius_A = mkA "alarius";
|
||||
-- alduas_??? = ???;
|
||||
alere_1_V = mkV "alere" "alo" "alui" "altum";
|
||||
alere_2_V = mkV "alere" "alo" "alui" "alitum";
|
||||
alienus_A = mkA "alienus";
|
||||
-- alii_Conj = mkConj "alii" "alii" Sg ;
|
||||
aliquam_Adv = ss "aliquam";
|
||||
aliquanto_Adv = ss "aliquanto";
|
||||
--aliqui_Pron = mkPron ???;
|
||||
-- aliquis_Pron = aliquis;
|
||||
aliter_Adv = ss "aliter";
|
||||
alium_N = mkN "alium";
|
||||
alius_A = mkA (mkN "alius") (mkN "alia") (mkN "aliud" "alius" neuter);
|
||||
Allobroges_PN = mkPN (lin N (pluralN (mkNoun "" "" "" "" "" "" "Allobroges" "Allobroges" "Allobrogum" "Allobrogibus" masculine))); -- missing Allobrogas
|
||||
Alpes_PN = mkPN (lin N (pluralN (mkNoun "" "" "" "" "" "" "Alpes" "Alpes" "Alpium" "Alpibus" feminine)));
|
||||
alter_A = mkA (mkN "alter") (mkN "altera") (mkN "alterum"); -- missing alterius
|
||||
alterare_V = mkV "alterare";
|
||||
altitudo_N = mkN "altitudo" "altitudinis" feminine;
|
||||
altus_A = mkA "altus";
|
||||
aluta_N = mkN "aluta";
|
||||
Ambarri_PN = mkPN (lin N (pluralN (mkN "Ambarrus")));
|
||||
Ambiani_PN = mkPN (lin N (pluralN (mkN "Ambianus")));
|
||||
Ambiliati_PN = mkPN (lin N (pluralN (mkN "Ambiliatus")));
|
||||
Ambivariti_PN = mkPN (lin N (pluralN (mkN "Ambivaritus")));
|
||||
amentia_N = mkN "amentia";
|
||||
amicitia_N = mkN "amicitia";
|
||||
amicus_A = mkA "amicus";
|
||||
amittere_V = mkV "amittere" "amitto" "amisi" "amissum";
|
||||
amplificare_V = mkV "amplificare";
|
||||
amplitudo_N = mkN "amplitudo" "amplitudinis" feminine;
|
||||
amplus_A = mkA "amplus";
|
||||
anceps_A = mkA "anceps" "ancipitis";
|
||||
ancora_N = mkN "ancora";
|
||||
Andebrogius_PN = mkPN (lin N (singularN (mkN "Andebrogius")));
|
||||
--Andes_PN = ???
|
||||
angustia_N = mkN "angustia";
|
||||
angustiare_V = mkV "angustiare";
|
||||
-- an_Conj = mkConj "" "an" Sg;
|
||||
-- an_an_Conj = mkConj "an" "an" Sg;
|
||||
animadvertere_V = mkV "animadvertere" "animadverto" "animadverti" "animadversum";
|
||||
animus_N = mkN "animus";
|
||||
annuus_A = mkA "annuus";
|
||||
ante_Adv = ss "ante";
|
||||
ante_Prep = mkPrep "ante" Acc;
|
||||
antea_Adv = ss "antea";
|
||||
antecedere_V = mkV "antecedere" "antecedo" "antecessi" "antecessum"; -- ante + cedere?
|
||||
antemna_N = mkN "antemna";
|
||||
anteponere_V = mkV "anteponere" "antepono" "anteposui" "antepositum"; -- prefixVerb2 "ante" put_V2; -- ante + ponere
|
||||
antiquitus_Adv = ss "antiquitus";
|
||||
antiquus_A = mkA "antiquus"; -- missing antiquissimum
|
||||
aperire_V = mkV "aperire" "aperio" "aperui" "apertum"; -- missing aperta, apertis, apertissimis, apertissimo, aperto, apertum, apertus
|
||||
apertare_V = mkV "apertare";
|
||||
Aprilis_PN = mkPN (lin N (singularN (mkN "Aprilis" "Aprilis" masculine))); -- missing Apr, April
|
||||
appellare_V = mkV "appellare";
|
||||
aptus_A = mkA "aptus";
|
||||
apud_Prep = mkPrep "apud" Acc;
|
||||
aquatio_N = mkN "aquatio" "aquationis" feminine;
|
||||
aquila_N = mkN "aquila";
|
||||
Aquileia_PN = mkPN (lin N (singularN (mkN "Aquileia")));
|
||||
Aquitania_PN = mkPN (lin N (singularN (mkN "Aquitania")));
|
||||
Aquitanus_N = mkN "Aquitanus";
|
||||
Arar_PN = mkPN (lin N (singularN (mkN "Arar" "Araris" masculine))); -- missing Ararim
|
||||
arbitrari_V = mkV "arbitrari";
|
||||
arbitrium_N = mkN "arbitrium";
|
||||
arcessere_V = mkV "arcessere" "arcesso" "arcessivi" "arcessitum";
|
||||
arduus_A = mkA "arduus";
|
||||
aries_N = mkN "aries" "arietis" masculine;
|
||||
Ariovistus_PN = mkPN (lin N (singularN (mkN "Ariovistus")));
|
||||
armatus_A = mkA "armatus";
|
||||
arma_N = lin N (pluralN (mkNoun "" "" "" "" "" "" "arma" "arma" "armorum" "armis" neuter));
|
||||
armamentum_N = mkN "armamentum";
|
||||
armare_V = mkV "armare";
|
||||
armatura_N = mkN "armatura";
|
||||
armus_N = mkN "armus";
|
||||
arroganter_Adv = ss "arroganter"; -- comparison?
|
||||
arrogantia_N = mkN "arrogantia";
|
||||
artus_A = mkA "artus";
|
||||
Arverni_PN = mkPN (lin N (pluralN (mkN "Arvernus")));
|
||||
arx_N = mkN "arx" "arcis" feminine;
|
||||
ascendere_V = mkV "ascendere" "ascendo" "ascendi" "ascensum";
|
||||
-- at_Conj = mkConj "at" "" Sg ;
|
||||
-- atque_Conj = mkConj "atque" "" Sg ;
|
||||
Atrebates_PN = mkPN (mkN "Atrebas" "Atrebatis" masculine);
|
||||
attingere_V = mkV "attingere" "attingo" "attigi" "attactum"; -- ad + tangere?
|
||||
attribuere_V = mkV "attribuere" "attribuo" "attribui" "attributum"; -- ad + tribuere?, missing attribuant
|
||||
-- auctibus ???
|
||||
auctor_N = mkN "auctor" "auctoris" masculine;
|
||||
auctorare_V = mkV "auctorare";
|
||||
auctoritas_N = mkN "auctoritas" "auctoritatis" feminine;
|
||||
auctus_A = mkA "auctus";
|
||||
audacter_Adv = ss "audacter"; -- comparison?
|
||||
audax_A = mkA "audax" "audacis";
|
||||
audere_V = mkV "audere"; -- semi-deponent?, missing ausos
|
||||
audire_V = mkV "audire" ; -- missing audierant, audierit
|
||||
auditio_N = mkN "auditio" "auditionis" feminine;
|
||||
augere_V = mkV "augere"; -- missing auxisse
|
||||
Atuatuci_PN = mkPN (lin N (pluralN (mkN "Atuatucus")));
|
||||
Aulerci_PN = mkPN (lin N (pluralN (mkN "Aulercus")));
|
||||
Auriga_PN = mkPN (mkN "Auriga");
|
||||
Aurunculeius_PN = mkPN (lin N (singularN (mkN "Aurunculeius")));
|
||||
Ausci_PN = mkPN (lin N (pluralN (mkN "Auscus")));
|
||||
-- aut_Conj = mkConj "aut" "" Sg ;
|
||||
-- autem_Conj = mkConj "autem" "" Sg ;
|
||||
auxiliare_V = mkV "auxiliare";
|
||||
auxilium_N = mkN "auxilium";
|
||||
avaritia_N = mkN "avaritia";
|
||||
avertere_V = mkV "avertere" "averto" "averti" "aversum"; -- ab + vertere?, missing aventu (noun sg supine neut dat)
|
||||
avus_N = mkN "avus";
|
||||
Axona_PN = mkPN (lin N (singularN (mkN "Axona")));
|
||||
baculus_N = mkN "baculus";
|
||||
Baleares_PN = mkPN (lin N (pluralN (mkN "Balear" "Balearis" masculine)));
|
||||
barbarus_A = mkA "barbarus";
|
||||
barbarus_N = mkN "barbarus";
|
||||
batavus_A = mkA "batavus";
|
||||
Belgae_PN = mkPN (lin N (pluralN (mkN "Belga"))); -- missing Belgos
|
||||
bellare_V = mkV "bellare";
|
||||
bellicosus_A = mkA "bellicosus";
|
||||
Bellovaci_PN = mkPN (lin N (pluralN (mkN "Bellovacus")));
|
||||
bellum_N = mkN "bellum";
|
||||
bellus_A = mkA "bellus";
|
||||
bene_Adv = ss "bene"; -- comparison?
|
||||
beneficium_N = mkN "beneficium";
|
||||
Bibrax_PN = mkPN (lin N (singularN (mkN "Bibrax" "Bibractis" masculine)));
|
||||
biduum_N = mkN "biduum";
|
||||
biduus_A = mkA "biduus";
|
||||
biennis_A = mkA "biennis" "bienne"; -- missing biennium
|
||||
biennium_N = mkN "biennium";
|
||||
binus_A = mkA "binus";
|
||||
bipedalis_A = mkA "bipedalis" "bipedale"; -- missing bipedalibus
|
||||
bipertitus_A = mkA "bipertitus";
|
||||
bis_Adv = ss "bis";
|
||||
Biturix_PN = mkPN (lin N (pluralN (mkN "Biturix" "Biturigis" masculine)));
|
||||
-- boc ???
|
||||
Boduognatus_PN = mkPN (lin N (singularN (mkN "Boduognatus")));
|
||||
Boi_PN = mkPN (lin N (pluralN (mkN "Boius"))); -- missing Boi
|
||||
bonitas_N = mkN "bonitas" "bonitatis" feminine;
|
||||
bracchium_N = mkN "bracchium";
|
||||
Bratuspantium_PN = mkPN (lin N (singularN (mkN "Bratuspantium")));
|
||||
brevi_Adv = ss "brevi";
|
||||
breviare_V = mkV "breviare";
|
||||
brevis_A = mkA "brevis" "breve"; -- missing brevi
|
||||
brevitas_N = mkN "brevitas" "brevitatis" feminine;
|
||||
Britannia_PN = mkPN (mkN "Britannia");
|
||||
britannus_A = mkA "britannus";
|
||||
Brutus_PN = mkPN (lin N (singularN (mkN "Brutus")));
|
||||
cadaver_N = mkN "cadaver" "cadaveris" neuter;
|
||||
cadere_V = mkV "cadere" "cado" "cecidi" "casum";
|
||||
Caesar_PN = mkPN (lin N (singularN (mkN "Caesar" "Caesaris" masculine))); -- missing Caesare
|
||||
caespes_N = mkN "caespes" "caespitis" masculine;
|
||||
calamitas_N = mkN "calamitas" "calamitatis" feminine;
|
||||
calare_V = mkV "calare";
|
||||
calo_N = mkN "calo" "calonis" masculine;
|
||||
campus_N = mkN "campus";
|
||||
capere_V = mkV "capere" "capio" "cepi" "captum"; -- missing capi
|
||||
captivus_A = mkA "captivus";
|
||||
captivus_N = mkN "captivus";
|
||||
captus_N = mkN "captus" "captus" masculine;
|
||||
carina_N = mkN "carina";
|
||||
carpere_V = mkV "carpere" "carpio" "carpsi" "carptum";
|
||||
carrus_N = mkN "carrus";
|
||||
castellum_N = mkN "castellum";
|
||||
castra_N = lin N (pluralN (mkNoun "" "" "" "" "" "" "castra" "castra" "castrorum" "castris" neuter));
|
||||
casus_N = mkN "casus" "casus" masculine;
|
||||
catena_N = mkN "catena";
|
||||
causa_N = mkN "causa";
|
||||
causa_Prep = mkPostp "causa" Gen;
|
||||
cavare_V = mkV "cavare";
|
||||
cavere_V = mkV "cavere";
|
||||
cedere_V = mkV "cedere" "cedo" "cessi" "cessum";
|
||||
celare_V = mkV "celare";
|
||||
celer_A = mkA "celer" "celeris"; -- strange?
|
||||
celeritas_N = mkN "celeritas" "celeritatis" feminine;
|
||||
celeriter_Adv = ss "celeriter"; -- comparison? missing celerius, celerrime
|
||||
census_N = mkN "census" "census" masculine;
|
||||
censere_V = mkV "censere";
|
||||
centuriare_V = mkV "centuriare";
|
||||
centurio_N = mkN "centurio" "centurionis" masculine;
|
||||
cernere_V = mkV "cernere" "cerno" "crevi" "cretum";
|
||||
certare_V = mkV "certare";
|
||||
certamen_N = mkN "certamen" "certaminis" neuter;
|
||||
certus_A = mkA "certus";
|
||||
ceterus_A = mkA "ceterus";
|
||||
cibarius_A = mkA "cibarius";
|
||||
cibus_N = mkN "cibus";
|
||||
ciere_V = mkV "ciere" "cio" "civi" "citum";
|
||||
cingere_V = mkV "cingere" "cingo" "cingi" "cinctum";
|
||||
circinare_V = mkV "circinare";
|
||||
circinus_N = mkN "circinus";
|
||||
circiter_Adv = ss "circiter";
|
||||
circiter_Prep = mkPrep "circiter" Acc;
|
||||
circuitus_N = mkN "circuitus" "circuitus" masculine;
|
||||
circum_Adv = ss "circum";
|
||||
circum_Prep = mkPrep "circum" Acc;
|
||||
circumdare_V = mkV "circumdare" "circumdo" "circumdedi" "circumdatum"; -- prefixVerb "circum" dare_V; -- circum + dare, missing circumdederant, circumdederunt
|
||||
circumducere_V = mkV "circumducere" "circumduco" "circumduxi" "circumductum"; -- prefixVerb "circum" ducere_V; circum + ducere
|
||||
circumiectus_A = mkA "circumiectus";
|
||||
circumire_V = prefixVerb "circum" ire_V;
|
||||
circummunire_V = mkV "circummunire";
|
||||
circumsistere_1_V = mkV "circumsistere" "circumsisto" "circumstiti" "circumstatum" ; -- prefixVerb "circum" sistere_1_V; -- circum + sistere
|
||||
-- circumsistere_2_V = prefixVerb "circum" sistere_2_V; -- circum + sistere
|
||||
circumvenire_V = mkV "circumvenire" ; -- prefixVerb "circum" venire_V; -- circum + venire
|
||||
cis_Prep = mkPrep "cis" Acc;
|
||||
citare_V = mkV "citare";
|
||||
citer_A = mkA "citer"; -- missing citeriore, citeriorem, citerioris
|
||||
citra_Adv = ss "citra";
|
||||
citus_A = mkA "citus";
|
||||
civitas_N = mkN "civitas" "civitatis" feminine;
|
||||
colere_V = mkV "colere" "colo" "colui" "cultum";
|
||||
cooriri_V = mkV "cooriri" "coorior" "coortus"; -- prefixVerb "con" oriri_V; -- con + oriri, missing coorta
|
||||
conferre_V = prefixVerb "con" ferre_V; -- con + ferre
|
||||
---
|
||||
conspicere_V = mkV "conspicere" "conspicio" "conspexi" "conspectum"; -- prefixVerb "con" specere_V; -- con + specere
|
||||
conspirare_V = mkV "conspirare"; -- con + spirare?
|
||||
constanter_Adv = ss "constanter"; -- comparison
|
||||
constantia_N = mkN "constantia";
|
||||
constare_V = mkV "constare"; -- prefixVerb "con" stare_V; -- con + stare, missing constiterant, constiterat, constiterunt, constitissent, constitisset, constitit
|
||||
-- consternare_V = mkV "consternare"; -- con + sternere ?
|
||||
consternere_V = mkV "consternere" "consterno" "constravi" "constratum"; -- con + sternere?
|
||||
constituere_V = mkV "constituere" "constituo" "constitui" "constitutum"; -- prefixVerb "con" statuere_V; -- con + statuere
|
||||
constitutum_N = mkN "constitutum";
|
||||
consuere_V = mkV "consuere" "consuo" "consui" "consustum";
|
||||
consuescere_V = mkV "consuescere" "consuesco" "consuevi" "consuetum"; -- con + suescere?, missing consuesse, consuessent?
|
||||
consuetudo_N = mkN "consuetudo" "consuetudinis" feminine;
|
||||
consul_N = mkN "consul" "consulis" masculine;
|
||||
consulatus_N = mkN "consulatus" "consulatus" masculine;
|
||||
consulere_V = mkV "consulere" "consulo" "consului" "consultum";
|
||||
consultare_V = mkV "consultare";
|
||||
consultum_N = mkN "consultum";
|
||||
contemptio_N = mkN "contemptio" "contemptionis" feminine;
|
||||
contemptus_A = mkA "contemptus";
|
||||
contemptus_N = mkN "contemptus" "contemptus" masculine;
|
||||
contentio_N = mkN "contentio" "contentionis" feminine;
|
||||
contendere_V = mkV "contendere" "contendo" "contendi" "contentum";
|
||||
contexere_V = mkV "contexere" "contexo" "contexui" "contextum"; -- prefixVerb "con" texere_V; -- con + texere
|
||||
continens_N = mkN "continens" "continentis" feminine;
|
||||
continenter_Adv = ss "continenter";
|
||||
continere_V2 = mkV2 (mkV "continere"); -- prefixVerb2 "con" tenere_V2; con + tenere
|
||||
contingere_V = mkV "contingere" "contingo" "contigi" "contectum"; -- con + tangere?
|
||||
continuatio_N = mkN "continuatio" "continuationis" feminine;
|
||||
continuus_A = mkA "continuus";
|
||||
contra_Adv = ss "contra";
|
||||
-- contrahere_V2 = -- prefixVerb2 "con" trahere_V2; -- con + trahere
|
||||
contrarius_A = mkA "contrarius";
|
||||
contumelia_N = mkN "contumelia";
|
||||
convallis_N = mkN "convallis" "convallis" feminine;
|
||||
convenire_V = prefixVerb "con" venire_V; -- missing convenerant, convenerat, convenerunt, convenisse, convenissent, convenisset, conventu, conventus
|
||||
conversare_V = mkV "conversare";
|
||||
convertere_V = prefixVerb "con" vertere_V; -- con + vertere
|
||||
convincere_V = prefixVerb "con" vincere_V; -- con + vincere
|
||||
convocare_V = prefixVerb "con" vocare_V; -- con + vocare
|
||||
copia_N = mkN "copia";
|
||||
copiosus_A = mkA "copiosus";
|
||||
copula_N = mkN "copula";
|
||||
cora_N = mkN "cora";
|
||||
corona_N = mkN "corona";
|
||||
corpus_N = mkN "corpus" "corporis" neuter;
|
||||
cos_N = mkN "cos" "cotis" feminine;
|
||||
cotidianus_A = mkA "cotidianus";
|
||||
cotidie_Adv = ss "cotidie";
|
||||
Cotta_PN = mkPN (lin N (singularN (mkN "Cotta")));
|
||||
crassitudo_N = mkN "crassitudo" "crassitudinis" feminine;
|
||||
Crassus_PN = mkPN (lin N (singularN (mkN "Crassus")));
|
||||
cratis_N = mkN "cratis" "cratis" feminine;
|
||||
creare_V = mkV "creare";
|
||||
creber_A = mkA "creber";
|
||||
credere_V = mkV "credere" "credo" "credidi" "creditum";
|
||||
cremare_V = mkV "cremare";
|
||||
crescere_V = mkV "crescere" "cresco" "crevi" "cretum";
|
||||
Creta_N = mkN "Creta";
|
||||
cruciare_V = mkV "cruciare";
|
||||
cruciatus_N = mkN "cruciatus" "cruciatus" masculine;
|
||||
crudelitas_N = mkN "crudelitas" "crudelitatis" feminine;
|
||||
crudeliter_Adv = ss "crudeliter"; -- comparison?
|
||||
culmen_N = mkN "culmen" "culminis" neuter;
|
||||
culpa_N = mkN "culpa";
|
||||
cultura_N = mkN "cultura";
|
||||
cultus_N = mkN "cultus" "cultus" masculine;
|
||||
cum_Prep = mkPrep "cum" Abl;
|
||||
cunctari_V = mkV "cunctari";
|
||||
cunctatio_N = mkN "cunctatio" "cunctationis" feminine;
|
||||
cunctus_A = mkA "cunctus";
|
||||
cuniculus_N = mkN "cuniculus";
|
||||
cupere_V = mkV "cupere" "cupio" "cupivi" "cupitum";
|
||||
cupiditas_N = mkN "cupiditas" "cupiditatis" feminine;
|
||||
cupidus_A = mkA "cupidus";
|
||||
cur_Adv = ss "cur";
|
||||
cura_N = mkN "cura";
|
||||
curare_V = mkV "curare"; -- missing curasset
|
||||
currere_V = mkV "currere" "curro" "cucurri" "cursum";
|
||||
currus_N = mkN "currus" "currus" masculine;
|
||||
custodia_N = mkN "custodia";
|
||||
damnare_V = mkV "damnare";
|
||||
damnatus_A = mkA "damnatus";
|
||||
dare_V = mkV "dare" "do" "dedi" "datum";
|
||||
datum_N = mkN "datum";
|
||||
de_Prep = mkPrep "de" Abl;
|
||||
debere_VV = StructuralLat.must_VV;
|
||||
ducere_V = mkV "ducere" "duco" "duxi" "ductum" ;
|
||||
equitare_V = mkV "equitare";
|
||||
ferre_V = fixFerre (mkVerb "ferre" "fer" "fer" "fera" "fereba" "ferre" "fere" "fer" "tul" "tul" "tuleri" "tulera" "tulisse" "tuleri" "lat");
|
||||
iacere_V = mkV "iacere" "iacio" "ieci" "iactum";
|
||||
ire_V = LexiconLat.go_V;
|
||||
-- ne_an_Conj = mkConj (BIND ++ "ne") "an" Sg;
|
||||
-- nonne_an_Conj = mkConj "nonne" "an" Sg;
|
||||
-- num_an_Conj = mkConj "num" "an" Sg;
|
||||
oriri_V = mkV "oriri" "orior" nonExist "ortus";
|
||||
qui_IP = StructuralLat.whatSg_IP;
|
||||
sistere_1_V = mkV "sistere" "sisto" "stiti" "statum";
|
||||
sistere_2_V = mkV "sistere" "sisto" "steti" "statum";
|
||||
specere_V = mkV "specere" "speco" "spexi" "spectum";
|
||||
stare_V = LexiconLat.stand_V;
|
||||
statuere_V = mkV "statuere" "statuo" "statui" "statutum";
|
||||
tenere_V2 = LexiconLat.hold_V2;
|
||||
texere_V = mkV "texere" "texo" "texui" "textum";
|
||||
trahere_V2 = LexiconLat.pull_V2;
|
||||
-- utrum_an_Conj = mkConj "utrum" "an" Sg;
|
||||
venire_V = LexiconLat.come_V;
|
||||
vertere_V = mkV "vertere" "verto" "verti" "versum";
|
||||
vincere_V = mkV "vincere" "vinco" "vici" "victum";
|
||||
vocare_V = mkV "vocare";
|
||||
oper
|
||||
fixFerre : Verb -> Verb =
|
||||
\ferre ->
|
||||
{
|
||||
act = table
|
||||
{
|
||||
(VAct VSim (VPres VInd) Sg P2) => "fers";
|
||||
(VAct VSim (VPres VInd) Sg P3) => "fert";
|
||||
(VAct VSim (VPres VInd) Pl P1) => "ferimus";
|
||||
(VAct VSim (VPres VInd) Pl P2) => "fertis";
|
||||
rest => ferre.act ! rest
|
||||
};
|
||||
ger = ferre.ger;
|
||||
geriv = ferre.geriv;
|
||||
imp = table
|
||||
{
|
||||
(VImp1 Sg) => "fer";
|
||||
(VImp1 Pl) => "ferte";
|
||||
(VImp2 Sg P2) => "ferto";
|
||||
(VImp2 Sg P3) => "ferto";
|
||||
(VImp2 Pl P2) => "fertote";
|
||||
rest => ferre.imp ! rest
|
||||
};
|
||||
inf = ferre.inf;
|
||||
part = ferre.part;
|
||||
pass = table
|
||||
{
|
||||
VPass (VPres VInd) Sg P2 => "ferris";
|
||||
VPass (VPres VInd) Sg P3 => "fertur";
|
||||
rest => ferre.pass ! rest
|
||||
};
|
||||
sup = ferre.sup;
|
||||
|
||||
|
||||
} ;
|
||||
}
|
||||
417
src/latin/ExtraLexCaesarAbs.gf
Normal file
417
src/latin/ExtraLexCaesarAbs.gf
Normal file
@@ -0,0 +1,417 @@
|
||||
abstract ExtraLexCaesarAbs = Cat ** {
|
||||
fun
|
||||
a_Prep : Prep;
|
||||
ab_Prep : Prep;
|
||||
abdere_V : V;
|
||||
abducere_V : V;
|
||||
abesse_V : V;
|
||||
abicere_V : V;
|
||||
abscisus_A : A;
|
||||
absens_A : A;
|
||||
absimilis_A : A;
|
||||
abstinere_V2 : V2;
|
||||
abstrahere_V2 : V2;
|
||||
ac_Conj : Conj ;
|
||||
accedere_V : V;
|
||||
accendere_V : V;
|
||||
accidere_V : V;
|
||||
accipere_V : V;
|
||||
acclivis_A : A;
|
||||
acclivitas_N : N;
|
||||
accommodare_V : V;
|
||||
accommodatus_A : A;
|
||||
accurrere_V : V;
|
||||
accusare_V : V;
|
||||
acervus_N : N;
|
||||
acies_N : N;
|
||||
acriter_Adv : Adv;
|
||||
ad_Prep : Prep;
|
||||
adaequare_V : V;
|
||||
adamare_V2 : V2;
|
||||
adducere_V : V;
|
||||
adequitare_V : V;
|
||||
adesse_V : V;
|
||||
adferre_V : V;
|
||||
adfectus_A : A;
|
||||
adfectus_N : N;
|
||||
adficere_V : V;
|
||||
adfigere_V : V;
|
||||
adfinitas_N : N;
|
||||
adflictare_V : V;
|
||||
adflictus_A : A;
|
||||
adgredi_V : V;
|
||||
adgregare_V : V;
|
||||
adhibere_V : V;
|
||||
adhuc_Adv : Adv;
|
||||
Adiatunnus_PN : PN;
|
||||
adicere_V : V;
|
||||
adigere_V : V;
|
||||
adire_V : V;
|
||||
aditus_N : N;
|
||||
adiungere_V : V;
|
||||
adiuvare_V : V;
|
||||
administrare_V : V;
|
||||
admirari_V : V;
|
||||
admittere_V : V;
|
||||
admodum_Adv : Adv;
|
||||
adoriri_V : V;
|
||||
adpellere_V : V;
|
||||
adpetere_V : V;
|
||||
adpropinquare_V : V;
|
||||
adpulsare_V : V;
|
||||
adsciscere_V : V;
|
||||
adsuere_V : V;
|
||||
adsuefacere_V : V;
|
||||
adulescentia_N : N;
|
||||
adulescentulus_N : N;
|
||||
advenire_V : V;
|
||||
adventus_N : N;
|
||||
advertere_V : V;
|
||||
aedificare_V : V;
|
||||
aedificium_N : N;
|
||||
aeger_A : A;
|
||||
aegre_Adv : Adv;
|
||||
Aemilius_PN : PN;
|
||||
aequaliter_Adv : Adv;
|
||||
aequare_V : V;
|
||||
aequinoctium_N : N;
|
||||
aequitas_N : N;
|
||||
aequum_N : N;
|
||||
aequus_A : A;
|
||||
aerarius_A : A;
|
||||
aerarius_N : N;
|
||||
aer_f_N : N;
|
||||
aer_m_N : N;
|
||||
aes_N : N;
|
||||
aestas_N : N;
|
||||
aestimare_V : V;
|
||||
aestuarium_N : N;
|
||||
aestus_N : N;
|
||||
aetas_N : N;
|
||||
-- afferre_V : V;
|
||||
ager_N : N;
|
||||
agere_V : V;
|
||||
agger_N : N;
|
||||
agmen_N : N;
|
||||
alacer_A : A;
|
||||
alacritas_N : N;
|
||||
alarius_A : A;
|
||||
-- alduas_??? : ???;
|
||||
alere_1_V : V;
|
||||
alere_2_V : V;
|
||||
alienus_A : A;
|
||||
alii_Conj : Conj;
|
||||
aliquam_Adv : Adv;
|
||||
aliquanto_Adv : Adv;
|
||||
-- aliqui_Pron : Pron;
|
||||
aliquis_Pron : Pron;
|
||||
aliter_Adv : Adv;
|
||||
alium_N : N;
|
||||
alius_A : A;
|
||||
Allobroges_PN : PN;
|
||||
Alpes_PN : PN;
|
||||
alter_A : A;
|
||||
alterare_V : V;
|
||||
altitudo_N : N;
|
||||
altus_A : A;
|
||||
aluta_N : N;
|
||||
Ambarri_PN : PN;
|
||||
Ambiani_PN : PN;
|
||||
Ambiliati_PN : PN;
|
||||
Ambivariti_PN : PN;
|
||||
amentia_N : N;
|
||||
amicitia_N : N;
|
||||
amicus_A : A;
|
||||
amittere_V : V;
|
||||
amplificare_V : V;
|
||||
amplitudo_N : N;
|
||||
amplus_A : A;
|
||||
an_Conj : Conj;
|
||||
an_an_Conj : Conj;
|
||||
anceps_A : A;
|
||||
ancora_N : N;
|
||||
Andebrogius_PN : PN;
|
||||
Andes_PN : PN;
|
||||
angustiare_V : V;
|
||||
angustia_N : N;
|
||||
animadvertere_V : V;
|
||||
animus_N : N;
|
||||
annuus_A : A;
|
||||
ante_Adv : Adv;
|
||||
ante_Prep : Prep;
|
||||
antea_Adv : Adv;
|
||||
antecedere_V : V;
|
||||
antemna_N : N;
|
||||
anteponere_V : V;
|
||||
antiquitus_Adv : Adv;
|
||||
antiquus_A : A;
|
||||
aperire_V : V;
|
||||
apertare_V : V;
|
||||
appellare_V : V;
|
||||
Aprilis_PN : PN;
|
||||
aptus_A : A;
|
||||
apud_Prep : Prep;
|
||||
aquatio_N : N;
|
||||
aquila_N : N;
|
||||
Aquileia_PN : PN;
|
||||
Aquitanus_N : N;
|
||||
Aquitania_PN : PN;
|
||||
Arar_PN : PN;
|
||||
arbitrari_V : V;
|
||||
arbitrium_N : N;
|
||||
arcessere_V : V;
|
||||
arduus_A : A;
|
||||
aries_N : N;
|
||||
Ariovistus_PN : PN;
|
||||
armatus_A : A;
|
||||
arma_N : N;
|
||||
armamentum_N : N;
|
||||
armare_V : V;
|
||||
armatura_N : N;
|
||||
armus_N : N;
|
||||
arroganter_Adv : Adv;
|
||||
arrogantia_N : N;
|
||||
artus_A : A;
|
||||
Arverni_PN : PN;
|
||||
arx_N : N;
|
||||
ascendere_V : V;
|
||||
at_Conj : Conj;
|
||||
atque_Conj : Conj ;
|
||||
Atrebates_PN : PN;
|
||||
attingere_V : V;
|
||||
attribuere_V : V;
|
||||
Atuatuci_PN : PN;
|
||||
auctor_N : N;
|
||||
auctorare_V : V;
|
||||
auctoritas_N : N;
|
||||
auctus_A : A;
|
||||
audacter_Adv : Adv;
|
||||
audax_A : A;
|
||||
audere_V : V;
|
||||
audire_V : V;
|
||||
auditio_N : N;
|
||||
augere_V : V;
|
||||
Aulerci_PN : PN;
|
||||
Auriga_PN : PN;
|
||||
Aurunculeius_PN : PN;
|
||||
Ausci_PN : PN;
|
||||
aut_Conj : Conj;
|
||||
autem_Conj : Conj;
|
||||
auxiliare_V : V;
|
||||
auxilium_N : N;
|
||||
avaritia_N : N;
|
||||
avertere_V : V;
|
||||
avus_N : N;
|
||||
Axona_PN : PN;
|
||||
baculus_N : N;
|
||||
Baleares_PN : PN;
|
||||
barbarus_A : A;
|
||||
barbarus_N : N;
|
||||
batavus_A : A;
|
||||
Belgae_PN : PN;
|
||||
bellare_V : V;
|
||||
bellicosus_A : A;
|
||||
Bellovaci_PN : PN;
|
||||
bellum_N : N;
|
||||
bellus_A : A;
|
||||
bene_Adv : Adv;
|
||||
beneficium_N : N;
|
||||
Bibrax_PN : PN;
|
||||
biduum_N : N;
|
||||
biduus_A : A;
|
||||
biennis_A : A;
|
||||
biennium_N : N;
|
||||
binus_A : A;
|
||||
bipedalis_A : A;
|
||||
bipertitus_A :A;
|
||||
bis_Adv : Adv;
|
||||
Biturix_PN : PN;
|
||||
-- boc ???
|
||||
Boduognatus_PN : PN;
|
||||
Boi_PN : PN;
|
||||
bonitas_N : N;
|
||||
bracchium_N : N;
|
||||
Bratuspantium_PN : PN;
|
||||
brevi_Adv : Adv;
|
||||
breviare_V : V;
|
||||
brevis_A : A;
|
||||
brevitas_N : N;
|
||||
Britannia_PN : PN;
|
||||
britannus_A : A;
|
||||
Brutus_PN : PN;
|
||||
cadaver_N : N;
|
||||
cadere_V : V;
|
||||
Caesar_PN : PN;
|
||||
caespes_N : N;
|
||||
calamitas_N : N;
|
||||
calare_V : V;
|
||||
calo_N : N;
|
||||
campus_N : N;
|
||||
capere_V : V;
|
||||
captivus_A : A;
|
||||
captivus_N : N;
|
||||
captus_N : N;
|
||||
carina_N : N;
|
||||
carpere_V : V;
|
||||
carrus_N : N;
|
||||
castellum_N : N;
|
||||
castra_N : N;
|
||||
casus_N : N;
|
||||
catena_N : N;
|
||||
causa_N : N;
|
||||
causa_Prep : Prep; -- Postposition
|
||||
cavare_V : V;
|
||||
cavere_V : V;
|
||||
cedere_V : V;
|
||||
celare_V : V;
|
||||
celer_A : A;
|
||||
celeritas_N : N;
|
||||
celeriter_Adv : Adv;
|
||||
censere_V : V;
|
||||
census_N : N;
|
||||
centuriare_V : V;
|
||||
centurio_N : N;
|
||||
cernere_V : V;
|
||||
certare_V : V;
|
||||
certamen_N : N;
|
||||
certus_A : A;
|
||||
ceterus_A : A;
|
||||
cibarius_A : A;
|
||||
cibus_N : N;
|
||||
ciere_V : V;
|
||||
cingere_V : V;
|
||||
circinare_V : V;
|
||||
circinus_N : N;
|
||||
circiter_Adv : Adv;
|
||||
circiter_Prep : Prep;
|
||||
circuitus_N : N;
|
||||
circum_Adv : Adv;
|
||||
circum_Prep : Prep;
|
||||
circumdare_V : V;
|
||||
circumducere_V : V;
|
||||
circumiectus_A : A;
|
||||
circumire_V : V;
|
||||
circummunire_V : V;
|
||||
circumsistere_1_V : V;
|
||||
-- circumsistere_2_V : V;
|
||||
circumvenire_V : V;
|
||||
cis_Prep : Prep;
|
||||
citare_V : V;
|
||||
citer_A : A;
|
||||
citra_Adv : Adv;
|
||||
citus_A : A;
|
||||
civitas_N : N;
|
||||
colere_V : V;
|
||||
conferre_V : V;
|
||||
---
|
||||
conspicere_V : V;
|
||||
conspirare_V : V;
|
||||
constanter_Adv : Adv;
|
||||
constantia_N : N;
|
||||
constare_V : V;
|
||||
-- consternare_V : V;
|
||||
consternere_V : V;
|
||||
constituere_V : V;
|
||||
constitutum_N : N;
|
||||
consuere_V : V;
|
||||
consuescere_V : V;
|
||||
consuetudo_N : N;
|
||||
consul_N : N;
|
||||
consulatus_N : N;
|
||||
consulere_V : V;
|
||||
consultare_V : V;
|
||||
consultum_N : N;
|
||||
contemptio_N : N;
|
||||
contemptus_A : A;
|
||||
contemptus_N : N;
|
||||
contendere_V : V;
|
||||
contentio_N : N;
|
||||
contexere_V : V;
|
||||
continens_N : N;
|
||||
continenter_Adv : Adv;
|
||||
continere_V2 : V2;
|
||||
contingere_V : V;
|
||||
continuatio_N : N;
|
||||
continuus_A : A;
|
||||
contra_Adv : Adv;
|
||||
contrahere_V2 : V2;
|
||||
contrarius_A : A;
|
||||
contumelia_N : N;
|
||||
convallis_N : N;
|
||||
convenire_V : V;
|
||||
conversare_V : V;
|
||||
convertere_V : V;
|
||||
convincere_V : V;
|
||||
convocare_V : V;
|
||||
cooriri_V : V;
|
||||
copia_N : N;
|
||||
copiosus_A : A;
|
||||
copula_N : N;
|
||||
cora_N : N;
|
||||
corona_N : N;
|
||||
corpus_N : N;
|
||||
cos_N : N;
|
||||
cotidianus_A : A;
|
||||
cotidie_Adv : Adv;
|
||||
Cotta_PN : PN;
|
||||
crassitudo_N : N;
|
||||
Crassus_PN : PN;
|
||||
cratis_N : N;
|
||||
creare_V : V;
|
||||
creber_A : A;
|
||||
credere_V : V;
|
||||
cremare_V : V;
|
||||
crescere_V : V;
|
||||
Creta_N : N;
|
||||
cruciare_V : V;
|
||||
cruciatus_N : N;
|
||||
crudelitas_N : N;
|
||||
crudeliter_Adv : Adv;
|
||||
culmen_N : N;
|
||||
culpa_N : N;
|
||||
cultura_N : N;
|
||||
cultus_N : N;
|
||||
cum_Prep : Prep;
|
||||
cunctari_V : V;
|
||||
cunctatio_N : N;
|
||||
cunctus_A : A;
|
||||
cuniculus_N : N;
|
||||
cupere_V : V;
|
||||
cupiditas_N : N;
|
||||
cupidus_A : A;
|
||||
cur_Adv : Adv;
|
||||
cura_N : N;
|
||||
curare_V : V;
|
||||
currere_V : V;
|
||||
currus_N : N;
|
||||
custodia_N : N;
|
||||
damnare_V : V;
|
||||
damnatus_A : A;
|
||||
dare_V : V;
|
||||
datum_N : N;
|
||||
de_Prep : Prep;
|
||||
debere_VV : VV;
|
||||
ducere_V : V;
|
||||
equitare_V : V;
|
||||
ferre_V : V;
|
||||
iacere_V : V;
|
||||
ire_V : V;
|
||||
ne_an_Conj : Conj;
|
||||
nonne_an_Conj : Conj;
|
||||
num_an_Conj : Conj;
|
||||
oriri_V : V;
|
||||
qui_IP : IP;
|
||||
sistere_1_V : V;
|
||||
sistere_2_V : V;
|
||||
specere_V : V;
|
||||
stare_V : V;
|
||||
statuere_V : V;
|
||||
tenere_V2 : V2;
|
||||
texere_V : V;
|
||||
trahere_V2 : V2;
|
||||
utrum_an_Conj : Conj;
|
||||
venire_V : V;
|
||||
vertere_V : V;
|
||||
vincere_V : V;
|
||||
vocare_V : V;
|
||||
}
|
||||
@@ -1,2 +1,28 @@
|
||||
concrete ExtraLexiconLat of ExtraLexiconLatAbs = {
|
||||
concrete ExtraLexiconLat of ExtraLexiconLatAbs = CatLat ** open ParadigmsLat in {
|
||||
lin
|
||||
friend_Fem_N = mkN "amica" ; -- -i/-ae m./f. (Langenscheidts)
|
||||
baby_Fem_N = mkN "infans" "infantis" feminine ; -- Ranta; -antis m./f. (Langenscheidts)
|
||||
blue_Var_A = mkA "caeruleus" ; -- 3 (Langenscheidts)
|
||||
boss_Fem_N = mkN "dux" "ducis" feminine ; -- ducis m./f. (Langenscheidts)
|
||||
bread_Neutr_N = mkN "pane" "panis" neuter ; -- -is m./n. (Langenscheidts)
|
||||
cat_Var_N = mkN "felis" "felis" feminine ; -- -is f. (Langenscheidts)
|
||||
cousin_Fem_N = mkN "consobrina" ; -- -i/-ae m./f. (Langenscheidts)
|
||||
cow_Fem_N = mkN "bos" "bovis" feminine ; -- bovis (gen. pl. boum, dat./abl. pl. bobus/bubus) m./f. (Langenscheidts)
|
||||
dog_Fem_N = mkN "canis" "canis" feminine ; -- -is m./f. (Langenscheidts)
|
||||
enemy_Fem_N = mkN "hostis" "hostis" feminine ; -- -is m./f. (Langenscheidts)
|
||||
policeman_Fem_N = mkN "custos" "custodis" feminine ; -- -odis m./f. (Langenscheidts)
|
||||
priest_Fem_N = mkN "sacerdos" "sacerdotis" feminine ; -- -dotis m./f. (Langenscheidts)
|
||||
snake_Fem_N = mkN "serpens" "serpentis" feminine ; -- -entis m./f. (Langenscheidts)
|
||||
student_Fem_N = mkN "discipula" ; -- -i/-ae m./f. (Langenscheidts)
|
||||
switch8on_Var_V2 = mkV2 (mkV "exstinguere" ) ; -- -ingo, -inxi, -inctum 3 (Langenscheidts)
|
||||
bark_Fem_N = mkN "cortex" "corticis" feminine ; -- -icis m./(f.) (Langenscheidts)
|
||||
blood_Var_N = mkN "sangis" "sanginis" masculine ; -- -inis m. (Langenscheidts)
|
||||
day_Fem_N = mkN "dies" "diei" feminine ; -- -ei m./f. (Langenscheidts)
|
||||
horn_Var_N = mkN "cornu" "cornus" neuter ; -- -us n. (Langenscheidts)
|
||||
liver_Var_N = mkN "iocur" "iocineris" neuter ; -- iecoris/iocineris n. (Langenscheidts)
|
||||
louse_Fem_N = mkN "pedis" "pedis" feminine ; -- -is m./f. (Langenscheidts)
|
||||
nose_Neutr_N = mkN "nasum" ; -- -i m./n. (Langenscheidts)
|
||||
rope_Fem_N = mkN "funis" "funis" feminine ; -- -is m.(/f.) (Langenscheidts)
|
||||
salt_Neutr_N = mkN "sal" "salis" neuter ; -- salis m./n. (Langenscheidts)
|
||||
stick_Neutr_N = mkN "baculum" ; -- -i n./m.
|
||||
};
|
||||
@@ -1,3 +1,29 @@
|
||||
abstract ExtraLexiconLatAbs = {
|
||||
|
||||
abstract ExtraLexiconLatAbs = Cat, Lexicon, ExtraLexCaesarAbs ** {
|
||||
fun
|
||||
-- Ambigous entries from main lexicon
|
||||
friend_Fem_N : N ;
|
||||
baby_Fem_N : N ;
|
||||
blue_Var_A : A ;
|
||||
boss_Fem_N : N ;
|
||||
bread_Neutr_N : N ;
|
||||
cat_Var_N : N ;
|
||||
cousin_Fem_N : N ;
|
||||
cow_Fem_N : N ;
|
||||
dog_Fem_N : N ;
|
||||
enemy_Fem_N : N ;
|
||||
policeman_Fem_N : N ;
|
||||
priest_Fem_N : N ;
|
||||
snake_Fem_N : N ;
|
||||
student_Fem_N : N ;
|
||||
switch8on_Var_V2 : V2 ;
|
||||
bark_Fem_N : N ;
|
||||
blood_Var_N : N ;
|
||||
day_Fem_N : N ;
|
||||
horn_Var_N : N ;
|
||||
liver_Var_N : N ;
|
||||
louse_Fem_N : N ;
|
||||
nose_Neutr_N : N ;
|
||||
rope_Fem_N : N ;
|
||||
salt_Neutr_N : N ;
|
||||
stick_Neutr_N : N ;
|
||||
};
|
||||
@@ -11,8 +11,8 @@ concrete GrammarLat of Grammar =
|
||||
-- RelativeLat,
|
||||
ConjunctionLat,
|
||||
PhraseLat,
|
||||
TextX,
|
||||
TenseX,
|
||||
TextX-[Adv],
|
||||
TenseX-[Adv],
|
||||
StructuralLat
|
||||
-- IdiomLat
|
||||
** {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--concrete IdiomLat of Idiom = CatLat ** open Prelude, ResLat in {
|
||||
concrete IdiomLat of Idiom = CatLat ** open Prelude, ResLat in {
|
||||
--
|
||||
-- flags optimize=all_subs ;
|
||||
--
|
||||
@@ -26,5 +26,4 @@
|
||||
--
|
||||
-- ImpPl1 vp = {s = "let's" ++ infVP True vp (AgP1 Pl)} ;
|
||||
--
|
||||
--}
|
||||
--
|
||||
}
|
||||
@@ -6,171 +6,16 @@ concrete IrregLat of IrregLatAbs = CatLat ** open Prelude, ParadigmsLat, ResLat
|
||||
--
|
||||
|
||||
lin
|
||||
-- Bayer-Lindauer 93 1
|
||||
be_V =
|
||||
let
|
||||
pres_stem = "s" ;
|
||||
pres_ind_base = "su" ;
|
||||
pres_conj_base = "si" ;
|
||||
impf_ind_base = "era" ;
|
||||
impf_conj_base = "esse" ;
|
||||
fut_I_base = "eri" ;
|
||||
imp_base = "es" ;
|
||||
perf_stem = "fu" ;
|
||||
perf_ind_base = "fu" ;
|
||||
perf_conj_base = "fueri" ;
|
||||
pqperf_ind_base = "fuera" ;
|
||||
pqperf_conj_base = "fuisse" ;
|
||||
fut_II_base = "fueri" ;
|
||||
part_stem = "fut" ;
|
||||
verb = mkVerb "esse" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act =
|
||||
table {
|
||||
VAct VSim (VPres VInd) n p =>
|
||||
table Number [ table Person [ "sum" ; "es" ; "est" ] ;
|
||||
table Person [ "sumus" ; "estis" ; "sunt" ]
|
||||
] ! n ! p ;
|
||||
a => verb.act ! a
|
||||
};
|
||||
pass =
|
||||
\\_ => nonExist ; -- no passive forms
|
||||
inf =
|
||||
verb.inf ;
|
||||
imp =
|
||||
table {
|
||||
VImp1 Sg => "es" ;
|
||||
VImp1 Pl => "este" ;
|
||||
VImp2 Pl P2 => "estote" ;
|
||||
a => verb.imp ! a
|
||||
} ;
|
||||
sup =
|
||||
\\_ => nonExist ; -- no supin forms
|
||||
ger =
|
||||
\\_ => nonExist ; -- no gerund forms
|
||||
geriv =
|
||||
\\_ => nonExist ; -- no gerundive forms
|
||||
part = table {
|
||||
VActFut =>
|
||||
verb.part ! VActFut ;
|
||||
VActPres =>
|
||||
\\_ => nonExist ; -- no such participle
|
||||
VPassPerf =>
|
||||
\\_ => nonExist -- no such participle
|
||||
}
|
||||
} ;
|
||||
be_V = esseAux ;
|
||||
|
||||
-- Bayer-Lindauer 93 2.2
|
||||
can_VV =
|
||||
let
|
||||
pres_stem = "pos" ;
|
||||
pres_ind_base = "pos" ;
|
||||
pres_conj_base = "possi" ;
|
||||
impf_ind_base = "potera" ;
|
||||
impf_conj_base = "posse" ;
|
||||
fut_I_base = "poteri" ;
|
||||
imp_base = "" ;
|
||||
perf_stem = "potu" ;
|
||||
perf_ind_base = "potu" ;
|
||||
perf_conj_base = "potueri" ;
|
||||
pqperf_ind_base = "potuera" ;
|
||||
pqperf_conj_base = "potuisse" ;
|
||||
fut_II_base = "potueri" ;
|
||||
part_stem = "" ;
|
||||
verb = mkVerb "posse" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act =
|
||||
table {
|
||||
VAct VSim (VPres VInd) n p =>
|
||||
table Number [ table Person [ "possum" ; "potes" ; "potest" ] ;
|
||||
table Person [ "possumus" ; "potestis" ; "possunt" ]
|
||||
] ! n ! p ;
|
||||
a => verb.act ! a
|
||||
} ;
|
||||
pass =
|
||||
\\_ => nonExist ; -- no passive forms
|
||||
inf =
|
||||
table {
|
||||
VInfActFut _ => nonExist ;
|
||||
a => verb.inf ! a
|
||||
} ;
|
||||
imp =
|
||||
\\_ => nonExist ;
|
||||
sup =
|
||||
\\_ => nonExist ;
|
||||
ger =
|
||||
\\_ => nonExist ;
|
||||
geriv =
|
||||
\\_ => nonExist ;
|
||||
part = table {
|
||||
VActFut =>
|
||||
\\_ => nonExist ; -- no such participle
|
||||
VActPres =>
|
||||
\\_ => nonExist ; -- no such participle
|
||||
VPassPerf =>
|
||||
\\_ => nonExist -- no such participle
|
||||
} ;
|
||||
isAux = False
|
||||
};
|
||||
can_V =
|
||||
posseAux ;
|
||||
|
||||
|
||||
-- Bayer-Lindauer 94
|
||||
bring_V =
|
||||
let
|
||||
pres_stem = "fer" ;
|
||||
pres_ind_base = "fer" ;
|
||||
pres_conj_base = "fera" ;
|
||||
impf_ind_base = "fereba" ;
|
||||
impf_conj_base = "ferre" ;
|
||||
fut_I_base = "fere" ;
|
||||
imp_base = "fer" ;
|
||||
perf_stem = "tul" ;
|
||||
perf_ind_base = "tul" ;
|
||||
perf_conj_base = "tuleri" ;
|
||||
pqperf_ind_base = "tulera" ;
|
||||
pqperf_conj_base = "tulisse" ;
|
||||
fut_II_base = "tuleri" ;
|
||||
part_stem = "lat" ;
|
||||
verb = mkVerb "ferre" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act =
|
||||
table {
|
||||
VAct VSim (VPres VInd) n p =>
|
||||
table Number [ table Person [ "fero" ; "fers" ; "fert" ] ;
|
||||
table Person [ "ferimus" ; "fertis" ; "ferunt" ]
|
||||
] ! n ! p ;
|
||||
a => verb.act ! a
|
||||
} ;
|
||||
pass =
|
||||
table {
|
||||
VPass (VPres VInd) n p =>
|
||||
table Number [ table Person [ "feror" ; "ferris" ; "fertur" ] ;
|
||||
table Person [ "ferimur" ; "ferimini" ; "feruntur" ]
|
||||
] ! n ! p ;
|
||||
a => verb.pass ! a
|
||||
} ;
|
||||
inf =
|
||||
verb.inf ;
|
||||
imp =
|
||||
table {
|
||||
VImp1 n => table Number [ "fer" ; "ferte" ] ! n ;
|
||||
VImp2 Sg ( P2 | P3 ) => "ferto" ;
|
||||
VImp2 Pl P2 => "fertote" ;
|
||||
a => verb.imp ! a
|
||||
} ;
|
||||
sup =
|
||||
verb.sup ;
|
||||
ger =
|
||||
verb.ger ;
|
||||
geriv =
|
||||
verb.geriv ;
|
||||
part = verb.part ;
|
||||
};
|
||||
ferreAux ;
|
||||
|
||||
-- Bayer-Lindauer 95
|
||||
want_V =
|
||||
@@ -204,9 +49,9 @@ concrete IrregLat of IrregLatAbs = CatLat ** open Prelude, ParadigmsLat, ResLat
|
||||
pass =
|
||||
\\_ => nonExist ;
|
||||
ger =
|
||||
verb.ger ;
|
||||
\\_ => nonExist ;
|
||||
geriv =
|
||||
verb.geriv ;
|
||||
\\_ => nonExist ;
|
||||
imp =
|
||||
\\_ => nonExist ;
|
||||
inf =
|
||||
@@ -220,7 +65,7 @@ concrete IrregLat of IrregLatAbs = CatLat ** open Prelude, ParadigmsLat, ResLat
|
||||
\\_ => nonExist
|
||||
} ;
|
||||
sup =
|
||||
verb.sup ;
|
||||
\\_ => nonExist ;
|
||||
} ;
|
||||
|
||||
-- Bayer-Lindauer 96 1
|
||||
@@ -453,4 +298,155 @@ concrete IrregLat of IrregLatAbs = CatLat ** open Prelude, ParadigmsLat, ResLat
|
||||
} ;
|
||||
sup = \\_ => nonExist ; -- no such supine form
|
||||
} ;
|
||||
|
||||
not8want_V =
|
||||
let
|
||||
pres_stem = "nol" ;
|
||||
pres_ind_base = "nol" ;
|
||||
pres_conj_base = "noli" ;
|
||||
impf_ind_base = "noleba" ;
|
||||
impf_conj_base = "nolle" ;
|
||||
fut_I_base = "nole" ;
|
||||
imp_base = "nol" ;
|
||||
perf_stem = "nolu" ;
|
||||
perf_ind_base = "nolu" ;
|
||||
perf_conj_base = "nolueri" ;
|
||||
pqperf_ind_base = "noluera" ;
|
||||
pqperf_conj_base = "noluisse" ;
|
||||
fut_II_base = "nolueri" ;
|
||||
part_stem = "nolet" ;
|
||||
verb = mkVerb "nolle" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act =
|
||||
table {
|
||||
VAct VSim (VPres VInd) n p =>
|
||||
table Number [ table Person [ "nolo" ; "non vis" ; "non vult" ] ;
|
||||
table Person [ "nolumus" ; "non vultis" ; "nolunt" ]
|
||||
] ! n ! p ;
|
||||
a => verb.act ! a
|
||||
} ;
|
||||
pass =
|
||||
\\_ => nonExist ;
|
||||
ger =
|
||||
\\_ => nonExist ;
|
||||
geriv =
|
||||
\\_ => nonExist ;
|
||||
imp = table {
|
||||
VImp1 Sg => "noli" ;
|
||||
i => verb.imp ! i
|
||||
} ;
|
||||
inf = table {
|
||||
VInfActFut _ | VInfPassPres | VInfPassPerf _ | VinfPassFut => nonExist ;
|
||||
i => verb.inf ! i
|
||||
} ;
|
||||
part = table {
|
||||
VActFut =>
|
||||
\\_ => nonExist ;
|
||||
VActPres =>
|
||||
verb.part ! VActPres ;
|
||||
VPassPerf =>
|
||||
\\_ => nonExist
|
||||
} ;
|
||||
sup =
|
||||
\\_ => nonExist ;
|
||||
} ;
|
||||
|
||||
make_V =
|
||||
let
|
||||
pres_stem = "faci" ;
|
||||
pres_ind_base = "faci" ;
|
||||
pres_conj_base = "facia" ;
|
||||
impf_ind_base = "facieba" ;
|
||||
impf_conj_base = "facere" ;
|
||||
fut_I_base = "facie" ;
|
||||
imp_base = "faci" ;
|
||||
perf_stem = "fec" ;
|
||||
perf_ind_base = "fec" ;
|
||||
perf_conj_base = "feceri" ;
|
||||
pqperf_ind_base = "fecera" ;
|
||||
pqperf_conj_base = "fecisse" ;
|
||||
fut_II_base = "feceri" ;
|
||||
part_stem = "fact" ;
|
||||
verb = mkVerb "facere" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act = verb.act ;
|
||||
pass =
|
||||
table {
|
||||
VPass (VPres VInd) Sg P1 => "fio" ;
|
||||
VPass (VPres VInd) Pl P3 => "fiunt" ;
|
||||
VPass (VPres VInd) n p => "fi" + actPresEnding n p ;
|
||||
VPass (VPres VConj) n p => "fia" + actPresEnding n p ;
|
||||
VPass (VImpf VInd) n p => "fieba" + actPresEnding n p ;
|
||||
VPass (VImpf VConj) n p => "fiere" + actPresEnding n p ;
|
||||
VPass VFut Sg P1 => "fiam" ;
|
||||
VPass VFut n p => "fie" + actPresEnding n p
|
||||
} ;
|
||||
ger =
|
||||
verb.ger ;
|
||||
geriv =
|
||||
verb.geriv ;
|
||||
imp =
|
||||
table {
|
||||
VImp1 Sg => "fac" ;
|
||||
i => verb.imp ! i
|
||||
} ;
|
||||
inf =
|
||||
table {
|
||||
VInfActFut Masc => "facturus" ;
|
||||
VInfActFut Fem => "factura" ;
|
||||
VInfActFut Neutr => "facturum" ;
|
||||
VInfPassPres => "fieri" ;
|
||||
VInfPassPerf Masc => "factus" ;
|
||||
VInfPassPerf Fem => "facta" ;
|
||||
i => verb.inf ! i
|
||||
};
|
||||
part =
|
||||
verb.part ;
|
||||
sup =
|
||||
table {
|
||||
VSupAcc => "factum" ;
|
||||
VSupAbl => "factu"
|
||||
} ;
|
||||
} ;
|
||||
|
||||
give_V =
|
||||
let
|
||||
pres_stem = "da" ;
|
||||
pres_ind_base = "da" ;
|
||||
pres_conj_base = "de" ;
|
||||
impf_ind_base = "daba" ;
|
||||
impf_conj_base = "dare" ;
|
||||
fut_I_base = "dabi" ;
|
||||
imp_base = "da" ;
|
||||
perf_stem = "ded" ;
|
||||
perf_ind_base = "ded" ;
|
||||
perf_conj_base = "dederi" ;
|
||||
pqperf_ind_base = "dedera" ;
|
||||
pqperf_conj_base = "dedisse" ;
|
||||
fut_II_base = "dederi" ;
|
||||
part_stem = "dat" ;
|
||||
verb = mkVerb "dare" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act = verb.act ;
|
||||
pass =
|
||||
verb.pass ;
|
||||
ger =
|
||||
verb.ger ;
|
||||
geriv =
|
||||
verb.geriv ;
|
||||
imp =
|
||||
verb.imp ;
|
||||
inf = verb.inf ;
|
||||
part =
|
||||
verb.part ;
|
||||
sup =
|
||||
verb.sup ;
|
||||
} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
abstract IrregLatAbs = Cat ** {
|
||||
fun
|
||||
be_V : V ;
|
||||
can_VV : VV ;
|
||||
can_V : V ;
|
||||
bring_V : V ;
|
||||
want_V : V ;
|
||||
go_V : V;
|
||||
become_V : V;
|
||||
rain_V : V;
|
||||
hate_V : V;
|
||||
not8want_V : V ;
|
||||
make_V : V ;
|
||||
give_V : V ;
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
concrete LangLat of Lang =
|
||||
GrammarLat,
|
||||
ParadigmsLat,
|
||||
-- ConjunctionLat,
|
||||
LexiconLat
|
||||
-- ConstructionLat
|
||||
** {
|
||||
|
||||
flags startcat = Phr ; unlexer = text ; lexer = text ;
|
||||
|
||||
@@ -19,19 +19,21 @@ concrete LexiconLat of Lexicon = CatLat ** open
|
||||
NounLat,
|
||||
AdjectiveLat,
|
||||
VerbLat,
|
||||
Prelude in {
|
||||
Prelude,
|
||||
ExtraLat
|
||||
in {
|
||||
|
||||
flags
|
||||
optimize=values ;
|
||||
coding = utf8;
|
||||
lin
|
||||
airplane_N = mkN "aeroplanum" ; -- -i n. (http://la.wikipedia.org/wiki/A%C3%ABroplanum / Pons)
|
||||
answer_V2S = mkV2S ( mkV "respondere" ) R.Dat_Prep ; -- -spondeo, -spondi, -sponsum 2 (Langenscheidts) alicui; ad, contra, adversus aliquid (Stowasser)
|
||||
answer_V2S = mkV2S ( mkV "respondere" ) Dat_Prep ; -- -spondeo, -spondi, -sponsum 2 (Langenscheidts) alicui; ad, contra, adversus aliquid (Stowasser)
|
||||
apartment_N = mkN "domicilium" ; -- -i n. (Langenscheidts)
|
||||
apple_N = mkN "malum" ; -- -i n. (Langenscheidts)
|
||||
art_N = mkN "ars" "artis" feminine ; -- Ranta; artis f. (Langenscheidts)
|
||||
ask_V2Q = mkV2Q ( mkV "rogare" ) R.Acc_Prep ; -- rogo 1 (Langenscheidts) aliquem aliquid (Stowasser)
|
||||
baby_N = mkN "infans" "infantis" ( variants { feminine ; masculine } ); -- Ranta; -antis m./f. (Langenscheidts)
|
||||
ask_V2Q = mkV2Q ( mkV "rogare" ) Acc_Prep ; -- rogo 1 (Langenscheidts) aliquem aliquid (Stowasser)
|
||||
baby_N = mkN "infans" "infantis" masculine ; -- Ranta; -antis m./f. (Langenscheidts)
|
||||
bad_A = mkA "malus" ; -- Ranta; peior, pessimus 3 (Langenscheidts)
|
||||
bank_N = mkN "argentaria" ; -- -ae f. (http://la.wikipedia.org/wiki/Argentaria / Pons)
|
||||
beautiful_A = mkA "pulcher" ; -- -chra, -chrum (Langenscheidts)
|
||||
@@ -42,16 +44,16 @@ lin
|
||||
bike_N = mkN "birota" ; -- -ae f. (http://la.wikipedia.org/wiki/Birota / Pons)
|
||||
bird_N = mkN "avis" "avis" feminine ; -- Ranta; -is f. (Langenscheidts)
|
||||
black_A = mkA "niger" ; -- Ranta; -gra, -grum (Langenscheidts)
|
||||
blue_A = mkA ( variants { "caeruleus" ; "caerulus" } ) ; -- 3 (Langenscheidts)
|
||||
blue_A = mkA "caerulus" ; -- 3 (Langenscheidts)
|
||||
boat_N = mkN "navicula" ; -- -ae f. (Langenscheidts)
|
||||
book_N = mkN "liber"; -- Ranta; -bri m. (Langenscheidts)
|
||||
boot_N = mkN "calceus" ; -- -i m. (Langenscheidts)
|
||||
boss_N = mkN "dux" "ducis" ( variants { feminine ; masculine } ) ; -- ducis m./f. (Langenscheidts)
|
||||
boss_N = mkN "dux" "ducis" masculine ; -- ducis m./f. (Langenscheidts)
|
||||
boy_N = mkN "puer" "pueri" masculine ; -- -eri m. (Langenscheidts)
|
||||
bread_N = variants { (mkN "panis" "panis" masculine ) ; (mkN "pane" "panis" neuter ) } ; -- -is m./n. (Langenscheidts)
|
||||
bread_N = mkN "panis" "panis" masculine ; -- -is m./n. (Langenscheidts)
|
||||
break_V2 = mkV2 ( mkV "rumpere" "rumpo" "rupi" "ruptum" ) ; -- Ranta; 3 (Langenscheidts) aliquem (Bayer-Lindauer 110)
|
||||
broad_A = mkA "latus" ; -- 3 (Langenscheidts)
|
||||
brother_N2 = mkN2 ( mkN "frater" "fratris" masculine ) R.Gen_Prep; -- -tris m. (Langenscheidts) alicuius (Bayer-Lindauer 125.2)
|
||||
brother_N2 = mkN2 ( mkN "frater" "fratris" masculine ) Gen_Prep; -- -tris m. (Langenscheidts) alicuius (Bayer-Lindauer 125.2)
|
||||
brown_A = mkA "fulvus" ; -- 3 (Langenscheidts)
|
||||
butter_N = mkN "butyrum" ; -- -i n. (http://la.wikipedia.org/wiki/Butyrum / Pons)
|
||||
buy_V2 = mkV2 (mkV "emere") ; -- emo, emi, emptum 3 (Langenscheidts) (Stowasser) ab, de aliquo (Stowasser)
|
||||
@@ -60,7 +62,7 @@ lin
|
||||
cap_N = mkN "galerus" ; -- -i m. (Langenscheidts)
|
||||
car_N = mkN "autoreada" ; -- -ae f. (Pons / http://la.wikipedia.org/wiki/Autocinetum)
|
||||
carpet_N = mkN "stragulum" ; -- -i n. (Pons / http://la.wikipedia.org/wiki/Teges_pavimenti)
|
||||
cat_N = mkN ( variants {"feles" ; "felis" } ) "felis" feminine ; -- -is f. (Langenscheidts)
|
||||
cat_N = mkN "feles" "felis" feminine ; -- -is f. (Langenscheidts)
|
||||
ceiling_N = mkN "tegimentum" ; -- -i n. (Langenscheidts)
|
||||
chair_N = mkN "sedes" "sedis" feminine; -- -is f. (Langenscheidts)
|
||||
cheese_N = mkN "caseus" ; -- -i m. (Langenscheidts)
|
||||
@@ -75,29 +77,29 @@ lin
|
||||
come_V = mkV "venire" ; -- veno, veni, ventum 4 (Langenscheidts)
|
||||
computer_N = mkN "computatrum" ; -- -i n. (http://la.wikipedia.org/wiki/Computatrum / Pons)
|
||||
country_N = mkN "terra" ; -- -ae f. (Langenscheidts)
|
||||
cousin_N = mkN ( variants {"consobrinus" ; "consobrina" } ) ; -- -i/-ae m./f. (Langenscheidts)
|
||||
cow_N = mkN "bos" "bovis" ( variants { feminine ; masculine } ) ; -- bovis (gen. pl. boum, dat./abl. pl. bobus/bubus) m./f. (Langenscheidts)
|
||||
cousin_N = mkN "consobrinus" ; -- -i/-ae m./f. (Langenscheidts)
|
||||
cow_N = mkN "bos" "bovis" masculine ; -- bovis (gen. pl. boum, dat./abl. pl. bobus/bubus) m./f. (Langenscheidts)
|
||||
die_V = mkV "mori" "mortuus" "morturus"; -- morior, mortuus sum, morturus (Langenscheidts)
|
||||
dirty_A = mkA "sordidus" ; -- 3 (Langenscheidts)
|
||||
|
||||
distance_N3 = mkN3 (mkN "distantia") from_Prep to_Prep ; -- -ae f. (Langenscheidts) ab, ad aliquem; alicuius; aliquem (???)
|
||||
doctor_N = mkN "medicus" ; -- -i m. (Langenscheidts)
|
||||
dog_N = mkN "canis" "canis" ( variants { masculine ; feminine } ) ; -- -is m./f. (Langenscheidts)
|
||||
dog_N = mkN "canis" "canis" masculine ; -- -is m./f. (Langenscheidts)
|
||||
door_N = mkN "porta" ; -- -ae f. (Langenscheidts)
|
||||
drink_V2 = mkV2 (mkV "bibere") ; -- bibo, potum 3 (Langenscheidts) aliquem (Bayer-Lindauer 110)
|
||||
easy_A2V = mkA2V (mkA "facilis" "facile" ) for_Prep ; -- -e sup -illimus (Langenscheidts)
|
||||
eat_V2 = mkV2 (mkV "cenare") ; -- ceno 1 (Langenscheidts) aliquem (Bayer-Lindauer 110)
|
||||
empty_A = mkA "vacuus" ; -- 3 (Langenscheidts)
|
||||
enemy_N = mkN "hostis" "hostis" ( variants { masculine ; feminine } ) ; -- -is m./f. (Langenscheidts)
|
||||
enemy_N = mkN "hostis" "hostis" masculine ; -- -is m./f. (Langenscheidts)
|
||||
factory_N = mkN "officina" ; -- -ae f. (Langenscheidts)
|
||||
father_N2 = mkN2 (mkN "pater" "patris" masculine ) R.Gen_Prep ; -- -tris m. gen pl -um (Langenscheidts) alicuius (Bayer-Lindauer 125.2)
|
||||
father_N2 = mkN2 (mkN "pater" "patris" masculine ) Gen_Prep ; -- -tris m. gen pl -um (Langenscheidts) alicuius (Bayer-Lindauer 125.2)
|
||||
fear_VS = mkVS (mkV "timere") ; -- timeo, timui, --- 2 (Langenscheidts)
|
||||
find_V2 = mkV2 (mkV "reperire") ; -- reperio, repperi, repertum 4 (Langenscheidts) aliquem
|
||||
fish_N = mkN "piscis" "piscis" masculine ; -- -is m. (Langenscheidts)
|
||||
floor_N = mkN "pavimentum" ; -- -i n. (Langenscheidts)
|
||||
forget_V2 = mkV2 (mkV "oblivisci" "obliviscor" "oblitus" ) ; -- obliscor, oblitus sum 3 (Langenscheidts)
|
||||
fridge_N = mkN "frigidarium" ; -- --i n. (Pons / http://la.wikipedia.org/wiki/Armarium_frigidarium)
|
||||
friend_N = mkN ( variants { "amicus" ; "amica" } ) ; -- -i/-ae m./f. (Langenscheidts)
|
||||
friend_N = mkN "amicus" ; -- -i/-ae m./f. (Langenscheidts)
|
||||
fruit_N = mkN "fructus" "fructus" masculine; -- -us m. (Langenscheidts)
|
||||
fun_AV = mkAV (mkA "iocosus") ; -- 3 (Langenscheidts)
|
||||
garden_N = mkN "hortus" ; -- -i m. (Langenscheidts)
|
||||
@@ -108,7 +110,7 @@ lin
|
||||
go_V = IrregLat.go_V ; -- eo, i(v)i, itum (Langenscheidts)
|
||||
green_A = mkA "viridis" "viride"; -- -e (Langenscheidts)
|
||||
harbour_N = mkN "portus" "portus" masculine ; -- -us m. (Langenscheidts)
|
||||
hate_V2 = mkV2 IrregLat.hate_V R.Acc_Prep ; -- odi, osurus/odivi (Langenscheidts)
|
||||
hate_V2 = mkV2 IrregLat.hate_V Acc_Prep ; -- odi, osurus/odivi (Langenscheidts)
|
||||
hat_N = mkN "petasus" ; -- -i m. (Langenscheidts)
|
||||
hear_V2 = mkV2 (mkV "audire") ; -- 4 (Langenscheidts)
|
||||
hill_N = mkN "collis" "collis" masculine ; -- -is m. (Langenscheidts)
|
||||
@@ -141,7 +143,7 @@ lin
|
||||
meat_N = mkN "carnis" "carnis" feminine ; -- -is f. (Langenscheidts)
|
||||
milk_N = mkN "lac" "lactis" neuter ; -- -- lactis n. (Langenscheidts)
|
||||
moon_N = mkN "luna" ; -- -ae f. (Langenscheidts)
|
||||
mother_N2 = mkN2 ( mkN "mater" "matris" feminine ) R.Gen_Prep ; -- matris f. (Langenscheidts)
|
||||
mother_N2 = mkN2 ( mkN "mater" "matris" feminine ) Gen_Prep ; -- matris f. (Langenscheidts)
|
||||
mountain_N = mkN "mons" "montis" masculine ; -- montis m. (Langenscheidts)
|
||||
music_N = mkN "musica" ; -- -ae f. L..
|
||||
narrow_A = mkA "angustus" ; -- 3 (Langenscheidts)
|
||||
@@ -150,7 +152,7 @@ lin
|
||||
oil_N = mkN "oleum" ; -- -i n. (Langenscheidts)
|
||||
old_A = mkA "vetus" "veteris"; -- (Langenscheidts)
|
||||
open_V2 = mkV2 (mkV "aperire") ; -- aperio, aperui, apertum 4 (Langenscheidts)
|
||||
paint_V2A = mkV2A (mkV "pingere" "pingo" "pinxi" "pictum" ) R.Acc_Prep ; -- pingo, pinxi, pictum 3 (Langenscheidts)
|
||||
paint_V2A = mkV2A (mkV "pingere" "pingo" "pinxi" "pictum" ) Acc_Prep ; -- pingo, pinxi, pictum 3 (Langenscheidts)
|
||||
paper_N = mkN "charta" ; -- -ae f. (http://la.wikipedia.org/wiki/Charta / Pons)
|
||||
paris_PN = mkPN (mkN "Lutetia") ; -- -ae f. (http://la.wikipedia.org/wiki/Lutetia)
|
||||
peace_N = mkN "pax" "pacis" feminine ; -- pacis f. (Langenscheidts)
|
||||
@@ -158,8 +160,8 @@ lin
|
||||
planet_N = mkN "planeta" ; -- -ae m. (http://la.wikipedia.org/wiki/Planeta)
|
||||
plastic_N = mkN "plastica" "plasticae" feminine ; -- -ae f. (http://la.wikipedia.org/wiki/Plasticum)
|
||||
play_V2 = mkV2 (mkV "ludere") ; -- ludo, lusi, lusum 3 (Langenscheidts)
|
||||
policeman_N = mkN "custos" "custodis" ( variants { masculine ; feminine } ) ; -- -odis m./f. (Langenscheidts)
|
||||
priest_N = mkN "sacerdos" "sacerdotis" ( variants { masculine ; feminine } ) ; -- -dotis m./f. (Langenscheidts)
|
||||
policeman_N = mkN "custos" "custodis" masculine ; -- -odis m./f. (Langenscheidts)
|
||||
priest_N = mkN "sacerdos" "sacerdotis" masculine ; -- -dotis m./f. (Langenscheidts)
|
||||
probable_AS = mkAS (mkA "verisimilis" "verisimile") ; -- -e (Langenscheidts)
|
||||
queen_N = mkN "regina" ; -- -ae f. (Langenscheidts)
|
||||
radio_N = mkN "radiophonum" ; -- -i n. (Pons / http://la.wikipedia.org/wiki/Radiophonia)
|
||||
@@ -180,8 +182,8 @@ lin
|
||||
sea_N = mkN "mare" "maris" neuter ; -- -is n. (Langenscheidts)
|
||||
seek_V2 = mkV2 (mkV "quaerere" "quaero" "quaesivi" "quaesitum" ) ; -- quaero, quaesivi, quaesitum 3 (Langenscheidts)
|
||||
see_V2 = mkV2 (mkV "videre") ; -- video, vidi, visum 2 (Langenscheidts)
|
||||
sell_V3 = mkV3 ( mkV "vendere" "vendo" "vendidi" "venditum" ) R.Acc_Prep R.Dat_Prep ; -- vendo, vendidi, venditum 3 (Langenscheidts)
|
||||
send_V3 = mkV3 ( mkV "mittere" "mitto" "misi" "missum" ) R.Acc_Prep R.Dat_Prep ; -- mitto, misi, missum 3 (Langenscheidts)
|
||||
sell_V3 = mkV3 ( mkV "vendere" "vendo" "vendidi" "venditum" ) Acc_Prep Dat_Prep ; -- vendo, vendidi, venditum 3 (Langenscheidts)
|
||||
send_V3 = mkV3 ( mkV "mittere" "mitto" "misi" "missum" ) Acc_Prep Dat_Prep ; -- mitto, misi, missum 3 (Langenscheidts)
|
||||
sheep_N = mkN "ovis" "ovis" feminine ; -- -is f. (Langenscheidts)
|
||||
ship_N = mkN "navis" "navis" feminine ; -- -is f. acc. -em (-im) abl meist -i (Langenscheidts)
|
||||
shirt_N = mkN "tunica" ; -- -ae f. (Langenscheidts)
|
||||
@@ -193,20 +195,20 @@ lin
|
||||
-- sleep_V = mkV "dormio" "dormivi" "dormitus" "dormire" ; -- Ranta;
|
||||
sleep_V = mkV "dormire" ; -- 4 (Langenscheidts)
|
||||
small_A = mkA "parvus" ; -- 3 (Langenscheidts)
|
||||
snake_N = mkN "serpens" "serpentis" ( variants { masculine ; feminine } ) ; -- -entis m./f. (Langenscheidts)
|
||||
snake_N = mkN "serpens" "serpentis" masculine ; -- -entis m./f. (Langenscheidts)
|
||||
sock_N = mkN "impile" "impilis" masculine ; -- -is n. (Pons)
|
||||
speak_V2 = mkV2 (mkV "loqui" "loquor" "locutus" ) ; -- loquor, locutus sum 3 (Langenscheidts)
|
||||
star_N = mkN "stella" ; -- -ae f. (Langenscheidts)
|
||||
steel_N = mkN "chalybs" "chalybis" masculine ; -- chalybis m. (Langenscheidts)
|
||||
stone_N = mkN "lapis" "lapidis" masculine ; -- -idis m. (Langenscheidts)
|
||||
stove_N = mkN "fornax" "formacis" feminine ; -- -acis f. (Langenscheidts)
|
||||
student_N = mkN ( variants { "discipulus"; "discipula" } ) ; -- -i/-ae m./f. (Langenscheidts)
|
||||
student_N = mkN "discipulus"; -- -i/-ae m./f. (Langenscheidts)
|
||||
stupid_A = mkA "stultus" ; -- 3 (Langenscheidts)
|
||||
sun_N = mkN "sol" "solis" masculine ; -- solis m. (Langenscheidts)
|
||||
switch8off_V2 = mkV2 (mkV "accendere") ; -- -cendo, -cendi, -censum 3 (Langenscheidts)
|
||||
switch8on_V2 = mkV2 (mkV ( variants { "exstinguere" ; "extinguere" } ) ); -- -ingo, -inxi, -inctum 3 (Langenscheidts)
|
||||
switch8on_V2 = mkV2 (mkV "extinguere" ); -- -ingo, -inxi, -inctum 3 (Langenscheidts)
|
||||
table_N = mkN "mensa" ; -- -ae f. (Langenscheidts)
|
||||
talk_V3 = mkV3 ( lin V speak_V2 ) R.Dat_Prep R.Acc_Prep ;
|
||||
talk_V3 = mkV3 ( lin V speak_V2 ) Dat_Prep Acc_Prep ;
|
||||
teacher_N = mkN "magister" "magistri" masculine ; -- -tri m. (Langenscheidts)
|
||||
teach_V2 = mkV2 (mkV "docere") ; -- doceo, docui, doctum 2 (Langenscheidts)
|
||||
television_N = mkN "televisio" "televisionis" feminine ; -- -onis f. (Pons)
|
||||
@@ -230,7 +232,7 @@ lin
|
||||
white_A = mkA "albus" ; -- 3 (Langenscheidts)
|
||||
window_N = mkN "fenestra" ; -- -ae f. (Langenscheidts)
|
||||
wine_N = mkN "vinum" ; -- -i n. (Langenscheidts)
|
||||
win_V2 = mkV2 (mkV "vincere") ; -- vinco, vici, victum 3 (Langenscheidts)
|
||||
win_V2 = mkV2 (mkV "vincere" "vinco" "vinxi" "victum") ; -- vinco, vici, victum 3 (Langenscheidts)
|
||||
woman_N = mkN "femina" ; -- -ae f. (Langenscheidts)
|
||||
wonder_VQ = mkVQ (mkV "mirari") ; -- 1 (Langenscheidts)
|
||||
wood_N = mkN "lignum" ; -- -i n. (Langenscheidts)
|
||||
@@ -242,14 +244,14 @@ lin
|
||||
now_Adv = mkAdv "nunc" ; -- (Langenscheidts)
|
||||
already_Adv = mkAdv "iam" ; -- (Langenscheidts)
|
||||
song_N = mkN "carmen" "carminis" neuter ; -- -inis n. (Langenscheidts)
|
||||
add_V3 = mkV3 ( mkV "addere" "addo" "addidi" "additum" ) R.Acc_Prep R.to_P ; -- addo, addidi, additum 3 (Langenscheidts)
|
||||
add_V3 = mkV3 ( mkV "addere" "addo" "addidi" "additum" ) Acc_Prep to_Prep ; -- addo, addidi, additum 3 (Langenscheidts)
|
||||
number_N = mkN "numerus" ; -- -i m.
|
||||
put_V2 = mkV2 (mkV "ponere" "pono" "posui" "positum" ) ; -- pono, posui, positum 3 (Langenscheidts)
|
||||
stop_V = mkV "sistere" "sisto" "steti" "statum" ; -- sisto, stiti/steti, statum 3 (Langenscheidts)
|
||||
jump_V = mkV "saltare" ; -- 1 (Langenscheidts)
|
||||
|
||||
left_Ord = ss "sinister" ; -- -tra, -trum (Langenscheidts)
|
||||
right_Ord = ss "dexter" ; -- -t(e)ra, -t(e)rum (Langenscheidts)
|
||||
left_Ord = lin Ord { s = \\g,n,c => (mkA "sinister").s ! R.Posit ! R.Ag g n c } ; -- -tra, -trum (Langenscheidts)
|
||||
right_Ord = lin Ord { s = \\g,n,c => (mkA "dexter").s ! R.Posit ! R.Ag g n c } ; -- -t(e)ra, -t(e)rum (Langenscheidts)
|
||||
far_Adv = mkAdv "longe" ; -- (Langenscheidts)
|
||||
correct_A = mkA "rectus" ; -- 3 (Langenscheidts)
|
||||
dry_A = mkA "aridus" ; -- 3 (Langenscheidts)
|
||||
@@ -267,13 +269,13 @@ lin
|
||||
animal_N = mkN "animal" "animalis" neuter ; -- -alis n. (Langenscheidts)
|
||||
ashes_N = mkN "cinis" "cineris" masculine ; -- -eris m. (Langenscheidts) & Bayer-Lindauer 33 1.2
|
||||
back_N = mkN "tergum" ; -- -i n. (Langenscheidts)
|
||||
bark_N = mkN "cortex" "corticis" ( variants { masculine ; feminine } ) ; -- -icis m./(f.) (Langenscheidts)
|
||||
bark_N = mkN "cortex" "corticis" masculine ; -- -icis m./(f.) (Langenscheidts)
|
||||
belly_N = mkN "venter" "ventris" masculine ; -- -tris m. (Langenscheidts)
|
||||
blood_N = variants { mkN "sanguis" "sanguinis" masculine ; mkN "sangis" "sanginis" masculine} ; -- -inis m. (Langenscheidts)
|
||||
blood_N = mkN "sanguis" "sanguinis" masculine ; -- -inis m. (Langenscheidts)
|
||||
bone_N = mkN "os" "ossis" neuter ; -- ossis n. (Langenscheidts)
|
||||
breast_N = mkN "pectus""pectoris" neuter ; -- pectoris n. (Langenscheidts)
|
||||
cloud_N = mkN "nubes" "nubis" feminine ; -- -is f. (Langenscheidts)
|
||||
day_N = mkN "dies" "diei" ( variants { masculine ; feminine } ) ; -- -ei m./f. (Langenscheidts)
|
||||
day_N = mkN "dies" "diei" masculine ; -- -ei m./f. (Langenscheidts)
|
||||
dust_N = mkN "pulvis" "pulveris" masculine; -- -veris m. (Langenscheidts)
|
||||
ear_N = mkN "auris" "auris" feminine; -- -is f. (Langenscheidts)
|
||||
earth_N = mkN "terra" ; -- -ae f. (Langenscheidts)
|
||||
@@ -293,32 +295,32 @@ lin
|
||||
hand_N = mkN "manus" "manus" feminine ; -- -us f. (Langenscheidts)
|
||||
head_N = mkN "caput" "capitis" neuter ; -- -itis n. (Langenscheidts)
|
||||
heart_N = mkN "cor" "cordis" neuter; -- cordis n. (Langenscheidts)
|
||||
horn_N = mkN ( variants { "cornu" ; "cornus" } ) "cornus" neuter ; -- -us n. (Langenscheidts)
|
||||
horn_N = mkN "cornus" "cornus" neuter ; -- -us n. (Langenscheidts)
|
||||
husband_N = mkN "maritus" ; -- -i m. (Langenscheidts)
|
||||
ice_N = mkN "glacies" "glaciei" feminine ; -- -ei f. (Langenscheidts)
|
||||
knee_N = mkN "genu" "genus" neuter ; -- -us n. (Langenscheidts)
|
||||
leaf_N = mkN "folium" ; -- -i n. (Langenscheidts)
|
||||
leg_N = bone_N ;
|
||||
liver_N = variants { ( mkN "iecur" "iecoris" neuter ) ; ( mkN "iocur" "iocineris" neuter ) } ; -- iecoris/iocineris n. (Langenscheidts)
|
||||
louse_N = mkN "pedis" "pedis" ( variants { masculine ; feminine } ) ; -- -is m./f. (Langenscheidts)
|
||||
liver_N = mkN "iecur" "iecoris" neuter ; -- iecoris/iocineris n. (Langenscheidts)
|
||||
louse_N = mkN "pedis" "pedis" masculine ; -- -is m./f. (Langenscheidts)
|
||||
mouth_N = mkN "os" "oris" neuter ; -- oris n. (Langenscheidts)
|
||||
name_N = mkN "nomen" "nominis" neuter ; -- -inis n. (Langenscheidts)
|
||||
neck_N = mkN "cervix" "cervicis" feminine ; -- -icis f. (meist pl.) (Langenscheidts)
|
||||
night_N = mkN "nox" "noctis" feminine ; -- noctis f. (Langenscheidts)
|
||||
nose_N = mkN ( variants { "nasus" ; "nasum" } ) ; -- -i m./n. (Langenscheidts)
|
||||
nose_N = mkN "nasus" ; -- -i m./n. (Langenscheidts)
|
||||
person_N = mkN "persona" ; -- -ae f. (Langenscheidts)
|
||||
rain_N = mkN "pluvia" ; -- -ae f. (Langenscheidts)
|
||||
road_N = mkN "via" ; -- -ae f. (Langenscheidts)
|
||||
root_N = mkN "radix" "radicis" feminine ; -- -icis f. (Langenscheidts)
|
||||
rope_N = mkN "funis" "funis" ( variants { masculine ; feminine } ) ; -- -is m.(/f.) (Langenscheidts)
|
||||
salt_N = mkN "sal" "salis" ( variants { masculine ; neuter } ) ; -- salis m./n. (Langenscheidts)
|
||||
rope_N = mkN "funis" "funis" masculine ; -- -is m.(/f.) (Langenscheidts)
|
||||
salt_N = mkN "sal" "salis" masculine ; -- salis m./n. (Langenscheidts)
|
||||
sand_N = mkN "arena" ; -- -ae f. (Langenscheidts)
|
||||
seed_N = mkN "semen" "seminis" neuter ; -- -inis n. (Langenscheidts)
|
||||
skin_N = mkN "cutis" "cutis" feminine ; -- -is f. (Langenscheidts)
|
||||
sky_N = mkN "caelum" ; -- -i n. (Langenscheidts)
|
||||
smoke_N = mkN "fumus" ; -- -i m. (Langenscheidts)
|
||||
snow_N = mkN "nix" "nivis" feminine ; -- nivis (gen. pl. -ium) f. (Langenscheidts)
|
||||
stick_N = mkN ( variants { "baculum" ; "baculus" } ) ; -- -i n./m.
|
||||
stick_N = mkN "baculus" ; -- -i n./m.
|
||||
tail_N = mkN "cauda" ; -- -ae f. (Langenscheidts)
|
||||
tongue_N = mkN "lingua" ; -- -ae f. (Langenscheidts)
|
||||
tooth_N = mkN "dens" "dentis" masculine; -- dentis m. (Langenscheidts)
|
||||
|
||||
@@ -1,39 +1,22 @@
|
||||
resource MissingLat = open GrammarLat, Prelude in {
|
||||
|
||||
-- temporary definitions to enable the compilation of RGL API
|
||||
oper AdAdv : AdA -> Adv -> Adv = notYet "AdAdv" ;
|
||||
oper AdNum : AdN -> Card -> Card = notYet "AdNum" ;
|
||||
oper AdVVP : AdV -> VP -> VP = notYet "AdVVP" ;
|
||||
oper AdjOrd : Ord -> AP = notYet "AdjOrd" ;
|
||||
oper AdnCAdv : CAdv -> AdN = notYet "AdnCAdv" ;
|
||||
oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ;
|
||||
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||
oper AdvS : Adv -> S -> S = notYet "AdvS" ;
|
||||
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||
oper ApposCN : CN -> NP -> CN = notYet "ApposCN" ;
|
||||
oper BaseNP : NP -> NP -> ListNP = notYet "BaseNP" ;
|
||||
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
|
||||
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
|
||||
oper CAdvAP : CAdv -> AP -> NP -> AP = notYet "CAdvAP" ;
|
||||
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
|
||||
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
|
||||
oper CompAdv : Adv -> Comp = notYet "CompAdv" ;
|
||||
oper CompCN : CN -> Comp = notYet "CompCN" ;
|
||||
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||
oper CompNP : NP -> Comp = notYet "CompNP" ;
|
||||
oper ComparA : A -> NP -> AP = notYet "ComparA" ;
|
||||
oper ComparAdvAdj : CAdv -> A -> NP -> Adv = notYet "ComparAdvAdj" ;
|
||||
oper ComparAdvAdjS : CAdv -> A -> S -> Adv = notYet "ComparAdvAdjS" ;
|
||||
oper ComplA2 : A2 -> NP -> AP = notYet "ComplA2" ;
|
||||
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
|
||||
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
|
||||
oper ConjNP : Conj -> ListNP -> NP = notYet "ConjNP" ;
|
||||
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
|
||||
oper ConsNP : NP -> ListNP -> ListNP = notYet "ConsNP" ;
|
||||
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
|
||||
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
|
||||
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
|
||||
oper DetNP : Det -> NP = notYet "DetNP" ;
|
||||
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
|
||||
oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
|
||||
oper EmbedS : S -> SC = notYet "EmbedS" ;
|
||||
@@ -42,101 +25,132 @@ oper ExistIP : IP -> QCl = notYet "ExistIP" ;
|
||||
oper ExistNP : NP -> Cl = notYet "ExistNP" ;
|
||||
oper FunRP : Prep -> NP -> RP -> RP = notYet "FunRP" ;
|
||||
oper GenericCl : VP -> Cl = notYet "GenericCl" ;
|
||||
oper IdRP : RP = notYet "IdRP" ;
|
||||
oper IdetCN : IDet -> CN -> IP = notYet "IdetCN" ;
|
||||
oper IdetIP : IDet -> IP = notYet "IdetIP" ;
|
||||
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||
oper IdRP : RP = notYet "IdRP" ;
|
||||
oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
|
||||
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
|
||||
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||
oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
|
||||
oper MassNP : CN -> NP = notYet "MassNP" ;
|
||||
oper NumCard : Card -> Num = notYet "NumCard" ;
|
||||
oper NumDigits : Digits -> Card = notYet "NumDigits" ;
|
||||
oper NumNumeral : Numeral -> Card = notYet "NumNumeral" ;
|
||||
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
|
||||
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
|
||||
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||
oper PassV2 : V2 -> VP = notYet "PassV2" ;
|
||||
oper PositAdvAdj : A -> Adv = notYet "PositAdvAdj" ;
|
||||
oper PossPron : Pron -> Quant = notYet "PossPron" ;
|
||||
oper pot1 : Digit -> Sub100 = notYet "pot1" ;
|
||||
oper pot110 : Sub100 = notYet "pot110" ;
|
||||
oper pot111 : Sub100 = notYet "pot111" ;
|
||||
oper pot1plus : Digit -> Sub10 -> Sub100 = notYet "pot1plus" ;
|
||||
oper pot1to19 : Digit -> Sub100 = notYet "pot1to19" ;
|
||||
oper pot2 : Sub10 -> Sub1000 = notYet "pot2" ;
|
||||
oper pot2plus : Sub10 -> Sub100 -> Sub1000 = notYet "pot2plus" ;
|
||||
oper pot3 : Sub1000 -> Sub1000000 = notYet "pot3" ;
|
||||
oper pot3plus : Sub1000 -> Sub1000 -> Sub1000000 = notYet "pot3plus" ;
|
||||
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
|
||||
oper PredetNP : Predet -> NP -> NP = notYet "PredetNP" ;
|
||||
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
|
||||
oper ProgrVP : VP -> VP = notYet "ProgrVP" ;
|
||||
oper ReflA2 : A2 -> AP = notYet "ReflA2" ;
|
||||
oper QuestCl : Cl -> QCl = notYet "QuestCl" ;
|
||||
oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
|
||||
oper QuestIComp : IComp -> NP -> QCl = notYet "QuestIComp" ;
|
||||
oper QuestSlash : IP -> ClSlash -> QCl = notYet "QuestSlash" ;
|
||||
oper QuestVP : IP -> VP -> QCl = notYet "QuestVP" ;
|
||||
oper ReflVP : VPSlash -> VP = notYet "ReflVP" ;
|
||||
oper RelCN : CN -> RS -> CN = notYet "RelCN" ;
|
||||
oper RelCl : Cl -> RCl = notYet "RelCl" ;
|
||||
oper RelNP : NP -> RS -> NP = notYet "RelNP" ;
|
||||
oper RelCN : CN -> RS -> CN = notYet "RelCN" ;
|
||||
oper RelSlash : RP -> ClSlash -> RCl = notYet "RelSlash" ;
|
||||
oper RelVP : RP -> VP -> RCl = notYet "RelVP" ;
|
||||
oper SentAP : AP -> SC -> AP = notYet "SentAP" ;
|
||||
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||
oper Slash2V3 : V3 -> NP -> VPSlash = notYet "Slash2V3" ;
|
||||
oper SlashV2S : V2S -> S -> VPSlash = notYet "SlashV2S" ;
|
||||
oper SlashV2V : V2V -> VP -> VPSlash = notYet "SlashV2V" ;
|
||||
oper SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash = notYet "SlashV2VNP" ;
|
||||
oper SlashVS : NP -> VS -> SSlash -> ClSlash = notYet "SlashVS" ;
|
||||
oper SlashVV : VV -> VPSlash -> VPSlash = notYet "SlashVV" ;
|
||||
oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
|
||||
oper UseComparA : A -> AP = notYet "UseComparA" ;
|
||||
oper UseQCl : Temp -> Pol -> QCl -> QS = notYet "UseQCl" ;
|
||||
oper UseRCl : Temp -> Pol -> RCl -> RS = notYet "UseRCl" ;
|
||||
oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ;
|
||||
oper UttAP : AP -> Utt = notYet "UttAP" ;
|
||||
oper UttAdv : Adv -> Utt = notYet "UttAdv" ;
|
||||
oper UttCN : CN -> Utt = notYet "UttCN" ;
|
||||
oper UttCard : Card -> Utt = notYet "UttCard" ;
|
||||
oper UttIAdv : IAdv -> Utt = notYet "UttIAdv" ;
|
||||
oper UttIP : IP -> Utt = notYet "UttIP" ;
|
||||
oper UttImpPl : Pol -> Imp -> Utt = notYet "UttImpPl" ;
|
||||
oper UttImpPol : Pol -> Imp -> Utt = notYet "UttImpPol" ;
|
||||
oper UttImpSg : Pol -> Imp -> Utt = notYet "UttImpSg" ;
|
||||
oper UttNP : NP -> Utt = notYet "UttNP" ;
|
||||
oper UttVP : VP -> Utt = notYet "UttVP" ;
|
||||
oper n2 : Digit = notYet "n2" ;
|
||||
oper n3 : Digit = notYet "n3" ;
|
||||
oper n4 : Digit = notYet "n4" ;
|
||||
oper n5 : Digit = notYet "n5" ;
|
||||
oper n6 : Digit = notYet "n6" ;
|
||||
oper n7 : Digit = notYet "n7" ;
|
||||
oper n8 : Digit = notYet "n8" ;
|
||||
oper n9 : Digit = notYet "n9" ;
|
||||
oper num : Sub1000000 -> Numeral = notYet "num" ;
|
||||
oper pot0 : Digit -> Sub10 = notYet "pot0" ;
|
||||
oper pot01 : Sub10 = notYet "pot01" ;
|
||||
oper pot0as1 : Sub10 -> Sub100 = notYet "pot0as1" ;
|
||||
oper AddAdvQVP : QVP -> IAdv -> QVP = notYet "AddAdvQVP" ;
|
||||
oper AdjDAP : DAP -> AP -> DAP = notYet "AdjDAP" ;
|
||||
oper AdNum : AdN -> Card -> Card = notYet "AdNum" ;
|
||||
oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ;
|
||||
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
|
||||
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
|
||||
oper AdvQVP : VP -> IAdv -> QVP = notYet "AdvQVP" ;
|
||||
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
|
||||
oper BaseAdV : AdV -> AdV -> ListAdV = notYet "BaseAdV" ;
|
||||
oper BaseCN : CN -> CN -> ListCN = notYet "BaseCN" ;
|
||||
oper BaseDAP : DAP -> DAP -> ListDAP = notYet "BaseDAP" ;
|
||||
oper BaseIAdv : IAdv -> IAdv -> ListIAdv = notYet "BaseIAdv" ;
|
||||
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
|
||||
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
|
||||
oper CompIP : IP -> IComp = notYet "CompIP" ;
|
||||
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
|
||||
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
|
||||
oper ComplSlashIP : VPSlash -> IP -> QVP = notYet "ComplSlashIP" ;
|
||||
oper ConjAdV : Conj -> ListAdV -> AdV = notYet "ConjAdV" ;
|
||||
oper ConjCN : Conj -> ListCN -> CN = notYet "ConjCN" ;
|
||||
oper ConjDet : Conj -> ListDAP -> Det = notYet "ConjDet" ;
|
||||
oper ConjIAdv : Conj -> ListIAdv -> IAdv = notYet "ConjIAdv" ;
|
||||
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
|
||||
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
|
||||
oper ConsAdV : AdV -> ListAdV -> ListAdV = notYet "ConsAdV" ;
|
||||
oper ConsCN : CN -> ListCN -> ListCN = notYet "ConsCN" ;
|
||||
oper ConsDAP : DAP -> ListDAP -> ListDAP = notYet "ConsDAP" ;
|
||||
oper ConsIAdv : IAdv -> ListIAdv -> ListIAdv = notYet "ConsIAdv" ;
|
||||
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
|
||||
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
|
||||
oper CountNP : Det -> NP -> NP = notYet "CountNP" ;
|
||||
oper DetDAP : Det -> DAP = notYet "DetDAP" ;
|
||||
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
|
||||
oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
|
||||
oper EmbedS : S -> SC = notYet "EmbedS" ;
|
||||
oper EmbedVP : VP -> SC = notYet "EmbedVP" ;
|
||||
oper ExtAdvS : Adv -> S -> S = notYet "ExtAdvS" ;
|
||||
oper ExtAdvVP : VP -> Adv -> VP = notYet "ExtAdvVP" ;
|
||||
oper IdetCN : IDet -> CN -> IP = notYet "IdetCN" ;
|
||||
oper IdetIP : IDet -> IP = notYet "IdetIP" ;
|
||||
oper IdetQuant : IQuant -> Num -> IDet = notYet "IdetQuant" ;
|
||||
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
|
||||
oper NumDigits : Digits -> Card = notYet "NumDigits" ;
|
||||
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
|
||||
oper OrdNumeralSuperl : Numeral -> A -> Ord = notYet "OrdNumeralSuperl" ;
|
||||
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
|
||||
oper PartNP : CN -> NP -> CN = notYet "PartNP" ;
|
||||
oper PossNP : CN -> NP -> CN = notYet "PossNP" ;
|
||||
oper PossPron : Pron -> Quant = notYet "PossPron" ;
|
||||
oper pot1 : Digit -> Sub100 = notYet "pot1" ;
|
||||
oper pot110 : Sub100 = notYet "pot110" ;
|
||||
oper pot111 : Sub100 = notYet "pot111" ;
|
||||
oper pot1as2 : Sub100 -> Sub1000 = notYet "pot1as2" ;
|
||||
oper pot1plus : Digit -> Sub10 -> Sub100 = notYet "pot1plus" ;
|
||||
oper pot1to19 : Digit -> Sub100 = notYet "pot1to19" ;
|
||||
oper pot2 : Sub10 -> Sub1000 = notYet "pot2" ;
|
||||
oper pot2as3 : Sub1000 -> Sub1000000 = notYet "pot2as3" ;
|
||||
oper pot2plus : Sub10 -> Sub100 -> Sub1000 = notYet "pot2plus" ;
|
||||
oper pot3 : Sub1000 -> Sub1000000 = notYet "pot3" ;
|
||||
oper pot3plus : Sub1000 -> Sub1000 -> Sub1000000 = notYet "pot3plus" ;
|
||||
oper PPartNP : NP -> V2 -> NP = notYet "PPartNP" ;
|
||||
oper PredSCVP : SC -> VP -> Cl = notYet "PredSCVP" ;
|
||||
oper PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
|
||||
oper QuestCl : Cl -> QCl = notYet "QuestCl" ;
|
||||
oper QuestIAdv : IAdv -> Cl -> QCl = notYet "QuestIAdv" ;
|
||||
oper QuestIComp : IComp -> NP -> QCl = notYet "QuestIComp" ;
|
||||
oper QuestQVP : IP -> QVP -> QCl = notYet "QuestQVP" ;
|
||||
oper QuestSlash : IP -> ClSlash -> QCl = notYet "QuestSlash" ;
|
||||
oper QuestVP : IP -> VP -> QCl = notYet "QuestVP" ;
|
||||
oper ReflVP : VPSlash -> VP = notYet "ReflVP" ;
|
||||
oper RelCN : CN -> RS -> CN = notYet "RelCN" ;
|
||||
oper RelS : S -> RS -> S = notYet "RelS" ;
|
||||
oper SentCN : CN -> SC -> CN = notYet "SentCN" ;
|
||||
oper SlashV2S : V2S -> S -> VPSlash = notYet "SlashV2S" ;
|
||||
oper SlashV2V : V2V -> VP -> VPSlash = notYet "SlashV2V" ;
|
||||
oper SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash = notYet "SlashV2VNP" ;
|
||||
oper SlashVS : NP -> VS -> SSlash -> ClSlash = notYet "SlashVS" ;
|
||||
oper SlashVV : VV -> VPSlash -> VPSlash = notYet "SlashVV" ;
|
||||
oper SSubjS : S -> Subj -> S -> S = notYet "SSubjS" ;
|
||||
oper Use2N3 : N3 -> N2 = notYet "Use2N3" ;
|
||||
oper Use3N3 : N3 -> N2 = notYet "Use3N3" ;
|
||||
oper UseQCl : Temp -> Pol -> QCl -> QS = notYet "UseQCl" ;
|
||||
oper UseRCl : Temp -> Pol -> RCl -> RS = notYet "UseRCl" ;
|
||||
oper UseSlash : Temp -> Pol -> ClSlash -> SSlash = notYet "UseSlash" ;
|
||||
oper VPSlashPrep : VP -> Prep -> VPSlash = notYet "VPSlashPrep" ;
|
||||
|
||||
}
|
||||
|
||||
{-
|
||||
AR 28/3/2017
|
||||
|
||||
To build:
|
||||
|
||||
$ gf api/TryLat.gf | grep constant | sort -u >missLat.tmp
|
||||
|
||||
$ ghci
|
||||
Prelude> pgf <- PGF.readPGF "Lang.pgf"
|
||||
Prelude> ms <- readFile "missLat.tmp" >>= return . map (last . words) . lines
|
||||
Prelude> let ts = [PGF.showType [] t | m <- ms, Just t <- [PGF.functionType pgf (PGF.mkCId m)]]
|
||||
Prelude> putStrLn $ unlines ["oper " ++ f ++ " : " ++ t ++ " = notYet \"" ++ f ++ "\" ;" | (f,t) <- zip ms ts]
|
||||
|
||||
To use:
|
||||
|
||||
--# -path=.:alltenses:prelude:../latin
|
||||
resource ConstructorsLat = Constructors with (Grammar = GrammarLat) **
|
||||
open MissingLat in {}
|
||||
|
||||
-}
|
||||
5
src/latin/MissingTranslateLat.gf
Normal file
5
src/latin/MissingTranslateLat.gf
Normal file
@@ -0,0 +1,5 @@
|
||||
resource MissingTranslateLat = open GrammarLat, Prelude in {
|
||||
|
||||
-- temporary definitions to enable the compilation of RGL Translate
|
||||
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
-- syntax. To build a lexicon, it is better to use $ParadigmsLat$, which
|
||||
-- gives a higher-level access to this module.
|
||||
|
||||
resource MorphoLat = ParamX, ResLat ** open Prelude in {
|
||||
resource MorphoLat = ParamX, ResLat ** open Prelude, Predef in {
|
||||
--
|
||||
-- flags optimize=all ;
|
||||
--
|
||||
@@ -149,18 +149,18 @@ oper
|
||||
|
||||
noun_ngg : Str -> Str -> Gender -> Noun = \verbum,verbi,g ->
|
||||
let s : Noun = case <verbum,verbi> of {
|
||||
<_ + "a", _ + "ae"> => noun1 verbum ;
|
||||
<_ + "us", _ + "i"> => noun2us verbum ;
|
||||
<_ + "um", _ + "i"> => noun2um verbum ;
|
||||
<_ + ( "er" | "ir" ) , _ + "i"> => noun2er verbum verbi ;
|
||||
|
||||
<_ + "us", _ + "us"> => noun4us verbum ;
|
||||
<_ + "u", _ + "us"> => noun4u verbum ;
|
||||
<_ + "es", _ + "ei"> => noun5 verbum ;
|
||||
<_ + "a" , _ + "ae"> => noun1 verbum ;
|
||||
<_ + "us" , _ + "i" > => noun2us verbum ;
|
||||
<_ + "um" , _ + "i" > => noun2um verbum ;
|
||||
<_ + ( "er" | "ir" ) , _ + "i" > => noun2er verbum verbi ;
|
||||
<_ + "us" , _ + "us"> => noun4us verbum ;
|
||||
<_ + "u" , _ + "us"> => noun4u verbum ;
|
||||
<_ + "es" , _ + "ei"> => noun5 verbum ;
|
||||
<semi + "bos" , _ > => prefixNoun semi (noun3 "bos" "bovis" Masc) ;
|
||||
_ => noun3 verbum verbi g
|
||||
}
|
||||
in
|
||||
nounWithGen g s ;
|
||||
nounWithGender g s ;
|
||||
|
||||
noun : Str -> Noun = \verbum ->
|
||||
case verbum of {
|
||||
@@ -170,6 +170,7 @@ oper
|
||||
_ + ( "er" | "ir" ) => noun2er verbum ( (Predef.tk 2 verbum) + "ri" ) ;
|
||||
_ + "u" => noun4u verbum ;
|
||||
_ + "es" => noun5 verbum ;
|
||||
semi + "bos" => prefixNoun semi (noun_ngg "bos" "bovis" Masc) ;
|
||||
_ => Predef.error ("3rd declinsion cannot be applied to just one noun form " ++ verbum)
|
||||
} ;
|
||||
|
||||
@@ -179,7 +180,7 @@ oper
|
||||
_ + "a" => noun1 verbum ;
|
||||
_ + "us" => noun2us verbum ;
|
||||
_ + "um" => noun2um verbum ;
|
||||
_ + ( "er" | "ir" ) =>
|
||||
_ + ( "er" | "ir" | "ur" | "tr") =>
|
||||
let
|
||||
puer = verbum ;
|
||||
pue = Predef.tk 1 puer ;
|
||||
@@ -189,6 +190,7 @@ oper
|
||||
-- Exception of adjectives where e is part of the word stem 31 3.2
|
||||
("asper" | "miser" | "tener" | "frugifer") + _ => "e";
|
||||
-- "liber" => ( "e" | "" ) ; conflicting with noun liber
|
||||
_ + "tr" => "t";
|
||||
_ => ""
|
||||
} ;
|
||||
pu = Predef.tk 1 pue ;
|
||||
@@ -310,6 +312,8 @@ oper
|
||||
-- Usual cases
|
||||
pulch + "er" => pulch + "r" ;
|
||||
bon + "us" => bon ;
|
||||
cam + "ur" => cam ;
|
||||
dime + "tr" => bonus ;
|
||||
_ => Predef.error ("adj12 does not apply to" ++ bonus)
|
||||
} ;
|
||||
nbonus = (noun12 bonus) ;
|
||||
@@ -334,9 +338,10 @@ oper
|
||||
(noun1 (bon + "a"))
|
||||
(noun2um (bon + "um"))
|
||||
< compsup.p1 , advs.p1 >
|
||||
< compsup.p2 , advs.p2 > ;
|
||||
< compsup.p2 , advs.p2 >
|
||||
(bon + "o") (bon + "ius") (bon + "issimo") ;
|
||||
|
||||
adj3x : (_,_ : Str) -> Adjective = \acer,acris ->
|
||||
adj3x : (_,_ : Str) -> Adjective = \acer,acris -> -- FISHY??
|
||||
let
|
||||
ac = Predef.tk 2 acer ;
|
||||
acrise : Str * Str = case acer of {
|
||||
@@ -353,16 +358,104 @@ oper
|
||||
(noun3adj acrise.p2 acris Neutr)
|
||||
< compsuper.p1 , "" >
|
||||
< compsuper.p2 , "" >
|
||||
;
|
||||
|
||||
(ac + "riter") (ac + "rius") (ac + "rissimo") ;
|
||||
|
||||
adjgre : Str -> Str -> Str -> Adjective = \bonus,bona,bonum ->
|
||||
let
|
||||
first : Str -> Agr => Str =
|
||||
\stem ->
|
||||
table { Ag Masc Sg Nom => stem + "os" ;
|
||||
Ag (Masc | Neutr) Sg Gen => stem + "ou" ;
|
||||
Ag (Masc | Neutr) Sg Dat => stem + "oi" ;
|
||||
Ag (Masc | Neutr) Sg Acc => stem + "on" ;
|
||||
Ag Masc Sg Voc => stem + "e" ;
|
||||
Ag Fem Sg (Nom | Voc) => stem + "a" ;
|
||||
Ag Fem Sg Gen => stem + "as" ;
|
||||
Ag Fem Sg Dat => stem + "ai" ;
|
||||
Ag Fem Sg Acc => stem + "an" ;
|
||||
Ag Neutr Sg (Nom | Voc) => stem + "on" ;
|
||||
Ag Masc Pl (Nom | Voc) => stem + "oi" ;
|
||||
Ag (Masc | Fem | Neutr) Pl Gen => stem + "on" ;
|
||||
Ag (Masc | Neutr) Pl Dat => stem + "ois" ;
|
||||
Ag Masc Pl Acc => stem + "ous" ;
|
||||
Ag Fem Pl (Nom | Voc) => stem + "ai" ;
|
||||
Ag Fem Pl Dat => stem + "ais" ;
|
||||
Ag Fem Pl Acc => stem + "as" ;
|
||||
Ag Neutr Pl (Nom | Acc | Voc) => stem + "a" ;
|
||||
Ag _ _ Abl => nonExist
|
||||
} ;
|
||||
second : Str -> Agr => Str =
|
||||
\stem ->
|
||||
table { Ag (Masc | Fem) Sg Nom => stem + "os" ;
|
||||
Ag (Masc | Fem | Neutr) Sg Gen => stem + "ou" ;
|
||||
Ag (Masc | Fem | Neutr) Sg Dat => stem + "oi" ;
|
||||
Ag (Masc | Fem | Neutr) Sg Acc => stem + "on" ;
|
||||
Ag (Masc | Fem) Sg Voc => stem + "e" ;
|
||||
Ag Neutr Sg (Nom | Voc) => stem + "on" ;
|
||||
Ag (Masc | Fem) Pl (Nom | Voc) => stem + "oi";
|
||||
Ag (Masc | Fem | Neutr) Pl Gen => stem + "on" ;
|
||||
Ag (Masc | Fem | Neutr) Pl Dat => stem + "ois" ;
|
||||
Ag (Masc | Fem) Pl Acc => stem + "ous" ;
|
||||
Ag Neutr Pl (Nom | Acc | Voc) => stem + "a" ;
|
||||
Ag _ _ Abl => nonExist
|
||||
} ;
|
||||
third : Str -> Agr => Str =
|
||||
\stem ->
|
||||
table { Ag (Masc | Fem | Neutr) Sg (Nom | Voc) => stem + "es" ;
|
||||
Ag (Masc | Fem | Neutr) Sg Gen => stem + "ous" ;
|
||||
Ag (Masc | Fem | Neutr) Sg Dat => stem + "ei" ;
|
||||
Ag (Masc | Fem) Sg Acc => stem + "e" ;
|
||||
Ag Neutr Sg Acc => stem + "es" ;
|
||||
Ag (Masc | Fem) Pl (Nom | Acc | Voc) => "eis" ;
|
||||
Ag (Masc | Fem | Neutr) Pl Gen => "on" ;
|
||||
Ag (Masc | Fem | Neutr) Pl Dat => "esi" ;
|
||||
Ag Neutr Pl (Nom | Acc | Voc ) => "e" ;
|
||||
Ag _ _ Abl => nonExist
|
||||
} ;
|
||||
in
|
||||
{ s = case <bonus,bona,bonum> of {
|
||||
<agi + "os" , _ + "a" , _ + "on"> =>
|
||||
table { Posit => first agi ;
|
||||
Compar => first (agi + "oter") ;
|
||||
Super => first (agi + "otat")
|
||||
} ;
|
||||
<arctic + "os" , _ + "e" , _ + "on"> =>
|
||||
table { Posit => second arctic ;
|
||||
Compar => second (arctic + "oter") ;
|
||||
Super => second (arctic + "otat")
|
||||
} ;
|
||||
<akapn + "os" , _ + "os", _ + "on"> =>
|
||||
table { Posit => second akapn ;
|
||||
Compar => second (akapn + "oter") ;
|
||||
Super => second (akapn + "otat")
|
||||
} ;
|
||||
<isoscel + "es", _ + "es", _ + "es"> =>
|
||||
table { Posit => third isoscel ;
|
||||
Compar => first (isoscel + "oter") ;
|
||||
Super => first (isoscel + "otat")
|
||||
} ;
|
||||
<amethystiz + "on", _ + "ousa", _ + "on"> =>
|
||||
table { Posit => table { Ag g Sg c => first amethystiz ! Ag g Sg c ;
|
||||
Ag g Pl c => third amethystiz ! Ag g Sg c
|
||||
} ;
|
||||
Compar => \\_ => nonExist ;
|
||||
Super => \\_ => nonExist
|
||||
};
|
||||
_ => error ("Greek adjective " ++ bonus ++ bona ++ bonum ) -- { s = \\_,_ => "" ; adv = \\_ => ""} ;
|
||||
} ;
|
||||
adv = mkAdverb bonus
|
||||
} ;
|
||||
-- smart paradigms
|
||||
|
||||
adj123 : Str -> Str -> Adjective = \bonus,boni ->
|
||||
adj123 : Str -> Str -> Adjective = \bonus,boni ->
|
||||
case <bonus,boni> of {
|
||||
<_ + ("us" | "er"), _ + "i" > => adj12 bonus ;
|
||||
<_ + ("us" | "er"), _ + "is"> => adj3x bonus boni ;
|
||||
<_ , _ + "is"> => adj3x bonus boni ;
|
||||
<_ + "is" , _ + "e" > => adj3x bonus boni ;
|
||||
<_ + "is" , _ + "os"> => adj3x bonus boni ;
|
||||
-- <_ + "os" , _ + "on"> => adjgre bonus boni boni ;
|
||||
<bon + "on" , _ + "os"> => adjgre bonus (bon + "ousa") bonus ;
|
||||
_ => Predef.error ("adj123: not applicable to" ++ bonus ++ boni)
|
||||
} ;
|
||||
|
||||
@@ -372,8 +465,18 @@ oper
|
||||
facil + "is" => adj3x bonus bonus ;
|
||||
feli + "x" => adj3x bonus (feli + "cis") ;
|
||||
_ => adj3x bonus (bonus + "is") ---- any example?
|
||||
} ;
|
||||
} ;
|
||||
|
||||
adjfull : (bonus,bona,bonum : Str) -> Adjective = \bonus,bona,bonum ->
|
||||
case <bonus,bona,bonum> of {
|
||||
<_ + ("er"|"us"|"ur"|"tr"), _ + "a" , _ + "um"> => adj12 bonus ;
|
||||
<_ + ("er"|"is"), _ + "is" , _ + "e" > => adj3x bonus bonum ; -- FISHY?
|
||||
<_ + "ior" , _ + "ior", _ + "ius"> => adj3x bonus bonum ; -- FISHY?
|
||||
<_ + "os" , _ + "os" , _ + "on"> => adjgre bonus bona bonum ;
|
||||
<_ + "es" , _ + "es" , _ + "es"> => adjgre bonus bona bonum ;
|
||||
<_ + "os" , _ + ("e"|"a") , _ + "on"> => adjgre bonus bona bonum ;
|
||||
_ => Predef.error ("Not supported" ++ bonus ++ bona ++ bonum)
|
||||
} ;
|
||||
|
||||
----3 Verbs
|
||||
|
||||
@@ -605,6 +708,8 @@ oper
|
||||
_ + ( "i" | "u" ) + "o" => verb3i iacere ieci iactus ; -- Bayer-Linduaer 74 1
|
||||
_ => verb3c iacere ieci iactus
|
||||
} ;
|
||||
ab + "esse" => prefixVerb ab esseAux ;
|
||||
circum + "ferre" => prefixVerb circum ferreAux ;
|
||||
_ => Predef.error ("verb_ippp: illegal infinitive form" ++ iacere)
|
||||
} ;
|
||||
|
||||
@@ -618,6 +723,9 @@ oper
|
||||
_ + "ire" => let iaci = Predef.tk 2 iacere
|
||||
in verb4 iacere ; -- (iaci + "vi") (iaci + "tus") ;
|
||||
_ + "ere" => verb2 iacere ;
|
||||
circum + "ferre" => prefixVerb circum ferreAux ;
|
||||
ab + "esse" => prefixVerb ab esseAux ;
|
||||
prae + "posse" => prefixVerb prae posseAux ;
|
||||
_ => Predef.error ("verb: illegal infinitive form" ++ iacere)
|
||||
} ;
|
||||
}
|
||||
@@ -3,43 +3,85 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
DetCN det cn = -- Det -> CN -> NP
|
||||
-- DetCN : Det -> CN -> NP ; -- the man
|
||||
DetCN det cn =
|
||||
{
|
||||
s = \\c => det.s ! cn.g ! c ++ cn.preap.s ! (Ag cn.g det.n c) ++ cn.s ! det.n ! c ++ cn.postap.s ! (Ag cn.g det.n c) ;
|
||||
s = \\c => cn.s ! det.n ! c ;
|
||||
n = det.n ; g = cn.g ; p = P3 ;
|
||||
adv = cn.adv ;
|
||||
preap = cn.preap ;
|
||||
postap = cn.postap ;
|
||||
det = det
|
||||
} ;
|
||||
|
||||
UsePN pn = lin NP { s = pn.s ! Sg ; g = pn.g ; n = Sg ; p = P3 } ;
|
||||
UsePron p = -- Pron -> Np
|
||||
-- UsePN : PN -> NP ; -- John
|
||||
UsePN pn =
|
||||
lin NP
|
||||
{
|
||||
s = pn.s ! Sg ;
|
||||
g = pn.g ;
|
||||
n = Sg ;
|
||||
p = P3 ;
|
||||
adv = "" ;
|
||||
preap, postap = { s = \\_ => "" } ;
|
||||
det = { s,sp = \\_,_ => "" ; n = Sg }
|
||||
} ;
|
||||
|
||||
-- UsePron : Pron -> NP ; -- he
|
||||
UsePron p =
|
||||
{
|
||||
g = p.g ;
|
||||
n = p.n ;
|
||||
g = p.pers.g ;
|
||||
n = p.pers.n ;
|
||||
p = p.p ;
|
||||
s = \\c => case c of {
|
||||
Nom => p.pers ! PronDrop ! PronRefl ; -- Drop pronoun in nominative case
|
||||
_ => p.pers ! PronNonDrop ! PronRefl -- but don't drop it otherwise
|
||||
Nom => p.pers.s ! PronDrop ! PronNonRefl ; -- Drop pronoun in nominative case
|
||||
_ => p.pers.s ! PronNonDrop ! PronNonRefl -- but don't drop it otherwise
|
||||
} ! c ;
|
||||
adv = "" ;
|
||||
preap, postap = { s = \\_ => "" } ;
|
||||
det = { s,sp = \\_,_ => "" ; n = p.pers.n } ;
|
||||
} ;
|
||||
-- PredetNP pred np = {
|
||||
-- s = \\c => pred.s ++ np.s ! c ;
|
||||
-- a = np.a
|
||||
-- } ;
|
||||
--
|
||||
|
||||
-- PredetNP : Predet -> NP -> NP ; -- only the man
|
||||
PredetNP predet np =
|
||||
np ** {
|
||||
det = np.det ** { s = \\g,c => predet.s ++ np.det.s ! g ! c }
|
||||
} ;
|
||||
|
||||
-- PPartNP : NP -> V2 -> NP ; -- the man seen
|
||||
-- PPartNP np v2 = {
|
||||
-- s = \\c => np.s ! c ++ v2.s ! VPPart ;
|
||||
-- a = np.a
|
||||
-- } ;
|
||||
--
|
||||
-- RelNP np rs = {
|
||||
-- s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ;
|
||||
-- a = np.a
|
||||
-- } ;
|
||||
--
|
||||
|
||||
-- AdvNP : NP -> Adv -> NP ; -- Paris today
|
||||
AdvNP np adv = {
|
||||
s = \\c => np.s ! c ++ adv.s ;
|
||||
g = np.g ; n = np.n; p = np.p
|
||||
} ;
|
||||
-- AdvNP : NP -> Adv -> NP ; -- Paris today
|
||||
AdvNP np adv = np ** { adv = np.adv ++ (adv.s ! Posit) } ;
|
||||
-- {
|
||||
-- s = \\c => np.s ! c ;
|
||||
-- g = np.g ; n = np.n; p = np.p ;
|
||||
-- adv = cc2 np.adv adv ;
|
||||
-- preap = np.preap ;
|
||||
-- postap = np.postap ;
|
||||
-- det = np.det;
|
||||
-- } ;
|
||||
|
||||
-- ExtAdvNP: NP -> Adv -> NP ; -- boys, such as ..
|
||||
ExtAdvNP = AdvNP ;
|
||||
|
||||
-- RelNP : NP -> RS -> NP ; -- Paris, which is here
|
||||
RelNP np rs = np ** { adv = rs.s ++ np.adv } ;
|
||||
|
||||
-- DetNP : Det -> NP ; -- these five
|
||||
DetNP det = {
|
||||
s = det.s ! Neutr ;
|
||||
g = Neutr ;
|
||||
n = det.n ;
|
||||
p = P3 ;
|
||||
adv = "" ;
|
||||
preap, postap = { s = \\_ => "" } ;
|
||||
det = { s,sp = \\_,_ => "" ; n = det.n } ;
|
||||
} ;
|
||||
--
|
||||
-- DetQuantOrd quant num ord = {
|
||||
-- s = quant.s ! num.hasCard ! num.n ++ num.s ++ ord.s ;
|
||||
@@ -53,10 +95,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
|
||||
n = num.n
|
||||
} ;
|
||||
|
||||
-- DetNP det = {
|
||||
-- s = det.sp ! Neutr ;
|
||||
-- g = Neutr ; n = det.n ; p = P3
|
||||
-- } ;
|
||||
|
||||
|
||||
-- PossPron p = {
|
||||
-- s = \\_,_ => p.s ! Gen ;
|
||||
@@ -66,13 +105,14 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
|
||||
NumSg = {s = \\_,_ => [] ; n = Sg} ;
|
||||
NumPl = {s = \\_,_ => [] ; n = Pl} ;
|
||||
|
||||
-- NumCard n = n ** {hasCard = True} ;
|
||||
NumCard n = n ;
|
||||
--
|
||||
-- NumDigits n = {s = n.s ! NCard ; n = n.n} ;
|
||||
-- OrdDigits n = {s = n.s ! NOrd} ;
|
||||
--
|
||||
-- NumNumeral numeral = {s = numeral.s ! NCard; n = numeral.n} ;
|
||||
-- OrdNumeral numeral = {s = numeral.s ! NOrd} ;
|
||||
-- OrdDigits n = {s = n.s ! NOrd} ;
|
||||
--
|
||||
lin
|
||||
NumNumeral numeral = numeral.card ;
|
||||
OrdNumeral numeral = numeral.ord ;
|
||||
--
|
||||
-- AdNum adn num = {s = adn.s ++ num.s ; n = num.n} ;
|
||||
--
|
||||
@@ -88,16 +128,24 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
|
||||
sp = \\_ => [] ;
|
||||
} ;
|
||||
|
||||
-- MassNP cn = {
|
||||
-- s = cn.s ! Sg ;
|
||||
-- a = Ag cn.g Sg
|
||||
-- } ;
|
||||
MassNP cn =
|
||||
{
|
||||
s = cn.s ! Sg ;
|
||||
-- s = case cn.massable of { True => cn.s ! Sg ; False => \\_ => nonExist } ;
|
||||
g = cn.g ;
|
||||
n = Sg ;
|
||||
p = P3 ;
|
||||
adv = cn.adv ;
|
||||
preap = cn.preap ;
|
||||
postap = cn.postap ;
|
||||
det = { s,sp = \\_,_ => "" ; n = Sg } ;
|
||||
};
|
||||
|
||||
UseN n = -- N -> CN
|
||||
lin CN ( n ** {preap, postap = {s = \\_ => "" } } ) ;
|
||||
lin CN ( n ** {preap, postap = {s = \\_ => "" } ; adv = "" }) ; -- massable = n.massable } ) ;
|
||||
|
||||
UseN2 n2 = -- N2 -> CN
|
||||
lin CN ( n2 ** {preap, postap = {s = \\_ => "" } } ) ;
|
||||
lin CN ( n2 ** {preap, postap = {s = \\_ => "" } ; adv = "" }) ; -- massable = n2.massable } ) ;
|
||||
-----b UseN3 n = n ;
|
||||
--
|
||||
-- Use2N3 f = {
|
||||
@@ -119,21 +167,10 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
|
||||
-- c2 = f.c3
|
||||
-- } ;
|
||||
|
||||
param
|
||||
AdjPos = Pre | Post ;
|
||||
lin
|
||||
-- by default add adjective after the noun, otherwise use AdjCNPre
|
||||
AdjCN ap cn = -- AP -> CN -> CN
|
||||
let pos = variants { Post ; Pre }
|
||||
in
|
||||
{
|
||||
-- s = \\n,c => preOrPost ap.isPre (ap.s ! cn.g ! n ! c) (cn.s ! n ! c) ;
|
||||
-- s = \\n,c => ( cn.s ! n ! c ) ++ ( ap.s ! AdjPhr cn.g n c) ; -- always add adjectives after noun?
|
||||
s = cn.s ;
|
||||
postap = case pos of { Pre => cn.postap ; Post => { s = \\a => ap.s ! a ++ cn.postap.s ! a } } ;
|
||||
preap = case pos of { Pre => { s = \\a => ap.s ! a ++ cn.preap.s ! a } ; Post => cn.preap } ;
|
||||
-- variants { postap = ConsAP postap ap ; preap = ConsAP preap ap } ; -- Nice if that would work
|
||||
g = cn.g
|
||||
} ;
|
||||
addAdjToCN (lin AP ap) (lin CN cn) Post ;
|
||||
|
||||
-- RelCN cn rs = {
|
||||
-- s = \\n,c => cn.s ! n ! c ++ rs.s ! agrgP3 n cn.g ;
|
||||
@@ -143,7 +180,14 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
|
||||
-- AdvCN cn ad = {s = \\n,c => cn.s ! n ! c ++ ad.s ; g = cn.g} ;
|
||||
|
||||
-- SentCN cn sc = {s = \\n,c => cn.s ! n ! c ++ sc.s ; g = cn.g} ;
|
||||
--
|
||||
-- ApposCN cn np = {s = \\n,c => cn.s ! n ! Nom ++ np.s ! c ; g = cn.g} ;
|
||||
--
|
||||
--
|
||||
-- ApposCN : CN -> NP -> CN
|
||||
ApposCN cn np =
|
||||
{
|
||||
s = \\n,c => cn.s ! n ! c ++ np.det.s ! np.g ! c ++ np.preap.s ! (Ag np.g n c) ++ np.s ! c ++ np.postap .s ! (Ag np.g n c) ++ np.det.sp ! np.g ! c ;
|
||||
g = cn.g ;
|
||||
preap = cn.preap ;
|
||||
postap = cn.postap ;
|
||||
adv = cn.adv
|
||||
} ; -- massable = cn.massable } ;
|
||||
}
|
||||
|
||||
@@ -1,42 +1,36 @@
|
||||
concrete NumeralLat of Numeral = CatLat ** open ResLat in {
|
||||
--
|
||||
--lincat
|
||||
-- Digit = {s : DForm => CardOrd => Str} ;
|
||||
-- Sub10 = {s : DForm => CardOrd => Str ; n : Number} ;
|
||||
-- Sub100 = {s : CardOrd => Str ; n : Number} ;
|
||||
-- Sub1000 = {s : CardOrd => Str ; n : Number} ;
|
||||
-- Sub1000000 = {s : CardOrd => Str ; n : Number} ;
|
||||
--
|
||||
--lin num x = x ;
|
||||
--lin n2 = let two = mkNum "two" "twelve" "twenty" "second" in
|
||||
-- {s = \\f,c => case <f,c> of {
|
||||
-- <teen,NOrd> => "twelfth" ;
|
||||
-- _ => two.s ! f ! c
|
||||
-- }
|
||||
-- } ;
|
||||
--
|
||||
--lin n3 = mkNum "three" "thirteen" "thirty" "third" ;
|
||||
--lin n4 = mkNum "four" "fourteen" "forty" "fourth" ;
|
||||
--lin n5 = mkNum "five" "fifteen" "fifty" "fifth" ;
|
||||
--lin n6 = regNum "six" ;
|
||||
--lin n7 = regNum "seven" ;
|
||||
--lin n8 = mkNum "eight" "eighteen" "eighty" "eighth" ;
|
||||
--lin n9 = mkNum "nine" "nineteen" "ninety" "ninth" ;
|
||||
--
|
||||
--lin pot01 = mkNum "one" "eleven" "ten" "first" ** {n = Sg} ;
|
||||
--lin pot0 d = d ** {n = Pl} ;
|
||||
concrete NumeralLat of Numeral = CatLat ** open ResLat,ParadigmsLat in {
|
||||
lincat
|
||||
Digit = Numeral ;
|
||||
Sub10 = Numeral ;
|
||||
Sub100 = Numeral ;
|
||||
Sub1000 = Numeral ;
|
||||
Sub1000000 = Numeral ;
|
||||
|
||||
lin
|
||||
num x = x ;
|
||||
n2 = lin Numeral ( mkNum "duo" "secundus" ) ;
|
||||
n3 = lin Numeral ( mkNum "tres" "tertius" ) ;
|
||||
n4 = lin Numeral ( mkNum "quattuor" "quartus" ) ;
|
||||
n5 = lin Numeral ( mkNum "quinque" "quintus" ) ;
|
||||
n6 = lin Numeral ( mkNum "sex" "sextus" ) ;
|
||||
n7 = lin Numeral ( mkNum "septem" "septimus" ) ;
|
||||
n8 = lin Numeral ( mkNum "octo" "ocatvus" ) ;
|
||||
n9 = lin Numeral ( mkNum "novem" "nonus" ) ;
|
||||
|
||||
lin pot01 = lin Numeral ( mkNum "unus" "primus" ) ;
|
||||
lin pot0 d = d ;
|
||||
--lin pot110 = regCardOrd "ten" ** {n = Pl} ;
|
||||
--lin pot111 = regCardOrd "eleven" ** {n = Pl} ;
|
||||
--lin pot1to19 d = {s = d.s ! teen} ** {n = Pl} ;
|
||||
--lin pot0as1 n = {s = n.s ! unit} ** {n = n.n} ;
|
||||
lin pot0as1 n = n ;
|
||||
--lin pot1 d = {s = d.s ! ten} ** {n = Pl} ;
|
||||
--lin pot1plus d e = {
|
||||
-- s = \\c => d.s ! ten ! NCard ++ "-" ++ e.s ! unit ! c ; n = Pl} ;
|
||||
--lin pot1as2 n = n ;
|
||||
pot1as2 n = n ;
|
||||
--lin pot2 d = {s = \\c => d.s ! unit ! NCard ++ mkCard c "hundred"} ** {n = Pl} ;
|
||||
--lin pot2plus d e = {
|
||||
-- s = \\c => d.s ! unit ! NCard ++ "hundred" ++ "and" ++ e.s ! c ; n = Pl} ;
|
||||
--lin pot2as3 n = n ;
|
||||
pot2as3 n = n ;
|
||||
--lin pot3 n = {
|
||||
-- s = \\c => n.s ! NCard ++ mkCard c "thousand" ; n = Pl} ;
|
||||
--lin pot3plus n m = {
|
||||
|
||||
@@ -24,9 +24,15 @@ resource ParadigmsLat = open
|
||||
-- To abstract over gender names, we define the following identifiers.
|
||||
|
||||
oper
|
||||
masculine : Gender ;
|
||||
feminine : Gender ;
|
||||
neuter : Gender ;
|
||||
masculine : Gender = Masc ;
|
||||
feminine : Gender = Fem ;
|
||||
neuter : Gender = Neutr ;
|
||||
nom : Case = Nom ;
|
||||
acc : Case = Acc ;
|
||||
gen : Case = Gen ;
|
||||
dat : Case = Dat ;
|
||||
abl : Case = Abl ;
|
||||
voc : Case = ResLat.Voc ;
|
||||
|
||||
mkN = overload {
|
||||
mkN : (verbum : Str) -> N
|
||||
@@ -36,21 +42,28 @@ oper
|
||||
} ;
|
||||
|
||||
mkA = overload {
|
||||
mkA : (verbum : Str) -> A
|
||||
mkA : (verbum : Str) -> A -- Nominative masculine
|
||||
= \n -> lin A ( adj n ** {isPre = False } ) ;
|
||||
mkA : (verbum, verbi : Str) -> A
|
||||
mkA : (verbum, verbi : Str) -> A -- Nominative and Genitive masculine
|
||||
= \x,y -> lin A ( adj123 x y ** {isPre = False } ) ;
|
||||
mkA : (bonus,bona,bonum : N) -> A
|
||||
= \x,y,z ->
|
||||
let compsup = comp_super x ;
|
||||
advs : Str * Str =
|
||||
case x.s!Sg!Nom of {
|
||||
-- Bayer-Lindauer 50 4
|
||||
idon + #vowel + "us" => < "magis" , "maxime" > ;
|
||||
_ => < "" , "" >
|
||||
};
|
||||
in
|
||||
lin A ( mkAdjective x y z < compsup.p1 , advs.p2 > < compsup.p2 , advs.p2> ** {isPre = False } ) ;
|
||||
-- mkA : (bonus,bona,bonum : N) -> A
|
||||
-- = \x,y,z ->
|
||||
-- let compsup = comp_super x ;
|
||||
-- advs : Str * Str =
|
||||
-- case x.s!Sg!Nom of {
|
||||
-- -- Bayer-Lindauer 50 4
|
||||
-- idon + #vowel + "us" => < "magis" , "maxime" > ;
|
||||
-- _ => < "" , "" >
|
||||
-- };
|
||||
-- in
|
||||
-- lin A ( mkAdjective x y z < compsup.p1 , advs.p2 > < compsup.p2 , advs.p2> ** {isPre = False } ) ;
|
||||
mkA : (bonus,bona,bonum : Str) -> A -- Nominative masculine, feminine and neuter
|
||||
= \x,y,z -> lin A (adjfull x y z ) ;
|
||||
mkA : (verbum : Str) -> (comparable : Bool) -> A
|
||||
= \n,b -> lin A ( case b of {
|
||||
True => adj n ;
|
||||
False => let a = adj n in { s = table { Posit => a.s ! Posit ; _ => \\_ => nonExist } ; adv = a.adv }
|
||||
} ** { isPre = False } )
|
||||
} ;
|
||||
|
||||
|
||||
@@ -63,9 +76,12 @@ oper
|
||||
= \v,x,y -> lin V ( verb_ippp v x y nonExist ) ;
|
||||
} ;
|
||||
|
||||
V0 : Type = V ;
|
||||
mkV0 : V -> V0 = \v -> lin V0 v ; -- Same as in english, don't know if it's working
|
||||
|
||||
V0 : Type = V;
|
||||
mkV0 = overload {
|
||||
mkV0 : V -> V0 = \v -> lin V0 v ; -- Same as in english, don't know if it's working
|
||||
mkV0 : Str -> V0 = \v -> lin V0 (mkImpersonal v) ;
|
||||
} ;
|
||||
|
||||
mkV2 = overload {
|
||||
mkV2 : (amare : Str) -> V2
|
||||
= \v -> lin V2 ( verb v ** { c = lin Prep ( mkPrep "" Acc ) } ) ;
|
||||
@@ -75,13 +91,26 @@ oper
|
||||
= \v,p -> lin V2 ( v ** { c = p } ) ;
|
||||
} ;
|
||||
|
||||
masculine = Masc ;
|
||||
feminine = Fem ;
|
||||
neuter = Neutr ;
|
||||
|
||||
mkAdv : Str -> Adv
|
||||
= \s -> lin Adv {s = s} ;
|
||||
mkAdv = overload {
|
||||
mkAdv : Str -> Adv
|
||||
= \s -> lin Adv (mkAdverb s) ;
|
||||
mkAdv : (pos,comp,super : Str) -> Adv
|
||||
= \p,c,s -> lin Adv (mkFullAdverb p c s);
|
||||
mkAdv : (pos,comp : Str) -> Adv
|
||||
= \p,c -> lin Adv (mkFullAdverb p c nonExist);
|
||||
};
|
||||
|
||||
pluralN = ResLat.pluralN ;
|
||||
singularN = ResLat.singularN ;
|
||||
|
||||
mkConj : Str -> Str -> Number -> Coordinator -> Conjunction = mkConjunction ;
|
||||
|
||||
mkPrep : Str -> Case -> Preposition = mkPreposition ;
|
||||
|
||||
mkPron = mkPronoun ;
|
||||
|
||||
mkNum = mkNumeral ;
|
||||
-- To be implemented, just place holders
|
||||
mkPN : N -> PN = \n -> lin PN n ;
|
||||
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 ( n ** { c = p } );
|
||||
|
||||
@@ -1,24 +1,37 @@
|
||||
concrete PhraseLat of Phrase = CatLat ** open Prelude, ResLat in {
|
||||
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
--
|
||||
-- UttS : S -> Utt
|
||||
UttS s = { s = s.s };
|
||||
UttS s = { s = combineSentence s ! SPreS ! PreS ! SOV };
|
||||
|
||||
-- UttQS : QS -> Utt
|
||||
UttQS qs = {s = qs.s ! QDir } ;
|
||||
-- UttImpSg : Pol -> Imp -> Utt
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! VImp1 Sg } ;
|
||||
-- UttImpPl : Pol -> Imp -> Utt
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! VImp1 Pl } ;
|
||||
-- UttImpPol : Pol -> Imp -> Utt
|
||||
UttImpPol pol imp = UttImpSg pol imp ;
|
||||
-- UttIP : IP -> Utt
|
||||
UttIP ip = {s = ip.s ! Nom} ; --- Acc also
|
||||
-- UttIAdv : IAdv -> Utt
|
||||
UttIAdv iadv = iadv ;
|
||||
-- UttNP : NP -> Utt
|
||||
UttNP np = {s = np.adv ++ np.det.s ! np.g ! Nom ++ np.preap.s ! (Ag np.g np.n Nom) ++ np.s ! Nom ++ np.postap.s ! (Ag np.g np.n Nom) ++ np.det.sp ! np.g ! Nom} ;
|
||||
-- UttVP : VP -> Utt
|
||||
UttVP vp = ss (vp.inf ! VInfActPres) ;
|
||||
|
||||
-- UttImpSg pol imp = {s = pol.s ++ imp.s ! contrNeg True pol.p ! ImpF Sg False} ;
|
||||
-- UttImpPl pol imp = {s = pol.s ++ imp.s ! contrNeg True pol.p ! ImpF Pl False} ;
|
||||
-- UttImpPol pol imp = {s = pol.s ++ imp.s ! contrNeg True pol.p ! ImpF Sg True} ;
|
||||
--
|
||||
-- UttIP ip = {s = ip.s ! Nom} ; --- Acc also
|
||||
-- UttIAdv iadv = iadv ;
|
||||
-- UttNP np = {s = np.s ! Nom} ;
|
||||
-- UttVP vp = {s = infVP False vp (agrP3 Sg)} ;
|
||||
-- UttAdv adv = adv ;
|
||||
--
|
||||
-- UttAdv : Adv -> Utt
|
||||
UttAdv adv = ss (adv.s ! Posit) ;
|
||||
-- UttAP : AP -> Utt
|
||||
UttAP ap = ss (ap.s ! Ag Masc Sg Nom );
|
||||
-- UttCard : Card -> Utt
|
||||
UttCard card = ss (card.s ! Masc ! Nom);
|
||||
-- UttCN : CN -> Utt
|
||||
UttCN cn = ss (cn.s ! Sg ! Nom) ;
|
||||
-- UttInterj : Interj -> Utt
|
||||
UttInterj interj = interj ;
|
||||
NoPConj = {s = []} ;
|
||||
PConjConj conj = {s = conj.s2} ; ---
|
||||
--
|
||||
|
||||
@@ -3,29 +3,35 @@ concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in {
|
||||
-- flags optimize=all_subs ;
|
||||
--`
|
||||
lin
|
||||
-- QuestCl : Cl -> QCl ; -- does John walk
|
||||
QuestCl cl = {
|
||||
s = \\t,a,p =>
|
||||
let cls = cl.s ! t ! a ! p
|
||||
in table {
|
||||
QDir => cls ! VQTrue ! VSO ; -- cls ! OQuest ;
|
||||
QIndir => "" -- "if" ++ cls ! ODir -- TODO
|
||||
}
|
||||
} ;
|
||||
-- QuestCl : Cl -> QCl ; -- does John walk
|
||||
-- TO FIX
|
||||
-- QuestCl cl = {
|
||||
-- s = \\t,a,p =>
|
||||
-- let cls = (combineClause cl PreS).s ! t ! a ! p
|
||||
-- in table {
|
||||
-- QDir => cls ! VQTrue ! VSO ! PreV ; -- cls ! OQuest ;
|
||||
-- QIndir => "" -- "if" ++ cls ! ODir -- TODO
|
||||
-- }
|
||||
-- } ;
|
||||
|
||||
-- QuestVP : IP -> VP -> QCl ; -- who walks
|
||||
QuestVP ip vp =
|
||||
let qcl = mkQuestion { s = ip.s ! Nom } ( mkClause emptyNP vp )
|
||||
in {s = \\t,a,b,qd => qcl.s ! t ! a ! b ! qd} ;
|
||||
-- QuestVP : IP -> VP -> QCl ; -- who walks
|
||||
-- TO FIX
|
||||
-- QuestVP ip vp =
|
||||
-- let qcl = mkQuestion { s = ip.s ! Nom } ( mkClause emptyNP vp )
|
||||
-- in {s = \\t,a,b,qd => qcl.s ! t ! a ! b ! qd} ;
|
||||
|
||||
-- QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love
|
||||
QuestSlash ip slash =
|
||||
mkQuestion (ss ( ip.s ! Acc) ) slash ;
|
||||
-- QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love
|
||||
-- TO FIX
|
||||
|
||||
-- QuestSlash ip slash =
|
||||
-- mkQuestion (ss ( ip.s ! Acc) ) slash ;
|
||||
|
||||
QuestIAdv iadv cl = mkQuestion iadv cl ;
|
||||
-- TO FIX
|
||||
-- QuestIAdv iadv cl = mkQuestion iadv cl ;
|
||||
--
|
||||
QuestIComp icomp np =
|
||||
mkQuestion icomp (mkClause np (predV be_V) ) ;
|
||||
-- TO FIX
|
||||
-- QuestIComp icomp np =
|
||||
-- mkQuestion icomp (mkClause np (predV be_V) ) ;
|
||||
--
|
||||
--
|
||||
-- PrepIP p ip = {s = p.s ++ ip.s ! Acc} ;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
--concrete RelativeLat of Relative = CatLat ** open ResLat in {
|
||||
concrete RelativeLat of Relative = CatLat ** open ResLat in {
|
||||
--
|
||||
-- flags optimize=all_subs ;
|
||||
--
|
||||
@@ -51,4 +51,4 @@
|
||||
-- a = RNoAg
|
||||
-- } ;
|
||||
--
|
||||
--}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
--1 Latin auxiliary operations.
|
||||
|
||||
resource ResLat = ParamX ** open Prelude,TenseX in {
|
||||
resource ResLat = ParamX ** open Prelude, Predef, (C=CommonX) in {
|
||||
|
||||
param
|
||||
Case = Nom | Acc | Gen | Dat | Abl | Voc ;
|
||||
@@ -12,36 +12,47 @@ param
|
||||
oper
|
||||
consonant : pattern Str = #( "p" | "b" | "f" | "v" | "m" | "t" | "d" | "s" | "z" | "n" | "r" | "c" | "g" | "l" | "q" | "qu" | "h" );
|
||||
|
||||
Noun : Type = {s : Number => Case => Str ; g : Gender} ;
|
||||
Noun : Type = {s : Number => Case => Str ; g : Gender } ; -- massable : Bool } ;
|
||||
NounPhrase : Type =
|
||||
{
|
||||
s : Case => Str ;
|
||||
g : Gender ;
|
||||
n : Number ;
|
||||
p : Person ;
|
||||
adv : Str ;
|
||||
preap : {s : Agr => Str } ;
|
||||
postap : {s : Agr => Str } ;
|
||||
det : Determiner
|
||||
} ;
|
||||
param
|
||||
Order = SVO | VSO | VOS | OSV | OVS | SOV ;
|
||||
Order = SVO | VSO | VOS | OSV | OVS | SOV ;
|
||||
AdvPos = PreS | PreV | PreO | PreNeg | InV | InS ; -- | InO
|
||||
SAdvPos = SPreS | SPreV | SPreO | SPreNeg ;
|
||||
param
|
||||
Agr = Ag Gender Number Case ; -- Agreement for NP et al.
|
||||
oper
|
||||
Adjective : Type = {
|
||||
s : Degree => Agr => Str ;
|
||||
-- comp_adv : Str ;
|
||||
-- super_adv : Str
|
||||
-- super_adv : Str
|
||||
adv : Adverb ;
|
||||
} ;
|
||||
ComplexNoun : Type =
|
||||
CommonNoun : Type =
|
||||
{
|
||||
s : Number => Case => Str ;
|
||||
g : Gender ;
|
||||
adv : Str ;
|
||||
preap : {s : Agr => Str } ;
|
||||
postap : {s : Agr => Str } ;
|
||||
} ;
|
||||
postap : {s : Agr => Str }
|
||||
-- massable : Bool
|
||||
} ;
|
||||
|
||||
-- nouns
|
||||
useCNasN : ComplexNoun -> Noun = \cn ->
|
||||
useCNasN : CommonNoun -> Noun = \cn ->
|
||||
{
|
||||
s = cn.s ;
|
||||
g = cn.g ;
|
||||
g = cn.g
|
||||
-- massable = cn.massable;
|
||||
} ;
|
||||
|
||||
pluralN : Noun -> Noun = \n ->
|
||||
@@ -52,11 +63,39 @@ param
|
||||
};
|
||||
g = n.g ;
|
||||
preap = n.preap ;
|
||||
postap = n.postap ;
|
||||
postap = n.postap
|
||||
-- massable = n.massable ;
|
||||
};
|
||||
|
||||
mkNoun : (n1,_,_,_,_,_,_,_,_,n10 : Str) -> Gender -> Noun =
|
||||
|
||||
singularN : Noun -> Noun = \n ->
|
||||
lin N {
|
||||
s = table {
|
||||
Sg => n.s ! Sg ;
|
||||
Pl => \\_ => nonExist -- no plural forms
|
||||
};
|
||||
g = n.g ;
|
||||
preap = n.preap ;
|
||||
postap = n.postap
|
||||
-- massable = n.massable ;
|
||||
};
|
||||
|
||||
param
|
||||
AdjPos = Pre | Post ;
|
||||
oper
|
||||
addAdjToCN : AdjectivePhrase -> CommonNoun -> AdjPos -> CommonNoun = \ap,cn,pos ->
|
||||
{
|
||||
s = cn.s ;
|
||||
postap = case pos of { Pre => cn.postap ; Post => { s = \\a => ap.s ! a ++ cn.postap.s ! a } } ;
|
||||
preap = case pos of { Pre => { s = \\a => ap.s ! a ++ cn.preap.s ! a } ; Post => cn.preap } ;
|
||||
g = cn.g ;
|
||||
adv = cn.adv
|
||||
-- massable = cn.massable
|
||||
} ;
|
||||
|
||||
mkNoun : (n1,_,_,_,_,_,_,_,_,n10 : Str) -> Gender -> Noun =
|
||||
\sn,sa,sg,sd,sab,sv,pn,pa,pg,pd,g -> {
|
||||
-- mkNoun : (n1,_,_,_,_,_,_,_,_,n10 : Str) -> Gender -> Bool -> Noun =
|
||||
--\sn,sa,sg,sd,sab,sv,pn,pa,pg,pd,g,m -> {
|
||||
s = table {
|
||||
Sg => table {
|
||||
Nom => sn ;
|
||||
@@ -74,31 +113,51 @@ param
|
||||
}
|
||||
} ;
|
||||
g = g
|
||||
-- massable = m
|
||||
} ;
|
||||
|
||||
-- to change the default gender
|
||||
|
||||
nounWithGen : Gender -> Noun -> Noun = \g,n ->
|
||||
{s = n.s ; g = g} ;
|
||||
nounWithGender : Gender -> Noun -> Noun = \g,n ->
|
||||
{s = n.s ; g = g } ; -- massable = n.massable ;} ;
|
||||
|
||||
-- nounMassable : Bool -> Noun -> Noun = \m,n ->
|
||||
-- {s = n.s ; g = n.g ; massable = m } ;
|
||||
|
||||
prefixNoun : Str -> Noun -> Noun =
|
||||
\p,n ->
|
||||
{ s = \\num,cas => addPrefix p (n.s ! num ! cas) ; g = n.g };
|
||||
|
||||
|
||||
regNP : (_,_,_,_,_,_ : Str) -> Gender -> Number -> NounPhrase =
|
||||
\nom,acc,gen,dat,abl,voc,g,n ->
|
||||
{
|
||||
s = table Case [ nom ; acc ; gen ; dat ; abl ; voc ] ;
|
||||
g = g ;
|
||||
n = n ;
|
||||
p = P3
|
||||
p = P3;
|
||||
adv = "" ;
|
||||
preap, postap = { s = \\_ => "" } ;
|
||||
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = n} ;
|
||||
} ;
|
||||
|
||||
emptyNP : NounPhrase = { s = \\_ => ""; g = Masc; n = Sg; p = P1 };
|
||||
|
||||
dummyNP : Str -> NounPhrase = \s -> regNP s s s s s s Masc Sg ;
|
||||
|
||||
emptyNP : NounPhrase = { s = \\_ => ""; g = Masc; n = Sg; p = P1 ; adv = "" ; preap, postap = { s = \\_ => "" } ; det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = Sg } ;};
|
||||
-- also used for adjectives and so on
|
||||
|
||||
-- adjectives
|
||||
|
||||
mkAdjective : (_,_,_ : Noun) ->
|
||||
AdjectivePhrase : Type = {
|
||||
s : Agr => Str ;
|
||||
-- isPre : Bool ; -- should have no use in latin because adjectives can appear variably before and after nouns
|
||||
} ;
|
||||
mkAdjective : (bonus,bona,bonum : Noun) ->
|
||||
( (Agr => Str) * Str ) ->
|
||||
( (Agr => Str) * Str ) -> Adjective =
|
||||
\bonus,bona,bonum,melior,optimus ->
|
||||
( (Agr => Str) * Str ) ->
|
||||
(bono,bonius,bonissimo : Str) ->
|
||||
Adjective =
|
||||
\bonus,bona,bonum,melior,optimus,bono,bonius,bonissimo ->
|
||||
{
|
||||
s = table {
|
||||
Posit => table {
|
||||
@@ -110,7 +169,8 @@ param
|
||||
Superl => optimus.p1
|
||||
} ;
|
||||
comp_adv = melior.p2 ;
|
||||
super_adv = optimus.p2
|
||||
super_adv = optimus.p2 ;
|
||||
adv = { s = table { Posit => bono ; Compar => bonius ; Superl => bonissimo } };
|
||||
} ;
|
||||
|
||||
|
||||
@@ -128,7 +188,7 @@ param
|
||||
|
||||
|
||||
emptyAdj : Adjective =
|
||||
{ s = \\_,_ => "" ; comp_adv = "" ; super_adv = "" } ;
|
||||
{ s = \\_,_ => "" ; comp_adv = "" ; super_adv = "" ; adv = { s = \\_ => "" } } ;
|
||||
|
||||
-- verbs
|
||||
|
||||
@@ -149,11 +209,16 @@ param
|
||||
|
||||
oper
|
||||
VerbPhrase : Type = {
|
||||
fin : VActForm => VQForm => Str ;
|
||||
s : VActForm => VQForm => Str ;
|
||||
part : VPartForm =>Agr => Str ;
|
||||
inf : VInfForm => Str ;
|
||||
imp : VImpForm => Str ;
|
||||
obj : Str ;
|
||||
adj : Agr => Str
|
||||
} ;
|
||||
compl : Agr => Str ; -- general complement. Agr might be ignored except for adjectives
|
||||
adv : Str
|
||||
} ;
|
||||
|
||||
ObjectVerbPhrase : Type = VerbPhrase ** {c : Preposition} ;
|
||||
|
||||
Verb : Type = {
|
||||
act : VActForm => Str ;
|
||||
@@ -203,10 +268,11 @@ param
|
||||
|
||||
useVPasV : VerbPhrase -> Verb = \vp ->
|
||||
{
|
||||
act = \\a => vp.obj ++ vp.fin ! a ! VQFalse;
|
||||
act = \\a => vp.obj ++ vp.s ! a ! VQFalse;
|
||||
pass = \\_ => nonExist ;
|
||||
inf = \\a => vp.obj ++ vp.inf ! a ;
|
||||
imp = \\_ => nonExist ;
|
||||
-- inf = \\a => vp.obj ++ vp.inf ! a ;
|
||||
inf = vp.inf ;
|
||||
imp = vp.imp ;
|
||||
ger = \\_ => nonExist ;
|
||||
geriv = \\_ => nonExist ;
|
||||
sup = \\_ => nonExist ;
|
||||
@@ -378,25 +444,26 @@ param
|
||||
pres_stem + fill.p1 + "ndo"
|
||||
} ;
|
||||
geriv =
|
||||
( mkAdjective
|
||||
( mkNoun ( pres_stem + fill.p1 + "ndus" ) ( pres_stem + fill.p1 + "ndum" ) ( pres_stem + fill.p1 + "ndi" )
|
||||
( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "nde" )
|
||||
( pres_stem + fill.p1 + "ndi" ) ( pres_stem + fill.p1 + "ndos" ) ( pres_stem + fill.p1 + "ndorum" )
|
||||
( pres_stem + fill.p1 + "ndis" )
|
||||
Masc )
|
||||
( mkNoun ( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "ndam" ) ( pres_stem + fill.p1 + "ndae" )
|
||||
( pres_stem + fill.p1 + "ndae" ) ( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "nda" )
|
||||
( pres_stem + fill.p1 + "ndae" ) ( pres_stem + fill.p1 + "ndas" ) (pres_stem + fill.p1 +"ndarum" )
|
||||
( pres_stem + fill.p1 + "ndis" )
|
||||
Fem )
|
||||
( mkNoun ( pres_stem + fill.p1 + "ndum" ) ( pres_stem + fill.p1 + "ndum" ) ( pres_stem + fill.p1 + "ndi" )
|
||||
( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "ndum" )
|
||||
( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "ndorum" )
|
||||
( pres_stem + fill.p1 + "ndis" )
|
||||
Neutr )
|
||||
< \\_ => "" , "" >
|
||||
< \\_ => "" , "" >
|
||||
).s!Posit ;
|
||||
( mkAdjective
|
||||
( mkNoun ( pres_stem + fill.p1 + "ndus" ) ( pres_stem + fill.p1 + "ndum" ) ( pres_stem + fill.p1 + "ndi" )
|
||||
( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "nde" )
|
||||
( pres_stem + fill.p1 + "ndi" ) ( pres_stem + fill.p1 + "ndos" ) ( pres_stem + fill.p1 + "ndorum" )
|
||||
( pres_stem + fill.p1 + "ndis" )
|
||||
Masc )
|
||||
( mkNoun ( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "ndam" ) ( pres_stem + fill.p1 + "ndae" )
|
||||
( pres_stem + fill.p1 + "ndae" ) ( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "nda" )
|
||||
( pres_stem + fill.p1 + "ndae" ) ( pres_stem + fill.p1 + "ndas" ) (pres_stem + fill.p1 +"ndarum" )
|
||||
( pres_stem + fill.p1 + "ndis" )
|
||||
Fem )
|
||||
( mkNoun ( pres_stem + fill.p1 + "ndum" ) ( pres_stem + fill.p1 + "ndum" ) ( pres_stem + fill.p1 + "ndi" )
|
||||
( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "ndo" ) ( pres_stem + fill.p1 + "ndum" )
|
||||
( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "nda" ) ( pres_stem + fill.p1 + "ndorum" )
|
||||
( pres_stem + fill.p1 + "ndis" )
|
||||
Neutr )
|
||||
< \\_ => "" , "" > -- Comparative
|
||||
< \\_ => "" , "" > -- Superlative
|
||||
"" "" "" -- Adverb part
|
||||
).s!Posit ;
|
||||
sup =
|
||||
table {
|
||||
VSupAcc => -- Supin
|
||||
@@ -436,6 +503,7 @@ param
|
||||
Neutr )
|
||||
< \\_ => "" , "" >
|
||||
< \\_ => "" , "" >
|
||||
"" "" ""
|
||||
).s!Posit ;
|
||||
VPassPerf =>
|
||||
( mkAdjective
|
||||
@@ -453,6 +521,7 @@ param
|
||||
Neutr )
|
||||
< \\_ => "" , "" >
|
||||
< \\_ => "" , "" >
|
||||
"" "" ""
|
||||
).s!Posit
|
||||
}
|
||||
} ;
|
||||
@@ -607,6 +676,7 @@ param
|
||||
Neutr )
|
||||
< \\_ => "" , "" >
|
||||
< \\_ => "" , "" >
|
||||
"" "" ""
|
||||
).s!Posit ;
|
||||
sup =
|
||||
table {
|
||||
@@ -648,6 +718,7 @@ param
|
||||
Neutr )
|
||||
< \\_ => "" , "" >
|
||||
< \\_ => "" , "" >
|
||||
"" "" ""
|
||||
).s!Posit ;
|
||||
VPassPerf =>
|
||||
( mkAdjective
|
||||
@@ -668,10 +739,27 @@ param
|
||||
Neutr )
|
||||
< \\_ => "" , "" >
|
||||
< \\_ => "" , "" >
|
||||
"" "" ""
|
||||
).s!Posit
|
||||
}
|
||||
} ;
|
||||
|
||||
-- at the moment only fills present tense
|
||||
mkImpersonal : Str -> Verb = \s ->
|
||||
{
|
||||
act = table {
|
||||
VAct VSim (VPres VInd) Sg P1 => s ;
|
||||
_ => nonExist
|
||||
} ;
|
||||
pass = \\_ => nonExist ;
|
||||
imp = \\_ => nonExist ;
|
||||
inf = \\_ => nonExist ;
|
||||
ger = \\_ => nonExist ;
|
||||
geriv = \\_ => nonExist ;
|
||||
part = \\_,_ => nonExist ;
|
||||
sup = \\_ => nonExist ;
|
||||
} ;
|
||||
|
||||
actPresEnding : Number -> Person -> Str =
|
||||
useEndingTable <"m", "s", "t", "mus", "tis", "nt"> ;
|
||||
|
||||
@@ -690,7 +778,7 @@ param
|
||||
}
|
||||
in
|
||||
(useEndingTable endings n p) + passPresEnding n p ;
|
||||
|
||||
|
||||
useEndingTable : (Str*Str*Str*Str*Str*Str) -> Number -> Person -> Str =
|
||||
\es,n,p -> case n of {
|
||||
Sg => case p of {
|
||||
@@ -705,6 +793,210 @@ param
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
addPrefix : Str -> Str -> Str =
|
||||
\prefix,verb ->
|
||||
case <prefix,verb> of {
|
||||
<p + "b","f" + _ > => p + verb ;
|
||||
<p + "b", "te" + r > => prefix + "sti" + r;
|
||||
<p + "b", "t" + r > => prefix + "s" + verb;
|
||||
<p + "b", "iact" + r > => prefix + "iect" + r;
|
||||
<p + "b", "iac" + r > => prefix + "ic" + r;
|
||||
<p + "d","capt" + r > => p + "ccept" + r ;
|
||||
<p + "d","ca" + r > => p + "cci" + r ;
|
||||
<p ,"spe" + r > => p + "spi" + r ;
|
||||
<p ,"spex" + r > => prefix + verb;
|
||||
<p ,"stat" + r > => p + "stit" + r ;
|
||||
<p ,"tex" + r > => p + verb ;
|
||||
<p ,"te" + r > => p + "ti" + r ;
|
||||
<p + "d","c" + _ > => p + "c" + verb ;
|
||||
<p + "d","t" + _ > => p + "t" + verb ;
|
||||
<p + "d","l" + _ > => p + "l" + verb ;
|
||||
_ => prefix + verb
|
||||
} ;-- TODO too simple e.g. ab+fuit = afuit
|
||||
|
||||
prefixVerb2 : Str -> Verb2 -> Verb2 =
|
||||
\prefix,verb ->
|
||||
let v = { act = verb.act ; pass = verb.pass ; inf = verb.inf ; imp = verb.imp ; ger = verb.ger ; geriv = verb.geriv ; sup = verb.sup ; part = verb.part }
|
||||
in
|
||||
(prefixVerb prefix v) ** { c = verb.c };
|
||||
|
||||
prefixVerb : Str -> Verb -> Verb =
|
||||
\prefix,verb ->
|
||||
{
|
||||
act = \\form => addPrefix prefix (verb.act ! form) ;
|
||||
pass = \\form => addPrefix prefix (verb.pass ! form) ;
|
||||
inf = \\form => addPrefix prefix (verb.inf ! form) ;
|
||||
imp = \\form => addPrefix prefix (verb.imp ! form) ;
|
||||
ger = \\form => addPrefix prefix (verb.ger ! form) ;
|
||||
geriv = \\agr => addPrefix prefix (verb.geriv ! agr) ;
|
||||
sup = \\form => addPrefix prefix (verb.sup ! form) ;
|
||||
part = \\form,agr => addPrefix prefix (verb.part ! form ! agr) ;
|
||||
} ;
|
||||
|
||||
|
||||
esseAux : Verb = -- Bayer-Lindauer 93 1
|
||||
let
|
||||
pres_stem = "s" ;
|
||||
pres_ind_base = "su" ;
|
||||
pres_conj_base = "si" ;
|
||||
impf_ind_base = "era" ;
|
||||
impf_conj_base = "esse" ;
|
||||
fut_I_base = "eri" ;
|
||||
imp_base = "es" ;
|
||||
perf_stem = "fu" ;
|
||||
perf_ind_base = "fu" ;
|
||||
perf_conj_base = "fueri" ;
|
||||
pqperf_ind_base = "fuera" ;
|
||||
pqperf_conj_base = "fuisse" ;
|
||||
fut_II_base = "fueri" ;
|
||||
part_stem = "fut" ;
|
||||
verb = mkVerb "esse" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act =
|
||||
table {
|
||||
VAct VSim (VPres VInd) n p =>
|
||||
table Number [ table Person [ "sum" ; "es" ; "est" ] ;
|
||||
table Person [ "sumus" ; "estis" ; "sunt" ]
|
||||
] ! n ! p ;
|
||||
a => verb.act ! a
|
||||
};
|
||||
pass =
|
||||
\\_ => nonExist ; -- no passive forms
|
||||
inf =
|
||||
verb.inf ;
|
||||
imp =
|
||||
table {
|
||||
VImp1 Sg => "es" ;
|
||||
VImp1 Pl => "este" ;
|
||||
VImp2 Pl P2 => "estote" ;
|
||||
a => verb.imp ! a
|
||||
} ;
|
||||
sup =
|
||||
\\_ => nonExist ; -- no supin forms
|
||||
ger =
|
||||
\\_ => nonExist ; -- no gerund forms
|
||||
geriv =
|
||||
\\_ => nonExist ; -- no gerundive forms
|
||||
part = table {
|
||||
VActFut =>
|
||||
verb.part ! VActFut ;
|
||||
VActPres =>
|
||||
\\_ => nonExist ; -- no such participle
|
||||
VPassPerf =>
|
||||
\\_ => nonExist -- no such participle
|
||||
}
|
||||
} ;
|
||||
|
||||
ferreAux : Verb =
|
||||
let
|
||||
pres_stem = "fer" ;
|
||||
pres_ind_base = "fer" ;
|
||||
pres_conj_base = "fera" ;
|
||||
impf_ind_base = "fereba" ;
|
||||
impf_conj_base = "ferre" ;
|
||||
fut_I_base = "fere" ;
|
||||
imp_base = "fer" ;
|
||||
perf_stem = "tul" ;
|
||||
perf_ind_base = "tul" ;
|
||||
perf_conj_base = "tuleri" ;
|
||||
pqperf_ind_base = "tulera" ;
|
||||
pqperf_conj_base = "tulisse" ;
|
||||
fut_II_base = "tuleri" ;
|
||||
part_stem = "lat" ;
|
||||
verb = mkVerb "ferre" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act =
|
||||
table {
|
||||
VAct VSim (VPres VInd) n p =>
|
||||
table Number [ table Person [ "fero" ; "fers" ; "fert" ] ;
|
||||
table Person [ "ferimus" ; "fertis" ; "ferunt" ]
|
||||
] ! n ! p ;
|
||||
a => verb.act ! a
|
||||
} ;
|
||||
pass =
|
||||
table {
|
||||
VPass (VPres VInd) n p =>
|
||||
table Number [ table Person [ "feror" ; "ferris" ; "fertur" ] ;
|
||||
table Person [ "ferimur" ; "ferimini" ; "feruntur" ]
|
||||
] ! n ! p ;
|
||||
a => verb.pass ! a
|
||||
} ;
|
||||
inf =
|
||||
verb.inf ;
|
||||
imp =
|
||||
table {
|
||||
VImp1 n => table Number [ "fer" ; "ferte" ] ! n ;
|
||||
VImp2 Sg ( P2 | P3 ) => "ferto" ;
|
||||
VImp2 Pl P2 => "fertote" ;
|
||||
a => verb.imp ! a
|
||||
} ;
|
||||
sup =
|
||||
verb.sup ;
|
||||
ger =
|
||||
verb.ger ;
|
||||
geriv =
|
||||
verb.geriv ;
|
||||
part = verb.part ;
|
||||
};
|
||||
|
||||
posseAux : Verb =
|
||||
let
|
||||
pres_stem = "pos" ;
|
||||
pres_ind_base = "pos" ;
|
||||
pres_conj_base = "possi" ;
|
||||
impf_ind_base = "potera" ;
|
||||
impf_conj_base = "posse" ;
|
||||
fut_I_base = "poteri" ;
|
||||
imp_base = "" ;
|
||||
perf_stem = "potu" ;
|
||||
perf_ind_base = "potu" ;
|
||||
perf_conj_base = "potueri" ;
|
||||
pqperf_ind_base = "potuera" ;
|
||||
pqperf_conj_base = "potuisse" ;
|
||||
fut_II_base = "potueri" ;
|
||||
part_stem = "" ;
|
||||
verb = mkVerb "posse" pres_stem pres_ind_base pres_conj_base impf_ind_base impf_conj_base fut_I_base
|
||||
imp_base perf_stem perf_ind_base perf_conj_base pqperf_ind_base pqperf_conj_base fut_II_base part_stem ;
|
||||
in
|
||||
{
|
||||
act =
|
||||
table {
|
||||
VAct VSim (VPres VInd) n p =>
|
||||
table Number [ table Person [ "possum" ; "potes" ; "potest" ] ;
|
||||
table Person [ "possumus" ; "potestis" ; "possunt" ]
|
||||
] ! n ! p ;
|
||||
a => verb.act ! a
|
||||
} ;
|
||||
pass =
|
||||
\\_ => nonExist ; -- no passive forms
|
||||
inf =
|
||||
table {
|
||||
VInfActFut _ => nonExist ;
|
||||
a => verb.inf ! a
|
||||
} ;
|
||||
imp =
|
||||
\\_ => nonExist ;
|
||||
sup =
|
||||
\\_ => nonExist ;
|
||||
ger =
|
||||
\\_ => nonExist ;
|
||||
geriv =
|
||||
\\_ => nonExist ;
|
||||
part = table {
|
||||
VActFut =>
|
||||
\\_ => nonExist ; -- no such participle
|
||||
VActPres =>
|
||||
\\_ => nonExist ; -- no such participle
|
||||
VPassPerf =>
|
||||
\\_ => nonExist -- no such participle
|
||||
} ;
|
||||
};
|
||||
|
||||
-- pronouns
|
||||
|
||||
param
|
||||
@@ -717,15 +1009,31 @@ param
|
||||
-- PronIndef PronIndefUsage PronIndefPol PronIndefMeaning ;
|
||||
|
||||
oper
|
||||
|
||||
Pronoun : Type = {
|
||||
pers : PronDropForm => PronReflForm => Case => Str ;
|
||||
poss : PronReflForm => Agr => Str ;
|
||||
|
||||
PersonalPronoun = {
|
||||
s : PronDropForm => PronReflForm => Case => Str ;
|
||||
g : Gender ;
|
||||
n : Number ;
|
||||
p : Person ;
|
||||
n : Number
|
||||
} ;
|
||||
|
||||
PossessivePronoun = {
|
||||
s : PronReflForm => Agr => Str ;
|
||||
} ;
|
||||
|
||||
-- Pronoun : Type = {
|
||||
-- pers : PronDropForm => PronReflForm => Case => Str ;
|
||||
-- poss : PronReflForm => Agr => Str ;
|
||||
-- g : Gender ;
|
||||
-- n : Number ;
|
||||
-- p : Person ;
|
||||
-- } ;
|
||||
|
||||
Pronoun : Type = {
|
||||
pers : PersonalPronoun ;
|
||||
poss : PossessivePronoun ;
|
||||
p : Person
|
||||
} ;
|
||||
|
||||
pronForms = overload {
|
||||
pronForms : (_,_,_,_,_ : Str) -> Case => Str =
|
||||
\ego,me,mei,mihi,mee -> table Case [ego ; me ; mei ; mihi ; mee ; ego] ;
|
||||
@@ -839,90 +1147,170 @@ oper
|
||||
createPronouns g n p ;
|
||||
in
|
||||
{
|
||||
pers = prons.p1 ;
|
||||
poss = prons.p2 ;
|
||||
g = g ;
|
||||
n = n ;
|
||||
pers = { s = prons.p1 ; g = g ; n = n } ;
|
||||
poss = { s = prons.p2 } ;
|
||||
p = p
|
||||
} ;
|
||||
|
||||
-- prepositions
|
||||
|
||||
Preposition : Type = {s : Str ; c : Case} ;
|
||||
Preposition : Type = {s : Str ; c : Case ; isPost : Bool } ;
|
||||
|
||||
-- Bayer-Lindauer $149ff.
|
||||
about_P = lin Prep (mkPrep "de" Gen ) ; -- L...
|
||||
at_P = lin Prep (mkPrep "ad" Acc ) ; -- L...
|
||||
on_P = lin Prep ( mkPrep "ad" Gen ) ; -- L...
|
||||
to_P = lin Prep ( mkPrep "ad" Acc ) ; -- L...
|
||||
Gen_Prep = lin Prep ( mkPrep "" Gen ) ;
|
||||
Acc_Prep = lin Prep ( mkPrep "" Acc ) ;
|
||||
Dat_Prep = lin Prep ( mkPrep "" Dat ) ;
|
||||
Abl_Prep = lin Prep ( mkPrep "" Abl ) ;
|
||||
|
||||
VPSlash = VerbPhrase ** {c2 : Preposition} ;
|
||||
-- conjunctions
|
||||
param Coordinator = And | Or | If | Neither | Because | Comma | Colon | Empty ;
|
||||
oper
|
||||
Conjunction : Type = { s1 : Str ; s2 : Str ; n : Number ; c : Coordinator };
|
||||
mkConjunction : Str -> Str -> Number -> Coordinator -> Conjunction = \s1,s2,num,coord -> { s1 = s1; s2 = s2 ; n = num ; c = coord } ;
|
||||
|
||||
VPSlash = VerbPhrase ** {c : Preposition} ;
|
||||
|
||||
predV : Verb -> VerbPhrase = \v -> {
|
||||
fin = \\a,q => v.act ! a ++ case q of { VQTrue => Prelude.BIND ++ "ne"; VQFalse => "" };
|
||||
s = \\a,q => v.act ! a ++ case q of { VQTrue => Prelude.BIND ++ "ne"; VQFalse => "" };
|
||||
part = v.part;
|
||||
imp = v.imp ;
|
||||
inf = v.inf ;
|
||||
obj = [] ;
|
||||
adj = \\a => []
|
||||
compl = \\a => [] ;
|
||||
adv = ""
|
||||
} ;
|
||||
|
||||
predV2 : Verb2 -> VPSlash = \v ->
|
||||
predV v ** {c2 = v.c} ;
|
||||
predV v ** {c = v.c} ;
|
||||
|
||||
predV3 : Verb3 -> VPSlash = \v
|
||||
-> predV v ** {c2 = v.c2; c3 = v.c3 } ;
|
||||
-> predV v ** {c = v.c; c2 = v.c2 } ;
|
||||
|
||||
appPrep : Preposition -> (Case => Str) -> Str = \c,s -> c.s ++ s ! c.c ;
|
||||
|
||||
insertObj : Str -> VerbPhrase -> VerbPhrase = \obj,vp -> {
|
||||
fin = vp.fin ;
|
||||
insertObj : NounPhrase -> Preposition -> VerbPhrase -> VerbPhrase = \np,prep,vp -> {
|
||||
s = vp.s ;
|
||||
part = vp.part ;
|
||||
imp = vp.imp ;
|
||||
inf = vp.inf ;
|
||||
obj = obj ++ vp.obj ;
|
||||
adj = vp.adj
|
||||
obj = np.det.s ! np.g ! prep.c ++ np.preap.s ! (Ag np.g np.n prep.c) ++ (appPrep prep np.s) ++ np.postap.s ! (Ag np.g np.n prep.c) ++ np.det.sp ! np.g ! prep.c ++ vp.obj ;
|
||||
compl = vp.compl ;
|
||||
adv = vp.adv ++ np.adv
|
||||
} ;
|
||||
|
||||
insertObjc: Str -> VPSlash -> VPSlash = \obj,vp -> {
|
||||
fin = vp.fin ;
|
||||
insertObjc: NounPhrase -> VPSlash -> VPSlash = \np,vp -> {
|
||||
s = vp.s ;
|
||||
part = vp.part ;
|
||||
imp = vp.imp ;
|
||||
inf = vp.inf ;
|
||||
obj = obj ++ vp.obj ;
|
||||
adj = vp.adj ;
|
||||
c2 = vp.c2
|
||||
obj = np.det.s ! np.g ! vp.c.c ++ np.preap.s ! (Ag np.g np.n vp.c.c) ++ (appPrep vp.c np.s) ++ np.postap.s ! (Ag np.g np.n vp.c.c) ++ np.det.sp ! np.g ! vp.c.c ++ vp.obj ;
|
||||
compl = vp.compl ;
|
||||
c = vp.c ;
|
||||
adv = vp.adv ++ np.adv
|
||||
} ;
|
||||
|
||||
insertAdj : (Agr => Str) -> VerbPhrase -> VerbPhrase = \adj,vp -> {
|
||||
fin = vp.fin ;
|
||||
s = vp.s ;
|
||||
part = vp.part ;
|
||||
imp = vp.imp ;
|
||||
inf = vp.inf ;
|
||||
obj = vp.obj ;
|
||||
adj = \\a => adj ! a ++ vp.adj ! a
|
||||
compl = \\a => adj ! a ++ vp.compl ! a ;
|
||||
adv = vp.adv
|
||||
} ;
|
||||
|
||||
insertAdv : Adverb -> VerbPhrase -> VerbPhrase = \a,vp -> {
|
||||
s = vp.s ;
|
||||
part = vp.part ;
|
||||
imp = vp.imp ;
|
||||
inf = vp.inf ;
|
||||
obj = vp.obj ;
|
||||
compl = vp.compl ;
|
||||
adv = vp.adv ++ (a.s ! Posit)
|
||||
} ;
|
||||
|
||||
-- clauses
|
||||
Clause = {s : Tense => Anteriority => Polarity => VQForm => Order => Str} ;
|
||||
QClause = {s : Tense => Anteriority => Polarity => QForm => Str} ;
|
||||
Sentence =
|
||||
{
|
||||
s,o,v,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb
|
||||
t : C.Tense ; -- tense marker
|
||||
p : C.Pol ; -- polarity marker
|
||||
sadv : Str -- sentence adverb¡
|
||||
} ;
|
||||
|
||||
Clause = {s,o : AdvPos => Str ; v : Tense => Anteriority => VQForm => AdvPos => Str ; neg : Polarity => AdvPos => Str ; adv : Str } ;
|
||||
QClause = {s : C.Tense => Anteriority => C.Pol => QForm => Str} ;
|
||||
|
||||
-- The VQForm parameter defines if the ordinary verbform or the quistion form with suffix "-ne" will be used
|
||||
mkClause : NounPhrase -> VerbPhrase -> Clause = \np,vp -> {
|
||||
s = \\tense,anter,pol,vqf,order => case order of {
|
||||
SVO => np.s ! Nom ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.inf ! VInfActPres ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ++ vp.obj ;
|
||||
VSO => negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ++ np.s ! Nom ++ vp.obj ;
|
||||
VOS => negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ++ vp.obj ++ np.s ! Nom ;
|
||||
OSV => vp.obj ++ np.s ! Nom ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ;
|
||||
OVS => vp.obj ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ++ np.s ! Nom ;
|
||||
SOV => np.s ! Nom ++ vp.obj ++ negation pol ++ vp.adj ! Ag np.g Sg Nom ++ vp.fin ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf
|
||||
}
|
||||
-- np.s ! Nom ++ vp.obj ++ vp.adj ! np.g ! np.n ++ negation p ++ vp.fin ! VAct a t np.n np.p
|
||||
mkClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
||||
let
|
||||
-- combines adverbs from noun phrase and verb phrase
|
||||
adv = np.adv ++ vp.adv ;
|
||||
-- helper functions to either place the adverb in the designated position
|
||||
-- or an empty string instead
|
||||
pres : AdvPos -> Str = \ap -> case ap of { PreS => adv ; _ => [] } ;
|
||||
prev : AdvPos -> Str = \ap -> case ap of { PreV => adv ; _ => [] } ;
|
||||
preo : AdvPos -> Str = \ap -> case ap of { PreO => adv ; _ => [] } ;
|
||||
preneg : AdvPos -> Str = \ap -> case ap of { PreNeg => adv ; _ => [] } ;
|
||||
ins : AdvPos -> Str = \ap -> case ap of { InS => adv ; _ => [] } ;
|
||||
inv : AdvPos -> Str = \ap -> case ap of { InV => adv ; _ => [] }
|
||||
in
|
||||
{
|
||||
-- subject part of the clause:
|
||||
-- ap is the adverb position in the clause
|
||||
s = \\ap =>
|
||||
pres ap ++ -- adverbs can be placed in the beginning of the clause
|
||||
np.det.s ! np.g ! Nom ++ -- the determiner, if any
|
||||
np.preap.s ! (Ag np.g np.n Nom) ++ -- adjectives which come before the subject noun, agreeing with it
|
||||
ins ap ++ -- adverbs can be placed within the subject noun phrase
|
||||
np.s ! Nom ++ -- the noun of the subject noun phrase in nominative
|
||||
np.postap .s ! (Ag np.g np.n Nom) ++ -- adjectives which come after the subject noun, agreeing with it
|
||||
np.det.sp ! np.g ! Nom ; -- second part of split determiners
|
||||
-- verb part of the clause:
|
||||
-- tense and anter(ority) for the verb tense
|
||||
-- vqf is the VQForm parameter which defines if the ordinary verbform or the quistion form with suffix "-ne" will be used
|
||||
-- ap is the adverb position in the clause
|
||||
v = \\tense,anter,vqf,ap =>
|
||||
prev ap ++ -- adverbs can be placed in the before the verb phrase
|
||||
vp.compl ! Ag np.g np.n Nom ++ -- verb phrase complement, e.g. predicative expression, agreeing with the subject
|
||||
inv ap ++ -- adverbs can be placed within the verb phrase
|
||||
-- verb form with conversion between different forms of tense and aspect
|
||||
vp.s ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ;
|
||||
-- object part of the clause
|
||||
o = \\ap => preo ap ++ vp.obj ;
|
||||
-- optional negation particle, adverbs can be placed before the negation
|
||||
neg = \\pol,ap => preneg ap ++ negation pol ;
|
||||
adv = ""
|
||||
} ;
|
||||
|
||||
combineClause : Clause -> C.Tense -> Anteriority -> C.Pol -> VQForm -> Sentence = \cl,tense,anter,pol,vqf ->
|
||||
{ s = cl.s ;
|
||||
o = cl.o ;
|
||||
v = cl.v ! tense.t ! anter ! vqf ;
|
||||
neg = cl.neg ! pol.p ;
|
||||
sadv = "" ;
|
||||
t = tense ;
|
||||
p = pol
|
||||
} ;
|
||||
|
||||
combineSentence : Sentence -> ( SAdvPos => AdvPos => Order => Str ) = \s ->
|
||||
let
|
||||
pres : SAdvPos -> Str = \ap -> case ap of { SPreS => s.sadv ; _ => [] } ;
|
||||
prev : SAdvPos -> Str = \ap -> case ap of { SPreV => s.sadv ; _ => [] } ;
|
||||
preo : SAdvPos -> Str = \ap -> case ap of { SPreO => s.sadv ; _ => [] } ;
|
||||
preneg : SAdvPos -> Str = \ap -> case ap of { SPreNeg => s.sadv ; _ => [] }
|
||||
in
|
||||
\\sap,ap,order => case order of {
|
||||
SVO => s.t.s ++ s.p.s ++ pres sap ++ s.s ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ preo sap ++ s.o ! ap;
|
||||
VSO => s.t.s ++ s.p.s ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ pres sap ++ s.s ! ap ++ preo sap ++ s.o ! ap;
|
||||
VOS => s.t.s ++ s.p.s ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ preo sap ++ s.o ! ap ++ pres sap ++ s.s ! ap ;
|
||||
OSV => s.t.s ++ s.p.s ++ preo sap ++ s.o ! ap ++ pres sap ++ s.s ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap;
|
||||
OVS => s.t.s ++ s.p.s ++ preo sap ++ s.o ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ++ pres sap ++ s.s ! ap ;
|
||||
SOV => s.t.s ++ s.p.s ++ pres sap ++ s.s ! ap ++ preo sap ++ s.o ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
-- questions
|
||||
mkQuestion : SS -> Clause -> QClause = \ss,cl -> {
|
||||
s = \\tense,anter,pol,form => case form of {
|
||||
QDir => ss.s ++ cl.s ! tense ! anter ! pol ! VQFalse ! OVS;
|
||||
QIndir => ss.s ++ cl.s ! tense ! anter ! pol ! VQFalse ! OSV
|
||||
}
|
||||
} ;
|
||||
s = \\tense,anter,pol,form => case form of {
|
||||
QDir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreS ! PreS ! OVS ;
|
||||
QIndir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreO ! PreO ! OSV
|
||||
}
|
||||
};
|
||||
|
||||
negation : Polarity -> Str = \p -> case p of {
|
||||
Pos => [] ;
|
||||
@@ -932,7 +1320,7 @@ oper
|
||||
-- determiners
|
||||
|
||||
Determiner : Type = {
|
||||
s : Gender => Case => Str ; -- s,sp : Gender => Case => Str ; Don't know what sp is for
|
||||
s,sp : Gender => Case => Str ; -- sp for split determiners (not clear if really needed)
|
||||
n : Number
|
||||
} ;
|
||||
|
||||
@@ -940,6 +1328,7 @@ oper
|
||||
{
|
||||
n = n ;
|
||||
s = \\g,c => a.s ! Posit ! Ag g n c ;
|
||||
sp = \\_,_ => ""
|
||||
} ;
|
||||
|
||||
Quantifier : Type = {
|
||||
@@ -985,11 +1374,62 @@ oper
|
||||
"illa" "illorum" "illis")
|
||||
;
|
||||
|
||||
mkPrep : Str -> Case -> Preposition = \s,c -> lin Preposition {s = s ; c = c} ;
|
||||
mkPreposition : Str -> Case -> Preposition = \s,c -> {s = s ; c = c; isPost = False} ;
|
||||
|
||||
mkAdv : Str -> { s: Str } = \adv -> { s = adv } ;
|
||||
mkPostposition : Str -> Case -> Preposition = \s,c -> {s = s ; c = c ; isPost = True } ;
|
||||
|
||||
param
|
||||
Unit = one | ten | hundred | thousand | ten_thousand | hundred_thousand ;
|
||||
-- adverbs
|
||||
Adverb : Type = { s : Degree => Str} ;
|
||||
mkAdverb : Str -> Adverb = \adv ->
|
||||
{ s = table { Posit => adv ; _ => nonExist } } ;
|
||||
|
||||
mkFullAdverb : (pos,comp,sup : Str) -> Adverb = \p,c,s ->
|
||||
{ s = table { Posit => p ; Compar => c ; Super => s } };
|
||||
-- numerals
|
||||
param
|
||||
CardOrd = NCard | NOrd ;
|
||||
Unit = one | ten | hundred | thousand | ten_thousand | hundred_thousand ;
|
||||
oper
|
||||
Cardinal : Type = {s : Gender => Case => Str ; n : Number};
|
||||
Ordinal : Type = { s : Gender => Number => Case => Str } ;
|
||||
Numeral : Type = { card : Cardinal ; ord : Ordinal } ;
|
||||
|
||||
mkNumeral : Str -> Str -> Numeral = \c,o -> -- cardinal and ordinal form
|
||||
let
|
||||
cardFlex : Gender => Case => Str = case c of { "unus" => \\gen,cas => case <gen,cas> of {
|
||||
<Masc, Nom | Voc> => "unus" ; <Masc, Acc> => "unum" ; <Masc, Abl> => "uno" ;
|
||||
<Fem, Nom | Abl | Voc> => "una" ; <Fem, Acc> => "unam" ;
|
||||
<Neutr, Nom | Acc | Voc> => "unum" ; <Neutr, Abl> => "uno" ;
|
||||
<_, Gen> => "unius" ; <_, Dat> => "uni"
|
||||
} ;
|
||||
"duo" => table {
|
||||
Masc | Neutr => table Case [ "duo" ; "duo" ; "duorum" ; "duobus" ; "duobus" ; "duo" ] ;
|
||||
Fem => table Case [ "duae" ; "duas" ; "duarum" ; "duabus" ; "duabus" ; "duae" ] } ;
|
||||
"tres" => \\gen,cas => case <gen,cas> of {
|
||||
<Neutr, Nom | Acc | Voc > => "tria" ; <_, Nom | Acc | Voc > => "tres" ;
|
||||
<_, Gen> => "trium" ; <_, Dat | Abl > => "tribus"
|
||||
} ;
|
||||
"milia" => table {
|
||||
Neutr => table Case [ "milia" ; "milia" ; "milium" ; "milibus" ; "milibus" ; "milia" ] ;
|
||||
_ => \\_ => nonExist
|
||||
} ;
|
||||
_ => \\_,_ => c
|
||||
} ;
|
||||
ordFlex : Gender => Number => Case => Str =
|
||||
case o of {
|
||||
stem + "us" => table {
|
||||
Masc => table Number [ table Case [ stem + "us" ; stem + "um" ; stem + "i" ; stem + "o" ; stem + "o" ; stem + "e" ] ;
|
||||
table Case [ stem + "i" ; stem + "os" ; stem + "orum" ; stem + "is" ; stem + "is" ; stem + "i" ] ;
|
||||
];
|
||||
Fem => table Number [ table Case [ stem + "a" ; stem + "am" ; stem + "ae" ; stem + "ae" ; stem + "a" ; stem + "a" ] ;
|
||||
table Case [ stem + "ae" ; stem + "as" ; stem + "arum" ; stem + "is" ; stem + "is" ; stem + "ae" ] ;
|
||||
] ;
|
||||
Neutr => table Number [ table Case [ stem + "um" ; stem + "um" ; stem + "i" ; stem + "o" ; stem + "o" ; stem + "um" ] ;
|
||||
table Case [ stem + "a" ; stem + "a" ; stem + "orum" ; stem + "is" ; stem + "is" ; stem + "a" ] ;
|
||||
]
|
||||
} ;
|
||||
_ => error "unsupported ordinal form"
|
||||
}
|
||||
in
|
||||
{ card = { s = cardFlex ; n = case c of { "unus" => Sg ; _ => Pl } } ; ord = { s = ordFlex } } ;
|
||||
}
|
||||
|
||||
@@ -45,12 +45,13 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
|
||||
-- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
|
||||
--
|
||||
UseCl t p cl = -- Temp -> Pol-> Cl -> S
|
||||
{
|
||||
s = t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! VQFalse ! SOV
|
||||
} ;
|
||||
UseQCl t p cl = {
|
||||
s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q
|
||||
} ;
|
||||
(combineClause cl (lin Tense t) t.a (lin Pol p) VQFalse) ;
|
||||
|
||||
-- TO FIX
|
||||
--UseQCl t p cl =
|
||||
-- s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p ! q
|
||||
-- { s = \\q => combineSentence (combineClause cl t t.a p VQFalse) ! PreV ! VSO } ;
|
||||
|
||||
-- UseRCl t p cl = {
|
||||
-- s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! r ;
|
||||
-- c = cl.c
|
||||
@@ -60,11 +61,13 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
|
||||
-- c2 = cl.c2
|
||||
-- } ;
|
||||
--
|
||||
-- AdvS a s = {s = a.s ++ "," ++ s.s} ;
|
||||
-- AdvS : Adv -> S -> S
|
||||
AdvS adv s = { s = s.s ; o = s.o ; v = s.v ; neg = s.neg ; t = s.t ; p = s.p ; sadv = adv.s ! Posit ++ s.sadv } ;
|
||||
|
||||
-- This covers subjunctive clauses, but they can also be added to the end.
|
||||
-- SSubjS : S -> Subj -> S -> S ; -- I go home if she comes
|
||||
SSubjS s1 subj s2 = ss ( subj.s ++ s2.s ++ s1.s );
|
||||
-- SSubjS : S -> Subj -> S -> S ; -- I go home if she comes
|
||||
-- TO FIX
|
||||
-- SSubjS s1 subj s2 = { s = \\_ => subj.s ++ s2.s ! PreS ++ s1.s ! PreS ; sadv = lin Adv (mkAdverb []) } ;
|
||||
|
||||
-- RelS s r = {s = s.s ++ "," ++ r.s ! agrP3 Sg} ;
|
||||
--
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
concrete StructuralLat of Structural = CatLat **
|
||||
open ResLat, ParadigmsLat, Prelude, IrregLat, ConstructX in
|
||||
concrete StructuralLat of Structural = CatLat **
|
||||
open ResLat, ParadigmsLat, Prelude, IrregLat, (C=ConstructX) in
|
||||
{
|
||||
|
||||
flags optimize=all ;
|
||||
@@ -11,68 +11,68 @@ concrete StructuralLat of Structural = CatLat **
|
||||
almost_AdA, almost_AdN = ss "quasi" ; -- L...
|
||||
although_Subj = ss "quamquam" ; -- L...
|
||||
always_AdV = ss "semper" ; -- L...
|
||||
and_Conj = sd2 [] "et" ** {n = Pl} ; -- L...
|
||||
and_Conj = mkConj [] "et" Pl And ; -- L...
|
||||
-----b and_Conj = ss "and" ** {n = Pl} ;
|
||||
because_Subj = ss "cum" ; -- L...
|
||||
before_Prep = mkPrep "ante" Acc ; -- acc. L...
|
||||
behind_Prep = mkPrep "a tergo" Acc ; -- acc. L...
|
||||
between_Prep = mkPrep "inter" Acc ; -- acc. L...
|
||||
both7and_DConj = sd2 "et" "et" ** {n = Pl} ; --L...
|
||||
both7and_DConj = mkConj "et" "et" Pl And; --L...
|
||||
but_PConj = ss "sed" ; -- L...
|
||||
by8agent_Prep = mkPrep "per" Abl ; -- L...
|
||||
by8means_Prep = Abl_Prep ; -- L...
|
||||
can8know_VV, can_VV = IrregLat.can_VV ; --L...
|
||||
by8means_Prep = mkPrep "" Abl ; -- L...
|
||||
can8know_VV, can_VV = mkVV IrregLat.can_V True ; --L...
|
||||
during_Prep = mkPrep "inter" Acc ; -- L...
|
||||
either7or_DConj = sd2 "aut" "aut" ** {n = Sg} ; -- L...
|
||||
everybody_NP = regNP "quisque" "quemque" "cuiusque" "cuique" "quoque" "quisque" ( Masc | Fem ) Sg ;-- regNP "quisquae" Sg ; -- L...
|
||||
either7or_DConj = mkConj "aut" "aut" Sg Or ; -- L...
|
||||
everybody_NP = regNP "quisque" "quemque" "cuiusque" "cuique" "quoque" "quisque" Masc Sg ;-- regNP "quisquae" Sg ; -- L...
|
||||
every_Det = mkDeterminer ( mkA "omnis" ) Pl ; -- Pons
|
||||
everything_NP = regNP "omnia" "omnia" "omnium" "omnis" "omnis" "omnia" Neutr Pl ; --regNP "omnia" Pl ; -- L...
|
||||
everywhere_Adv = ss "ubique" ; -- L...
|
||||
everywhere_Adv = mkAdv "ubique" ; -- L...
|
||||
few_Det = mkDeterminer ( mkA "paulus" ) Pl ; -- L...
|
||||
----- first_Ord = ss "first" ; DEPRECATED
|
||||
for_Prep = mkPrep "pro" Abl ; -- abl. L...
|
||||
from_Prep = mkPrep "de" Abl ; -- abl. L...
|
||||
he_Pron = mkPronoun Masc Sg P3 ;
|
||||
here_Adv = ss "hic" ; -- L...
|
||||
here7to_Adv = ss "huc" ; -- L...
|
||||
here7from_Adv = ss "hinc" ; -- L...
|
||||
here_Adv = mkAdv "hic" ; -- L...
|
||||
here7to_Adv = mkAdv "huc" ; -- L...
|
||||
here7from_Adv = mkAdv "hinc" ; -- L...
|
||||
how_IAdv = ss "qui" ; -- L...
|
||||
how8many_IDet = mkDeterminer (mkA "quantus" ) Pl ; -- Pons
|
||||
how8much_IAdv = ss "quantum" ; -- L...
|
||||
if_Subj = ss "si" ; -- L...
|
||||
in8front_Prep = mkPrep "ante" Acc ; -- acc. L...
|
||||
i_Pron = mkPronoun Masc Sg P1 ;
|
||||
in_Prep = mkPrep "in" ( variants { Abl ; Acc } ) ; -- L...
|
||||
in_Prep = mkPrep "in" Acc ; -- L..., abl. in extra
|
||||
it_Pron = mkPronoun Neutr Sg P3 ;
|
||||
less_CAdv = mkCAdv "minus" "quam" ; -- L...
|
||||
less_CAdv = C.mkCAdv "minus" "quam" ; -- L...
|
||||
many_Det = mkDeterminer ( mkA "multus" ) Pl ; -- L...
|
||||
more_CAdv = mkCAdv "magis" "quam" ; -- L...
|
||||
more_CAdv = C.mkCAdv "magis" "quam" ; -- L...
|
||||
most_Predet = ss "plurimi" ; -- L...
|
||||
much_Det = mkDeterminer ( mkA "multus" ) Sg ; -- L...
|
||||
must_VV = mkVV ( mkV "debere" ) True ; -- L...
|
||||
-----b no_Phr = ss "immo" ;
|
||||
no_Utt = ss "non est" ; -- should be expressed by a short negated sentence L...
|
||||
on_Prep = mkPrep "in" ( Acc | Abl ) ; -- L...
|
||||
on_Prep = mkPrep "in" Acc ; -- L...
|
||||
------ one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
|
||||
only_Predet = ss "solum" ; -- L...
|
||||
or_Conj = sd2 [] "aut" ** {n = Sg} ; -- L...
|
||||
or_Conj = mkConj [] "aut" Sg Or ; -- L...
|
||||
otherwise_PConj = ss "praeterea" ; -- Pons
|
||||
part_Prep = mkPrep [] Gen ; -- Bayer-Lindauer 127
|
||||
please_Voc = ss "queso" ; -- L...
|
||||
possess_Prep = mkPrep [] Gen ; -- Bayer-Lindauer 125.2
|
||||
quite_Adv = ss "admodum" ; -- or by comparation L...
|
||||
quite_Adv = ss "admodum" ; -- actually AdA, can be expressed by comparation L...
|
||||
she_Pron = mkPronoun Fem Sg P3 ;
|
||||
so_AdA = ss "sic" ; -- L...
|
||||
somebody_NP = regNP "aliquis" "aliquem" "alicuius" "clicui" "aliquo" "aliquis" ( Masc | Fem ) Sg ; -- Bayer-Lindauer 60.1
|
||||
somebody_NP = regNP "aliquis" "aliquem" "alicuius" "clicui" "aliquo" "aliquis" Masc Sg ; -- Bayer-Lindauer 60.1
|
||||
someSg_Det = mkDeterminer ( mkA "aliquis" ) Sg ; -- L...
|
||||
somePl_Det = mkDeterminer ( mkA "nonnullus" ) Pl ; --L ...
|
||||
something_NP = regNP "aliquid" "aliquid" "alicuius rei" "alicui rei" "aliqua re" "aliquid" Masc Sg ; -- Bayer-Lindauer 60.1
|
||||
somewhere_Adv = ss "usquam" ; -- L...
|
||||
somewhere_Adv = mkAdv "usquam" ; -- L...
|
||||
that_Quant = ille_Quantifier ;
|
||||
that_Subj = ss "ut" ; -- L...
|
||||
there_Adv = ss "ibi" ; -- loc. L...
|
||||
there7to_Adv = ss "eo" ; -- Pons
|
||||
there7from_Adv = ss "inde" ; -- Pons
|
||||
there_Adv = mkAdv "ibi" ; -- loc. L...
|
||||
there7to_Adv = mkAdv "eo" ; -- Pons
|
||||
there7from_Adv = mkAdv "inde" ; -- Pons
|
||||
therefore_PConj = ss "ergo" ; -- L...
|
||||
they_Pron = mkPronoun Masc Pl P3 ;
|
||||
this_Quant = hic_Quantifier ;
|
||||
@@ -109,18 +109,18 @@ concrete StructuralLat of Structural = CatLat **
|
||||
yes_Utt = ss "sane" ; -- L...
|
||||
youSg_Pron = mkPronoun Masc Sg P2 ;
|
||||
youPl_Pron = mkPronoun Masc Pl P2 ;
|
||||
youPol_Pron = youSg_Pron | youPl_Pron ;
|
||||
youPol_Pron = youSg_Pron ; -- only use singular
|
||||
|
||||
no_Quant = { s , sp = ( mkA "nullus" ).s ! Posit } ; -- nullus L...
|
||||
not_Predet = ss "non" ; -- L...
|
||||
if_then_Conj = {s1 = "si" ; s2 = "" ; n = Sg } ; -- no word in s2 field L...
|
||||
if_then_Conj = mkConj "si" [] Sg If ; -- no word in s2 field L...
|
||||
at_least_AdN = ss "saltem" ; -- L...
|
||||
at_most_AdN = ss "summum" ; -- Pons
|
||||
nobody_NP = regNP "nemo" "neminem" "neminis" "nemini" "nemine" "nemo" ( Masc | Fem ) Sg ; -- Bayer Lindauer 60.4
|
||||
nobody_NP = regNP "nemo" "neminem" "neminis" "nemini" "nemine" "nemo" Masc Sg ; -- Bayer Lindauer 60.4
|
||||
nothing_NP = regNP "nihil" "nihil" "nullius rei" "nulli rei" "nulla re" "nihil" Neutr Sg ; -- Bayer-Lindauer 60.4
|
||||
except_Prep = mkPrep "praeter" Acc ; -- L...
|
||||
|
||||
as_CAdv = mkCAdv "ita" "ut" ; -- L ...
|
||||
as_CAdv = C.mkCAdv "ita" "ut" ; -- L ...
|
||||
|
||||
have_V2 = mkV2 (mkV "habere") ; -- habeo, -ui, -itum 2 (Langenscheidts)
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
--# -path=.:../abstract:../common
|
||||
|
||||
concrete SymbolLat of Symbol = CatLat ** open Prelude, ResLat in {
|
||||
--
|
||||
--lin
|
||||
-- SymbPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||
-- IntPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||
-- FloatPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||
-- NumPN i = {s = \\c => i.s ; g = Neutr} ; --- c
|
||||
concrete SymbolLat of Symbol = CatLat ** open Prelude, ResLat, ParadigmsLat, TenseX in {
|
||||
|
||||
lin
|
||||
SymbPN i = {s = \\n,c => i.s ; g = Neutr} ; --- c
|
||||
IntPN i = {s = \\n,c => i.s ; g = Neutr} ; --- c
|
||||
FloatPN i = {s = \\n,c => i.s ; g = Neutr} ; --- c
|
||||
NumPN i = {s = \\n,c => i.s ! Neutr ! c; g = Neutr} ; --- c
|
||||
-- CNIntNP cn i = {
|
||||
-- s = \\c => (cn.s ! Sg ! Nom ++ i.s) ;
|
||||
-- a = agrgP3 Sg cn.g
|
||||
@@ -20,20 +20,17 @@ concrete SymbolLat of Symbol = CatLat ** open Prelude, ResLat in {
|
||||
-- a = agrgP3 Sg cn.g
|
||||
-- } ;
|
||||
--
|
||||
-- SymbS sy = sy ;
|
||||
--
|
||||
-- SymbNum sy = {s = sy.s ; n = Pl ; hasCard = True} ;
|
||||
-- SymbOrd sy = {s = sy.s ++ "th"} ;
|
||||
--
|
||||
--lincat
|
||||
--
|
||||
-- Symb, [Symb] = SS ;
|
||||
--
|
||||
--lin
|
||||
--
|
||||
-- MkSymb s = s ;
|
||||
SymbS sy = { s = \\_ => sy.s ; neg = \\_ => "" ; o = \\_ => "" ; p = PPos ; sadv = "" ; t = TPres ; v = \\_ => "" } ;
|
||||
--
|
||||
-- SymbNum sy = {s = sy.s ; n = Pl ; hasCard = True} ;
|
||||
SymbOrd sy = { s = \\g,n,c => sy.s } ; -- does not inflect properly
|
||||
|
||||
lincat
|
||||
Symb, [Symb] = SS ;
|
||||
|
||||
lin
|
||||
MkSymb s = s ;
|
||||
|
||||
-- BaseSymb = infixSS "and" ;
|
||||
-- ConsSymb = infixSS "," ;
|
||||
--
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--1 Construction rules for latin verb phrases
|
||||
concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat in {
|
||||
concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat,ExtraLat,Predef,Prelude in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
|
||||
@@ -11,88 +11,107 @@ concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat in {
|
||||
|
||||
-- ComplVV : VV -> VP -> VP ; -- want to run
|
||||
ComplVV v vp =
|
||||
{
|
||||
fin = vp.fin ;
|
||||
inf = v.inf ;
|
||||
obj = vp.obj ;
|
||||
adj = vp.adj
|
||||
};
|
||||
vp ** {
|
||||
s = \\af,qf => v.act ! af ;
|
||||
compl = \\ag => vp.compl ! ag ++ vp.inf ! VInfActPres
|
||||
} ;
|
||||
|
||||
-- ComplVS : VS -> S -> VP ; -- say that she runs
|
||||
ComplVS v s = insertObj (S.that_Subj.s ++ s.s) (predV v) ;
|
||||
ComplVS v s = insertObj ( dummyNP (S.that_Subj.s ++ s.s ! PreS)) Nom_Prep (predV v) ;
|
||||
|
||||
-- ComplVQ : VQ -> QS -> VP ; -- wonder who runs
|
||||
ComplVQ v q = insertObj ( q.s ! QIndir) (predV v) ;
|
||||
ComplVQ v q = insertObj (dummyNP (q.s ! QIndir)) Nom_Prep (predV v) ;
|
||||
|
||||
-- ComplVA : VA -> AP -> VP ; -- they become red
|
||||
ComplVA v ap = (predV v) ** { adj = ap.s } ;
|
||||
ComplVA v ap = (predV v) ** { compl = ap.s } ;
|
||||
|
||||
-- SlashV2a : V2 -> VPSlash ; -- love (it)
|
||||
SlashV2a v = lin VP (predV2 v) ;
|
||||
|
||||
-- Slash2V3 v np =
|
||||
-- insertObjc (\\_ => v.c2 ++ np.s ! Acc) (predV v ** {c2 = v.c3}) ;
|
||||
-- Slash2V3 : V3 -> NP -> VPSlash ; -- give it (to her)
|
||||
Slash2V3 v np = lin VP (insertObjc np (predV3 v ** { c = v.c2 } ) );
|
||||
|
||||
-- Slash3V3 : V3 -> NP -> VPSlash ; -- give (it) to her
|
||||
Slash3V3 v np =
|
||||
lin VP ( insertObjc ( v.c2.s ++ np.s ! v.c2.c ) ( predV3 v ) ) ;
|
||||
Slash3V3 v np = lin VP ( insertObjc np ( predV3 v ** { c = v.c} ) ) ;
|
||||
|
||||
-- SlashV2V : V2V -> VP -> VPSlash ; -- beg (her) to go
|
||||
-- SlashV2V v vp = insertObjc (\\a => infVP v.isAux vp a) (predVc v) ;
|
||||
|
||||
-- SlashV2S : V2S -> S -> VPSlash ; -- answer (to him) that it is good
|
||||
-- SlashV2S v s = insertObjc (\\_ => conjThat ++ s.s) (predVc v) ;
|
||||
|
||||
-- SlashV2Q : V2Q -> QS -> VPSlash ; -- ask (him) who came
|
||||
SlashV2Q v q = lin VP (insertObjc (q.s ! QIndir) (predV2 v) ) ;
|
||||
SlashV2Q v q = lin VP (insertObjc (dummyNP (q.s ! QIndir)) (predV2 v) ) ;
|
||||
|
||||
-- SlashV2A : V2A -> AP -> VPSlash ; -- paint (it) red
|
||||
SlashV2A v ap = lin VP ( (predV2 v) ** { adj = ap.s } ) ;
|
||||
|
||||
-- ComplSlash : VPSlash -> NP -> VP ; -- love it
|
||||
ComplSlash vp np = -- VPSlash -> NP -> VP
|
||||
insertObj (appPrep vp.c2 np.s) vp ;
|
||||
insertObj np vp.c vp ;
|
||||
|
||||
-- SlashVV : VV -> VPSlash -> VPSlash ; -- want to buy
|
||||
-- SlashVV vv vp =
|
||||
-- insertObj (\\a => infVP vv.isAux vp a) (predVV vv) **
|
||||
-- {c2 = vp.c2} ;
|
||||
|
||||
-- SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
|
||||
-- SlashV2VNP vv np vp =
|
||||
-- insertObjPre (\\_ => vv.c2 ++ np.s ! Acc)
|
||||
-- (insertObjc (\\a => infVP vv.isAux vp a) (predVc vv)) **
|
||||
-- {c2 = vp.c2} ;
|
||||
|
||||
--2 Other ways of forming verb phrases
|
||||
|
||||
|
||||
-- ReflVP : VPSlash -> VP ; -- love himself
|
||||
-- ReflVP v = insertObjPre (\\a => v.c2 ++ reflPron ! a) v ;
|
||||
|
||||
-- UseComp : Comp -> VP
|
||||
-- UseComp : Comp -> VP ; -- be warm
|
||||
UseComp comp =
|
||||
insertAdj comp.s (predV be_V) ;
|
||||
|
||||
-- PassV2 v = insertObj (\\_ => v.s ! VPPart) (predAux auxBe) ;
|
||||
-- PassV2 : V2 -> VP ; -- be loved
|
||||
PassV2 v = predV (
|
||||
v ** {
|
||||
act = table { VAct anter tense number person =>
|
||||
case anter of {
|
||||
VSim => v.pass ! VPass tense number person ;
|
||||
VAnt => "" --error "using participles is not implemented yet"
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
-- AdvVP : VP -> Adv -> VP ; -- sleep here
|
||||
AdvVP vp adv = insertObj adv.s vp ;
|
||||
AdvVP vp adv = insertAdv adv vp ;
|
||||
|
||||
-- ExtAdvVP vp adv = vp
|
||||
|
||||
-- AdVVP adv vp = insertObj adv.s vp ;
|
||||
-- AdVVP : AdV -> VP -> VP ; -- always sleep
|
||||
AdVVP adv vp = vp ** { adv = vp.adv ++ adv.s } ;
|
||||
|
||||
-- AdvVPSlash : VPSlash -> Adv -> VPSlash ; -- use (it) here
|
||||
|
||||
-- AdVVPSlash : AdV -> VPSlash -> VPSlash ; -- always use (it)
|
||||
|
||||
-- AdvVPSlash : VPSlash -> Adv -> VPSlash ; -- use (it) here
|
||||
AdvVPSlash vp adv = vp ** { adv = (adv.s ! Posit) ++ vp.adv } ;
|
||||
|
||||
-- AdVVPSlash : AdV -> VPSlash -> VPSlash ; -- always use (it)
|
||||
AdVVPSlash adv vp = vp ** { adv = vp.adv ++ adv.s } ;
|
||||
|
||||
-- VPSlashPrep : VP -> Prep -> VPSlash ; -- live in (it)
|
||||
|
||||
--2 Complements to copula
|
||||
|
||||
-- CompAP : AP -> Comp
|
||||
-- CompAP : AP -> Comp ; -- (be) small
|
||||
CompAP ap = ap ;
|
||||
|
||||
-- CompNP : NP -> Comp ; -- (be) the man
|
||||
CompNP np = {s = \\_ => let a = Ag np.g np.n Nom in np.preap.s ! a ++ np.s ! Nom ++ np.postap.s ! a } ;
|
||||
|
||||
-- CompNP np = {s = \\_ => np.s ! Acc} ;
|
||||
-- CompAdv : Adv -> Comp ; -- (be) here
|
||||
CompAdv a = {s = \\_ => a.s ! Posit } ;
|
||||
|
||||
-- CompAdv a = {s = \\_ => a.s} ;
|
||||
-- CompCN : CN -> Comp ; -- (be) a man/men
|
||||
CompCN cn = {s = table { Ag g n c => cn.preap.s ! Ag cn.g n Nom ++ cn.s ! n ! Nom ++ cn.postap.s ! Ag cn.g n Nom} };
|
||||
|
||||
-- CompCN
|
||||
|
||||
-- UseCopula v = v
|
||||
-- UseCopula : VP ; -- be
|
||||
UseCopula = predV be_V ;
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
concrete BigLat of BigLatAbs = GrammarLat, DictLat ;
|
||||
@@ -1 +0,0 @@
|
||||
abstract BigLatAbs = Grammar, DictLatAbs ;
|
||||
@@ -1 +0,0 @@
|
||||
concrete BigLatEng of BigLatAbs = GrammarEng, DictLatEng ;
|
||||
@@ -1,81 +0,0 @@
|
||||
import Data.Char
|
||||
import Data.List
|
||||
|
||||
main = mkLatin
|
||||
|
||||
mkLatin = do
|
||||
ws <- readFile "DICTPAGE.RAW" >>= return . lines
|
||||
let fcs = mkDict ws
|
||||
let fs = [unwords [status st ++ "fun",f,":",cat,";","--",eng] | [st, f,cat,_,eng] <- fcs]
|
||||
let ls = [unwords [status st ++ "lin",f,"=",lat,";"] | [st, f,_,lat,_] <- fcs]
|
||||
|
||||
writeFile "DictLatAbs.gf" "abstract DictLatAbs = Cat ** {"
|
||||
appendFile "DictLatAbs.gf" "\n-- extracted from http://archives.nd.edu/whitaker/dictpage.htm\n"
|
||||
appendFile "DictLatAbs.gf" (unlines fs)
|
||||
appendFile "DictLatAbs.gf" "}"
|
||||
|
||||
writeFile "DictLat.gf" "concrete DictLat of DictLatAbs = CatLat ** open ParadigmsLat in {"
|
||||
appendFile "DictLat.gf" "\n-- extracted from http://archives.nd.edu/whitaker/dictpage.htm\n"
|
||||
appendFile "DictLat.gf" (unlines ls)
|
||||
appendFile "DictLat.gf" "}"
|
||||
|
||||
let es = [unwords [status st ++ "lin",f,"=",mkEng cat eng,";"] | [st, f,cat,_,eng] <- fcs]
|
||||
writeFile "DictLatEng.gf" "concrete DictLatEng of DictLatAbs = CatEng ** open ParadigmsEng in {"
|
||||
appendFile "DictLatEng.gf" "\n-- extracted from http://archives.nd.edu/whitaker/dictpage.htm\n"
|
||||
appendFile "DictLatEng.gf" (unlines es)
|
||||
appendFile "DictLatEng.gf" "}"
|
||||
|
||||
|
||||
--- putStrLn $ unlines ls
|
||||
|
||||
mkDict :: [String] -> [[String]] -- fun, cat, lat, eng
|
||||
mkDict = map mkOne . zip [10001 ..] . map cleanUp
|
||||
where
|
||||
cleanUp s = let (lat,eng) = break (=='[') s in
|
||||
(words (filter (\c -> c==' ' || isLetter c) lat), eng)
|
||||
mkOne (i,(lws,eng)) = addId i (mkLat lws) ++ [eng]
|
||||
mkLat lws = case lws of
|
||||
x:y:"N":_:g:_ -> f [x, "N", lin "mkN" [show x,show y, (snd (gender g))]] where f = if fst (gender g) then ok else todo
|
||||
x:y:"N": g:_ -> f [x, "N", lin "mkN" [show x,show y, (snd (gender g))]] where f = if fst (gender g) then ok else todo
|
||||
x:"gen":z:"ADJ":_ -> ok [x, "A", lin "mkA" [show x]]
|
||||
x:y:z:"ADJ":_ -> ok [x, "A", lin "mkA" [show x]]
|
||||
x:"ADV":_ -> ok [x, "Adv", lin "mkAdv" [show x]]
|
||||
x:y:z:u:"V":_:"INTRANS":_ -> okv [y, "V", lin "mkV" [show y,show x,show z,show u]]
|
||||
x:y:z:u:"V":_:"TRANS":_ -> okv [y, "V2", lin "mkV2" ["(" ++ lin "mkV" [show y,show x,show z,show u] ++ ")"]]
|
||||
x:y:z:u:"V":_:"DEP":_ -> todo [y, "V", lin "depV" ["(" ++ lin "mkV" [show y,show x,show z,show u] ++ ")"]]
|
||||
x:y:z:u:"V":_ -> okv [y, "V", lin "mkV" [show y,show x,show z,show u]]
|
||||
|
||||
_ -> todo ["TODO","",unwords lws]
|
||||
|
||||
addId i (st:f:c:rest) = st:(f ++ "_" ++ show i ++ "_" ++ c):c:rest
|
||||
|
||||
gender g = case g of
|
||||
"M" -> (True, "masculine")
|
||||
"F" -> (True, "feminine")
|
||||
"N" -> (True, "neuter")
|
||||
"C" -> (True, "masculine {-C-}")
|
||||
_ -> (False, g ++ "{-??-}")
|
||||
|
||||
fun x c = x ++ "_" ++ c
|
||||
lin f xs = unwords (f:xs)
|
||||
todo xs = "1":xs
|
||||
ok xs = "0":xs
|
||||
okv r@(f:_) = if elem (take 3 (reverse f)) ["era","ere","eri"] then ok r else todo r
|
||||
|
||||
status st = case st of
|
||||
"0" -> ""
|
||||
_ -> "-- "
|
||||
|
||||
|
||||
-- build an English version: TODO better analysis of the notation
|
||||
mkEng cat eng = unwords $ intersperse "|" $ map mkOne engs
|
||||
where
|
||||
mkOne s = unwords ["mk" ++ cat, show s]
|
||||
engs = [clean (takeWhile (flip notElem "\r,;") (drop 11 eng))] ---- TODO
|
||||
clean s = case s of
|
||||
'\\':r:cs -> clean cs
|
||||
c:cs -> c:clean cs
|
||||
_ -> s
|
||||
|
||||
-- [DXXFS] :: counting-board; side-board; slab table; panel; square stone on top of column;
|
||||
-- [EEQEE] :: Father; (Aramaic); bishop of Syriac/Coptic church; (false read obba/decanter);
|
||||
@@ -1,33 +0,0 @@
|
||||
Aarne Ranta 2017-01-19
|
||||
|
||||
A script for building a Latin dictionary from William Whitaker's Words
|
||||
|
||||
Source: http://archives.nd.edu/whitaker/dictpage.zip
|
||||
|
||||
See also: https://en.wikipedia.org/wiki/William_Whitaker's_Words
|
||||
|
||||
License: BSD for the script. Unknown for the source, therefore not redistributed here.
|
||||
|
||||
Usage:
|
||||
|
||||
runghc MkLatin.hs
|
||||
|
||||
Output:
|
||||
|
||||
DictLatAbs.gf
|
||||
DictLat.gf
|
||||
|
||||
Uses Herbert Lange's RGL implementation of Latin (darcs version of 2017-01-19 with ParadigmsLat.mkAdv added by AR)
|
||||
|
||||
Coverage of first version: 90%; 3938 missing out of 39227 entries. Marked with leading "--"
|
||||
Reasons for uncovered entries
|
||||
- uncommon category (e.g. structural words)
|
||||
- missing case in ParadigmsLat.gf, e.g. deponent verbs
|
||||
|
||||
Matching for adjectives (A) uncertain, because we only use ParadigmsLat.gf.mkA : Str -> A
|
||||
|
||||
Verb subcat information is uncertain, too. It is based on the src's TRANS and INTRANS flags.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
concrete DictLav of DictLavAbs = CatLav ** open ResLav, ParadigmsLav in {
|
||||
|
||||
flags coding = utf8 ;
|
||||
flags
|
||||
optimize=values ;
|
||||
coding = utf8 ;
|
||||
|
||||
lin 'abarkasis_N' = mkN "abarkasis" masculine D2 ;
|
||||
lin 'abate_N' = mkN "abate" feminine D5 ;
|
||||
@@ -3030,7 +3032,6 @@ lin 'apsekojums_N' = mkN "apsekojums" masculine D1 ;
|
||||
lin 'apsekot_V' = mkV "apsekot" second_conjugation ;
|
||||
lin 'apsērsnot_V' = mkV "apsērsnot" second_conjugation ;
|
||||
lin 'apsērst_V' = mkV "apsērs" "apsērš" "apsērs" ;
|
||||
lin 'apsēst_V' = mkV "apsēst" ;
|
||||
lin 'apsēstība_N' = mkN "apsēstība" feminine D4 ;
|
||||
lin 'apsēsties_V' = mkV "apsēs" "apsēž,apsēst" "apsēd" ;
|
||||
lin 'apsēt_V' = mkV "apsē" "apsēj" "apsēj" ;
|
||||
@@ -39719,7 +39720,6 @@ lin 'piesārņojums_N' = mkN "piesārņojums" masculine D1 ;
|
||||
lin 'piesārņot_V' = mkV "piesārņot" second_conjugation ;
|
||||
lin 'piesārņotība_N' = mkN "piesārņotība" feminine D4 ;
|
||||
lin 'piesārņoties_V' = mkV "piesārņoties" second_conjugation ;
|
||||
lin 'piesārst_V' = mkV "piesārst" ;
|
||||
lin 'piesārtums_N' = mkN "piesārtums" masculine D1 ;
|
||||
lin 'piesātinājums_N' = mkN "piesātinājums" masculine D1 ;
|
||||
lin 'piesātināt_V' = mkV "piesātināt" third_conjugation ;
|
||||
|
||||
@@ -3030,7 +3030,6 @@ fun 'apsekojums_N' : N ;
|
||||
fun 'apsekot_V' : V ;
|
||||
fun 'apsērsnot_V' : V ;
|
||||
fun 'apsērst_V' : V ;
|
||||
fun 'apsēst_V' : V ;
|
||||
fun 'apsēstība_N' : N ;
|
||||
fun 'apsēsties_V' : V ;
|
||||
fun 'apsēt_V' : V ;
|
||||
@@ -39719,7 +39718,6 @@ fun 'piesārņojums_N' : N ;
|
||||
fun 'piesārņot_V' : V ;
|
||||
fun 'piesārņotība_N' : N ;
|
||||
fun 'piesārņoties_V' : V ;
|
||||
fun 'piesārst_V' : V ;
|
||||
fun 'piesārtums_N' : N ;
|
||||
fun 'piesātinājums_N' : N ;
|
||||
fun 'piesātināt_V' : V ;
|
||||
|
||||
@@ -7,20 +7,20 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in {
|
||||
UseComparA a = a ;
|
||||
|
||||
ComparA a np = a ** {
|
||||
s = \\m => a.s ! m ++ "تر" ++ "از" ++ np.s ! Bare ;
|
||||
adv = a.adv ++ "تر" ++ "از" ++ np.s ! Bare ;
|
||||
s = \\m => a.s ! m ++ "تر" ++ "از" ++ np2str np ;
|
||||
adv = a.adv ++ "تر" ++ "از" ++ np2str np ;
|
||||
} ;
|
||||
|
||||
---- $SuperlA$ belongs to determiner syntax in $Noun$.
|
||||
|
||||
ComplA2 a np = a ** {
|
||||
s = \\m => np.s ! Bare ++ a.c2 ++ a.s ! m ;
|
||||
adv = np.s ! Bare ++ a.c2 ++ a.adv
|
||||
s = \\m => np2str np ++ a.c2 ++ a.s ! m ;
|
||||
adv = np2str np ++ a.c2 ++ a.adv
|
||||
} ;
|
||||
|
||||
ReflA2 a = a ** {
|
||||
s = \\m => a.s ! m ++ reflPron ! defaultAgr ; ---- need to be fixed
|
||||
adv = a.adv ++ reflPron ! defaultAgr
|
||||
s = \\m => a.s ! m ++ reflPron ! defaultAgr ! Bare ; ---- need to be fixed
|
||||
adv = a.adv ++ reflPron ! defaultAgr ! Bare
|
||||
} ;
|
||||
|
||||
SentAP ap sc = ap ** {
|
||||
@@ -36,7 +36,7 @@ concrete AdjectivePes of Adjective = CatPes ** open ResPes, Prelude in {
|
||||
UseA2 a = a ;
|
||||
|
||||
CAdvAP cadv ap np = ap ** {
|
||||
s = \\m => cadv.s ++ np.s ! Bare ++ ap.s ! m ;
|
||||
s = \\m => cadv.s ++ np2str np ++ ap.s ! m ;
|
||||
adv = cadv.s ++ ap.adv
|
||||
} ;
|
||||
|
||||
|
||||
@@ -11,12 +11,12 @@ concrete AdverbPes of Adverb = CatPes ** open ResPes, Prelude in {
|
||||
s = a.adv ++ cadv.p ++ cadv.s ++ s.s ! Indic;
|
||||
} ;
|
||||
|
||||
PrepNP prep np = {s = prep.s ++ np.s ! Bare } ;
|
||||
PrepNP prep np = {s = appComp prep np.s} ;
|
||||
|
||||
AdAdv ada adv = { s = ada.s ++ adv.s} ;
|
||||
|
||||
-- SubjS = cc2 ;
|
||||
SubjS sub snt = {s = sub.s ++ "که" ++ snt.s ! sub.compl} ;
|
||||
SubjS sub snt = {s = sub.s ++ conjThat ++ snt.s ! sub.compl} ;
|
||||
AdnCAdv cadv = {s = cadv.s ++ "از"} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
|
||||
|
||||
S = {s : VVForm => Str} ; -- as a complement to Subj
|
||||
QS = {s : Str} ;
|
||||
RS = {s : Agr => Str } ;
|
||||
RS = {s : Agr => Str ; rp : RelPron => Str} ;
|
||||
SSlash = {s : VVForm => Str ; c2 : ResPes.Compl} ;
|
||||
|
||||
---- Sentence
|
||||
@@ -18,7 +18,7 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
|
||||
vp : ResPes.TAnt => Polarity => Order => Str ;
|
||||
c2 : ResPes.Compl
|
||||
} ;
|
||||
Imp = {s : Polarity => ImpForm => Str} ;
|
||||
Imp = {s : Polarity => Number => Str} ;
|
||||
|
||||
---- Question
|
||||
QCl = {s : ResPes.TAnt => Polarity => Str} ;
|
||||
@@ -32,10 +32,10 @@ concrete CatPes of Cat = CommonX ** open ResPes, Prelude in {
|
||||
---- Relative
|
||||
|
||||
RCl = {
|
||||
s : ResPes.TAnt => Polarity => Order => Agr => Str ;
|
||||
-- c : Case
|
||||
s : ResPes.TAnt => Polarity => Agr => Str ;
|
||||
rp : RelPron => Str
|
||||
} ;
|
||||
RP = {s: Str ; a:RAgr};
|
||||
RP = {s : RelPron => Str ; a : RAgr};
|
||||
|
||||
---- Verb
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ concrete ConjunctionPes of Conjunction =
|
||||
} ;
|
||||
|
||||
ConjAP conj ss = ss ** conjunctDistrTable Mod conj ss ; -- Adv isn't changed
|
||||
ConjRS conj rs = conjunctDistrTable Agr conj rs ** { c = rs.c};
|
||||
ConjRS conj rs = rs ** conjunctDistrTable Agr conj rs ;
|
||||
|
||||
---- These fun's are generated from the list cat's.
|
||||
|
||||
@@ -29,17 +29,17 @@ concrete ConjunctionPes of Conjunction =
|
||||
ConsAdv = consrSS comma ;
|
||||
|
||||
BaseNP x y = y ** twoTable Mod x y ** {a = conjAgr x.a y.a ; animacy = y.animacy } ; -- check animacy
|
||||
BaseRS x y = twoTable Agr x y ** {c = x.c};
|
||||
BaseRS x y = x ** twoTable Agr x y ;
|
||||
ConsNP xs x = xs ** consrTable Mod comma xs x ** {a = conjAgr xs.a x.a ; animacy = xs.animacy } ; -- InaandB xs.animacy x.animacy} ;
|
||||
ConsRS xs x = consrTable Agr comma xs x ** { c = xs.c};
|
||||
ConsRS xs x = xs ** consrTable Agr comma xs x ;
|
||||
BaseAP x y = y ** twoTable Mod x y ;
|
||||
ConsAP xs x = xs ** consrTable Mod comma xs x ; -- Table3 Number Gender Case comma xs x ;-- ** {isPre = andB xs.isPre x.isPre} ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : VVForm => Str} ;
|
||||
[Adv] = {s1,s2 : Str} ;
|
||||
[NP] = {s1,s2 : Mod => Str ; a : Agr ; animacy : Animacy ; hasAdj : Bool; compl:Str} ;
|
||||
[AP] = {s1,s2 : Mod => Str ; adv : Str ; isPre : Bool} ;
|
||||
[RS] = {s1,s2 : Agr => Str };
|
||||
[NP] = {s1,s2 : Mod => Str} ** BaseNP ;
|
||||
[AP] = {s1,s2 : Mod => Str ; adv : Str ; isPre : Bool} ;
|
||||
[RS] = {s1,s2 : Agr => Str ; rp : RelPron => Str} ;
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
concrete ExtendPes of Extend =
|
||||
CatPes ** ExtendFunctor - [
|
||||
GenNP, ApposNP, ICompAP
|
||||
GenNP, ApposNP, ICompAP, AdvIsNP, InOrderToVP, ByVP
|
||||
,GerundNP,GerundCN,GerundAdv,EmbedPresPart
|
||||
]
|
||||
with (Grammar=GrammarPes)
|
||||
@@ -10,9 +10,9 @@ concrete ExtendPes of Extend =
|
||||
|
||||
lin
|
||||
-- NP -> Quant ; -- this man's
|
||||
GenNP np = np ** {
|
||||
GenNP np = makeQuant [] [] ** np ** {
|
||||
mod = Ezafe ; -- the possessed will get Ezafe
|
||||
s = \\num,cmpd => np.s ! Bare -- possesser is unmarked; https://sites.la.utexas.edu/persian_online_resources/language-specific-grammar/ezfe/
|
||||
s = \\num,cmpd => np2str np -- possesser is unmarked; https://sites.la.utexas.edu/persian_online_resources/language-specific-grammar/ezfe/
|
||||
} ;
|
||||
|
||||
-- : NP -> NP -> NP
|
||||
@@ -30,6 +30,19 @@ lin
|
||||
-- : VP -> Adv ; -- publishing the document (prepositionless adverb)
|
||||
GerundAdv vp = lin Adv {s = showVPH Inf defaultAgr vp} ;
|
||||
|
||||
-- : VP -> SC ;
|
||||
-- : VP -> SC ;
|
||||
EmbedPresPart vp = lin SC {s = showVPH Inf defaultAgr vp} ;
|
||||
|
||||
-- : Adv -> NP -> Cl -- here is the car / here are the cars
|
||||
AdvIsNP adv np = mkClause (indeclNP adv.s ** {a = np.a}) (UseComp (CompNP np)) ;
|
||||
|
||||
-- : VP -> Adv ; -- by publishing the document
|
||||
ByVP vp = lin Adv {s = with_Prep.s ++ showVPH Inf defaultAgr vp} ;
|
||||
|
||||
-- : VP -> Adv ; -- (in order) to publish the document
|
||||
InOrderToVP vp = lin Adv {s = for_Prep.s ++ showVPH PerfStem defaultAgr vp} ;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
concrete IdiomPes of Idiom = CatPes ** open Prelude,Predef, ResPes in {
|
||||
concrete IdiomPes of Idiom = CatPes ** open Prelude,ParadigmsPes,ResPes in {
|
||||
|
||||
flags optimize=all_subs ;
|
||||
flags coding = utf8;
|
||||
@@ -9,15 +9,22 @@ lin
|
||||
GenericCl vp = mkSClause "آدم" (agrP3 Sg) vp ;
|
||||
|
||||
CleftNP np rs =
|
||||
let cl = mkSClause (np.s ! Bare) (np.a) (predV beVerb);
|
||||
let cl = mkSClause (np2str np) (np.a) (predV beVerb);
|
||||
in
|
||||
{s = \\t,p,o => cl.s ! t ! p ! o ++ rs.s ! np.a };
|
||||
{s = \\t,p,o => cl.s ! t ! p ! o ++ rs2str Ke np.a rs};
|
||||
|
||||
CleftAdv ad ss = { s = \\t,b,o => ad.s ++ ss.s ! Indic};
|
||||
|
||||
ExistNP np =
|
||||
mkSClause [] (agrP3 (fromAgr np.a).n)
|
||||
(insertComp (\\_ => np.s ! Bare) (predV beVerb)) ;
|
||||
(insertComp (\\_ => np2str np) (predV existVerb)) ;
|
||||
|
||||
ExistNPAdv np adv =
|
||||
mkSClause [] (agrP3 (fromAgr np.a).n)
|
||||
(insertComp (\\_ => np2str np ++ adv.s)
|
||||
(predV existVerb)
|
||||
) ;
|
||||
|
||||
|
||||
ExistIP ip =
|
||||
let cl = mkSClause ip.s (agrP3 ip.n) (predV beVerb);
|
||||
@@ -29,7 +36,9 @@ lin
|
||||
ImpPl1 vp = let a = agrP1 Pl in
|
||||
{s = "بیایید" ++ showVPH (VSubj Pos a) a vp } ;
|
||||
ImpP3 np vp =
|
||||
{s = "بگذارید" ++ np.s ! Bare ++ showVPH (VSubj Pos np.a) np.a vp};
|
||||
{s = "بگذارید" ++ np2str np ++ showVPH (VSubj Pos np.a) np.a vp};
|
||||
|
||||
oper
|
||||
existVerb = mkV "وجود" haveVerb ;
|
||||
|
||||
}
|
||||
|
||||
@@ -91,22 +91,20 @@ oper
|
||||
_ => str + "ی" -- any other case: just a single ی
|
||||
} ;
|
||||
|
||||
modTable : Str -> Mod => Str = \str ->
|
||||
table {Bare => str ;
|
||||
Ezafe => mkEzafe str ;
|
||||
Clitic => mkEnclic str ;
|
||||
Poss => mkPossStem str } ;
|
||||
|
||||
Noun = {
|
||||
s : Number => Mod => Str ;
|
||||
animacy : Animacy ;
|
||||
isCmpd : CmpdStatus -- Affects possession: awkward to use poss. suff. with compound nouns
|
||||
isCmpd : CmpdStatus -- Affects possession: awkward to use poss. suff. with compound nouns
|
||||
} ;
|
||||
|
||||
mkN : (x1,x2 : Str) -> Animacy -> Noun = \sg,pl,ani -> indeclN sg ** {
|
||||
s = table {
|
||||
Sg => table {Bare => sg ;
|
||||
Ezafe => mkEzafe sg ;
|
||||
Clitic => mkEnclic sg ;
|
||||
Poss => mkPossStem sg } ;
|
||||
Pl => table {Bare => pl ;
|
||||
Ezafe => mkEzafe pl ;
|
||||
Clitic => mkEnclic pl ;
|
||||
Poss => mkPossStem pl }}
|
||||
s = table {Sg => modTable sg ; Pl => modTable pl}
|
||||
} ;
|
||||
|
||||
indeclN : Str -> Noun = \s -> {
|
||||
@@ -121,7 +119,7 @@ oper
|
||||
--Determiners
|
||||
--------------------
|
||||
BaseQuant : Type = {
|
||||
mod : Mod } ;
|
||||
mod : Mod} ;
|
||||
|
||||
Determiner : Type = BaseQuant ** {
|
||||
s : Str ;
|
||||
@@ -131,7 +129,8 @@ oper
|
||||
} ;
|
||||
|
||||
Quant : Type = BaseQuant ** {
|
||||
s : Number => CmpdStatus => Str} ;
|
||||
s : Number => CmpdStatus => Str ;
|
||||
isDef : Bool } ;
|
||||
|
||||
makeDet : Str -> Number -> Bool -> Determiner = \str,n,b -> {
|
||||
s,sp = str;
|
||||
@@ -143,6 +142,7 @@ oper
|
||||
makeQuant : Str -> Str -> Quant = \sg,pl -> {
|
||||
s = table {Sg => \\_ => sg ; Pl => \\_ => pl} ;
|
||||
mod = Bare ;
|
||||
isDef = True
|
||||
};
|
||||
---------------------------
|
||||
-- Adjectives
|
||||
@@ -312,6 +312,7 @@ oper
|
||||
|
||||
haveVerb : Verb = haveRegV ** {s = table {
|
||||
ImpPrefix _ => [] ;
|
||||
VAor Neg agr => imperfectSuffix agr (addN "دار") ;
|
||||
vf => haveRegV.s ! vf }
|
||||
} where { haveRegV = mkVerb "داشتن" "دار" } ;
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
||||
flags optimize=all_subs ;
|
||||
|
||||
lin
|
||||
DetCN det cn = cn ** {
|
||||
DetCN det cn = emptyNP ** cn ** {
|
||||
s = \\m =>
|
||||
let num : Number = case det.isNum of {
|
||||
True => Sg ; -- noun modified by a number is invariably singular
|
||||
@@ -15,10 +15,9 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
||||
NotCmpd => det.s ; -- possessive suffix
|
||||
IsCmpd => det.sp } ; -- full form
|
||||
in case mod of {
|
||||
Bare => detStr ++ cn.s ! num ! m ; -- det doesn't require a special form, keep the Mod=>Str table
|
||||
x => cn.s ! num ! x ++ detStr } ; -- det requires a special form
|
||||
a = agrP3 det.n ;
|
||||
compl = cn.compl ! det.n
|
||||
Bare => detStr ++ cn.s ! num ! m ++ cn.compl ! det.n ; -- det doesn't require a special form, keep the Mod=>Str table
|
||||
x => cn.s ! num ! x ++ detStr ++ cn.compl ! det.n } ; -- det requires a special form
|
||||
a = agrP3 det.n
|
||||
} ;
|
||||
|
||||
UsePN pn = emptyNP ** pn ** {s = \\_ => pn.s} ;
|
||||
@@ -33,43 +32,55 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
||||
} ;
|
||||
|
||||
RelNP np rs = np ** {
|
||||
s = \\ez => np.s ! ez ++ rs.s ! np.a
|
||||
s = \\m => case np.relpron of {
|
||||
Ance => np.empty ++ rs2str np.relpron np.a rs ;
|
||||
Ke => np.s ! Clitic ++ rs2str np.relpron np.a rs }
|
||||
} ;
|
||||
|
||||
AdvNP np adv = np ** {
|
||||
s = \\ez => np.s ! Ezafe ++ adv.s
|
||||
} ;
|
||||
|
||||
DetQuantOrd quant num ord = {
|
||||
s = quant.s ! num.n ! NotCmpd ++ num.s ++ ord.s ;
|
||||
sp = quant.s ! num.n ! IsCmpd ++ num.s ++ ord.s ; -- only matters for PossPron
|
||||
DetQuantOrd quant num ord =
|
||||
let cs : CmpdStatus => Str = case <num.isNum,num.n,quant.isDef> of {
|
||||
<True,Sg,False> => \\_ => num.s ++ ord.s ;
|
||||
_ => \\c => quant.s ! num.n ! c ++ num.s ++ ord.s} ;
|
||||
|
||||
in {
|
||||
s = cs ! NotCmpd ;
|
||||
sp = cs ! IsCmpd ; -- only matters for PossPron
|
||||
isNum = orB num.isNum ord.isNum ;
|
||||
mod = quant.mod ;
|
||||
n = num.n
|
||||
} ;
|
||||
|
||||
DetQuant quant num = {
|
||||
s = quant.s ! num.n ! NotCmpd ++ num.s ;
|
||||
sp = quant.s ! num.n ! IsCmpd ++ num.s ; -- only matters for PossPron
|
||||
DetQuant quant num =
|
||||
let cs : CmpdStatus => Str = case <num.isNum,num.n,quant.isDef> of {
|
||||
<True,Sg,False> => \\_ => num.s ;
|
||||
_ => \\c => quant.s ! num.n ! c ++ num.s } ;
|
||||
|
||||
in {
|
||||
s = cs ! NotCmpd ;
|
||||
sp = cs ! IsCmpd ; -- only matters for PossPron
|
||||
isNum = num.isNum;
|
||||
mod = quant.mod ;
|
||||
n = num.n
|
||||
} ;
|
||||
|
||||
DetNP det = {
|
||||
DetNP det = emptyNP ** {
|
||||
s = \\_ => det.sp ;
|
||||
a = agrP3 det.n ;
|
||||
hasAdj = False ;
|
||||
animacy = Inanimate ;
|
||||
compl = []
|
||||
relpron = Ance -- TODO check if this works for all Dets
|
||||
} ;
|
||||
|
||||
PossPron p = {
|
||||
PossPron p = DefArt ** {
|
||||
s = \\_ => table {
|
||||
NotCmpd => BIND ++ p.ps ;
|
||||
IsCmpd => p.s } ; -- is a compound
|
||||
a = p.a ;
|
||||
mod = Poss} ; -- make into Ezafe if DetCN if N is compound
|
||||
mod = Poss} ; -- is changed into Ezafe in DetCN, if the CN is compound
|
||||
|
||||
NumSg = {s = [] ; n = Sg ; isNum = False} ;
|
||||
NumPl = {s = [] ; n = Pl ; isNum = False} ;
|
||||
@@ -86,13 +97,12 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
||||
|
||||
OrdSuperl a = {s = a.s ! Bare ++ taryn; n = Sg ; isNum=False ; isPre = True} ; -- check the form of adjective
|
||||
|
||||
DefArt = {s = \\_,_ => [] ; mod = Bare} ;
|
||||
IndefArt = {s = table {Sg => \\_ => IndefArticle ; Pl => \\_ => []} ; mod = Bare} ;
|
||||
DefArt = makeQuant [] [] ;
|
||||
IndefArt = makeQuant IndefArticle [] ** {isDef = False} ;
|
||||
|
||||
MassNP cn = cn ** {
|
||||
s = cn.s ! Sg ;
|
||||
MassNP cn = emptyNP ** cn ** {
|
||||
s = \\m => cn.s ! Sg ! m ++ cn.compl ! Sg ;
|
||||
a = agrP3 Sg ;
|
||||
compl = cn.compl ! Sg
|
||||
} ;
|
||||
|
||||
UseN,
|
||||
@@ -110,13 +120,13 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
||||
|
||||
ComplN2 n2 np = n2 ** {
|
||||
s = \\n,m => n2.s ! n ! Ezafe ;
|
||||
compl = \\_ => n2.compl ++ n2.c2 ++ np.s ! Bare ;
|
||||
compl = \\_ => n2.compl ++ n2.c2 ++ np2str np ;
|
||||
hasAdj = False
|
||||
};
|
||||
|
||||
ComplN3 n3 np = n3 ** {
|
||||
s = \\n,m => n3.s ! n ! Ezafe ;
|
||||
compl = n3.c2 ++ np.s ! Bare ;
|
||||
compl = n3.c2 ++ np2str np ;
|
||||
c = n3.c3;
|
||||
} ;
|
||||
|
||||
@@ -129,15 +139,21 @@ concrete NounPes of Noun = CatPes ** open ResPes, Prelude in {
|
||||
|
||||
RelCN cn rs = cn ** {
|
||||
s = \\n,ez => cn.s ! n ! Clitic ;
|
||||
compl = \\n => rs.s ! agrP3 n ;
|
||||
compl = \\n => cn.compl ! n ++ rs2str Ke (agrP3 n) rs ;
|
||||
} ;
|
||||
|
||||
AdvCN cn ad = cn ** {s = \\n,m => cn.s ! n ! Ezafe ++ ad.s} ;
|
||||
AdvCN cn ad = cn ** {
|
||||
s = \\n,m => cn.s ! n ! Ezafe ;
|
||||
compl = \\n => cn.compl ! n ++ ad.s} ;
|
||||
|
||||
SentCN cn sc = cn ** {compl = \\n => sc.s} ;
|
||||
SentCN cn sc = cn ** {compl = \\n => cn.compl ! n ++ sc.s} ;
|
||||
|
||||
-- correct for /city Paris/, incorrect for /king John/
|
||||
-- ApposNP in ExtendPes works for /king John/ (no ezafe).
|
||||
ApposCN cn np = cn ** {s = \\n,m => cn.s ! n ! Ezafe ++ np.s ! m} ;
|
||||
|
||||
-- : CN -> NP -> CN ; -- house of Paris, house of mine
|
||||
PossNP cn np = cn ** {
|
||||
s = \\n,m => cn.s ! n ! Ezafe ; -- TODO or here for "<house of mine> <on the hill>"
|
||||
compl = \\n => cn.compl ! n ++ np2str np } ; -- "<house> <on the hill of mine>"
|
||||
}
|
||||
|
||||
@@ -28,6 +28,10 @@ oper
|
||||
subjunctive : VVForm ; -- The verbal complement of VV is in subjunctive
|
||||
indicative : VVForm ; -- The verbal complement of VV is in indicative
|
||||
|
||||
Mod : Type ; -- Argument to mkDet and mkPrep
|
||||
ezafe : Mod ; -- e.g. mkPrep "برای" ezafe
|
||||
-- poss : Mod ; -- TODO is this needed?
|
||||
--clitic : Mod ; -- TODO is this needed?
|
||||
--2 Nouns
|
||||
|
||||
mkN : overload {
|
||||
@@ -54,7 +58,7 @@ oper
|
||||
= mkCmpdNoun2 ; -- e.g. مأمور پلیس '/officer/ police'.
|
||||
cmpdN : N -> N -> N -- Compound noun with ezafe (Nی N)
|
||||
= \n1,n2 -> n1 ** {
|
||||
s = \\n,m => n1.s ! n ! Ezafe ++ n2.s ! n ! m ;
|
||||
s = \\n,m => n1.s ! n ! Ezafe ++ n2.s ! Sg ! m ;
|
||||
isCmpd = IsCmpd} ;
|
||||
} ;
|
||||
|
||||
@@ -66,9 +70,11 @@ oper
|
||||
|
||||
mkDet = overload {
|
||||
mkDet : Str -> Number -> Det -- Takes a string, number (sg/pl) and returns a det which is not a numeral
|
||||
= \s1,n -> lin Det (makeDet s1 n False);
|
||||
mkDet : Str -> Number -> Bool -> Det -- Takes a string, number (sg/pl) and a Boolean for whether the det is a numeral
|
||||
= \s1,n,b -> lin Det (makeDet s1 n b)
|
||||
= \s,n -> lin Det (makeDet s n False);
|
||||
mkDet : Str -> Number -> Bool -> Det -- As above + a Boolean for whether the det is a numeral
|
||||
= \s,n,b -> lin Det (makeDet s n b) ;
|
||||
mkDet : Str -> Number -> Bool -> Mod -> Det -- As above + Mod for which form the determiner expects its argument to be (default bare)
|
||||
= \s,n,b,m -> lin Det (makeDet s n b ** {mod=m})
|
||||
};
|
||||
|
||||
{-
|
||||
@@ -173,8 +179,13 @@ oper
|
||||
|
||||
----2 Prepositions
|
||||
|
||||
mkPrep : Str -> Prep ; -- Takes a string, returns a preposition.
|
||||
mkPrep str = lin Prep {s = str ; ra = []} ;
|
||||
mkPrep = overload {
|
||||
mkPrep : Str -> Prep -- Takes a string, returns a preposition.
|
||||
= \str -> lin Prep {s = str ; ra = [] ; mod = Bare} ;
|
||||
mkPrep : Str -> Mod -> Prep -- Takes a string and Mod (so far only option is ezafe), returns a preposition.
|
||||
= \str,m -> lin Prep {s = str ; ra = [] ; mod=m}
|
||||
} ;
|
||||
|
||||
{-
|
||||
--3 Determiners and quantifiers
|
||||
|
||||
@@ -203,6 +214,9 @@ oper
|
||||
= \vvf,s -> lin Subj {s=s ; compl=vvf}
|
||||
} ;
|
||||
|
||||
mkInterj : Str -> Interj
|
||||
= \s -> lin Interj {s=s} ;
|
||||
|
||||
--.
|
||||
--2 Definitions of paradigms
|
||||
|
||||
@@ -224,6 +238,9 @@ oper
|
||||
subjunctive = ResPes.Subj ;
|
||||
indicative = Indic ;
|
||||
|
||||
Mod = ResPes.Mod ;
|
||||
ezafe = ResPes.Ezafe ;
|
||||
|
||||
-- Removed mkV_1, mkV_2, mkN01 and mkN02 from public API, still available for
|
||||
-- any applications that open ParadigmsPes. /IL 2019-02-08
|
||||
mkV_1 : Str -> V
|
||||
@@ -329,15 +346,15 @@ oper
|
||||
mkV2 : V -> Str -> V2
|
||||
= \v,ra -> lin V2 (v ** {c2 = prepOrRa ra}) ;
|
||||
mkV2 : V -> Str -> Bool -> V2
|
||||
= \v,p,b -> lin V2 (v ** {c2 = {ra = [] ; s = p}}) ;
|
||||
= \v,p,b -> lin V2 (v ** {c2 = {ra = [] ; s = p ; mod=Bare}}) ;
|
||||
} ;
|
||||
|
||||
prepOrRa : Str -> Compl = \s -> case s of {
|
||||
"را" => {s = [] ; ra = "را"} ;
|
||||
prep => {s = prep ; ra = []}
|
||||
"را" => {s = [] ; ra = "را" ; mod=Bare} ;
|
||||
prep => {s = prep ; ra = []; mod=Bare}
|
||||
} ;
|
||||
|
||||
mkPost : Str -> Prep = \s -> lin Prep {s=[] ; ra=s} ;
|
||||
mkPost : Str -> Prep = \s -> lin Prep {s=[] ; ra=s ; mod=Bare} ;
|
||||
|
||||
mkN2 = overload {
|
||||
mkN2 : Str -> N2 -- Predictable N2 without complement
|
||||
|
||||
@@ -3,9 +3,9 @@ concrete PhrasePes of Phrase = CatPes ** open Prelude, ResPes in {
|
||||
lin
|
||||
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
|
||||
UttS s = {s = s.s ! Indic} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False} ;
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False} ;
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True} ;
|
||||
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Sg} ;
|
||||
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Pl} ;
|
||||
|
||||
UttIP, --- Acc also
|
||||
UttQS,
|
||||
|
||||
@@ -22,7 +22,7 @@ concrete QuestionPes of Question = CatPes ** open ResPes, Prelude in {
|
||||
};
|
||||
|
||||
QuestIComp icomp np =
|
||||
let cl = mkSClause (np.s ! Bare ++ icomp.s) np.a (predV beVerb)
|
||||
let cl = mkSClause (np2str np ++ icomp.s) np.a (predV beVerb)
|
||||
in {s = \\t,p => cl.s ! t ! p ! ODir};
|
||||
|
||||
PrepIP p ip = {s = p.s ++ ip.s } ;
|
||||
|
||||
@@ -6,43 +6,32 @@ concrete RelativePes of Relative = CatPes ** open ResPes in {
|
||||
lin
|
||||
|
||||
RelCl cl = {
|
||||
s = \\t,p,o,agr => "که" ++ cl.s ! t ! p ! o ;
|
||||
};
|
||||
-- RelVP and RelSlash slows the linking process a lot this is why it is commented for test purposes
|
||||
s = \\t,p,agr => cl.s ! t ! p ! ODir ;
|
||||
rp = IdRP.s
|
||||
} ;
|
||||
|
||||
RelVP rp vp = {
|
||||
s = \\t,p,o,ag =>
|
||||
let
|
||||
agr = case rp.a of {
|
||||
RNoAg => ag ;
|
||||
RAg a => a
|
||||
} ;
|
||||
cl = mkSClause (rp.s) agr vp;
|
||||
|
||||
-- cl = case t of {
|
||||
-- VPImpPast => mkSClause (rp.s ! (giveNumber agr) ! Obl) agr vp;
|
||||
-- _ => mkSClause (rp.s ! (giveNumber agr) ! Dir) agr vp
|
||||
-- };
|
||||
in
|
||||
cl.s ! t ! p ! ODir ;
|
||||
-- c = Dir
|
||||
s = \\t,p,ag =>
|
||||
let agr = case rp.a of {
|
||||
RNoAg => ag ;
|
||||
RAg a => a} ;
|
||||
cl = mkSClause [] agr vp;
|
||||
in cl.s ! t ! p ! ODir ;
|
||||
rp = rp.s
|
||||
} ;
|
||||
--
|
||||
|
||||
RelSlash rp slash = {
|
||||
s = \\t,p,o,agr => rp.s ++ slash.c2.s ++ slash.subj ++ slash.vp ! t ! p ! o ;--case t of { ---- AR 18/8/2017 is this the right place of subj?
|
||||
-- VPImpPast => rp.s ! (giveNumber agr) Obl ++ slash.c2.s ++ slash.s ! t ! p ! o ;
|
||||
-- _ => rp.s ! (giveNumber agr) Dir ++ slash.c2.s ++ slash.s ! t ! p ! o
|
||||
-- };
|
||||
-- c = Dir
|
||||
s = \\t,p,agr => slash.c2.s ++ slash.subj ++ slash.vp ! t ! p ! ODir ;--case t of { ---- AR 18/8/2017 is this the right place of subj?
|
||||
rp = rp.s
|
||||
} ;
|
||||
|
||||
FunRP p np rp = {
|
||||
s = np.s ! Clitic ++ rp.s ++ p.s ++ getPron np.animacy (fromAgr np.a).n ; -- need to make a special form of relative np by addY
|
||||
s = \\ke => np.s ! Clitic ++ rp.s ! ke ++ p.s ++ getPron np.animacy (fromAgr np.a).n ;
|
||||
a = RAg np.a
|
||||
} ;
|
||||
|
||||
IdRP = {
|
||||
s = "که" ;
|
||||
s = table {Ke => "که" ; Ance => "آنچه"} ;
|
||||
a = RNoAg
|
||||
} ;
|
||||
|
||||
|
||||
@@ -12,10 +12,9 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
||||
|
||||
param
|
||||
Order = ODir | OQuest ;
|
||||
PMood = Del | Imper | PCond ;
|
||||
|
||||
CardOrd = NCard | NOrd ;
|
||||
RAgr = RNoAg | RAg Agr ;
|
||||
RelPron = Ance | Ke ; -- https://en.wiktionary.org/wiki/%D8%A2%D9%86%DA%86%D9%87
|
||||
|
||||
oper
|
||||
CN : Type = Noun ** {
|
||||
@@ -24,12 +23,16 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
||||
-- dep. on Number because of RelCN
|
||||
} ;
|
||||
|
||||
NP : Type = {
|
||||
NP : Type = BaseNP ** {
|
||||
s : Mod => Str ; -- NP can appear with a clitic, need to keep Mod open
|
||||
} ;
|
||||
|
||||
BaseNP : Type = {
|
||||
a : Agr ;
|
||||
hasAdj : Bool ; -- to get the right form when NP is a predicate
|
||||
compl : Str ; -- to make possessive suffix attach to the right word
|
||||
animacy : Animacy -- to get the right relative pronoun
|
||||
animacy : Animacy ; -- to get the right pronoun in FunRP
|
||||
relpron : RelPron ; -- contraction for "that which"
|
||||
empty : Str -- to prevent metavariables in case of rel.pron. contraction
|
||||
} ;
|
||||
|
||||
oper
|
||||
@@ -38,8 +41,10 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
||||
a = defaultAgr ;
|
||||
hasAdj = False ;
|
||||
animacy = Inanimate ;
|
||||
compl = []
|
||||
relpron = Ke ;
|
||||
empty = []
|
||||
} ;
|
||||
|
||||
indeclNP : Str -> NP = \s ->
|
||||
emptyNP ** {s = \\m => s} ;
|
||||
|
||||
@@ -49,11 +54,14 @@ resource ResPes = MorphoPes ** open Prelude,Predef in {
|
||||
} ;
|
||||
|
||||
np2str : NP -> Str = \np ->
|
||||
np.s ! Bare ++ np.compl ;
|
||||
np.s ! Bare ;
|
||||
|
||||
cn2str : CN -> Str = \cn ->
|
||||
cn.s ! Sg ! Bare ++ cn.compl ! Sg ;
|
||||
|
||||
rs2str : RelPron -> Agr -> {s : Agr => Str ; rp : RelPron => Str} -> Str =
|
||||
\ke,agr,rs -> rs.rp ! ke ++ rs.s ! agr ;
|
||||
|
||||
-----------------------
|
||||
--- Verb Phrase
|
||||
-----------------------
|
||||
@@ -102,7 +110,7 @@ oper
|
||||
vp.comp ! agr ++ vp.prefix ++ vp.s ! vf -- vp.ad is missing on purpose! we add it in insertVV.
|
||||
++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vp.embComp ;
|
||||
|
||||
Compl : Type = {s : Str ; ra : Str} ;
|
||||
Compl : Type = {s : Str ; ra : Str ; mod : Mod} ;
|
||||
|
||||
VPHSlash : Type = VPH ** {
|
||||
c2 : Compl ; -- prep or ra for the complement
|
||||
@@ -126,20 +134,24 @@ oper
|
||||
---------------------
|
||||
-- VP complementation
|
||||
---------------------
|
||||
appComp : Compl -> Str -> Str = \c2,obj ->
|
||||
c2.s ++ obj ++ c2.ra ;
|
||||
appComp : Compl -> (Mod=>Str) -> Str = \c2,obj ->
|
||||
c2.s ++ obj ! c2.mod ++ c2.ra ;
|
||||
|
||||
insertComp : (Agr => Str) -> VPH -> VPH = \obj,vp -> vp ** {
|
||||
comp = \\a => vp.comp ! a ++ obj ! a
|
||||
} ;
|
||||
|
||||
insertCompPre : (Agr=>Str) -> VPHSlash -> VPH = \obj,vp -> vp ** {
|
||||
insertCompPre : (Agr=>Mod=>Str) -> VPHSlash -> VPH = \obj,vp -> vp ** {
|
||||
comp = \\a => appComp vp.c2 (obj ! a) ++ vp.comp ! a
|
||||
} ;
|
||||
|
||||
insertCompPost : (Agr=>Mod=>Str) -> VPHSlash -> VPH = \obj,vp -> vp ** {
|
||||
comp = \\a => vp.comp ! a ++ appComp vp.c2 (obj ! a)
|
||||
} ;
|
||||
|
||||
insertVV : VV -> VPH -> VPH = \vv,vp -> predV vv ** {
|
||||
vComp = \\a,t => vp.vComp ! a ! t ++ complVV vv vp ! a ! t ;
|
||||
vvType = case vv.isDef of {True => DefVV ; _ => FullVV} ;
|
||||
vvtype = case vv.isDef of {True => DefVV ; _ => FullVV} ;
|
||||
ad = vp.ad -- because complVV doesn't include ad! for word order.
|
||||
} ;
|
||||
|
||||
@@ -152,8 +164,7 @@ oper
|
||||
} ;
|
||||
|
||||
complSlash : VPHSlash -> NP -> VPH = \vp,np -> vp ** {
|
||||
comp = \\a => appComp vp.c2 (np.s ! Bare)
|
||||
++ np.compl ++ vp.comp ! a ;
|
||||
comp = \\a => appComp vp.c2 np.s ++ vp.comp ! a ;
|
||||
obj = vp.obj ++ vp.agrObj ! np.a -- "beg her to buy", buy agrees with her
|
||||
} ;
|
||||
|
||||
@@ -226,8 +237,12 @@ oper
|
||||
vp = \\ta,p,ord =>
|
||||
let vps = clTable vp ! np.a ! ta ! p ;
|
||||
vvt = ta2vvt ta ;
|
||||
in vp.ad ++ vp.comp ! np.a ++ vp.obj ++ vps
|
||||
++ vp.vComp ! np.a ! vvt ++ vp.embComp
|
||||
in case vp.vvtype of {
|
||||
DefVV
|
||||
=> vps ++ vp.ad ++ vp.comp ! np.a ++ vp.obj
|
||||
++ vp.vComp ! np.a ! vvt ++ vp.embComp ;
|
||||
_ => vp.ad ++ vp.comp ! np.a ++ vp.obj ++ vps
|
||||
++ vp.vComp ! np.a ! vvt ++ vp.embComp }
|
||||
};
|
||||
|
||||
--Clause : Type = {s : TAnt => Polarity => Order => Str} ;
|
||||
@@ -264,14 +279,13 @@ oper
|
||||
-- Reflexive pronouns
|
||||
-----------------------------------
|
||||
|
||||
reflPron : Agr => Str = table {
|
||||
Ag Sg P1 => "خودم" ;
|
||||
Ag Sg P2 => "خودت" ;
|
||||
Ag Sg P3 => "خودش" ;
|
||||
Ag Pl P1 => "خودمان" ;
|
||||
Ag Pl P2 => "خودتان" ;
|
||||
Ag Pl P3 => "خودشان"
|
||||
|
||||
reflPron : Agr => Mod => Str = table {
|
||||
Ag Sg P1 => modTable "خودم" ;
|
||||
Ag Sg P2 => modTable "خودت" ;
|
||||
Ag Sg P3 => modTable "خودش" ;
|
||||
Ag Pl P1 => modTable "خودمان" ;
|
||||
Ag Pl P2 => modTable "خودتان" ;
|
||||
Ag Pl P3 => modTable "خودشان"
|
||||
} ;
|
||||
|
||||
getPron : Animacy -> Number -> Str = \ani,number ->
|
||||
|
||||
@@ -11,8 +11,8 @@ concrete SentencePes of Sentence = CatPes ** open Prelude, ResPes,Predef in {
|
||||
|
||||
ImpVP vp = {
|
||||
s = \\pol,n =>
|
||||
let agr = Ag (numImp n) P2 ;
|
||||
vps = vp.prefix ++ vp.s ! VImp pol (numImp n)
|
||||
let agr = Ag n P2 ;
|
||||
vps = vp.prefix ++ vp.s ! VImp pol n
|
||||
in case vp.vvtype of {
|
||||
NoVV => vp.ad ++ vp.comp ! agr ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vps ++ vp.embComp ;
|
||||
_ => vps ++ vp.ad ++ vp.comp ! agr ++ vp.obj ++ vp.vComp ! agr ! VVPres ++ vp.embComp }
|
||||
@@ -52,7 +52,7 @@ concrete SentencePes of Sentence = CatPes ** open Prelude, ResPes,Predef in {
|
||||
} ;
|
||||
|
||||
UseRCl temp p rcl = let vt = TA temp.t temp.a in rcl ** {
|
||||
s = \\q => temp.s ++ p.s ++ rcl.s ! vt ! p.p ! ODir ! q
|
||||
s = \\a => temp.s ++ p.s ++ rcl.s ! vt ! p.p ! a
|
||||
} ;
|
||||
|
||||
UseSlash temp p cls = cls ** {
|
||||
@@ -63,7 +63,7 @@ concrete SentencePes of Sentence = CatPes ** open Prelude, ResPes,Predef in {
|
||||
|
||||
AdvS a s = {s = \\vvf => a.s ++ s.s ! vvf} ;
|
||||
|
||||
RelS s r = {s = \\vvf => s.s ! vvf ++ r.s ! agrP3 Sg} ;
|
||||
RelS s r = {s = \\vvf => s.s ! vvf ++ rs2str Ke (agrP3 Sg) r} ;
|
||||
SSubjS s1 sj s2 = {s = \\vvf => s1.s ! vvf ++ sj.s ++ s2.s ! sj.compl};
|
||||
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ concrete StructuralPes of Structural = CatPes **
|
||||
-- everything_NP = R.indeclNP ["هر XE"]));
|
||||
everywhere_Adv = ss ["هر جا"] ;
|
||||
few_Det = mkDet ["تعداد کمی"] Pl True; -- check
|
||||
for_Prep = mkPrep "برای" ;
|
||||
for_Prep = mkPrep "برای" Ezafe ;
|
||||
from_Prep = mkPrep "از" ;
|
||||
he_Pron = R.agr2pron ! Ag Sg P3 ;
|
||||
here_Adv = ss "اینجا" ;
|
||||
@@ -44,7 +44,7 @@ concrete StructuralPes of Structural = CatPes **
|
||||
in_Prep = mkPrep "در" ;
|
||||
it_Pron = R.agr2pron ! Ag Sg P3;
|
||||
less_CAdv = {s = "کمتر" ; p = ""} ;
|
||||
many_Det = mkDet ["تعداد زیادی"] Pl True; -- check
|
||||
many_Det = mkDet "بسیار" Pl False Ezafe ;
|
||||
more_CAdv = {s = "بیشتر" ; p = "" } ;
|
||||
most_Predet = ss "اکثر";
|
||||
much_Det = mkDet ["مقدار زیادی"] Pl ;
|
||||
@@ -57,9 +57,9 @@ concrete StructuralPes of Structural = CatPes **
|
||||
only_Predet = ss "فقط" ;
|
||||
or_Conj = sd2 [] "یا" ** {n = Sg} ;
|
||||
otherwise_PConj = ss ["درغیراین صورت"] ;
|
||||
part_Prep = mkPrep "از" ; -- TODO: the object following it should be in Ezafa form
|
||||
part_Prep = mkPrep "از" Ezafe ;
|
||||
please_Voc = ss "لطفاً" ;
|
||||
possess_Prep = mkPrep "" ; -- will be handeled in Ezafeh
|
||||
possess_Prep = mkPrep [] Ezafe ;
|
||||
quite_Adv = ss "کاملاً" ;
|
||||
she_Pron = R.agr2pron ! Ag Sg P3 ;
|
||||
so_AdA = ss "بسیار" ;
|
||||
@@ -101,7 +101,7 @@ concrete StructuralPes of Structural = CatPes **
|
||||
youSg_Pron = R.agr2pron ! Ag Sg P2 ;
|
||||
youPl_Pron = R.agr2pron ! Ag Pl P2 ;
|
||||
youPol_Pron = R.agr2pron ! Ag Pl P2 ;
|
||||
-- no_Quant = demoPN "هیچ" ;
|
||||
no_Quant = mkQuant "هیچ" "هیچ" ;
|
||||
not_Predet = {s="نه"} ;
|
||||
if_then_Conj = sd2 "اگر" "آنگاه" ** {n = Sg} ;
|
||||
at_least_AdN = ss "حداقل" ;
|
||||
@@ -126,16 +126,8 @@ have_V2 = haveVerb ** {
|
||||
VImp Pos Pl => "داشته باشید" ;
|
||||
VImp Neg Sg => "نداشته باش" ;
|
||||
VImp Neg Pl => "نداشته باشید" ;
|
||||
VSubj _ (Ag Sg P1) => "داشته باشم" ;
|
||||
VSubj _ (Ag Sg P2) => "داشته باشی" ;
|
||||
VSubj _ (Ag Sg P3) => "داشته باشد" ;
|
||||
VSubj _ (Ag Pl P1) => "داشته باشیم" ;
|
||||
VSubj _ (Ag Pl P2) => "داشته باشید" ;
|
||||
VSubj _ (Ag Pl P3) => "داشته باشند" ;
|
||||
VSubj p agr => "داشته" ++ subjAux p agr ;
|
||||
x => haveVerb.s ! x } ;
|
||||
c2 = {
|
||||
s = [] ;
|
||||
ra = [] --- "را" ; ---- AR 18/9/2017: usually no ra acc. to Nasrin, but this is tricky
|
||||
}
|
||||
c2 = prepOrRa [] -- "را" ; ---- AR 18/9/2017: usually no ra acc. to Nasrin, but this is tricky
|
||||
} ;
|
||||
}
|
||||
|
||||
@@ -10,20 +10,17 @@ concrete SymbolPes of Symbol = CatPes ** open Prelude, ResPes in {
|
||||
IntPN i = {s = i.s ; animacy = Inanimate} ;
|
||||
FloatPN i = {s = i.s ; animacy = Inanimate} ;
|
||||
NumPN i = {s = i.s ; animacy = Inanimate} ;
|
||||
CNIntNP cn i = cn ** {
|
||||
s = \\ez => cn.s ! Sg ! Ezafe ++ i.s ;
|
||||
a = agrP3 Sg ;
|
||||
compl = cn.compl ! Sg
|
||||
CNIntNP cn i = emptyNP ** cn ** {
|
||||
s = \\ez => cn.s ! Sg ! Ezafe ++ i.s ++ cn.compl ! Sg ;
|
||||
a = agrP3 Sg
|
||||
} ;
|
||||
CNSymbNP det cn xs = cn ** {
|
||||
s = \\ez => det.s ++ cn.s ! det.n ! Ezafe ++ xs.s ;
|
||||
a = agrP3 det.n ;
|
||||
compl = cn.compl ! det.n
|
||||
CNSymbNP det cn xs = emptyNP ** cn ** {
|
||||
s = \\ez => det.s ++ cn.s ! det.n ! Ezafe ++ xs.s ++ cn.compl ! det.n ;
|
||||
a = agrP3 det.n
|
||||
} ;
|
||||
CNNumNP cn i = cn ** {
|
||||
s = \\ez => cn.s ! Sg ! Ezafe ++ i.s ;
|
||||
CNNumNP cn i = emptyNP ** cn ** {
|
||||
s = \\ez => cn.s ! Sg ! Ezafe ++ i.s ++ cn.compl ! Sg ;
|
||||
a = agrP3 Sg ;
|
||||
compl = cn.compl ! Sg
|
||||
} ;
|
||||
|
||||
SymbS sy = {s = \\_ => sy.s} ;
|
||||
@@ -40,12 +37,6 @@ lin
|
||||
BaseSymb = infixSS "تE" ;
|
||||
ConsSymb = infixSS "" ;
|
||||
|
||||
--oper
|
||||
-- Note: this results in a space before 's, but there's
|
||||
-- not mauch we can do about that.
|
||||
-- addGenitiveS : Str ;
|
||||
-- addGenitiveS s =
|
||||
-- s ++ "از" ;
|
||||
|
||||
-- TODO: what are wN and تE? /IL
|
||||
|
||||
}
|
||||
|
||||
@@ -15,12 +15,12 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
|
||||
ComplVV = insertVV ;
|
||||
ComplVS v s = embComp (conjThat ++ s.s ! Indic) (predV v) ;
|
||||
ComplVQ v q = embComp (conjThat ++ q.s) (predV v) ;
|
||||
ComplVA v ap = insertObj (appComp v.c2 (ap.s ! Bare)) (predV v) ; -- check form of adjective
|
||||
ComplVA v ap = insertObj (appComp v.c2 ap.s) (predV v) ; -- check form of adjective
|
||||
|
||||
SlashVV vv vps = vps ** ComplVV vv vps ;
|
||||
SlashV2S v s = predVc v ** embComp (conjThat ++ s.s ! Indic) (predV v) ;
|
||||
SlashV2Q v q = predVc v ** embComp q.s (predV v) ;
|
||||
SlashV2A v ap = predVc v ** insertObj (appComp v.c2 (ap.s ! Bare)) (predV v) ; ---- paint it red , check form of adjective
|
||||
SlashV2A v ap = predVc v ** insertObj (appComp v.c2 ap.s) (predV v) ; ---- paint it red , check form of adjective
|
||||
|
||||
-- : V2V -> VP -> VPSlash ; -- beg (her) to go
|
||||
SlashV2V v2v vp = predVc v2v ** {
|
||||
@@ -36,9 +36,9 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
|
||||
-- : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
|
||||
SlashV2VNP v2v np vps = predVc v2v ** {
|
||||
comp = \\a => if_then_Str v2v.isAux conjThat [] -- that
|
||||
++ appComp v2v.c2 (np.s ! Bare) ; -- I
|
||||
-- ∅ is placed in comp
|
||||
vComp = \\_,_ => showVPH (case v2v.compl of { -- buy
|
||||
++ appComp v2v.c2 np.s ; -- I
|
||||
-- ∅ is placed in comp
|
||||
vComp = \\_,_ => showVPH (case v2v.compl of { -- buy
|
||||
Subj => VSubj Pos np.a ;
|
||||
Indic => VAor Pos np.a })
|
||||
np.a -- agreement fixed to np.a
|
||||
@@ -46,6 +46,10 @@ concrete VerbPes of Verb = CatPes ** open ResPes,Prelude in {
|
||||
c2 = vps.c2 -- preposition for the direct object comes from VPSlash
|
||||
} ;
|
||||
|
||||
-- : VP -> Prep -> VPSlash ;
|
||||
VPSlashPrep vp prep = vp ** vs prep ;
|
||||
|
||||
|
||||
AdvVP vp adv = insertAdV adv.s vp ;
|
||||
AdVVP adv vp = insertAdV adv.s vp ;
|
||||
ReflVP v = insertCompPre reflPron v ;
|
||||
|
||||
@@ -95,7 +95,7 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
||||
FocusAdv = variants {} ; -- Adv -> S -> Utt ; -- today I will sleep
|
||||
FocusAdV = variants {} ; -- AdV -> S -> Utt ; -- never will I sleep
|
||||
FocusAP = variants {} ; -- AP -> NP -> Utt ; -- green was the tree
|
||||
|
||||
|
||||
lin
|
||||
EmbedPresPart = variants {} ; -- VP -> SC ; -- looking at Mary (is fun)
|
||||
|
||||
@@ -118,6 +118,7 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
||||
ExistCN cn = ExistNP (DetCN (DetQuant IndefArt NumSg) cn) ;
|
||||
ExistMassCN cn = ExistNP (MassNP cn) ;
|
||||
ExistPluralCN cn = ExistNP (DetCN (DetQuant IndefArt NumPl) cn) ;
|
||||
AdvIsNP adv np = mkClause adv.s False False np.a (UseComp_estar (CompNP np)) ;
|
||||
|
||||
lin
|
||||
ComplBareVS = ComplVS ; -- VS -> S -> VP ; -- say she runs ; DEFAULT say that she runs
|
||||
@@ -176,7 +177,7 @@ incomplete concrete ExtendRomanceFunctor of Extend =
|
||||
PurposeVP vp = {
|
||||
s = infVP vp (Ag Masc Sg P3)
|
||||
} ;
|
||||
|
||||
|
||||
WithoutVP = variants {} ; -- VP -> Adv ; -- without publishing the document
|
||||
|
||||
ByVP vp = {
|
||||
|
||||
@@ -215,7 +215,7 @@ oper
|
||||
clit = refl ++ vp.clit1 ++ vp.clit2 ++ vp.clit3.s ; ---- refl first?
|
||||
|
||||
verb = vp.s.s ;
|
||||
vaux = auxVerb vp.s.vtyp ;
|
||||
vaux = auxVerb vtyp ;
|
||||
|
||||
---- VPAgr : this is where it really matters
|
||||
part = case vp.agr.p2 of {
|
||||
|
||||
@@ -25813,7 +25813,7 @@ lin manivela_N = mkN "manivela" ;
|
||||
lin maniático_A = mkA "maniático" ;
|
||||
lin maniático_N = mkN "maniático" ;
|
||||
lin manjar_blanco_N = mkAN manjar_N "blanco" ; -- to-check segmentation
|
||||
lin mano_N = mkN "mano" ;
|
||||
lin mano_N = mkN "mano" feminine ;
|
||||
lin mano_a_mano_Adv = mkAdv "mano a mano" ;
|
||||
lin mano_de_obra_N = mkN mano_N "de obra" ;
|
||||
lin manojo_N = mkN "manojo" ;
|
||||
@@ -35264,10 +35264,10 @@ lin rorcual_N = mkN "rorcual" ;
|
||||
lin roridula_N = mkN "roridula" ;
|
||||
lin rosa_A = mkA "rosa" ;
|
||||
lin rosa_N = mkN "rosa" ;
|
||||
lin rosa_amarillento_N = mkAN rosa_N "amarillento" ; -- to-check segmentation
|
||||
lin rosa_amarillento_N = mkAN rosa_N "amarillento" ;
|
||||
lin rosa_de_jericó_N = mkN rosa_N "de jericó" ;
|
||||
lin rosa_de_muerto_N = mkN rosa_N "de muerto" ;
|
||||
lin rosa_salmón_N = mkAN rosa_N "salmón" ; -- to-check segmentation
|
||||
lin rosa_salmón_N = mkN rosa_N "salmón" ;
|
||||
lin rosacruz_A = mkA "rosacruz" ;
|
||||
lin rosadizo_A = mkA "rosadizo" ;
|
||||
lin rosado_A = mkA "rosado" ;
|
||||
@@ -35282,10 +35282,10 @@ lin roseta_N = mkN "roseta" ;
|
||||
lin rosetas_de_maíz_N = mkN rosetas_N "de maíz" ;
|
||||
lin rositas_de_maíz_N = mkN rositas_N "de maíz" ;
|
||||
lin rosmarinus_N = mkN "rosmarinus" ;
|
||||
lin rosmarinus_officinalis_N = mkAN rosmarinus_N "officinalis" ; -- to-check segmentation
|
||||
lin rosmarinus_officinalis_N = mkN rosmarinus_N "officinalis" ;
|
||||
lin rosquilla_N = mkN "rosquilla" ;
|
||||
lin rostro_N = mkN "rostro" ;
|
||||
lin rostro_humano_N = mkAN rostro_N "humano" ; -- to-check segmentation
|
||||
lin rostro_humano_N = mkAN rostro_N "humano" ;
|
||||
lin rosácea_N = mkN "rosácea" ;
|
||||
lin rotacional_A = mkA "rotacional" ;
|
||||
lin rotación_N = mkN "rotación" ;
|
||||
@@ -35317,10 +35317,10 @@ lin rubio_N = mkN "rubio" ;
|
||||
lin rublo_N = mkN "rublo" ;
|
||||
lin ruborizarse_V = reflV ruborizar_V ;
|
||||
lin rubricar_V = mkV "rubricar" ;
|
||||
lin rubus_caesius_N = mkAN rubus_N "caesius" ; -- to-check segmentation
|
||||
lin rubus_canadensis_N = mkAN rubus_N "canadensis" ; -- to-check segmentation
|
||||
lin rubus_idaeus_strigosus_N = mkAN (mkAN rubus_N "idaeus") "strigosus" ; -- to-check segmentation
|
||||
lin rubus_strigosus_N = mkAN rubus_N "strigosus" ; -- to-check segmentation
|
||||
lin rubus_caesius_N = mkN rubus_N "caesius" ;
|
||||
lin rubus_canadensis_N = mkN rubus_N "canadensis" ;
|
||||
lin rubus_idaeus_strigosus_N = mkN (mkN rubus_N "idaeus") "strigosus" ;
|
||||
lin rubus_strigosus_N = mkN rubus_N "strigosus" ;
|
||||
lin rubéola_N = mkN "rubéola" ;
|
||||
lin rubí_N = mkN "rubí" ;
|
||||
lin ruda_N = mkN "ruda" ;
|
||||
|
||||
@@ -12,7 +12,7 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
AdAdV, PositAdVAdj, GerundCN, GerundNP, GerundAdv, PresPartAP, PastPartAP, PastPartAgentAP,
|
||||
RNP, RNPList, ReflRNP, ReflPron, ReflPoss, PredetRNP, ConjRNP,
|
||||
Base_rr_RNP, Base_nr_RNP, Base_rn_RNP, Cons_rr_RNP, Cons_nr_RNP,
|
||||
CompoundN, CompoundAP
|
||||
CompoundN, CompoundAP, AdvIsNP
|
||||
]
|
||||
with (Grammar = GrammarSwe)
|
||||
**
|
||||
@@ -23,7 +23,7 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
|
||||
lin
|
||||
GenNP np = {
|
||||
s,sp = \\n,_,_,g => np.s ! NPPoss (gennum (ngen2gen g) n) Nom ;
|
||||
s,sp = \\n,_,_,g => np.s ! NPPoss (gennum (ngen2gen g) n) Nom ;
|
||||
det = DDef Indef
|
||||
} ;
|
||||
|
||||
@@ -31,26 +31,26 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
|
||||
ComplBareVS v s = insertObj (\\_ => s.s ! Sub) (predV v) ;
|
||||
|
||||
CompBareCN cn = {s = \\a => case a.n of {
|
||||
CompBareCN cn = {s = \\a => case a.n of {
|
||||
Sg => cn.s ! Sg ! DIndef ! Nom ;
|
||||
Pl => cn.s ! Pl ! DIndef ! Nom
|
||||
}
|
||||
} ;
|
||||
|
||||
StrandRelSlash rp slash = {
|
||||
s = \\t,a,p,ag,_ =>
|
||||
s = \\t,a,p,ag,_ =>
|
||||
rp.s ! ag.g ! ag.n ! RNom ++ slash.s ! t ! a ! p ! Sub ++ slash.n3 ! ag ++ slash.c2.s ;
|
||||
c = NPAcc
|
||||
} ;
|
||||
EmptyRelSlash slash = {
|
||||
s = \\t,a,p,ag,_ =>
|
||||
s = \\t,a,p,ag,_ =>
|
||||
slash.s ! t ! a ! p ! Sub ++ slash.n3 ! ag ++ slash.c2.s ;
|
||||
c = NPAcc
|
||||
} ;
|
||||
|
||||
StrandQuestSlash ip slash = {
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
s = \\t,a,p =>
|
||||
let
|
||||
cls = slash.s ! t ! a ! p ;
|
||||
who = ip.s ! accusative ;
|
||||
agr = agrP3 ip.g ip.n ;
|
||||
@@ -61,9 +61,9 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
} ;
|
||||
|
||||
lin
|
||||
PassVPSlash vps =
|
||||
PassVPSlash vps =
|
||||
insertObj (\\a => vps.c2.s ++ vps.n3 ! a) (passiveVP vps) ;
|
||||
PassAgentVPSlash vps np =
|
||||
PassAgentVPSlash vps np =
|
||||
insertObjPost (\\a => vps.c2.s ++ vps.n3 ! a) (insertObj (\\_ => (PrepNP by8agent_Prep np).s) (passiveVP vps)) ;
|
||||
|
||||
lin UttVPShort vp = {s = infVP vp (agrP3 Utr Sg)} ;
|
||||
@@ -90,23 +90,23 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
BaseVPS = twoTable2 Order Agr ;
|
||||
ConsVPS = consrTable2 Order Agr comma ;
|
||||
|
||||
PredVPS np vpi =
|
||||
PredVPS np vpi =
|
||||
let
|
||||
subj = np.s ! nominative ;
|
||||
agr = np.a ;
|
||||
in {
|
||||
s = \\o =>
|
||||
let verb = vpi.s ! o ! agr
|
||||
s = \\o =>
|
||||
let verb = vpi.s ! o ! agr
|
||||
in case o of {
|
||||
Main => subj ++ verb ;
|
||||
Inv => verb ++ subj ; ---- älskar henne och sover jag
|
||||
Sub => subj ++ verb
|
||||
Sub => subj ++ verb
|
||||
}
|
||||
} ;
|
||||
|
||||
MkVPS t p vp = {
|
||||
s = \\o,a =>
|
||||
let
|
||||
s = \\o,a =>
|
||||
let
|
||||
verb = vp.s ! Act ! VPFinite t.t t.a ;
|
||||
neg = verb.a1 ! p.p ! a ;
|
||||
compl = vp.n2 ! a ++ vp.a2 ++ vp.ext ;
|
||||
@@ -128,13 +128,13 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
RNP = {s : Agr => Str ; isPron : Bool} ; ---- inherent Agr needed: han färgar sitt hår vitt. But also depends on subject
|
||||
RNPList = {s1,s2 : Agr => Str} ;
|
||||
|
||||
lin
|
||||
ReflRNP vps rnp =
|
||||
lin
|
||||
ReflRNP vps rnp =
|
||||
insertObjPron
|
||||
(andB (notB vps.c2.hasPrep) rnp.isPron)
|
||||
rnp.s
|
||||
(insertObj (\\a => vps.c2.s ++ vps.n3 ! a) vps) ;
|
||||
|
||||
|
||||
ReflPron = {s = \\a => reflPron a ; isPron = True} ; ---- agr ??
|
||||
ReflPoss num cn = {
|
||||
s = \\a => possPron a.n a.p num.n (ngen2gen cn.g) ++ num.s ! cn.g ++ cn.s ! num.n ! DDef Indef ! Nom ;
|
||||
@@ -159,7 +159,7 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
ApposNP np1 np2 = {s = \\nform => np1.s ! nform ++ comma ++ np2.s ! nform; a = np1.a; isPron = False} ;
|
||||
|
||||
DetNPMasc, DetNPFem = \det ->
|
||||
let
|
||||
let
|
||||
g = utrum ; ----
|
||||
m = True ; ---- is this needed for other than Art?
|
||||
in {
|
||||
@@ -173,7 +173,7 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
co = n1.co ++ BIND ++ n2.co ;
|
||||
g = n2.g
|
||||
} ;
|
||||
|
||||
|
||||
CompoundAP noun adj = {
|
||||
s = \\ap => noun.co ++ BIND ++ adj.s ! AF (APosit ap) Nom ;
|
||||
isPre = True
|
||||
@@ -183,7 +183,7 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
AdAdV = cc2 ;
|
||||
|
||||
PositAdVAdj a = {s = a.s ! AAdv} ;
|
||||
|
||||
|
||||
PresPartAP vp = {
|
||||
s = \\af => case vp.isSimple of {
|
||||
True => partVPPlus vp (PartPres Sg Indef Nom) (aformpos2agr af) Pos ;
|
||||
@@ -206,13 +206,13 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
} ;
|
||||
|
||||
GerundCN vp = { -- infinitive: att dricka öl, att vara glad
|
||||
s = \\_,_,_ => "att" ++ infVP vp {g = Utr ; n = Sg ; p = P3} ;
|
||||
s = \\_,_,_ => "att" ++ infVP vp {g = Utr ; n = Sg ; p = P3} ;
|
||||
g = Neutr ;
|
||||
isMod = False
|
||||
} ;
|
||||
|
||||
GerundNP vp = { -- infinitive: att dricka öl, att vara glad
|
||||
s = \\_ => "att" ++ infVP vp {g = Utr ; n = Sg ; p = P3} ;
|
||||
s = \\_ => "att" ++ infVP vp {g = Utr ; n = Sg ; p = P3} ;
|
||||
a = {g = Neutr ; n = Sg ; p = P3} ;
|
||||
isPron = False
|
||||
} ;
|
||||
@@ -220,12 +220,14 @@ concrete ExtendSwe of Extend = CatSwe **
|
||||
GerundAdv vp = {
|
||||
s = partVPPlusPost vp (PartPres Sg Indef (Nom|Gen)) {g = Utr ; n = Sg ; p = P3} Pos -- sovande(s) i sängen
|
||||
} ;
|
||||
|
||||
|
||||
ByVP vp = { -- infinitive: att dricka öl, att vara glad
|
||||
s = "genom att" ++ infVP vp {g = Utr ; n = Sg ; p = P3}
|
||||
} ;
|
||||
|
||||
|
||||
InOrderToVP vp = { -- infinitive: att dricka öl, att vara glad
|
||||
s = "för att" ++ infVP vp {g = Utr ; n = Sg ; p = P3}
|
||||
} ;
|
||||
|
||||
AdvIsNP adv np = PredVP {s = \\_ => adv.s ; a = np.a ; isPron = False} (UseComp (CompNP np)) ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user