Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl into arabic-mkN

This commit is contained in:
Inari Listenmaa
2019-07-05 10:18:42 +02:00
36 changed files with 6308 additions and 4203 deletions

View File

@@ -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,y
Lat,Latin,latin,,,,,y,y,n,y
Lav,Latvian,latvian,,,,,,,y,y
Mlt,Maltese,maltese,,,,,,,,y
Mon,Mongolian,mongolian,,,,,,n,,y
1 Code Name Directory Functor Unlexer Present All Try Symbolic Compatibility Synopsis
22 Ina Interlingua interlingua y n n n
23 Ita Italian italian Romance y y y
24 Jpn Japanese japanese y
25 Lat Latin latin y n y n y
26 Lav Latvian latvian y y
27 Mlt Maltese maltese y
28 Mon Mongolian mongolian n y

View File

@@ -1,4 +1,4 @@
--# -path=.:alltenses:prelude:../latin
resource ConstructorsLat = Constructors with (Grammar = GrammarLat) **
open MissingLat in {}
open MissingLat in {} ;

View File

@@ -1,5 +1,5 @@
--# -path=.:../icelandic:../common:../abstract:../prelude
--# -path=.:../latin:../common:../abstract:../prelude
resource SymbolicLat = Symbolic with
(Symbol = SymbolLat),
(Grammar = GrammarLat) ;
(Grammar = GrammarLat) ** open MissingLat in {} ;

View File

@@ -188,7 +188,8 @@ resource ResGer = ParamX ** open Prelude in {
in
case <t,m> of {
<Pres,MIndic> => VFin b (VPresInd an ap) ;
<Pres,MConjunct> => VFin b (VPresSubj an ap) ; --# notpresent
<Pres,MConjunct> => VFin b (VPresSubj an ap)
; --# notpresent
<Past,MIndic> => VFin b (VImpfInd an ap) ; --# notpresent
<Past,MConjunct> => VFin b (VImpfSubj an ap) ; --# notpresent
_ => VInf False --# notpresent

View File

@@ -8,12 +8,12 @@ concrete AdjectiveLat of Adjective = CatLat ** open ResLat, Prelude in {
-- ComparA : A -> NP -> AP ; -- warmer than I
ComparA a np = {
s = \\ag => a.s ! Compar ! ag ++ "quam" ++ np.s ! Nom ;
s = \\ag => a.s ! Compar ! ag ++ "quam" ++ (combineNounPhrase np) ! PronNonDrop ! Nom ;
} ;
-- ComplA2 : A2 -> NP -> AP ; -- married to her
ComplA2 a np = {
s = \\ag => a.s ! Posit ! ag ++ a.c.s ++ np.s ! a.c.c ;
s = \\ag => a.s ! Posit ! ag ++ a.c.s ++ (combineNounPhrase np) ! PronNonDrop ! a.c.c ;
} ;
-- ReflA2 : A2 -> AP -- married to myself
@@ -31,7 +31,7 @@ concrete AdjectiveLat of Adjective = CatLat ** open ResLat, Prelude in {
-- 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 } ;
{ s = \\ag => cadv.s ++ ap.s ! ag ++ cadv.p ++ (combineNounPhrase np) ! PronNonDrop ! Nom } ;
-- The superlative use is covered in $Ord$.

View File

@@ -8,17 +8,16 @@ concrete AdverbLat of Adverb = CatLat ** open ResLat, Prelude, ParadigmsLat in
-- PrepNP : Prep -> NP -> Adv ; -- in the house
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 ) ;
mkAdv (prep.s ++ np.adv ++ (combineNounPhrase np) ! PronNonDrop ! prep.c ) ;
-- 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) ;
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ (combineNounPhrase np) ! PronNonDrop ! 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 ) ;
mkAdv (cadv.s ++ a.adv.s ! Compar ++ cadv.p ++ combineSentence s ! SPreS ! PreV ! CPreV ! SOV ) ;
-- AdAdv : AdA -> Adv -> Adv ; -- very quickly
AdAdv ada adv = mkAdv (ada.s ++ (adv.s ! Posit) ) ;
@@ -30,7 +29,7 @@ concrete AdverbLat of Adverb = CatLat ** open ResLat, Prelude, ParadigmsLat in
-- Subordinate clauses can function as adverbs.
-- SubjS : Subj -> S -> Adv ; -- when she sleeps
SubjS subj s = mkAdv (subj.s ++ combineSentence s ! SPreS ! PreV ! SOV ) ;
SubjS subj s = mkAdv (subj.s ++ combineSentence s ! SPreS ! PreV ! CPreV ! SOV ) ;
-- AdnCAdv : CAdv -> AdN ; -- less (than five)
AdnCAdv cadv = {s = cadv.s ++ cadv.p} ;

View File

@@ -1,76 +0,0 @@
--concrete BackwardLat of Backward = CatLat ** open ResLat in {
--
-- flags optimize=all_subs ;
--
-- lin
--
---- A repository of obsolete constructs, needed for backward compatibility.
---- They create spurious ambiguities if used in combination with Lang.
--
---- from Verb 19/4/2008
--
-- ComplV2 v np = insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v) ;
-- ComplV3 v np np2 =
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ v.c3 ++ np2.s ! Acc) (predV v) ;
-- ComplV2V v np vp =
-- insertObj (\\a => infVP v.isAux vp a)
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
-- ComplV2S v np s =
-- insertObj (\\_ => conjThat ++ s.s)
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
-- ComplV2Q v np q =
-- insertObj (\\_ => q.s ! QIndir)
-- (insertObj (\\_ => v.c2 ++ np.s ! Acc) (predV v)) ;
-- ComplV2A v np ap =
-- insertObj (\\_ => v.c2 ++ np.s ! Acc ++ ap.s ! np.a) (predV v) ;
--
-- ReflV2 v = insertObj (\\a => v.c2 ++ reflPron ! a) (predV v) ;
--
---- from Sentence 19/4/2008
--
-- SlashV2 np v2 =
-- mkClause (np.s ! Nom) np.a (predV v2) ** {c2 = v2.c2} ;
--
-- SlashVVV2 np vv v2 =
-- mkClause (np.s ! Nom) np.a
-- (insertObj (\\a => infVP vv.isAux (predV v2) a) (predVV vv)) **
-- {c2 = v2.c2} ;
--
---- from Noun 19/4/2008
--
-- NumInt n = {s = n.s ; n = Pl} ;
-- OrdInt n = {s = n.s ++ "th"} ; --- DEPRECATED
--
-- DetSg quant ord = {
-- s = quant.s ! Sg ++ ord.s ;
-- n = Sg
-- } ;
--
-- DetPl quant num ord = {
-- s = quant.s ! num.n ++ num.s ++ ord.s ;
-- n = num.n
-- } ;
--
-- NoNum = {s = []; n = Pl } ;
--
-- DefArt = {s = \\_ => artDef} ;
--
-- IndefArt = {
-- s = table {
-- Sg => artIndef ;
-- Pl => []
-- }
-- } ;
--
-- MassDet = {s = \\_ => []} ;
--
--
--
---- from Structural 19/4/2008
--
-- that_NP = regNP "that" Sg ;
-- these_NP = regNP "these" Pl ;
-- this_NP = regNP "this" Sg ;
-- those_NP = regNP "those" Pl ;
--
--}

View File

@@ -20,7 +20,7 @@ concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
---- Question
--
-- TO FIX
QCl = Clause ; -- {s : ResLat.Tense => Anteriority => Polarity => QForm => Str } ;
QCl = Clause ** { q : Str } ;
IP = {s : Case => Str ; n : Number} ;
IComp = {s : Str} ;
IDet = Determiner ; --{s : Str ; n : Number} ;
@@ -53,14 +53,14 @@ concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
Pron = ResLat.Pronoun ;
Det = Determiner ;
Predet = {s : Str} ;
Ord = Ordinal ;
Ord = { s : Gender => Number => Case => Str } ;
Num = {s : Gender => Case => Str ; n : Number} ;
Card = {s : Gender => Case => Str ; n : Number} ;
Quant = Quantifier ;
--
---- Numeral
--
Numeral = ResLat.Numeral ;
Numeral = ResLat.TNumeral ;
Digits = {s : Str ; unit : Unit} ;
--
---- Structural
@@ -83,11 +83,15 @@ concrete CatLat of Cat = CommonX-[Adv] ** open ResLat, ParamX, Prelude in {
N = Noun ;
N2 = Noun ** { c : Prep } ;
N3 = Noun ** { c : Prep ; c2 : Prep } ;
PN = Noun ;
PN = { s : Case => Str ; n : Number ; g : Gender } ;
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 ;
NP = \np -> combineNounPhrase np ! PronNonDrop ! Nom ;
VP = \vp -> vp.adv ++ vp.inf ! VInfActPres ++ vp.obj ++ vp.compl ! Ag Masc Sg Nom ;
S = \s -> combineSentence s ! SPreO ! PreO ! SOV ;
S = \s -> combineSentence s ! SPreO ! PreO ! CPreV ! SOV ;
V, VS, VQ, VA, VV = \v -> v.act ! (VAct VSim (VPres VInd) Sg P1) ;
V2, V2A, V2Q, V2S = \v -> v.act ! (VAct VSim (VPres VInd) Sg P1) ;
Pron = \p -> p.pers.s ! PronNonDrop ! PronNonRefl ! Nom ;
Conj = \c -> c.s1 ++ c.s2 ++ c.s3 ;
}

View File

