mirror of
https://github.com/GrammaticalFramework/gf-rgl.git
synced 2026-10-29 18:33:17 -06:00
updates from Codex
This commit is contained in:
1 parent
480d64637d
commit
d4b6da0687
13 files changed
+440
-20
No files matched your search
@@ -1,4 +1,4 @@
|
|||||||
concrete AdjectiveSco of Adjective = AdjectiveEng - [ComparA,UseComparA] ** open Prelude, ResSco in {
|
concrete AdjectiveSco of Adjective = AdjectiveEng - [ComparA,UseComparA,ReflA2] ** open Prelude, ResSco in {
|
||||||
|
|
||||||
lin ComparA a np = {
|
lin ComparA a np = {
|
||||||
s = \\_ => getCompar Nom a ++ "than" ++ np.s ! npNom ;
|
s = \\_ => getCompar Nom a ++ "than" ++ np.s ! npNom ;
|
||||||
@@ -8,5 +8,9 @@ lin ComparA a np = {
|
|||||||
s = \\_ => getCompar Nom a ;
|
s = \\_ => getCompar Nom a ;
|
||||||
isPre = a.isPre
|
isPre = a.isPre
|
||||||
} ;
|
} ;
|
||||||
|
ReflA2 a = {
|
||||||
|
s = \\ag => a.s ! AAdj Posit Nom ++ a.c2 ++ reflPron ! ag ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,2 +1,9 @@
|
|||||||
concrete ConstructionSco of Construction = ConstructionEng ** {
|
concrete ConstructionSco of Construction = ConstructionEng - [has_age_VP] **
|
||||||
|
open SyntaxSco, SymbolicSco, ParadigmsSco in {
|
||||||
|
|
||||||
|
lin has_age_VP card =
|
||||||
|
mkVP (mkAP
|
||||||
|
(lin AdA (mkUtt (mkNP <lin Card card : Card> (mkN "year" "year"))))
|
||||||
|
(mkA "auld")) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
+65
-4
@@ -1,9 +1,12 @@
|
|||||||
--# -path=.:../common:../abstract
|
--# -path=.:../common:../abstract
|
||||||
|
|
||||||
concrete ExtendSco of Extend = ExtendEng-[passVPSlash,PassVPSlash,PassAgentVPSlash,ProgrVPSlash] ** open Prelude, ResSco in {
|
concrete ExtendSco of Extend = ExtendEng-[PassVPSlash,PassAgentVPSlash,
|
||||||
|
ProgrVPSlash,EmbedPresPart,PastPartAgentAP,ByVP,InOrderToVP,
|
||||||
|
PurposeVP,PredIAdvVP,NominalizeVPSlashNP,WithoutVP,UttVPShort,
|
||||||
|
ReflPron,ReflPoss,MkVPS,MkVPI] ** open Prelude, ResSco in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
passVPSlash : VPSlash -> Str -> ResSco.VP =
|
scoPassVPSlash : VPSlash -> Str -> ResSco.VP =
|
||||||
\vps,ag ->
|
\vps,ag ->
|
||||||
let
|
let
|
||||||
be = predAux auxBe ;
|
be = predAux auxBe ;
|
||||||
@@ -16,9 +19,67 @@ oper
|
|||||||
ext = vps.ext
|
ext = vps.ext
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
lin PassVPSlash vps = passVPSlash (lin VPSlash vps) [] ;
|
lin PassVPSlash vps = scoPassVPSlash (lin VPSlash vps) [] ;
|
||||||
PassAgentVPSlash vps np = passVPSlash (lin VPSlash vps) ("by" ++ np.s ! NPAcc) ;
|
PassAgentVPSlash vps np = scoPassVPSlash (lin VPSlash vps) ("bi" ++ np.s ! NPAcc) ;
|
||||||
ProgrVPSlash vp = insertObjc (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a)
|
ProgrVPSlash vp = insertObjc (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a)
|
||||||
(predAux auxBe ** {c2 = vp.c2; gapInMiddle = vp.gapInMiddle; missingAdv = vp.missingAdv});
|
(predAux auxBe ** {c2 = vp.c2; gapInMiddle = vp.gapInMiddle; missingAdv = vp.missingAdv});
|
||||||
|
|
||||||
|
EmbedPresPart vp = {s = infVP VVPresPart vp False Simul CPos (agrP3 Sg)} ;
|
||||||
|
|
||||||
|
PastPartAgentAP vp np = {
|
||||||
|
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ "bi" ++ np.s ! NPAcc ++ vp.ext ;
|
||||||
|
isPre = False
|
||||||
|
} ;
|
||||||
|
|
||||||
|
ByVP vp = {
|
||||||
|
s = "bi" ++ vp.ad ! AgP3Sg Neutr ++ vp.prp ++ vp.p ++ vp.s2 ! AgP3Sg Neutr ++ vp.ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
InOrderToVP vp = {
|
||||||
|
s = variants {"in order"; []} ++ infVP VVInf vp False Simul CPos (AgP3Sg Neutr)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
PurposeVP vp = {s = infVP VVInf vp False Simul CPos (agrP3 Sg)} ;
|
||||||
|
|
||||||
|
PredIAdvVP iadv vp = {
|
||||||
|
s = \\t,a,p,q => iadv.s ++ infVP VVInf vp False Simul CPos (agrP3 Sg)
|
||||||
|
} ;
|
||||||
|
|
||||||
|
NominalizeVPSlashNP vpslash np =
|
||||||
|
let vp : ResSco.VP = insertObjPre (\\_ => vpslash.c2 ++ np.s ! NPAcc) vpslash ;
|
||||||
|
a = AgP3Sg Neutr
|
||||||
|
in lin NP {s = \\_ => vp.ad ! a ++ vp.prp ++ vp.s2 ! a ; a = a} ;
|
||||||
|
|
||||||
|
WithoutVP vp = {
|
||||||
|
s = "withoot" ++ vp.ad ! AgP3Sg Neutr ++ vp.prp ++ vp.p ++ vp.s2 ! AgP3Sg Neutr ++ vp.ext
|
||||||
|
} ;
|
||||||
|
|
||||||
|
UttVPShort vp = {s = infVP VVAux vp False Simul CPos (agrP3 Sg)} ;
|
||||||
|
|
||||||
|
ReflPron = {s = reflPron} ;
|
||||||
|
ReflPoss num cn = {
|
||||||
|
s = \\a => possPron ! a ++ num.s ! True ! Nom ++ cn.s ! num.n ! Nom
|
||||||
|
} ;
|
||||||
|
|
||||||
|
MkVPS t p vp = scoMkVPS (lin Temp t) (lin Pol p) (lin VP vp) ;
|
||||||
|
|
||||||
|
MkVPI vp = scoMkVPI (lin VP vp) ;
|
||||||
|
|
||||||
|
oper
|
||||||
|
scoMkVPS : CatEng.Temp -> CatEng.Pol -> ResSco.VP -> VPS = \t,p,vp -> lin VPS {
|
||||||
|
s = \\o,a =>
|
||||||
|
let verb = mkVerbForms a vp ! t.t ! t.a ! p.p ! o ! a ;
|
||||||
|
compl = vp.s2 ! a ++ vp.ext
|
||||||
|
in {fin = verb.aux ++ t.s ++ p.s ;
|
||||||
|
inf = verb.adv ++ vp.ad ! a ++ verb.fin ++ verb.inf ++ vp.p ++ compl}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
scoMkVPI : ResSco.VP -> VPI = \vp -> lin VPI {
|
||||||
|
s = table {
|
||||||
|
VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ++ vp.ext ;
|
||||||
|
VVInf => \\a => "tae" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ++ vp.ext ;
|
||||||
|
VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a ++ vp.ext
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
+15
-2
@@ -1,6 +1,11 @@
|
|||||||
concrete IdiomSco of Idiom = IdiomEng - [CleftNP,CleftAdv,ExistNP,ExistIP,ExistNPAdv,ExistIPAdv,ProgrVP] ** open Prelude, ResSco in {
|
concrete IdiomSco of Idiom = IdiomEng - [ImpersCl,GenericCl,CleftNP,CleftAdv,
|
||||||
|
ExistNP,ExistIP,ExistNPAdv,ExistIPAdv,ProgrVP,ImpPl1,ImpP3,
|
||||||
|
SelfAdvVP,SelfAdVVP,SelfNP] ** open Prelude, ResSco in {
|
||||||
|
|
||||||
lin CleftNP np rs = mkClause "it" (agrP3 Sg)
|
lin ImpersCl vp = mkClause "it" (agrP3 Sg) vp ;
|
||||||
|
GenericCl vp = mkClause "ane" (agrP3 Sg) vp ;
|
||||||
|
|
||||||
|
CleftNP np rs = mkClause "it" (agrP3 Sg)
|
||||||
(insertObj (\\_ => rs.s ! np.a)
|
(insertObj (\\_ => rs.s ! np.a)
|
||||||
(insertObj (\\_ => np.s ! rs.c) (predAux auxBe))) ;
|
(insertObj (\\_ => np.s ! rs.c) (predAux auxBe))) ;
|
||||||
|
|
||||||
@@ -26,4 +31,12 @@ lin CleftNP np rs = mkClause "it" (agrP3 Sg)
|
|||||||
|
|
||||||
ProgrVP vp = insertObj (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a) (predAux auxBe) ;
|
ProgrVP vp = insertObj (\\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a) (predAux auxBe) ;
|
||||||
|
|
||||||
|
ImpPl1 vp = {s = "lat's" ++ infVP VVAux vp False Simul CPos (AgP1 Pl)} ;
|
||||||
|
|
||||||
|
ImpP3 np vp = {s = "lat" ++ np.s ! NPAcc ++ infVP VVAux vp False Simul CPos np.a} ;
|
||||||
|
|
||||||
|
SelfAdvVP vp = insertObj reflPron vp ;
|
||||||
|
SelfAdVVP vp = insertAdVAgr reflPron vp ;
|
||||||
|
SelfNP np = {s = \\c => np.s ! c ++ reflPron ! np.a ; a = np.a} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ concrete NounSco of Noun = NounEng - [IndefArt, OrdSuperl, OrdNumeralSuperl] **
|
|||||||
|
|
||||||
lin IndefArt = {
|
lin IndefArt = {
|
||||||
s = \\hasCard,n => case <n,hasCard> of {
|
s = \\hasCard,n => case <n,hasCard> of {
|
||||||
<Sg,False> => "a" ;
|
<Sg,False> => artIndef ;
|
||||||
_ => []
|
_ => []
|
||||||
} ;
|
} ;
|
||||||
sp = \\g,hasCard,n => case <n,hasCard> of {
|
sp = \\g,hasCard,n => case <n,hasCard> of {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
resource ParadigmsSco = ParadigmsEng - [regV, reg2V, regDuplV, irregV, irreg4V, irregDuplV, mkV, mkV2, mkV3, mkV2V, mkV2Q] ** open Prelude, ResSco, CatSco in {
|
resource ParadigmsSco = ParadigmsEng - [regV, reg2V, regDuplV, irregV, irreg4V, irregDuplV, mkV, mkV2, mkV3, mkVV, mkV2V, mkV2Q] ** open Prelude, ResSco, CatSco in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
regV : Str -> V ;
|
regV : Str -> V ;
|
||||||
@@ -9,6 +9,7 @@ oper
|
|||||||
rax@(_ + ("x"|"sh"|"ch")) => rax+"t";
|
rax@(_ + ("x"|"sh"|"ch")) => rax+"t";
|
||||||
hurt@(_ + ("t"|"p"|"d")) => hurt + "it" ;
|
hurt@(_ + ("t"|"p"|"d")) => hurt + "it" ;
|
||||||
traivel@(_ + ("l"|"n"|"r"|"ie"|"y")) => traivel + "t" ;
|
traivel@(_ + ("l"|"n"|"r"|"ie"|"y")) => traivel + "t" ;
|
||||||
|
_ + "e" => cry + "d" ;
|
||||||
clean => clean + "ed"
|
clean => clean + "ed"
|
||||||
} ;
|
} ;
|
||||||
cryin : Str = case cry of {
|
cryin : Str = case cry of {
|
||||||
@@ -80,6 +81,42 @@ oper
|
|||||||
mkV3 : Str -> V3 = \v -> dirdirV3 (regV v) ;
|
mkV3 : Str -> V3 = \v -> dirdirV3 (regV v) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
-- Modal verbs in Scots do not take the infinitive marker "tae". WordNet
|
||||||
|
-- builds lexical VVs with mkVV, so recognize the Scots modals here rather
|
||||||
|
-- than making every caller know about the lower-level auxVV constructor.
|
||||||
|
mkVV : V -> VV = \v -> case v.p of {
|
||||||
|
"" => case v.s ! VInf of {
|
||||||
|
"can" | "cuid" | "ken" | "maun" | "micht" | "suld" | "daur" => scoModalVV v [] ;
|
||||||
|
_ => scoInfVV v
|
||||||
|
} ;
|
||||||
|
"tae" => case v.s ! VInf of {
|
||||||
|
"hae" | "ocht" => scoModalVV v "tae" ;
|
||||||
|
_ => scoInfVV v
|
||||||
|
} ;
|
||||||
|
_ => scoInfVV v
|
||||||
|
} ;
|
||||||
|
|
||||||
|
scoInfVV : V -> VV = \v -> lin VV {
|
||||||
|
s = table {VVF vf => v.s ! vf ; _ => v.s ! VInf} ;
|
||||||
|
p = v.p ;
|
||||||
|
typ = VVInf
|
||||||
|
} ;
|
||||||
|
|
||||||
|
scoModalVV : V -> Str -> VV = \v,p -> lin VV {
|
||||||
|
s = table {
|
||||||
|
VVF VInf => v.s ! VInf ++ p ;
|
||||||
|
VVF VPres => v.s ! VInf ++ p ;
|
||||||
|
VVF VPPart => v.s ! VPPart ++ p ;
|
||||||
|
VVF VPresPart => v.s ! VPresPart ++ p ;
|
||||||
|
VVF VPast => v.s ! VPast ++ p ; --# notpresent
|
||||||
|
VVPresNeg => posneg Neg (v.s ! VInf) ++ p
|
||||||
|
; --# notpresent
|
||||||
|
VVPastNeg => posneg Neg (v.s ! VPast) ++ p --# notpresent
|
||||||
|
} ;
|
||||||
|
p = [] ;
|
||||||
|
typ = VVAux
|
||||||
|
} ;
|
||||||
|
|
||||||
mkV2V = overload {
|
mkV2V = overload {
|
||||||
mkV2V : Str -> V2V = \s -> lin V2V (dirV2 (regV s) ** {c3 = [] ; typ = VVAux}) ;
|
mkV2V : Str -> V2V = \s -> lin V2V (dirV2 (regV s) ** {c3 = [] ; typ = VVAux}) ;
|
||||||
mkV2V : V -> V2V = \v -> lin V2V (dirV2 v ** {c3 = [] ; typ = VVAux}) ;
|
mkV2V : V -> V2V = \v -> lin V2V (dirV2 v ** {c3 = [] ; typ = VVAux}) ;
|
||||||
|
|||||||
@@ -1,2 +1,5 @@
|
|||||||
concrete PhraseSco of Phrase = PhraseEng ** {
|
concrete PhraseSco of Phrase = PhraseEng - [UttVP] ** open Prelude, ResSco in {
|
||||||
|
|
||||||
|
lin UttVP vp = {s = infVP VVInf vp False Simul CPos (agrP3 Sg)} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,14 @@
|
|||||||
concrete QuestionSco of Question = QuestionEng-[QuestIComp] ** open ResSco in {
|
concrete QuestionSco of Question = QuestionEng-[QuestVP,QuestIComp,QuestQVP] ** open ResSco in {
|
||||||
|
|
||||||
lin QuestIComp icomp np =
|
lin QuestVP qp vp =
|
||||||
|
let cl = mkClause (qp.s ! npNom) (agrP3 qp.n) vp
|
||||||
|
in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! oDir} ;
|
||||||
|
|
||||||
|
QuestIComp icomp np =
|
||||||
mkQuestion icomp (mkClause (np.s ! npNom) np.a (predAux auxBe)) ;
|
mkQuestion icomp (mkClause (np.s ! npNom) np.a (predAux auxBe)) ;
|
||||||
|
|
||||||
|
QuestQVP qp vp =
|
||||||
|
let cl = mkClause (qp.s ! npNom) (agrP3 qp.n) vp
|
||||||
|
in {s = \\t,a,b,_ => cl.s ! t ! a ! b ! oDir} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,2 +1,11 @@
|
|||||||
concrete RelativeSco of Relative = RelativeEng ** {
|
concrete RelativeSco of Relative = RelativeEng - [RelVP] ** open ResSco in {
|
||||||
|
|
||||||
|
lin RelVP rp vp = {
|
||||||
|
s = \\t,ant,b,ag =>
|
||||||
|
let agr = case rp.a of {RNoAg => ag ; RAg a => a} ;
|
||||||
|
cl = mkClause (rp.s ! RC (fromAgr agr).g npNom) agr vp
|
||||||
|
in cl.s ! t ! ant ! b ! oDir ;
|
||||||
|
c = npNom
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
+214
-1
@@ -1,6 +1,16 @@
|
|||||||
resource ResSco = ResEng - [getCompar,getSuperl,auxBe,posneg] ** {
|
resource ResSco = ResEng - [getCompar,getSuperl,artIndef,auxBe,posneg,mkVerbForms,
|
||||||
|
nonAuxVerbForms,auxVerbForms,infVP,
|
||||||
|
reflPron,possPron,predV,predVc,predVV,mkClause,vfn] ** open Prelude in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
|
artIndef = pre {
|
||||||
|
"eu" | "Eu" | "unique" | "univers" | "unit" | "urin" | "utop" |
|
||||||
|
"uise" => "a" ;
|
||||||
|
"u" | "U" | "a" | "e" | "i" | "o" | "A" | "E" | "I" | "O" => "an" ;
|
||||||
|
"SMS" | "sms" => "an" ;
|
||||||
|
_ => "a"
|
||||||
|
} ;
|
||||||
|
|
||||||
getCompar : Case -> Adjective -> Str = \c,a -> case a.isMost of {
|
getCompar : Case -> Adjective -> Str = \c,a -> case a.isMost of {
|
||||||
True => "mair" ++ a.s ! AAdj Posit c ;
|
True => "mair" ++ a.s ! AAdj Posit c ;
|
||||||
False => a.s ! AAdj Compar c
|
False => a.s ! AAdj Compar c
|
||||||
@@ -35,4 +45,207 @@ oper
|
|||||||
Neg => s + "na"
|
Neg => s + "na"
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
vfn : Bool -> Str -> Str -> Str -> {aux, fin, adv, inf : Str} =
|
||||||
|
\contr,x,y,z -> case contr of {
|
||||||
|
True => {aux = y ; adv = [] ; fin = [] ; inf = z} ;
|
||||||
|
False => {aux = x ; adv = "no" ; fin = [] ; inf = z}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
reflPron : Agr => Str = table {
|
||||||
|
AgP1 Sg => "mysel" ;
|
||||||
|
AgP2 Sg => "yersel" ;
|
||||||
|
AgP3Sg Masc => "himsel" ;
|
||||||
|
AgP3Sg Fem => "hersel" ;
|
||||||
|
AgP3Sg Neutr => "itsel" ;
|
||||||
|
AgP1 Pl => "oursels" ;
|
||||||
|
AgP2 Pl => "yersels" ;
|
||||||
|
AgP3Pl _ => "thairsels"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
possPron : Agr => Str = table {
|
||||||
|
AgP1 Sg => "my" ;
|
||||||
|
AgP2 Sg => "yer" ;
|
||||||
|
AgP3Sg Masc => "his" ;
|
||||||
|
AgP3Sg Fem => "her" ;
|
||||||
|
AgP3Sg Neutr => "its" ;
|
||||||
|
AgP1 Pl => "our" ;
|
||||||
|
AgP2 Pl => "yer" ;
|
||||||
|
AgP3Pl _ => "thair"
|
||||||
|
} ;
|
||||||
|
|
||||||
|
predV : Verb -> VP = \verb -> {
|
||||||
|
p = verb.p ;
|
||||||
|
prp = verb.s ! VPresPart ;
|
||||||
|
ptp = verb.s ! VPPart ;
|
||||||
|
inf = verb.s ! VInf ;
|
||||||
|
ad = \\_ => [] ;
|
||||||
|
ext = [] ;
|
||||||
|
isSimple = True ;
|
||||||
|
s2 = \\a => if_then_Str verb.isRefl (reflPron ! a) [] ;
|
||||||
|
isAux = False ;
|
||||||
|
auxForms = {contr,past,pres = \\_,_ => nonExist} ;
|
||||||
|
nonAuxForms = {
|
||||||
|
pres = \\agr => presVerb verb agr ;
|
||||||
|
past = verb.s ! VPast --# notpresent
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
predVc : (Verb ** {c2 : Str}) -> SlashVP = \verb ->
|
||||||
|
predV verb ** {c2 = verb.c2 ; gapInMiddle = True; missingAdv = False} ;
|
||||||
|
|
||||||
|
predVV : {s : VVForm => Str ; p : Str ; typ : VVType} -> VP = \verb ->
|
||||||
|
let verbs = verb.s
|
||||||
|
in case verb.typ of {
|
||||||
|
VVAux => predAux {
|
||||||
|
pres,contr = table {
|
||||||
|
Pos => \\_ => verbs ! VVF VPres ;
|
||||||
|
Neg => \\_ => verbs ! VVPresNeg
|
||||||
|
} ;
|
||||||
|
past = table { --# notpresent
|
||||||
|
Pos => \\_ => verbs ! VVF VPast ; --# notpresent
|
||||||
|
Neg => \\_ => verbs ! VVPastNeg --# notpresent
|
||||||
|
} ; --# notpresent
|
||||||
|
p = verb.p ;
|
||||||
|
inf = verbs ! VVF VInf ;
|
||||||
|
ppart = verbs ! VVF VPPart ;
|
||||||
|
prpart = verbs ! VVF VPresPart
|
||||||
|
} ;
|
||||||
|
_ => predV {s = \\vf => verbs ! VVF vf ; p = verb.p ; isRefl = False}
|
||||||
|
} ;
|
||||||
|
|
||||||
|
mkVerbForms : Agr -> VP -> VerbForms = \agr,vp -> case vp.isAux of {
|
||||||
|
True =>
|
||||||
|
let aux : Aux = vp.auxForms ** {
|
||||||
|
inf = vp.inf ;
|
||||||
|
ppart = vp.ptp ;
|
||||||
|
prpart = vp.prp } ;
|
||||||
|
in auxVerbForms aux ;
|
||||||
|
False =>
|
||||||
|
let fin : Str = vp.nonAuxForms.pres ! agr ;
|
||||||
|
inf : Str = vp.inf ;
|
||||||
|
part : Str = vp.ptp ;
|
||||||
|
in nonAuxVerbForms fin inf part
|
||||||
|
vp.nonAuxForms.past --# notpresent
|
||||||
|
} ;
|
||||||
|
|
||||||
|
nonAuxVerbForms : (fin,inf,part : Str) ->
|
||||||
|
(past : Str) -> --# notpresent
|
||||||
|
VerbForms = \fin,inf,part
|
||||||
|
,past --# notpresent
|
||||||
|
->
|
||||||
|
\\tns,ant,pol,ord,agr =>
|
||||||
|
case <tns,ant,pol,ord> of {
|
||||||
|
<Pres,Simul,CPos,ODir _> => vff fin [] ;
|
||||||
|
<Pres,Simul,CPos,OQuest> => vf (scoDoes agr) inf ;
|
||||||
|
<Pres,Anter,CPos,ODir True> => vf (haveContr agr) part ; --# notpresent
|
||||||
|
<Pres,Anter,CPos,_> => vf (scoHave agr) part ; --# notpresent
|
||||||
|
<Pres,Anter,CNeg c,ODir True> => vfn c (haveContr agr) (scoHavent agr) part ; --# notpresent
|
||||||
|
<Pres,Anter,CNeg c,_> => vfn c (scoHave agr) (scoHavent agr) part ; --# notpresent
|
||||||
|
<Past,Simul,CPos,ODir _> => vff past [] ; --# notpresent
|
||||||
|
<Past,Simul,CPos,OQuest> => vf "did" inf ; --# notpresent
|
||||||
|
<Past,Simul,CNeg c,_> => vfn c "did" "didna" inf ; --# notpresent
|
||||||
|
<Past,Anter,CPos,ODir True> => vf (cBind "d") part ; --# notpresent
|
||||||
|
<Past,Anter,CPos,_> => vf "haed" part ; --# notpresent
|
||||||
|
<Past,Anter,CNeg c,ODir True> => vfn c (cBind "d") (cBind "d no") part ; --# notpresent
|
||||||
|
<Past,Anter,CNeg c,_> => vfn c "haed" "haedna" part ; --# notpresent
|
||||||
|
<Fut,Simul,CPos,ODir True> => vf (cBind "ll") inf ; --# notpresent
|
||||||
|
<Fut,Simul,CPos,_> => vf "will" inf ; --# notpresent
|
||||||
|
<Fut,Simul,CNeg c,ODir True> => vfn c (cBind "ll") (cBind "ll no") inf ; --# notpresent
|
||||||
|
<Fut,Simul,CNeg c,_> => vfn c "will" "winna" inf ; --# notpresent
|
||||||
|
<Fut,Anter,CPos,ODir True> => vf (cBind "ll") ("hae" ++ part) ; --# notpresent
|
||||||
|
<Fut,Anter,CPos,_> => vf "will" ("hae" ++ part) ; --# notpresent
|
||||||
|
<Fut,Anter,CNeg c,ODir True> => vfn c (cBind "ll") (cBind "ll no") ("hae" ++ part) ; --# notpresent
|
||||||
|
<Fut,Anter,CNeg c,_> => vfn c "will" "winna" ("hae" ++ part) ; --# notpresent
|
||||||
|
<Cond,Simul,CPos,ODir True> => vf (cBind "d") inf ; --# notpresent
|
||||||
|
<Cond,Simul,CPos,_> => vf "wad" inf ; --# notpresent
|
||||||
|
<Cond,Simul,CNeg c,ODir True> => vfn c (cBind "d") (cBind "d no") inf ; --# notpresent
|
||||||
|
<Cond,Simul,CNeg c,_> => vfn c "wad" "wadna" inf ; --# notpresent
|
||||||
|
<Cond,Anter,CPos,ODir True> => vf (cBind "d") ("hae" ++ part) ; --# notpresent
|
||||||
|
<Cond,Anter,CPos,_> => vf "wad" ("hae" ++ part) ; --# notpresent
|
||||||
|
<Cond,Anter,CNeg c,ODir True> => vfn c (cBind "d") (cBind "d no") ("hae" ++ part) ; --# notpresent
|
||||||
|
<Cond,Anter,CNeg c,_> => vfn c "wad" "wadna" ("hae" ++ part) ; --# notpresent
|
||||||
|
<Pres,Simul,CNeg c,_> => vfn c (scoDoes agr) (scoDoesnt agr) inf
|
||||||
|
} ;
|
||||||
|
|
||||||
|
auxVerbForms : Aux -> VerbForms = \verb ->
|
||||||
|
\\t,ant,cb,ord,agr =>
|
||||||
|
let b = case cb of {CPos => Pos ; _ => Neg} ;
|
||||||
|
inf = verb.inf ;
|
||||||
|
fin = verb.pres ! b ! agr ;
|
||||||
|
finp = verb.pres ! Pos ! agr ;
|
||||||
|
cfin = verb.contr ! b ! agr ;
|
||||||
|
cfinp = verb.contr ! Pos ! agr ;
|
||||||
|
part = verb.ppart
|
||||||
|
in case <t,ant,cb,ord> of {
|
||||||
|
<Pres,Anter,CPos,ODir True> => vf (haveContr agr) part ;
|
||||||
|
<Pres,Anter,CPos,_> => vf (scoHave agr) part ;
|
||||||
|
<Pres,Anter,CNeg c,ODir True> => vfn c (haveContr agr) (scoHavent agr) part ;
|
||||||
|
<Pres,Anter,CNeg c,_> => vfn c (scoHave agr) (scoHavent agr) part ;
|
||||||
|
<Past,Anter,CPos,ODir True> => vf (cBind "d") part ;
|
||||||
|
<Past,Anter,CPos,_> => vf "haed" part ;
|
||||||
|
<Past,Anter,CNeg c,ODir True> => vfn c (cBind "d") (cBind "d no") part ;
|
||||||
|
<Past,Anter,CNeg c,_> => vfn c "haed" "haedna" part ;
|
||||||
|
<Fut,Simul,CPos,ODir True> => vf (cBind "ll") inf ;
|
||||||
|
<Fut,Simul,CPos,_> => vf "will" inf ;
|
||||||
|
<Fut,Simul,CNeg c,ODir True> => vfn c (cBind "ll") (cBind "ll no") inf ;
|
||||||
|
<Fut,Simul,CNeg c,_> => vfn c "will" "winna" inf ;
|
||||||
|
<Fut,Anter,CPos,ODir True> => vf (cBind "ll") ("hae" ++ part) ;
|
||||||
|
<Fut,Anter,CPos,_> => vf "will" ("hae" ++ part) ;
|
||||||
|
<Fut,Anter,CNeg c,ODir True> => vfn c (cBind "ll") (cBind "ll no") ("hae" ++ part) ;
|
||||||
|
<Fut,Anter,CNeg c,_> => vfn c "will" "winna" ("hae" ++ part) ;
|
||||||
|
<Cond,Simul,CPos,ODir True> => vf (cBind "d") inf ;
|
||||||
|
<Cond,Simul,CPos,_> => vf "wad" inf ;
|
||||||
|
<Cond,Simul,CNeg c,ODir True> => vfn c (cBind "d") (cBind "d no") inf ;
|
||||||
|
<Cond,Simul,CNeg c,_> => vfn c "wad" "wadna" inf ;
|
||||||
|
<Cond,Anter,CPos,ODir True> => vf (cBind "d") ("hae" ++ part) ;
|
||||||
|
<Cond,Anter,CPos,_> => vf "wad" ("hae" ++ part) ;
|
||||||
|
<Cond,Anter,CNeg c,ODir True> => vfn c (cBind "d") (cBind "d no") ("hae" ++ part) ;
|
||||||
|
<Cond,Anter,CNeg c,_> => vfn c "wad" "wadna" ("hae" ++ part) ;
|
||||||
|
<Past,Simul,CPos,_> => vf (verb.past ! b ! agr) [] ; --# notpresent
|
||||||
|
<Past,Simul,CNeg c,_> => vfn c (verb.past ! Pos ! agr) (verb.past ! Neg ! agr) [] ; --# notpresent
|
||||||
|
<Pres,Simul,CPos,ODir True> => vf cfin [] ;
|
||||||
|
<Pres,Simul,CPos,_> => vf fin [] ;
|
||||||
|
<Pres,Simul,CNeg c,ODir True> => vfn c cfinp fin [] ;
|
||||||
|
<Pres,Simul,CNeg c,_> => vfn c finp fin []
|
||||||
|
} ;
|
||||||
|
|
||||||
|
infVP : VVType -> VP -> Bool -> Anteriority -> CPolarity -> Agr -> Str =
|
||||||
|
\typ,vp,ad_pos,ant,cb,a ->
|
||||||
|
case cb of {CPos => [] ; _ => "no"} ++
|
||||||
|
case ant of {
|
||||||
|
Simul => case typ of {
|
||||||
|
VVAux => vp.ad ! a ++ vp.inf ;
|
||||||
|
VVInf => case ad_pos of {
|
||||||
|
True => vp.ad ! a ++ "tae" ++ vp.inf ;
|
||||||
|
False => "tae" ++ vp.ad ! a ++ vp.inf
|
||||||
|
} ;
|
||||||
|
_ => vp.ad ! a ++ vp.prp
|
||||||
|
} ;
|
||||||
|
Anter => case typ of {
|
||||||
|
VVAux => "hae" ++ vp.ad ! a ++ vp.ptp ;
|
||||||
|
VVInf => case ad_pos of {
|
||||||
|
True => vp.ad ! a ++ "tae" ++ "hae" ++ vp.ptp ;
|
||||||
|
False => "tae" ++ "hae" ++ vp.ad ! a ++ vp.ptp
|
||||||
|
} ;
|
||||||
|
_ => "haein" ++ vp.ad ! a ++ vp.ptp
|
||||||
|
}
|
||||||
|
} ++ vp.p ++ vp.s2 ! a ++ vp.ext ;
|
||||||
|
|
||||||
|
scoHave : Agr -> Str = agrVerb "haes" "hae" ;
|
||||||
|
scoHavent : Agr -> Str = agrVerb "haesna" "haena" ;
|
||||||
|
scoDoes : Agr -> Str = agrVerb "dis" "dae" ;
|
||||||
|
scoDoesnt : Agr -> Str = agrVerb "disna" "dinna" ;
|
||||||
|
|
||||||
|
mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> {
|
||||||
|
s = \\t,a,b,o =>
|
||||||
|
let verb = mkVerbForms agr vp ! t ! a ! b ! o ! agr ;
|
||||||
|
compl = vp.s2 ! agr ++ vp.ext
|
||||||
|
in case o of {
|
||||||
|
ODir _ => subj ++ verb.aux ++ verb.adv ++ vp.ad ! agr ++
|
||||||
|
verb.fin ++ verb.inf ++ vp.p ++ compl ;
|
||||||
|
OQuest => verb.aux ++ subj ++ verb.adv ++ vp.ad ! agr ++
|
||||||
|
verb.fin ++ verb.inf ++ vp.p ++ compl
|
||||||
|
}
|
||||||
|
} ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,31 @@
|
|||||||
concrete SentenceSco of Sentence = SentenceEng ** {
|
concrete SentenceSco of Sentence = SentenceEng - [PredVP,PredSCVP,ImpVP,SlashVP,SlashVS,EmbedVP] **
|
||||||
}
|
open Prelude, ResSco in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
PredVP np vp = mkClause (np.s ! npNom) np.a vp ;
|
||||||
|
|
||||||
|
PredSCVP sc vp = mkClause sc.s (agrP3 Sg) vp ;
|
||||||
|
|
||||||
|
ImpVP vp = {
|
||||||
|
s = \\pol,n =>
|
||||||
|
let agr = AgP2 (numImp n) ;
|
||||||
|
verb = infVP VVAux vp False Simul CPos agr ;
|
||||||
|
dinna = case pol of {
|
||||||
|
CNeg True => "dinna" ;
|
||||||
|
CNeg False => "dae" ++ "no" ;
|
||||||
|
_ => []
|
||||||
|
}
|
||||||
|
in dinna ++ verb
|
||||||
|
} ;
|
||||||
|
|
||||||
|
SlashVP np vp =
|
||||||
|
mkClause (np.s ! npNom) np.a vp ** {c2 = vp.c2} ;
|
||||||
|
|
||||||
|
SlashVS np vs slash =
|
||||||
|
mkClause (np.s ! npNom) np.a
|
||||||
|
(insertObj (\\_ => conjThat ++ slash.s) (predV vs)) **
|
||||||
|
{c2 = slash.c2} ;
|
||||||
|
|
||||||
|
EmbedVP vp = {s = infVP VVInf vp False Simul CPos (agrP3 Sg)} ;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,2 +1,10 @@
|
|||||||
concrete StructuralSco of Structural = StructuralEng ** {
|
concrete StructuralSco of Structural = StructuralEng - [by8agent_Prep,from_Prep,to_Prep,with_Prep] **
|
||||||
|
open ParadigmsSco in {
|
||||||
|
|
||||||
|
lin
|
||||||
|
by8agent_Prep = mkPrep "bi" ;
|
||||||
|
from_Prep = mkPrep "frae" ;
|
||||||
|
to_Prep = mkPrep "tae" ;
|
||||||
|
with_Prep = mkPrep "wi" ;
|
||||||
|
|
||||||
}
|
}
|
||||||
+31
-2
@@ -1,6 +1,35 @@
|
|||||||
concrete VerbSco of Verb = VerbEng-[UseComp,UseCopula,PassV2] ** open ResSco in {
|
concrete VerbSco of Verb = VerbEng-[UseV,SlashV2a,Slash2V3,Slash3V3,
|
||||||
|
ComplVV,ComplVS,ComplVQ,ComplVA,SlashVV,SlashV2V,SlashV2VNP,SlashV2S,SlashV2Q,SlashV2A,
|
||||||
|
ReflVP,UseComp,UseCopula,PassV2] ** open Prelude, ResSco in {
|
||||||
|
|
||||||
lin UseComp comp = insertObj comp.s (predAux auxBe) ;
|
lin UseV = predV ;
|
||||||
|
|
||||||
|
SlashV2a v = predVc v ** {c2 = v.c2 ; gapInMiddle = False} ;
|
||||||
|
Slash2V3 v np =
|
||||||
|
insertObjc (\\_ => v.c2 ++ np.s ! NPAcc)
|
||||||
|
(predVc v ** {c2 = v.c3 ; gapInMiddle = False}) ;
|
||||||
|
Slash3V3 v np = insertObjc (\\_ => v.c3 ++ np.s ! NPAcc) (predVc v) ;
|
||||||
|
|
||||||
|
ComplVV v vp = insertObj (\\a => infVP v.typ vp False Simul CPos a) (predVV v) ;
|
||||||
|
ComplVS v s = insertExtra (conjThat ++ s.s) (predV v) ;
|
||||||
|
ComplVQ v q = insertExtra (q.s ! QIndir) (predV v) ;
|
||||||
|
ComplVA v ap = insertObj ap.s (predV v) ;
|
||||||
|
|
||||||
|
SlashVV vv vp = vp **
|
||||||
|
insertObj (\\a => infVP vv.typ vp False Simul CPos a) (predVV vv) ;
|
||||||
|
|
||||||
|
SlashV2V v vp =
|
||||||
|
insertObjc (\\a => v.c3 ++ infVP v.typ vp False Simul CPos a) (predVc v) ;
|
||||||
|
SlashV2VNP vv np vp = vp **
|
||||||
|
insertObjPre (\\_ => vv.c2 ++ np.s ! NPAcc)
|
||||||
|
(insertObjc (\\a => vv.c3 ++ infVP vv.typ vp False Simul CPos a) (predVc vv)) ;
|
||||||
|
SlashV2S v s = insertExtrac (conjThat ++ s.s) (predVc v) ;
|
||||||
|
SlashV2Q v q = insertExtrac (q.s ! QIndir) (predVc v) ;
|
||||||
|
SlashV2A v ap = insertObjc (\\a => v.c3 ++ ap.s ! a) (predVc v) ;
|
||||||
|
|
||||||
|
ReflVP v = insertObjPre (\\a => v.c2 ++ reflPron ! a) v ;
|
||||||
|
|
||||||
|
UseComp comp = insertObj comp.s (predAux auxBe) ;
|
||||||
UseCopula = predAux auxBe ;
|
UseCopula = predAux auxBe ;
|
||||||
PassV2 v = insertObj (\\_ => v.s ! VPPart ++ v.p) (predAux auxBe) ;
|
PassV2 v = insertObj (\\_ => v.s ! VPPart ++ v.p) (predAux auxBe) ;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user