testing Predication with Swe

This commit is contained in:
aarne
2014-01-23 21:20:52 +00:00
parent 2c71e31a64
commit 7d41ff0b9f
3 changed files with 402 additions and 14 deletions

View File

@@ -8,19 +8,46 @@ param
lincat
Arg = {s : Str} ;
V = {v : Tense => Agr => Str ; c1 : Str ; c2 : Str} ;
VP = {v : Agr => Str * Str ; inf : Str ; c1 : Str ; c2 : Str ; adj,obj1,obj2 : Agr => Str ; adv : Str ; ext : Str} ;
Cl = {v : Str * Str ; inf : Str ; adj,obj1,obj2 : Str ; adv : Str ; ext : Str ; subj : Str} ;
V = {
v : Tense => Agr => Str ;
c1 : Str ;
c2 : Str
} ;
VP = {
v : Agr => Str * Str ;
inf : Str ;
c1 : Str ;
c2 : Str ;
adj,obj1,obj2 : Agr => Str ;
adv : Str ;
adV : Str ;
ext : Str
} ;
Cl = {
v : Str * Str ;
inf : Str ;
adj,obj1,obj2 : Str ;
adv : Str ;
adV : Str ;
ext : Str ;
subj : Str ;
c3 : Str
} ;
Temp = {s : Str ; t : Tense} ;
Pol = {s : Str ; p : Polarity} ;
NP = {s : Case => Str ; a : Agr} ;
Adv = {s : Str} ;
AdV = {s : Str} ;
S = {s : Str} ;
QS = {s : Str} ;
Utt = {s : Str} ;
AP = {s : Str ; c1 : Str ; c2 : Str ; obj1 : Agr => Str} ;
IP = {s : Str ; a : Agr} ;
Prep = {s : Str} ;
lin
aNone, aS, aV = {s = []} ;
@@ -37,7 +64,7 @@ lin
c1 = v.c1 ;
c2 = v.c2 ;
adj,obj1,obj2 = \\a => [] ;
adv = [] ;
adv,adV = [] ;
ext = [] ;
} ;
@@ -49,7 +76,7 @@ lin
adj = \\_ => ap.s ;
obj1 = ap.obj1 ;
obj2 = \\a => [] ;
adv = [] ;
adv,adV = [] ;
ext = [] ;
} ;
@@ -62,6 +89,7 @@ lin
obj1 = \\a => np.s ! Acc ;
obj2 = vp.obj2 ;
adv = vp.adv ;
adV = vp.adV ;
ext = vp.ext ;
} ;
@@ -74,6 +102,7 @@ lin
obj1 = vp.obj1 ;
obj2 = \\a => np.s ! Acc ;
adv = vp.adv ;
adV = vp.adV ;
ext = vp.ext ;
} ;
@@ -85,6 +114,7 @@ lin
adj = vp.adj ;
obj1 = vp.obj1 ;
obj2 = vp.obj2 ;
adV = vp.adV ;
adv = vp.adv ;
ext = (DeclCl (lin Cl cl)).s ;
} ;
@@ -97,6 +127,7 @@ lin
adj = vp.adj ;
obj1 = vp.obj1 ;
obj2 = \\a => infVP a vpo ;
adV = vp.adV ;
adv = vp.adv ;
ext = vp.ext ;
} ;
@@ -109,6 +140,7 @@ lin
adj = vp.adj ;
obj1 = vp.obj1 ;
obj2 = vp.obj2 ;
adV = vp.adV ;
adv = vp.adv ;
ext = (DeclCl (lin Cl cl)).s ;
} ;
@@ -121,6 +153,7 @@ lin
adj = vp.adj ;
obj1 = vp.obj1 ;
obj2 = \\a => infVP a vpo ;
adV = vp.adV ;
adv = vp.adv ;
ext = vp.ext ;
} ;
@@ -133,10 +166,24 @@ lin
adj = vp.adj ;
obj1 = vp.obj1 ;
obj2 = vp.obj2 ;
adV = vp.adV ;
adv = vp.adv ++ adv.s ;
ext = vp.ext ;
} ;
AdVVP adv _ vp = {
v = vp.v ;
inf = vp.inf ;
c1 = vp.c1 ;
c2 = vp.c2 ;
adj = vp.adj ;
obj1 = vp.obj1 ;
obj2 = vp.obj2 ;
adV = vp.adV ++ adv.s ;
adv = vp.adv ;
ext = vp.ext ;
} ;
ReflVP x vp = {
v = vp.v ;
inf = vp.inf ;
@@ -145,6 +192,7 @@ lin
adj = vp.adj ;
obj1 = \\a => reflPron a ;
obj2 = vp.obj2 ;
adV = vp.adV ;
adv = vp.adv ;
ext = vp.ext ;
} ;
@@ -157,6 +205,7 @@ lin
adj = vp.adj ;
obj1 = vp.obj1 ;
obj2 = \\a => reflPron a ;
adV = vp.adV ;
adv = vp.adv ;
ext = vp.ext ;
} ;
@@ -168,24 +217,40 @@ lin
adj = vp.adj ! np.a ;
obj1 = vp.c1 ++ vp.obj1 ! np.a ;
obj2 = vp.c2 ++ vp.obj2 ! np.a ;
adV = vp.adV ;
adv = vp.adv ;
ext = vp.ext ;
c3 = [] ; -- for one more prep to build ClSlash
} ;
PrepCl p x cl = {
subj = cl.subj ;
v = cl.v ;
inf = cl.inf ;
adj = cl.adj ;
obj1 = cl.obj1 ;
obj2 = cl.obj2 ;
adV = cl.adV ;
adv = cl.adv ;
ext = cl.ext ;
c3 = p.s ; -- for one more prep to build ClSlash
} ;
DeclCl cl = {
s = cl.subj ++ cl.v.p1 ++ cl.v.p2 ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext
s = cl.subj ++ cl.v.p1 ++ cl.adV ++ cl.v.p2 ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext
} ;
QuestCl cl = {
s = cl.v.p1 ++ cl.subj ++ cl.v.p2 ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext
s = cl.v.p1 ++ cl.subj ++ cl.adV ++ cl.v.p2 ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext
} ;
QuestVP ip vp = {
s = ip.s ++ (vp.v ! ip.a).p1 ++ (vp.v ! ip.a).p2 ++ vp.adj ! ip.a ++ vp.c1 ++ vp.obj1 ! ip.a ++ vp.c2 ++ vp.obj2 ! ip.a ++ vp.adv ++ vp.ext
s = ip.s ++ (vp.v ! ip.a).p1 ++ vp.adV ++ (vp.v ! ip.a).p2 ++ vp.adj ! ip.a ++ vp.c1 ++ vp.obj1 ! ip.a ++ vp.c2 ++ vp.obj2 ! ip.a ++ vp.adv ++ vp.ext
} ;
QuestSlash ip cl = {
s = ip.s ++ cl.v.p1 ++ cl.subj ++ cl.v.p2 ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext
s = ip.s ++ cl.v.p1 ++ cl.subj ++ cl.adV ++ cl.v.p2 ++ cl.adj ++ cl.obj1 ++ cl.obj2 ++ cl.adv ++ cl.ext ++ cl.c3
} ;
UttS s = s ;
@@ -208,9 +273,14 @@ lin
we_NP = {s = table {Nom => "we" ; Acc => "us"} ; a = Pl} ;
today_Adv = {s = "today"} ;
always_AdV = {s = "always"} ;
who_IP = {s = "who" ; a = Sg} ;
PrepNP p np = {s = p.s ++ np.s ! Acc} ;
with_Prep = {s = "with"} ;
oper
mkV = overload {
mkV : Str -> V = \s -> lin V {v = \\_,_ => s ; c1 = [] ; c2 = []} ;
@@ -236,6 +306,6 @@ oper
reflPron : Agr -> Str = \a -> case a of {Sg => "herself" ; Pl => "ourselves"} ;
infVP : Agr -> VP -> Str = \a,vp -> vp.inf ++ vp.adj ! a ++ vp.obj1 ! a ++ vp.obj2 ! a ++ vp.adv ++ vp.ext ;
infVP : Agr -> VP -> Str = \a,vp -> vp.adV ++ vp.inf ++ vp.adj ! a ++ vp.c1 ++ vp.obj1 ! a ++ vp.c2 ++ vp.obj2 ! a ++ vp.adv ++ vp.ext ;
}