@@ -8,31 +8,44 @@ concrete ConjunctionLat of Conjunction =
-- 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 } ;
ConjS conj ss = {
-- s = \\apos => coord conj.c { init = (ss.s ! conj.c).init ! SPreS ! apos ! CPreV ! SOV ;
-- last = (ss.s ! conj.c).last ! SPreS ! apos ! CPreV ! SOV} ;
s = \\apos => conj.s1 ++ (ss.s ! conj.c).init ! SPreS ! apos ! CPreV ! SOV ++ conj.s2 ++
(ss.s ! conj.c).last ! SPreS ! apos ! CPreV ! SOV ++ conj.s3 ;
o = \\_ => [] ;
v = \\_,_ => [] ;
neg = \\_ => [] ;
p = ss.p ;
sadv = [] ;
t = ss.t
} ;
-- ConjAdv : Conj -> ListAdv -> Adv ; -- here or there
ConjAdv conj ss = mkAdv (conjunctDistrSS conj (ss.l ! conj.c) ).s ;
-- 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 } ;
-- s = case conj.c of {
-- Et => case nps.isBase of {
-- False => (conjunctDistrTable Case conj (nps.l ! Et)).s ;
-- True => \\c => conj.s1 ++ (nps.l ! Et).s1 ! c ++ conj.s2 ++ (nps.l ! Et).s2 ! c
-- } ;
-- c => (conjunctDistrTable Case conj (nps.l ! Et)).s
-- } ;
s = \\pd,ca => conj.s1 ++ (nps.s ! conj.c).init ! pd ! ca ++ conj.s2 ++ (nps.s ! conj.c).last ! pd ! ca ++ conj.s3 ;
n = case conj.c of { Et => Pl ; _ => nps.n } ;
g = nps.g ;
p = nps.p ;
adv = nps.adv ;
preap = nps.preap ;
postap = nps.postap ;
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = nps.n };
det = nps.det
} ;
-- ConjAP : Conj -> ListAP -> AP ;
ConjAP conj ss = conjunctDistrTable Agr conj (ss.l ! conj.c) ;
-- ConjAP conj ss = conjunctDistrTable Agr conj (ss.l ! conj.c) ;
--
-- DConjS = conjunctDistrSS ;
@@ -53,32 +66,40 @@ concrete ConjunctionLat of Conjunction =
--
-- BaseS : S -> S -> ListS
-- BaseS x y = {
-- l = \\c => { s1 = x ; s2 = y } ;
-- } ;
BaseS x y = {
s = \\c => { init = combineSentence x ; last = combineSentence y } ;
p = y.p ;
t = y.t
} ;
-- 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 }
-- } ;
ConsS s ss = {
s = \\co =>
{ init = \\s,a,c,o => coord co { init = (ss.s ! co).init ! s ! a ! c ! o ; last = (ss.s ! co).last ! s ! a ! c ! o } ;
last = combineSentence s } ;
p = s.p ;
t = s.t
} ;
-- BaseAdv : Adv -> Adv -> ListAdv
BaseAdv x y = { l = \\c => twoSS (ss (x.s ! Posit)) (ss (y.s ! Posit)) } ;
BaseAdv x y =
{
s = \\_ => { init = x.s ! Posit ; last = y.s ! Posit }
} ;
-- ConsAdv : Adv -> ListAdv -> ListAdv
ConsAdv x xs = { l = \\_ => consrSS bindComma (ss (x.s ! Posit)) (xs.l ! Comma) } ;
ConsAdv x xs =
{
-- s = \\_ => consrSS bindComma (ss (x.s ! Posit)) (xs.l ! Comma)
s = \\c => { init = coord c (xs.s ! c) ; last = x.s ! Posit }
} ;
-- BaseNP : NP -> NP -> ListNP ; -- John, Mary
-- -- BaseNP : NP -> NP -> ListNP ; -- John, Mary
BaseNP x y = {
l = \\c => twoTable Case x y ;
-- s = \\c => twoTable Case x y ;
s = \\c => { init = x.s ; last = y.s } ;
g = Masc ; -- Just guessing (but maybe sexist bullshit)
n = matchNumber x.n y.n ;
p = P3 ;
@@ -86,35 +107,35 @@ concrete ConjunctionLat of Conjunction =
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 } ;
det = lin 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.det.n y.det.n } ;
} ;
-- ConsNP : NP -> ListNP -> ListNP ; -- John, Mary, Bill
-- -- ConsNP : NP -> ListNP -> ListNP ; -- John, Mary, Bill
ConsNP x xs = {
l = \\_ => consrTable Case bindComma x ( xs.l ! Comma );
-- s = \\_ => consrTable Case bindComma x ( xs.s ! Comma );
s = \\co => { init = \\pd,ca => coord co { init = (xs.s ! co).init ! pd ! ca ; last = (xs.s ! co).last ! pd ! ca} ; last = x.s } ;
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
isBase = False ;
det = lin Det { s = \\g,c => x.det.s ! g ! c ++ xs.det.s ! g ! c ; sp = \\g,c => x.det.sp ! g ! c ++ xs.det.sp ! g ! c ; n = matchNumber x.det.n xs.det.n } ; -- try to combine the determiners, probably not what we want
} ;
-- BaseAP : AP -> AP -> ListAP
BaseAP x y = { l = \\c => twoTable Agr x y };
-- -- 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 ) } ;
-- -- ConsAP : AP -> ListAP -> ListAP
-- ConsAP x xs =
-- { l = \\_ => consrTable Agr and_Conj.s2 x (xs.l ! Comma ) } ;
--
lincat
-- [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 } } ;
[S] = { s : Coordinator => {init,last : SAdvPos => AdvPos => ComplPos => Order => Str} ; p : Pol ; t : Tense } ; -- TO FIX
[Adv] = { s: Coordinator => {init,last : Str}} ;
[NP] = { s : Coordinator => {init,last : PronDropForm => Case => Str} ; g : Gender ; n : Number ; p : Person ; adv : Str ; preap : AP ; postap : AP ; isBase : Bool ; det : Det } ;
[AP] = {s : Coordinator => {init,last : Agr => Str } } ;
oper
-- Generates a new number value given two number values.
@@ -126,5 +147,21 @@ concrete ConjunctionLat of Conjunction =
<_,Pl> => Pl ;
<_,_> => Sg
} ;
coord : Coordinator -> {init : Str ; last : Str} -> Str =
\c,l ->
l.init ++
table {
Aut => "aut" ;
Et => "et" ;
Sed => "sed" ;
Si => "si" ;
Vel => "vel" ;
Comma => bindComma ;
Colon => ":" ;
Empty => "" ;
Missing => nonExist
} ! c
++ l.last ;
--
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,9 @@
concrete ExtendLat of Extend = ExtendFunctor with (Grammar=GrammarLat);
concrete ExtendLat of Extend = CatLat ** ExtendFunctor-[VPS,ComplDirectVQ,ComplDirectVS,CompIQuant,EmptyRelSlash,ExistsNP,ExistCN,ExistMassCN,ExistPluralCN,GenModNP,PredAPVP,PredIAdvVP,SlashBareV2S,StrandQuestSlash,StrandRelSlash] with (Grammar=GrammarLat) ** open MissingLat in {
lincat
VPS = Comp ;
lin
-- ComplDirectVS : VS -> Utt -> VP ; -- say: "today"
ComplDirectVS vs utt = AdvVP (UseV <lin V vs : V>) (lin Adv {s = \\_ => ":" ++ quoted utt.s}) ; -- DEFAULT complement added as Adv in quotes
-- ComplDirectVQ : VQ -> Utt -> VP ; -- ask: "when"
ComplDirectVQ vq utt = AdvVP (UseV <lin V vq : V>) (lin Adv {s = \\_ => ":" ++ quoted utt.s}) ; -- DEFAULT complement added as Adv in quotes
} ;

View File

@@ -1,44 +1,43 @@
concrete ExtraLat of ExtraLatAbs =
CatLat, ExtraLexiconLat, ConjunctionLat **
CatLat, ConjunctionLat **
open ResLat, ParadigmsLat, Coordination, Prelude in {
lincat CS = Str ;
lin
useS s = combineSentence s ! SPreO ! PreO ! SOV ;
useS s = combineSentence s ! SPreO ! PreO ! CPreV ! SOV ;
-- PastPartAP : VPSlash -> AP ; -- lost (opportunity) ; (opportunity) lost in space
-- PastPartAP vp = { s = vp.part ! VPassPerf } ;
UsePronNonDrop p = -- Pron -> NP
{
g = p.pers.g ;
n = p.pers.n ;
p = p.p ;
s = p.pers.s ! PronNonDrop ! PronNonRefl ;
adv = "" ;
preap, postap = { s = \\_ => "" } ;
det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = p.pers.n } ;
} ;
-- UsePronNonDrop p = -- Pron -> NP
-- p.pers **
-- {
-- p = p.p ;
-- 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 };
} ;
-- -- ConjNP : Conj -> ListNP -> NP ; -- she or we
-- ConjNPque conj nps =
-- {
-- s = case conj.c of {
-- Et => case nps.isBase of {
-- False => \\cse => coord conj.c {init = (nps.s ! Et).init ! cse ; last = (nps.s ! Et).last ! cse } ;-- (conjunctDistrTable Case conj (nps.s ! Et)).s ;
-- True => \\cse => (nps.s ! Et).init ! cse ++ (nps.s ! Et).last ! cse ++ BIND ++ "que"
-- } ;
-- c => \\cse => coord conj.c {init = (nps.s ! c).init ! cse ; last = (nps.s ! c).last ! cse } -- (conjunctDistrTable Case conj (nps.l ! Et)).s
-- } ;
-- n = case conj.c of { Et => 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

View File

@@ -1,5 +1,5 @@
abstract ExtraLatAbs =
Extra, ExtraLexiconLatAbs, Conjunction
Extra, Conjunction
** {
cat CS ;
fun

View File

@@ -1,453 +0,0 @@
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;
} ;
}

View File

@@ -1,417 +0,0 @@
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;
}

View File

@@ -1,28 +0,0 @@
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.
};

View File

@@ -1,29 +0,0 @@
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 ;
};

View File

@@ -8,7 +8,7 @@ concrete IdiomLat of Idiom = CatLat ** open Prelude, ResLat in {
--
-- CleftNP np rs = mkClause "it" (agrP3 Sg)
-- (insertObj (\\_ => rs.s ! np.a)
-- (insertObj (\\_ => np.s ! rs.c) (predAux auxBe))) ;
-- (insertObj (\\_ => combineNounPhrase np ! PronNonDrop ! rs.c) (predAux auxBe))) ;
--
-- CleftAdv ad s = mkClause "it" (agrP3 Sg)
-- (insertObj (\\_ => conjThat ++ s.s)
@@ -16,7 +16,7 @@ concrete IdiomLat of Idiom = CatLat ** open Prelude, ResLat in {
--
-- ExistNP np =
-- mkClause "there" (agrP3 (fromAgr np.a).n)
-- (insertObj (\\_ => np.s ! Acc) (predAux auxBe)) ;
-- (insertObj (\\_ => combineNounPhrase np ! PronNonDrop ! Acc) (predAux auxBe)) ;
--
-- ExistIP ip =
-- mkQuestion (ss (ip.s ! Nom))

View File

@@ -154,7 +154,7 @@ lin
open_V2 = mkV2 (mkV "aperire") ; -- aperio, aperui, apertum 4 (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)
paris_PN = mkPN (mkN "Lutetia") singular ; -- -ae f. (http://la.wikipedia.org/wiki/Lutetia)
peace_N = mkN "pax" "pacis" feminine ; -- pacis f. (Langenscheidts)
pen_N = mkN "stilus" ; -- -i m. (Langenscheidts)
planet_N = mkN "planeta" ; -- -ae m. (http://la.wikipedia.org/wiki/Planeta)
@@ -178,7 +178,7 @@ lin
say_VS = mkVS (mkV "dicere" "dico" "dixi" "dictum") ; -- dico, dixi, dictum 3 (Langenscheidts)
school_N = mkN "schola" ; -- -ae f. (Langenscheidts)
-- Irregular
science_N = R.pluralN (mkN "litera" ) ; -- only pl. (Langenscheidts)
science_N = pluralN (mkN "litera" ) ; -- only pl. (Langenscheidts)
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)
@@ -384,7 +384,7 @@ lin
rule_N = mkN "regula" ; -- -ae f. (Langenscheidts)
-- added 4/6/2007
john_PN = mkPN (mkN "Iohannes") ; -- (http://en.wikipedia.org/wiki/John_(given_name))
john_PN = mkPN (mkN "Iohannes") singular ; -- (http://en.wikipedia.org/wiki/John_(given_name))
question_N = mkN "rogatio" "rogationis" feminine; -- -onis f. (Langenscheidts)
ready_A = mkA "paratus" ; -- 3 (Langenscheidts)
reason_N = mkN "causa" ; -- -ae f. (Langenscheidts)

View File

@@ -6,17 +6,18 @@ oper AdvCN : CN -> Adv -> CN = notYet "AdvCN" ;
oper AdvIAdv : IAdv -> Adv -> IAdv = notYet "AdvIAdv" ;
oper AdvIP : IP -> Adv -> IP = notYet "AdvIP" ;
oper AdvSlash : ClSlash -> Adv -> ClSlash = notYet "AdvSlash" ;
oper BaseAP : AP -> AP -> ListAP = notYet "BaseAP" ;
oper BaseRS : RS -> RS -> ListRS = notYet "BaseRS" ;
oper BaseS : S -> S -> ListS = notYet "BaseS" ;
oper CleftAdv : Adv -> S -> Cl = notYet "CleftAdv" ;
oper CleftNP : NP -> RS -> Cl = notYet "CleftNP" ;
oper CompIP : IP -> IComp = notYet "CompIP" ;
oper ComplN2 : N2 -> NP -> CN = notYet "ComplN2" ;
oper ComplN3 : N3 -> NP -> N2 = notYet "ComplN3" ;
oper ConjAdv : Conj -> ListAdv -> Adv = notYet "ConjAdv" ;
oper ConjAP : Conj -> ListAP -> AP = notYet "ConjAP" ;
oper ConjRS : Conj -> ListRS -> RS = notYet "ConjRS" ;
oper ConjS : Conj -> ListS -> S = notYet "ConjS" ;
oper ConsAP : AP -> ListAP -> ListAP = notYet "ConsAP" ;
oper ConsRS : RS -> ListRS -> ListRS = notYet "ConsRS" ;
oper ConsS : S -> ListS -> ListS = notYet "ConsS" ;
oper DetQuantOrd : Quant -> Num -> Ord -> Det = notYet "DetQuantOrd" ;
oper EmbedQS : QS -> SC = notYet "EmbedQS" ;
oper EmbedS : S -> SC = notYet "EmbedS" ;
@@ -33,18 +34,11 @@ oper ImpersCl : VP -> Cl = notYet "ImpersCl" ;
oper ImpPl1 : VP -> Utt = notYet "ImpPl1" ;
oper ImpVP : VP -> Imp = notYet "ImpVP" ;
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 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 PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;
@@ -78,27 +72,28 @@ 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 BaseAP : AP -> AP -> ListAP = notYet "BaseAP" ;
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 ConjAdV : Conj -> ListAdV -> AdV = notYet "ConjAdV" ;
oper ConjAP : Conj -> ListAP -> AP = notYet "ConjAP" ;
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 ConsAP : AP -> ListAP -> ListAP = notYet "ConsAP" ;
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" ;
@@ -112,21 +107,14 @@ 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 NumNumeral : Numeral -> Card = notYet "NumNumeral" ;
oper OrdDigits : Digits -> Ord = notYet "OrdDigits" ;
oper OrdNumeral : Numeral -> Ord = notYet "OrdNumeral" ;
oper OrdNumeralSuperl : Numeral -> A -> Ord = notYet "OrdNumeralSuperl" ;
oper OrdSuperl : A -> Ord = notYet "OrdSuperl" ;
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 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 PrepIP : Prep -> IP -> IAdv = notYet "PrepIP" ;

View File

@@ -1,5 +0,0 @@
resource MissingTranslateLat = open GrammarLat, Prelude in {
-- temporary definitions to enable the compilation of RGL Translate
}

View File

@@ -6,7 +6,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- DetCN : Det -> CN -> NP ; -- the man
DetCN det cn =
{
s = \\c => cn.s ! det.n ! c ;
s = \\_,c => cn.s ! det.n ! c ;
n = det.n ; g = cn.g ; p = P3 ;
adv = cn.adv ;
preap = cn.preap ;
@@ -16,11 +16,9 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- UsePN : PN -> NP ; -- John
UsePN pn =
lin NP
pn **
{
s = pn.s ! Sg ;
g = pn.g ;
n = Sg ;
s = \\_ => pn.s ;
p = P3 ;
adv = "" ;
preap, postap = { s = \\_ => "" } ;
@@ -29,14 +27,10 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- UsePron : Pron -> NP ; -- he
UsePron p =
p.pers **
{
g = p.pers.g ;
n = p.pers.n ;
p = p.p ;
s = \\c => case c of {
Nom => p.pers.s ! PronDrop ! PronNonRefl ; -- Drop pronoun in nominative case
_ => p.pers.s ! PronNonDrop ! PronNonRefl -- but don't drop it otherwise
} ! c ;
s = \\pd,c => p.pers.s ! pd ! PronNonRefl ! c;
adv = "" ;
preap, postap = { s = \\_ => "" } ;
det = { s,sp = \\_,_ => "" ; n = p.pers.n } ;
@@ -50,7 +44,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- PPartNP : NP -> V2 -> NP ; -- the man seen
-- PPartNP np v2 = {
-- s = \\c => np.s ! c ++ v2.s ! VPPart ;
-- s = \\c => (combineNounPhrase np) ! PronNonDrop ! c ++ v2.s ! VPPart ;
-- a = np.a
-- } ;
--
@@ -58,7 +52,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- AdvNP : NP -> Adv -> NP ; -- Paris today
AdvNP np adv = np ** { adv = np.adv ++ (adv.s ! Posit) } ;
-- {
-- s = \\c => np.s ! c ;
-- s = \\pd,c => combineNounPhrase np ! pd ! c ;
-- g = np.g ; n = np.n; p = np.p ;
-- adv = cc2 np.adv adv ;
-- preap = np.preap ;
@@ -74,7 +68,7 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- DetNP : Det -> NP ; -- these five
DetNP det = {
s = det.s ! Neutr ;
s = \\_ => det.s ! Neutr ;
g = Neutr ;
n = det.n ;
p = P3 ;
@@ -111,8 +105,8 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
-- OrdDigits n = {s = n.s ! NOrd} ;
--
lin
NumNumeral numeral = numeral.card ;
OrdNumeral numeral = numeral.ord ;
-- NumNumeral numeral = numeral.s ;
-- OrdNumeral numeral = numeral.ord ;
--
-- AdNum adn num = {s = adn.s ++ num.s ; n = num.n} ;
--
@@ -129,15 +123,11 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
} ;
MassNP cn =
{
s = cn.s ! Sg ;
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 } ;
};
@@ -183,11 +173,8 @@ concrete NounLat of Noun = CatLat ** open ResLat, Prelude, ConjunctionLat in {
--
-- ApposCN : CN -> NP -> CN
ApposCN cn np =
cn **
{
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
s = \\n,c => cn.s ! n ! c ++ (combineNounPhrase np) ! PronNonDrop ! c ;
} ; -- massable = cn.massable } ;
}

View File

@@ -1,45 +1,168 @@
concrete NumeralLat of Numeral = CatLat ** open ResLat,ParadigmsLat in {
concrete NumeralLat of Numeral = CatLat, ParamX[Number] ** open ParadigmsLat, Prelude, ResLat, Predef in {
lincat
Digit = Numeral ;
Sub10 = Numeral ;
Sub100 = Numeral ;
Sub1000 = Numeral ;
Sub1000000 = Numeral ;
Digit = TDigit ;
Sub10 = TNumeral ;
Sub100 = TNumeral ;
Sub1000 = TNumeral ;
Sub1000000 = TNumeral ;
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" ) ;
n2 = lin Digit ( mkDigit "duo" "duodecim" "viginti" "ducenti" "secundus" "triginta" Yes ) ;
n3 = lin Digit ( mkDigit "tres" "tredecim" "triginta" "trecenti" "tertius" "quadraginta" Yes ) ;
n4 = lin Digit ( mkDigit "quattuor" "quattuordecim" "quadraginta" "quadringenti" "quartus" "quinquaginta" Yes ) ;
n5 = lin Digit ( mkDigit "quinque" "quindecim" "quinquaginta" "quingenti" "quintus" "sexaginta" Yes ) ;
n6 = lin Digit ( mkDigit "sex" "sedecim" "sexaginta" "sescenti" "sextus" "septuaginta" Yes ) ;
n7 = lin Digit ( mkDigit "septem" "septendecim" "septuaginta" "septingenti" "septimus" "octoginta" Yes ) ;
n8 = lin Digit ( mkDigit "octo" "duodeviginti" "octoginta" "octingenti" "ocatvus" "nonaginta" No8 ) ;
n9 = lin Digit ( mkDigit "novem" "undeviginti" "nonaginta" "nongenti" "nonus" "centum" No9 ) ;
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 = 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} ;
-- 1
pot01 = { s = n1.s ! one ; d = n1.s ; n = singular ; below8 = n1.below8 } ;
-- d * 1
pot0 d = {
s = d.s ! one ;
d = table {
thousand => \\g,c => d.s ! one ! g ! c ++ d.s ! thousand ! g ! c ;
u => \\g,c => d.s ! u ! g ! c
} ;
n = plural ;
below8 = d.below8
} ;
-- 10
pot110 = {
s = n1.s ! ten ;
d = table {
thousand => \\g,c => n1.s ! ten ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n1.s ! u ! g ! c
} ;
n = singular ;
below8 = Yes
} ;
-- 11
pot111 = pot1to19 n1 ;
-- 10 + d
pot1to19 d = {
s = d.s ! eleven ;
d = table {
thousand => \\g,c => d.s ! eleven ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => d.s ! u ! g ! c
} ;
n = plural ;
below8 = Ign
} ;
-- coercion of 1..9
pot0as1 n = n ;
-- d * 10
pot1 d = {
s = d.s ! ten ;
d = table {
thousand => \\g,c => d.s ! ten ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => d.s ! u ! g ! c
} ;
n = plural ;
below8 = Yes
} ;
-- d * 10 + n
pot1plus d n =
let
newS : Gender => Case => Str = \\g,c => case n.below8 of {
No8 => "duo" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ "de" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ d.tenNext ;
No9 => "un" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ "de" ++ Prelude.BIND ++ "-" ++ Prelude.BIND ++ d.tenNext ;
_ => d.s ! ten ! g ! c ++ n.s ! g ! c
} in
{
s = newS ;
d = table {
thousand => \\g,c => newS ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
below8 = Ign ;
n = plural
} ;
-- coercion of 1..99
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} ;
-- m * 100
pot2 n = {
s = n.d ! hundred ;
d = table {
thousand => \\g,c => n.d ! hundred ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
n = plural ;
below8 = Yes} ;
-- d * 100 + n
pot2plus d n =
let
newS : Gender => Case => Str = \\g,c => d.d ! hundred ! g ! c ++ "et" ++ n.s ! g ! c
in
{
s = newS ;
d = table {
thousand => \\g,c => newS ! g ! c ++ n1.s ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
below8 = Ign ;
n = plural
} ;
-- coercion of 1..999
pot2as3 n = n ;
--lin pot3 n = {
-- s = \\c => n.s ! NCard ++ mkCard c "thousand" ; n = Pl} ;
--lin pot3plus n m = {
-- s = \\c => n.s ! NCard ++ "thousand" ++ m.s ! c ; n = Pl} ;
--
-- m * 1000
pot3 n = {
s = \\g,c => n.s ! g ! c ++ n.d ! thousand ! g ! c ;
d = table { thousand => \\g,c => n.s ! g ! c ++ n.d ! thousand ! g ! c ;
u => \\g,c => n.d ! u ! g ! c
} ;
below8 = Ign ;
n = plural
} ;
-- d * 1000 + n
pot3plus d n = {
s = \\g,c => d.d ! thousand ! g ! c ++ "et" ++ n.s ! g ! c ;
d = n.d ;
below8 = Ign ;
n = plural
} ;
oper
mkDigit : (ones, eleven, tens, hundreds, ord : Str) -> Str -> Below8 -> TDigit =
\ones, eleven, tens, hundreds, ord ->
case <tens,hundreds> of {
<"decem",_> => fullDigit ones eleven tens hundreds ord "decimus" "centesimus" ;
<"viginti",_> => fullDigit ones eleven tens hundreds ord "vicesimus" "ducentesimus" ;
<"triginta",_> => fullDigit ones eleven tens hundreds ord "tricesimus" "trecentesimus" ;
<quadra + "ginta",quadringent + "i"> => fullDigit ones eleven tens hundreds ord (quadra + "gesimus") (quadringent + "esimus") ;
_ => Predef.error "Invalid number"
} ;
fullDigit : (ones, eleven, tens, hundreds, ord1,ord10,ord100, tenNext : Str) -> Below8 -> TDigit =
\ones, eleven, tens, hundreds, ord1,ord10,ord100,tenNext,b8 ->
{ s = table { one => cardFlex ones ;
eleven => cardFlex eleven ;
ten => cardFlex tens ;
hundred => cardFlex hundreds ;
thousand => cardFlex "milia" ;
ten_thousand => \\_,_ => nonExist ;
hundred_thousand => \\_,_ => nonExist
} ;
-- n = case ones of { "unus" => singular ; _ => plural } ;
-- ord =
-- \\_,_ => [] ;
-- -- table { one => (mkA ord1).s ! Posit;
-- -- ten => (mkA ord10).s ! Posit ;
-- -- hundred => (mkA ord100).s ! Posit ;
-- -- thousand => \\_,_ => nonExist ;
-- -- ten_thousand => \\_ => nonExist ;
-- -- hundred_thousand => \\_ => nonExist } ;
tenNext = tenNext ;
below8 = b8
} ;
n1 : Digit = lin Digit ( fullDigit "unus" "decem" "undecim" "primus" "decimus" "centesimus" "millesimus" "viginti" Yes ) ;
-- numerals as sequences of digits
lincat
Dig = TDigit ;
Dig = TDig ;
lin
IDig d = {s = d.s ! one; unit = ten} ;
@@ -49,30 +172,31 @@ concrete NumeralLat of Numeral = CatLat ** open ResLat,ParadigmsLat in {
unit = inc i.unit
} ;
D_0 = mkDig "" "" "" "" "" "" ;
D_1 = mkDig "I" "X" "C" "M" "(X)" "(C)" ;
D_2 = mkDig "II" "XX" "CC" "MM" "(XX)" "(CC)" ;
D_3 = mkDig "III" "XXX" "CCC" "MMM" "(XXX)" "(CCC)" ;
D_4 = mkDig "IV" "XL" "CD" "(IV)" "(XL)" "(CD)" ;
D_5 = mkDig "V" "L" "D" "(V)" "(L)" "(D)" ;
D_6 = mkDig "VI" "LX" "DC" "(VI)" "(LX)" "(DC)" ;
D_7 = mkDig "VII" "LXX" "DCC" "(VII)" "(LXX)" "(DCC)" ;
D_8 = mkDig "VIII" "LXXX" "DCCC" "(VIII)" "(LXXX)" "(DCCC)" ;
D_9 = mkDig "IX" "XC" "CM" "(IX)" "(XC)" "(CM)" ;
D_0 = mkDig "" "" "" "" "" "" "" ;
D_1 = mkDig "I" "XI" "X" "C" "M" "(X)" "(C)" ;
D_2 = mkDig "II" "XII" "XX" "CC" "MM" "(XX)" "(CC)" ;
D_3 = mkDig "III" "XIII" "XXX" "CCC" "MMM" "(XXX)" "(CCC)" ;
D_4 = mkDig "IV" "XIV" "XL" "CD" "(IV)" "(XL)" "(CD)" ;
D_5 = mkDig "V" "XV" "L" "D" "(V)" "(L)" "(D)" ;
D_6 = mkDig "VI" "XVI" "LX" "DC" "(VI)" "(LX)" "(DC)" ;
D_7 = mkDig "VII" "XVII" "LXX" "DCC" "(VII)" "(LXX)" "(DCC)" ;
D_8 = mkDig "VIII" "XVIII" "LXXX" "DCCC" "(VIII)" "(LXXX)" "(DCCC)" ;
D_9 = mkDig "IX" "XIX" "XC" "CM" "(IX)" "(XC)" "(CM)" ;
oper
TDigit = {
TDig = {
s : Unit => Str
} ;
mkDig : Str -> Str -> Str -> Str -> Str -> Str -> TDigit =
\one,ten,hundred,thousand,ten_thousand,hundred_thousand -> {
s = table Unit [one;ten;hundred;thousand;ten_thousand;hundred_thousand]
mkDig : Str -> Str -> Str -> Str -> Str -> Str -> Str -> TDig =
\one,eleven,ten,hundred,thousand,ten_thousand,hundred_thousand -> {
s = table Unit [one;eleven;ten;hundred;thousand;ten_thousand;hundred_thousand]
} ;
inc : Unit -> Unit = \u ->
case u of {
one => ten ;
eleven => hundred ;
ten => hundred ;
hundred => thousand ;
thousand => ten_thousand ;

View File

@@ -34,6 +34,10 @@ oper
abl : Case = Abl ;
voc : Case = ResLat.Voc ;
plural : Number = Pl ;
singular : Number = Sg ;
missing : Coordinator = Missing ;
mkN = overload {
mkN : (verbum : Str) -> N
= \n -> lin N ( noun n ) ;
@@ -41,6 +45,10 @@ oper
= \x,y,z -> lin N ( noun_ngg x y z ) ;
} ;
pluralN : N -> N = \n -> lin N (ResLat.pluralNoun n) ;
singularN : N -> N = \n -> lin N (ResLat.singularNoun n) ;
constN : Str -> Gender-> N = \s,g -> lin N (ResLat.constNoun s g);
mkA = overload {
mkA : (verbum : Str) -> A -- Nominative masculine
= \n -> lin A ( adj n ** {isPre = False } ) ;
@@ -65,7 +73,7 @@ oper
False => let a = adj n in { s = table { Posit => a.s ! Posit ; _ => \\_ => nonExist } ; adv = a.adv }
} ** { isPre = False } )
} ;
constA : Str -> A = \s -> lin A (ResLat.constAdj s) ;
mkV = overload {
mkV : (tacere : Str) -> V
@@ -79,7 +87,7 @@ oper
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) ;
mkV0 : Str -> V0 = \v -> lin V0 (impersonalVerb v) ;
} ;
mkV2 = overload {
@@ -91,6 +99,7 @@ oper
= \v,p -> lin V2 ( v ** { c = p } ) ;
} ;
constV : Str -> Verb = \s -> lin V (ResLat.constVerb s) ;
mkAdv = overload {
mkAdv : Str -> Adv
@@ -101,18 +110,25 @@ oper
= \p,c -> lin Adv (mkFullAdverb p c nonExist);
};
pluralN = ResLat.pluralN ;
singularN = ResLat.singularN ;
mkConj : Str -> Str -> Number -> Coordinator -> Conjunction = mkConjunction ;
mkConj = overload {
mkConj : Str -> Str -> Str -> Number -> Coordinator -> Conjunction = mkConjunction ;
mkConj : Str -> Str -> Number -> Coordinator -> Conjunction = \s1,s2,n,c -> mkConjunction s1 s2 [] n c ;
mkConj : Str -> Coordinator -> Conjunction = \s,c -> mkConjunction [] s [] Sg c ;
} ;
mkPrep : Str -> Case -> Preposition = mkPreposition ;
mkPron = mkPronoun ;
mkNum = mkNumeral ;
-- mkNum = overload {
-- mkNum : Str -> Str -> Str -> Str -> Num = \s1,s2,s3,s4 -> lin Num (mkNumeral s1 s2 s3 s4 );
-- mkNum : Str -> Str -> Str -> Str -> Str -> Str -> Num = \s1,s2,s3,s4,s5,s6 -> lin Num (fullNumeral s1 s2 s3 s4 s5 s6 ) ;
-- } ;
-- To be implemented, just place holders
mkPN : N -> PN = \n -> lin PN n ;
mkPN : N -> Number -> PN = \noun,num -> lin PN (noun ** { s = noun.s ! num ; n = num } ) ;
mkN2 : N -> Prep -> N2 = \n,p -> lin N2 ( n ** { c = p } );
mkN3 : N -> Prep -> Prep -> N3 = \n,p1,p2 -> lin N3 ( n **{ c = p1 ; c2 = p2 } ) ;
mkV2S : V -> Prep -> V2S = \v,p -> lin V2S ( v ** { c = p } ) ;

View File

@@ -3,7 +3,7 @@ concrete PhraseLat of Phrase = CatLat ** open Prelude, ResLat in {
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
--
-- UttS : S -> Utt
UttS s = { s = combineSentence s ! SPreS ! PreS ! SOV };
UttS s = { s = combineSentence s ! SPreS ! PreS ! CPreV ! SOV };
-- UttQS : QS -> Utt
UttQS qs = {s = qs.s ! QDir } ;
@@ -18,7 +18,7 @@ concrete PhraseLat of Phrase = CatLat ** open Prelude, ResLat in {
-- 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} ;
UttNP np = {s = np.adv ++ (combineNounPhrase np) ! PronNonDrop ! Nom} ;
-- UttVP : VP -> Utt
UttVP vp = ss (vp.inf ! VInfActPres) ;
@@ -36,6 +36,6 @@ concrete PhraseLat of Phrase = CatLat ** open Prelude, ResLat in {
PConjConj conj = {s = conj.s2} ; ---
--
NoVoc = {s = []} ;
VocNP np = {s = "," ++ np.s ! ResLat.Voc} ; ---- what is the compiler error here? AR 1/2/2014 -- answer: clash with the type name Voc 3/2
VocNP np = {s = "," ++ (combineNounPhrase np) ! PronNonDrop ! ResLat.Voc} ; ---- what is the compiler error here? AR 1/2/2014 -- answer: clash with the type name Voc 3/2
--
}

View File

@@ -4,19 +4,21 @@ concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in {
--`
lin
-- 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
-- }
-- } ;
QuestCl cl = cl ** {
v = \\t,a,_,ap,cp => cl.v ! t ! a ! VQTrue ! ap ! cp ;
q = ""
} ;
-- QuestVP : IP -> VP -> QCl ; -- who walks
-- TO FIX
-- QuestVP ip vp =
QuestVP ip vp =
{
s = \\_ => "" ;
adv = "" ;
neg = \\_,_ => "" ;
o = \\_ => vp.obj ;
q = ip.s ! Nom ;
v = \\t,a,_,ap,cp => vp.s ! VAct (anteriorityToVAnter a) (tenseToVTense t) ip.n P3 ! VQFalse
} ;
-- let qcl = mkQuestion { s = ip.s ! Nom } ( mkClause emptyNP vp )
-- in {s = \\t,a,b,qd => qcl.s ! t ! a ! b ! qd} ;
@@ -26,12 +28,19 @@ concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in {
-- QuestSlash ip slash =
-- mkQuestion (ss ( ip.s ! Acc) ) slash ;
-- TO FIX
-- QuestIAdv iadv cl = mkQuestion iadv cl ;
--
-- TO FIX
-- QuestIComp icomp np =
-- mkQuestion icomp (mkClause np (predV be_V) ) ;
-- QuestIAdv : IAdv -> Cl -> QCl
QuestIAdv iadv cl = cl ** { q = iadv.s } ;
-- QuestIComp : IComp -> NP -> QCl ;
QuestIComp icomp np =
{
s = \\_ => "" ;
adv = "" ;
neg = \\_,_ => "" ;
o = \\_ => combineNounPhrase np ! PronNonDrop ! Nom ; -- Should probably not go into the object field
q = icomp.s ;
v = \\t,a,_,ap,cp => esseAux.act ! VAct (anteriorityToVAnter a) (tenseToVTense t) np.n P3 ;
} ;
--
--
-- PrepIP p ip = {s = p.s ++ ip.s ! Acc} ;

View File

@@ -33,7 +33,7 @@ concrete RelativeLat of Relative = CatLat ** open ResLat in {
-- } ;
--
-- FunRP p np rp = {
-- s = \\c => np.s ! Acc ++ p.s ++ rp.s ! RPrep (fromAgr np.a).g ;
-- s = \\c => (combineNounPhrase np) ! PronNonDrop ! Acc ++ p.s ++ rp.s ! RPrep (fromAgr np.a).g ;
-- a = RAg np.a
-- } ;
--

View File

@@ -15,7 +15,7 @@ param
Noun : Type = {s : Number => Case => Str ; g : Gender } ; -- massable : Bool } ;
NounPhrase : Type =
{
s : Case => Str ;
s : PronDropForm => Case => Str ;
g : Gender ;
n : Number ;
p : Person ;
@@ -27,6 +27,7 @@ param
param
Order = SVO | VSO | VOS | OSV | OVS | SOV ;
AdvPos = PreS | PreV | PreO | PreNeg | InV | InS ; -- | InO
ComplPos = CPreV | CPostV ;
SAdvPos = SPreS | SPreV | SPreO | SPreNeg ;
param
Agr = Ag Gender Number Case ; -- Agreement for NP et al.
@@ -55,7 +56,7 @@ param
-- massable = cn.massable;
} ;
pluralN : Noun -> Noun = \n ->
pluralNoun : Noun -> Noun = \n ->
{
s = table {
Pl => n.s ! Pl ;
@@ -67,7 +68,7 @@ param
-- massable = n.massable ;
};
singularN : Noun -> Noun = \n ->
singularNoun : Noun -> Noun = \n ->
lin N {
s = table {
Sg => n.s ! Sg ;
@@ -78,6 +79,8 @@ param
postap = n.postap
-- massable = n.massable ;
};
constNoun : Str -> Gender -> Noun = \s,g ->
{ s = \\_,_ => s ; g = g } ;
param
AdjPos = Pre | Post ;
@@ -132,7 +135,7 @@ param
regNP : (_,_,_,_,_,_ : Str) -> Gender -> Number -> NounPhrase =
\nom,acc,gen,dat,abl,voc,g,n ->
{
s = table Case [ nom ; acc ; gen ; dat ; abl ; voc ] ;
s = \\_ => table Case [ nom ; acc ; gen ; dat ; abl ; voc ] ;
g = g ;
n = n ;
p = P3;
@@ -143,7 +146,10 @@ param
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 } ;};
emptyNP : NounPhrase = { s = \\_,_ => ""; g = Masc; n = Sg; p = P1 ; adv = "" ; preap, postap = { s = \\_ => "" } ; det = { s = \\_,_ => "" ; sp = \\_,_ => "" ; n = Sg } ;};
combineNounPhrase : NounPhrase -> PronDropForm => Case => Str = \np ->
\\pd,c => np.det.s ! np.g ! c ++ np.adv ++ np.preap.s ! (Ag np.g np.n c) ++ np.s ! pd ! c ++ np.postap.s ! (Ag np.g np.n c) ++ np.det.sp ! np.g ! c ;
-- also used for adjectives and so on
-- adjectives
@@ -152,6 +158,7 @@ param
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 ) ->
@@ -186,11 +193,58 @@ param
audaces audaces (audac + "ium") (audac + "ibus")
g ;
regAdj : Str -> Gender => Number => Case => Str = \s ->
case s of {
un + "us" => \\g,n,c => un + (regAdjSuffixes s g n c)
} ;
regAdjSuffixes : Str -> Gender -> Number -> Case -> Str = \str,g,n,c ->
case <g,n,c> of {
<Masc ,Sg,Nom> => "us" ;
<Masc ,Sg,Gen> => "i" ;
<Masc ,Sg,Dat> => "o" ;
<Masc ,Sg,Acc> => "um" ;
<Masc ,Sg,Abl> => "o" ;
<Masc ,Sg,Voc> => case str of { _ + "ius" => "i" ; _ => "e" } ;
<Masc ,Pl,Nom> => "i" ;
<Masc ,Pl,Gen> => "orum" ;
<Masc ,Pl,Dat> => "is" ;
<Masc ,Pl,Acc> => "os" ;
<Masc ,Pl,Abl> => "is" ;
<Masc ,Pl,Voc> => "i" ;
<Neutr,Sg,Nom> => "um" ;
<Neutr,Sg,Gen> => "i" ;
<Neutr,Sg,Dat> => "o" ;
<Neutr,Sg,Acc> => "um" ;
<Neutr,Sg,Abl> => "o" ;
<Neutr,Sg,Voc> => "um";
<Neutr,Pl,Nom> => "a" ;
<Neutr,Pl,Gen> => "orum" ;
<Neutr,Pl,Dat> => "is" ;
<Neutr,Pl,Acc> => "os" ;
<Neutr,Pl,Abl> => "is" ;
<Neutr,Pl,Voc> => "a" ;
<Fem ,Sg,Nom> => "a" ;
<Fem ,Sg,Gen> => "ae" ;
<Fem ,Sg,Dat> => "ae" ;
<Fem ,Sg,Acc> => "am" ;
<Fem ,Sg,Abl> => "a" ;
<Fem ,Sg,Voc> => "a";
<Fem ,Pl,Nom> => "ae" ;
<Fem ,Pl,Gen> => "arum" ;
<Fem ,Pl,Dat> => "is" ;
<Fem ,Pl,Acc> => "as" ;
<Fem ,Pl,Abl> => "is" ;
<Fem ,Pl,Voc> => "ae"
} ;
emptyAdj : Adjective =
{ s = \\_,_ => "" ; comp_adv = "" ; super_adv = "" ; adv = { s = \\_ => "" } } ;
-- verbs
constAdj : Str -> Adjective = \a ->
{ s = \\_,_ => a ; comp_adv = "" ; super_adv = "" ; adv = { s = \\_ => "" } } ;
-- verbs
param
VActForm = VAct VAnter VTense Number Person ;
@@ -377,6 +431,7 @@ param
VPass VFut Pl P3 => -- Future I
( case fut_I_base of {
_ + "bi" => ( init fut_I_base ) + "u" ;
"eri" => "eru" ; -- handle copula properly
_ => fut_I_base
}
) + passPresEnding Pl P3 ;
@@ -745,7 +800,7 @@ param
} ;
-- at the moment only fills present tense
mkImpersonal : Str -> Verb = \s ->
impersonalVerb : Str -> Verb = \s ->
{
act = table {
VAct VSim (VPres VInd) Sg P1 => s ;
@@ -760,6 +815,19 @@ param
sup = \\_ => nonExist ;
} ;
constVerb : Str -> Verb = \s ->
{
act = table {
_ => s
} ;
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"> ;
@@ -1001,7 +1069,7 @@ param
param
PronReflForm = PronRefl | PronNonRefl ;
PronDropForm = PronDrop | PronNonDrop;
PronDropForm = PronDrop | PronNonDrop ;
-- PronIndefUsage = PronSubst | PronAdj ;
-- PronIndefPol = PronPos | PronNeg ;
-- PronIndefMeaning = PronSomeone | PronCertainOne | PronEvery ;
@@ -1157,10 +1225,11 @@ oper
Preposition : Type = {s : Str ; c : Case ; isPost : Bool } ;
-- conjunctions
param Coordinator = And | Or | If | Neither | Because | Comma | Colon | Empty ;
param Coordinator = Aut | Et | Sed | Si | Vel | Comma | Colon | Empty | Missing ; -- Missing means not implemented yet
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 } ;
Conjunction : Type = { s1 : Str ; s2 : Str ; s3 : Str ; n : Number ; c : Coordinator } ; -- s1 is in the beginning of the coordination phrase, s2 in the middle and s3 is a potential enclitic, s is the prefered number of the coordination phrase and c is the parameter to define which string to put within the phrase
mkConjunction : Str -> Str -> Str -> Number -> Coordinator -> Conjunction =
\s1,s2,s3,num,coord -> { s1 = s1; s2 = s2 ; s3 = s3 ; n = num ; c = coord } ;
VPSlash = VerbPhrase ** {c : Preposition} ;
@@ -1187,7 +1256,7 @@ oper
part = vp.part ;
imp = vp.imp ;
inf = vp.inf ;
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 ;
obj = np.det.s ! np.g ! prep.c ++ np.preap.s ! (Ag np.g np.n prep.c) ++ (appPrep prep (np.s ! PronNonDrop)) ++ 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
} ;
@@ -1197,7 +1266,7 @@ oper
part = vp.part ;
imp = vp.imp ;
inf = vp.inf ;
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 ;
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 ! PronNonDrop)) ++ 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
@@ -1226,19 +1295,22 @@ oper
-- clauses
Sentence =
{
s,o,v,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb
s,o,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb
v : AdvPos => ComplPos => Str ;
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 } ;
Clause = {s,o : AdvPos => Str ; v : Tense => Anteriority => VQForm => AdvPos => ComplPos => Str ; neg : Polarity => AdvPos => Str ; adv : Str } ;
QClause = {s : C.Tense => Anteriority => C.Pol => QForm => Str} ;
mkClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
let
-- combines adverbs from noun phrase and verb phrase
adv = np.adv ++ vp.adv ;
-- extracts the complement from the verb phrase
compl = vp.compl ! Ag np.g np.n Nom ;
-- 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 ; _ => [] } ;
@@ -1246,33 +1318,38 @@ oper
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 ; _ => [] }
inv : AdvPos -> Str = \ap -> case ap of { InV => adv ; _ => [] } ;
cprev : ComplPos -> Str = \cp -> case cp of { CPreV => compl ; _ => [] } ;
cpostv : ComplPos -> Str = \cp -> case cp of { CPostV => compl ; _ => [] }
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
-- advpos is the adverb position in the clause
s = \\advpos =>
pres advpos ++ -- 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
ins advpos ++ -- adverbs can be placed within the subject noun phrase
np.s ! PronDrop ! 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
-- advposis the adverb position in the clause
-- comppos is the position of the verb complement
v = \\tense,anter,vqf,advpos,complpos =>
prev advpos ++ -- adverbs can be placed in the before the verb phrase
cprev complpos ++ -- verb phrase complement, e.g. predicative expression, agreeing with the subject, can go before the verb
inv advpos ++ -- 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 ;
vp.s ! VAct ( anteriorityToVAnter anter ) ( tenseToVTense tense ) np.n np.p ! vqf ++
cpostv complpos ; -- complement can also go after the verb
-- object part of the clause
o = \\ap => preo ap ++ vp.obj ;
o = \\advpos => preo advpos ++ vp.obj ;
-- optional negation particle, adverbs can be placed before the negation
neg = \\pol,ap => preneg ap ++ negation pol ;
neg = \\pol,advpos => preneg advpos ++ negation pol ;
adv = ""
} ;
@@ -1286,20 +1363,23 @@ oper
p = pol
} ;
combineSentence : Sentence -> ( SAdvPos => AdvPos => Order => Str ) = \s ->
combineSentence : Sentence -> ( SAdvPos => AdvPos => ComplPos => 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
-- sap is the position of the sentence adverbial
-- ap is the position of the adverb
-- cp is the position of the verb complement
\\sap,ap,cp,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 ! cp ++ preo sap ++ s.o ! ap;
VSO => s.t.s ++ s.p.s ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp ++ 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 ! cp ++ 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 ! cp;
OVS => s.t.s ++ s.p.s ++ preo sap ++ s.o ! ap ++ preneg sap ++ s.neg ! ap ++ prev sap ++ s.v ! ap ! cp ++ 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 ! cp
} ;
@@ -1307,8 +1387,8 @@ oper
-- questions
mkQuestion : SS -> Clause -> QClause = \ss,cl -> {
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
QDir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreS ! PreS ! CPreV ! OVS ;
QIndir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SPreO ! PreO ! CPreV ! OSV
}
};
@@ -1387,16 +1467,17 @@ oper
{ s = table { Posit => p ; Compar => c ; Super => s } };
-- numerals
param
CardOrd = NCard | NOrd ;
Unit = one | ten | hundred | thousand | ten_thousand | hundred_thousand ;
-- CardOrd = NCard | NOrd ;
Unit = one | eleven | ten | hundred | thousand | ten_thousand | hundred_thousand ;
Below8 = Yes | No8 | No9 | Ign ;
oper
Cardinal : Type = {s : Gender => Case => Str ; n : Number};
Ordinal : Type = { s : Gender => Number => Case => Str } ;
Numeral : Type = { card : Cardinal ; ord : Ordinal } ;
-- Numerals are by default cardinal numbers but have a field for ordinal numbers
TDigit : Type = { s : Unit => Gender => Case => Str ; tenNext : Str ; below8 : Below8 } ; -- ord : Unit => Agr => Str } ;
TNumeral : Type = { s : Gender => Case => Str ; d : Unit => Gender => Case => Str ; n : Number ; below8 : Below8 } ; -- ord : Unit => Agr => Str } ;
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 {
-- Inflection for cardinal numbers
cardFlex : Str -> Gender => Case => Str =
\c -> 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" ;
@@ -1409,27 +1490,32 @@ oper
<Neutr, Nom | Acc | Voc > => "tria" ; <_, Nom | Acc | Voc > => "tres" ;
<_, Gen> => "trium" ; <_, Dat | Abl > => "tribus"
} ;
tre + "centi" => \\g,c => regAdj (tre + "centus") ! g ! Pl ! c ;
"milia" => table {
Neutr => table Case [ "milia" ; "milia" ; "milium" ; "milibus" ; "milibus" ; "milia" ] ;
_ => \\_ => nonExist
_ => table Case [ "milia" ; "milia" ; "milium" ; "milibus" ; "milibus" ; "milia" ]
} ;
_ => \\_,_ => 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 } } ;
-- 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
-- { s = cardFlex ; n = case c of { "unus" => Sg ; _ => Pl } ; ord = ordFlex } ;
-- fixedNumeral : Str -> Str -> Numeral = \c,o ->
-- { s = \\_,_,_=> c ; n = Pl ; ord = \\g,n,c => (mkA o).s ! Posit ! Ag g n c} ;
}

View File

@@ -36,7 +36,7 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
SlashPrep cl prep = cl ** {c2 = prep.s} ;
--
-- SlashVS np vs slash =
-- mkClause (np.s ! Nom) np.a
-- mkClause (combineNounPhrase np ! PronNonDrop ! Nom) np.a
-- (insertObj (\\_ => conjThat ++ slash.s) (predV vs)) **
-- {c2 = slash.c2} ;
--
@@ -47,10 +47,15 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
UseCl t p cl = -- Temp -> Pol-> Cl -> S
(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 } ;
-- UseQCl : Temp -> Pol -> QCl -> QS -- maybe use mkQuestion
UseQCl t p cl =
{
s = let qs = combineClause cl t t.a p VQTrue in
\\q => case q of {
QDir => cl.q ++ combineSentence qs ! SPreS ! PreV ! CPostV ! SVO ; -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV ++ cl.o ! PreV ;
QIndir => cl.q ++ combineSentence qs ! SPreS ! PreV ! CPostV ! SOV -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.o ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV
}
} ;
-- UseRCl t p cl = {
-- s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! r ;

View File

@@ -11,21 +11,21 @@ concrete StructuralLat of Structural = CatLat **
almost_AdA, almost_AdN = ss "quasi" ; -- L...
although_Subj = ss "quamquam" ; -- L...
always_AdV = ss "semper" ; -- L...
and_Conj = mkConj [] "et" Pl And ; -- L...
and_Conj = mkConj [] "et" Pl Et ; -- L177
-----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 = mkConj "et" "et" Pl And; --L...
both7and_DConj = mkConj "et" "et" Pl Et ; --L177
but_PConj = ss "sed" ; -- L...
by8agent_Prep = mkPrep "per" Abl ; -- L...
by8means_Prep = mkPrep "" Abl ; -- L...
can8know_VV, can_VV = mkVV IrregLat.can_V True ; --L...
can8know_VV, can_VV = mkVV (mkV "scire" "scio" "scivi" "scitum") False ; --L...
during_Prep = mkPrep "inter" Acc ; -- L...
either7or_DConj = mkConj "aut" "aut" Sg Or ; -- L...
either7or_DConj = mkConj "aut" "aut" Sg Aut ; -- L177
everybody_NP = regNP "quisque" "quemque" "cuiusque" "cuique" "quoque" "quisque" Masc Sg ;-- regNP "quisquae" Sg ; -- L...
every_Det = mkDeterminer ( mkA "omnis" ) Pl ; -- Pons
every_Det = mkDeterminer ( mkA "omnis" ) Sg ; -- Pons
everything_NP = regNP "omnia" "omnia" "omnium" "omnis" "omnis" "omnia" Neutr Pl ; --regNP "omnia" Pl ; -- L...
everywhere_Adv = mkAdv "ubique" ; -- L...
few_Det = mkDeterminer ( mkA "paulus" ) Pl ; -- L...
@@ -55,7 +55,7 @@ concrete StructuralLat of Structural = CatLat **
on_Prep = mkPrep "in" Acc ; -- L...
------ one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
only_Predet = ss "solum" ; -- L...
or_Conj = mkConj [] "aut" Sg Or ; -- L...
or_Conj = mkConj [] "aut" Sg Aut ; -- L177
otherwise_PConj = ss "praeterea" ; -- Pons
part_Prep = mkPrep [] Gen ; -- Bayer-Lindauer 127
please_Voc = ss "queso" ; -- L...
@@ -101,7 +101,7 @@ concrete StructuralLat of Structural = CatLat **
-----b whichPl_IDet = mkDeterminer Pl ["which"] ;
-----b whichSg_IDet = mkDeterminer Sg ["which"] ;
whoSg_IP = { s =pronForms "quis" "quem" "cuius" "cui" "quo" ; n = Sg } ; -- only feminine or masculine Bayer-Lindauer 59.1
whoPl_IP = { s = \\_ => "" ; n = Pl } ; -- no plural forms Bayer-Lindauer 59.1
whoPl_IP = { s = pronForms "qui" "quos" "quorum" "quibus" "quibus" ; n = Pl } ;
why_IAdv = ss "cur" ; -- L...
without_Prep = mkPrep "sine" Abl ; -- abl. L..
@@ -113,7 +113,7 @@ concrete StructuralLat of Structural = CatLat **
no_Quant = { s , sp = ( mkA "nullus" ).s ! Posit } ; -- nullus L...
not_Predet = ss "non" ; -- L...
if_then_Conj = mkConj "si" [] Sg If ; -- no word in s2 field L...
if_then_Conj = mkConj "si" [] Sg Si ; -- 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 Sg ; -- Bayer Lindauer 60.4

View File

@@ -3,26 +3,49 @@
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
-- } ;
-- CNSymbNP det cn xs = {
SymbPN i = {s = \\c => i.s ; g = Neutr ; n = Sg } ; --- c
IntPN i = {s = \\c => i.s ; g = Neutr ; n = Sg } ; --- c
FloatPN i = {s = \\c => i.s ; g = Neutr ; n = Sg } ; --- c
NumPN i = {s = \\c => i.s ! Neutr ! c; g = Neutr ; n = Pl } ; --- c
CNIntNP cn i = {
s = \\_,c => (cn.s ! Sg ! Nom ++ i.s) ;
g = cn.g ;
n = Sg ;
adv = [] ;
det = { s = \\_,_ => [] ; n = Sg ; sp = \\_,_ => [] } ;
p = P3 ;
postap = { s = \\_ => [] } ;
preap = { s = \\_ => [] } ;
} ;
CNSymbNP det cn xs = {
s = \\_,c => (cn.s ! Sg ! Nom ++ xs.s ) ;
g = cn.g ;
n = det.n ;
adv = [] ;
det = det ;
p = P3 ;
postap = { s = \\_ => [] } ;
preap = { s = \\_ => [] } ;
} ;
-- s = \\c => det.s ++ cn.s ! det.n ! c ++ xs.s ;
-- a = agrgP3 det.n cn.g
-- } ;
-- CNNumNP cn i = {
-- s = \\c => (cn.s ! Sg ! Nom ++ i.s) ;
-- a = agrgP3 Sg cn.g
-- } ;
-- } ;
CNNumNP cn i = {
s = \\_,c => (cn.s ! Sg ! Nom ++ i.s ! cn.g ! Nom ) ;
g = cn.g ;
n = Sg ;
adv = [] ;
det = { s = \\_,_ => [] ; n = Sg ; sp = \\_,_ => [] } ;
p = P3 ;
postap = { s = \\_ => [] } ;
preap = { s = \\_ => [] } ;
} ;
--
SymbS sy = { s = \\_ => sy.s ; neg = \\_ => "" ; o = \\_ => "" ; p = PPos ; sadv = "" ; t = TPres ; v = \\_ => "" } ;
SymbS sy = { s = \\_ => sy.s ; neg = \\_ => "" ; o = \\_ => "" ; p = PPos ; sadv = "" ; t = TPres ; v = \\_,_ => "" } ;
--
-- SymbNum sy = {s = sy.s ; n = Pl ; hasCard = True} ;
SymbNum sy = {s = \\_,_ => sy.s ; n = Pl } ;
SymbOrd sy = { s = \\g,n,c => sy.s } ; -- does not inflect properly
lincat
@@ -31,6 +54,6 @@ lincat
lin
MkSymb s = s ;
-- BaseSymb = infixSS "and" ;
-- ConsSymb = infixSS "," ;
BaseSymb = infixSS "et" ;
ConsSymb = infixSS "et" ;
}

View File

@@ -17,10 +17,21 @@ concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat,Extr
} ;
-- ComplVS : VS -> S -> VP ; -- say that she runs
ComplVS v s = insertObj ( dummyNP (S.that_Subj.s ++ s.s ! PreS)) Nom_Prep (predV v) ;
ComplVS vs s = -- insertObj ( dummyNP (S.that_Subj.s ++ s.s ! PreS)) Nom_Prep (predV v) ;
vs ** {
s = \\af,qf => vs.act ! af ;
compl = \\ag => combineSentence s ! SPreS ! PreV ! CPostV ! SOV ; -- s.s ! QIndir ;
adv = [] ;
obj = []
} ;
-- ComplVQ : VQ -> QS -> VP ; -- wonder who runs
ComplVQ v q = insertObj (dummyNP (q.s ! QIndir)) Nom_Prep (predV v) ;
ComplVQ vq qs = -- insertObj (dummyNP (q.s ! QIndir)) Nom_Prep (predV v) ;
vq ** {
s = \\af,qf => vq.act ! af ;
compl = \\ag => qs.s ! QIndir ;
adv = [] ;
obj = []
} ;
-- ComplVA : VA -> AP -> VP ; -- they become red
ComplVA v ap = (predV v) ** { compl = ap.s } ;
@@ -57,7 +68,7 @@ concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat,Extr
-- SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash ; -- beg me to buy
-- SlashV2VNP vv np vp =
-- insertObjPre (\\_ => vv.c2 ++ np.s ! Acc)
-- insertObjPre (\\_ => vv.c2 ++ (combineNounPhrase np) ! PronNonDrop ! Acc)
-- (insertObjc (\\a => infVP vv.isAux vp a) (predVc vv)) **
-- {c2 = vp.c2} ;
@@ -103,7 +114,9 @@ concrete VerbLat of Verb = CatLat ** open (S=StructuralLat),ResLat,IrregLat,Extr
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 = \\_ =>
(combineNounPhrase np) ! PronNonDrop ! Nom
} ;
-- CompAdv : Adv -> Comp ; -- (be) here
CompAdv a = {s = \\_ => a.s ! Posit } ;

10
src/latin/mkMissing.hs Normal file
View File

@@ -0,0 +1,10 @@
import PGF
import System.Environment
main =
do
args <- getArgs -- first one should be pgf file and second one should be the file containing the errors/warnings about missing things
pgf <- PGF.readPGF (args !! 0) -- "tmp/Lang.pgf"
ms <- readFile (args !! 1) {- "tmp/MissingLat.tmp" -} >>= return . map (last . words) . lines
let ts = [PGF.showType [] t | m <- ms, Just t <- [PGF.functionType pgf (PGF.mkCId m)]]
putStrLn $ unlines ["oper " ++ f ++ " : " ++ t ++ " = notYet \"" ++ f ++ "\" ;" | (f,t) <- zip ms ts]

18
src/latin/mkMissing.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/bin/sh
echo "Create tmp dir"
mkdir tmp/
echo "Remove old file"
echo "resource MissingLat = {} " > MissingLat.gf
echo "Look for missing functions"
# gf -src -i .. -batch TryLat.gf 2>&1 | grep "Warning: no linearization of" | sort -u > tmp/MissingLat.tmp
gf -src -i .. -batch ../api/TryLat.gf 2>&1 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" | grep -E "constant not found|no linearization of" | sort -u > tmp/MissingLat.tmp
echo "Compile grammar"
gf -src -make -D tmp LangLat.gf &> /dev/null
echo "Create placeholders for missing functions"
echo "resource MissingLat = open GrammarLat, Prelude in {" > MissingLat.gf
echo "" >> MissingLat.gf
echo "-- temporary definitions to enable the compilation of RGL API" >> MissingLat.gf
runghc mkMissing.hs "tmp/Lang.pgf" "tmp/MissingLat.tmp">> MissingLat.gf
echo "}" >> MissingLat.gf
echo "Cleanup"
rm -Rf tmp

View File

@@ -87,7 +87,7 @@ contained in examples.txt. (Definiteness seems to be relevant to order, too.)
ich trinke warmes Bier nicht [ ich trinke nicht Bier: via no_Predet ]
The order accPron < refl < (gen|dat)Pron < neg < nonpronNP sometimes sounds
better, but expresses a different meaning (often available via no_Preded):
better, but expresses a different meaning (often available via no_Predet):
sie hat sich nicht alle|viele|?mehrere Namen gemerkt
sie hat sich alle?|viele|mehrere Namen nicht gemerkt
@@ -98,7 +98,10 @@ contained in examples.txt. (Definiteness seems to be relevant to order, too.)
einige Lehrer haben jedem Studenten viele Bücher nicht geschickt|empfohlen
=?= some teachers haven't sent|recommended many books to every student
For tests, see examples.txt and TestLangGer.
For tests, see examples.txt and how to do regression tests (see below).
Rem.: Having more nn-fields may be useful to put adverbs in between (with
additional scope problems).
4. For reflexive V2's (ich bediene mich einer Sache, ich merke mir eine Sache) or
reflexive V3's (ich entschuldige mich bei dat für acc, ich leihe mir acc bei dat),
@@ -236,16 +239,14 @@ Also, singular mass-NPs behave different:
ich trinke nicht *((kaltes) Bier)
ich trinke (kaltes) Bier nicht | ich trinke kein (kaltes) Bier
PROBLEMS: do V2 + neg behave the same as V3 + neg? Can the scope of negation
and quantifiers be fixed (or at least restricted) by intonation?
PROBLEM: do V2 + neg behave the same as V3 + neg? Aren't the relative
scopes of negation and quantifiers fixed (or restricted) by intonation?
------------- Generating some example trees and linearize them (LangGer|Eng) -----------
gr -tr -number=4 UseCl (TTAnt ? ?) ? (PredVP (UsePron i_Pron) (ComplSlash (SlashVV want_VV (SlashV2a see_V2)) (DetCN (DetQuant ? ?) (UseN man_N)))) | l
gr -number=4 -tr UseCl (TTAnt ? ?) ? (PredVP (UsePron i_Pron) (ComplSlash (SlashVV want_VV (SlashV2a see_V2)) (DetCN (DetQuantOrd ? ? ?) (UseN man_N)))) | l
Pronoun switch with V3 and Slash3V2 works:
Pronoun switch with V3 and Slash?V2 works:
l UseCl (TTAnt TPast AAnter) PPos (PredVP (UsePron i_Pron) (ComplSlash (Slash3V3 sell_V3 (DetCN (DetQuant IndefArt NumSg) (UseN woman_N))) (DetCN (DetQuant DefArt NumSg) (UseN book_N))))
I had sold the book to a woman
@@ -255,14 +256,26 @@ l UseCl (TTAnt TCond ASimul) PNeg (PredVP (UsePron i_Pron) (ComplSlash (Slash3V3
I wouldn't sell it to her
ich würde es ihr nicht verkaufen
--------------------- Regression tests -----------------------------------
------ Regression tests: use gf --run < object-order.gfs or gf> eh object-order.gfs
Form Ger to Eng:
example.txt contains german example sentences marked "positive", "negative", "dubious",
some with two marks. The marks may not always be convincing, as some orderings of negation
and quantified nps afford particular intonation and meaning. (Also, there are incorrect
parse trees due to misuse of MassNP etc., so it needs some inspection to see if the content
of examples.*.out is as it ought to be.)
Part of examples.txt needs TestLangGer|Eng for parsing and translation, in particular
those with reflexive ternary verbs or quaternary verbs (which are not in the RGL).
From Eng to Ger:
Lang> rf -file=examples.eng.txt -lines | p -lang=LangEng | l -lang="LangEng,LangGer" -treebank | wf -file=examples.eng.new
Lang> rf -file=examples.eng.txt -lines | p -lang=LangEng | l | wf -file=examples.eng2ger.new
From Ger to Eng: see examples.txt and object-order.gfs
examples.eng.txt could also be parsed using LangEng instead of TestLangEng|Ger.
(Some of these examples need german/TestLangGer|Eng)
Lang> rf -file=examples.eng.txt -lines | p -lang=LangEng | l -lang="Eng,Ger" -treebank | wf -file=examples.eng.new
Lang> rf -file=examples.eng.txt -lines | p -lang=LangEng | l -lang="Eng,Ger" | wf -file=examples.eng2ger.new
Using give_V3 is confusing, as both objects are connected with noPrep. The examples are
repeated using send_V3, which attaches its indirect object with toPrep.
-------------------------------------------------------------------------------------End