future tense 'komma att' in scandinavian

This commit is contained in:
malin
2011-11-09 19:23:46 +00:00
parent 18ca88f9ed
commit 1ba9ffcff7
21 changed files with 82 additions and 50 deletions

View File

@@ -1,5 +1,5 @@
incomplete concrete CatScand of Cat =
CommonX ** open ResScand, Prelude, CommonScand, (R = ParamX) in {
CommonX -[Tense,Temp] ** open (RS = ResScand), Prelude, CommonScand, (R = ParamX) in {
flags optimize=all_subs ;
@@ -9,14 +9,14 @@ incomplete concrete CatScand of Cat =
S = {s : Order => Str} ;
QS = {s : QForm => Str} ;
RS = {s : Agr => Str ; c : NPForm} ;
RS = {s : Agr => RCase => Str ; c : NPForm} ;
SSlash = {s : Order => Str ; n3 : Agr => Str ; c2 : Complement} ;
-- Sentence
Cl = {s : R.Tense => Anteriority => Polarity => Order => Str} ;
Cl = {s : STense => Anteriority => Polarity => Order => Str} ;
ClSlash = {
s : R.Tense => Anteriority => Polarity => Order => Str ;
s : STense => Anteriority => Polarity => Order => Str ;
n3 : Agr => Str ;
c2 : Complement
} ;
@@ -24,7 +24,7 @@ incomplete concrete CatScand of Cat =
-- Question
QCl = {s : R.Tense => Anteriority => Polarity => QForm => Str} ;
QCl = {s : STense => Anteriority => Polarity => QForm => Str} ;
IP = {s : NPForm => Str ; g : Gender ; n : Number} ;
IComp = {s : AFormPos => Str} ;
IDet = {s : NGender => Str ; n : Number ; det : DetSpecies} ;
@@ -32,7 +32,7 @@ incomplete concrete CatScand of Cat =
-- Relative; the case $c$ is for "det" clefts.
RCl = {s : R.Tense => Anteriority => Polarity => Agr => Str ; c : NPForm} ;
RCl = {s : STense => Anteriority => Polarity => Agr => RCase => Str ; c : NPForm} ;
RP = {s : Gender => Number => RCase => Str ; a : RAgr} ;
-- Verb
@@ -102,4 +102,9 @@ incomplete concrete CatScand of Cat =
N3 = Noun ** {c2,c3 : Complement} ;
PN = {s : Case => Str ; g : Gender} ;
lincat
Temp = {s : Str ; t : STense ; a : Anteriority} ;
Tense = {s : Str ; t : STense} ;
}

View File

@@ -59,7 +59,7 @@ param
;
VPForm =
VPFinite Tense Anteriority
VPFinite STense Anteriority
| VPImperat
| VPInfinit Anteriority ;
@@ -73,6 +73,17 @@ param
PredetAgr = PNoAg | PAg Number ;
STense =
SPres
| SPast --# notpresent
| SFut --# notpresent
| SFutKommer --# notpresent -- komma att
| SCond --# notpresent
;
oper
Complement : Type = {s : Str ; hasPrep : Bool} ;
@@ -121,10 +132,10 @@ oper
-- Used in $DiffScand.predV$.
vFin : Tense -> Voice -> VForm = \t,v -> case t of {
Pres => VF (VPres v)
vFin : STense -> Voice -> VForm = \t,v -> case t of {
SPres => VF (VPres v)
; --# notpresent
Past => VF (VPret v) ; --# notpresent
SPast => VF (VPret v) ; --# notpresent
_ => VI (VInfin v) --# notpresent
} ;
@@ -315,7 +326,7 @@ oper
-- For $Sentence$.
Clause : Type = {
s : Tense => Anteriority => Polarity => Order => Str
s : STense => Anteriority => Polarity => Order => Str
} ;
mkClause : Str -> Agr -> VP -> Clause = \subj,agr,vp -> {

View File

@@ -17,7 +17,7 @@ incomplete concrete ConjunctionScand of Conjunction =
isPre = ss.isPre
} ;
ConjRS conj ss = conjunctDistrTable Agr conj ss ** {
ConjRS conj ss = conjunctDistrTable2 Agr RCase conj ss ** {
c = ss.c
} ;
@@ -43,8 +43,8 @@ incomplete concrete ConjunctionScand of Conjunction =
ConsNP xs x = consrTable NPForm comma xs x ** {a = conjAgr xs.a x.a} ;
BaseAP x y = twoTable AFormPos x y ** {isPre = andB x.isPre y.isPre} ;
ConsAP xs x = consrTable AFormPos comma xs x ** {isPre = andB xs.isPre x.isPre} ;
BaseRS x y = twoTable Agr x y ** {c = y.c} ;
ConsRS xs x = consrTable Agr comma xs x ** {c = xs.c} ;
BaseRS x y = twoTable2 Agr RCase x y ** {c = y.c} ;
ConsRS xs x = consrTable2 Agr RCase comma xs x ** {c = xs.c} ;
BaseIAdv = twoSS ;
ConsIAdv = consrSS comma ;
BaseCN = twoTable3 Number DetSpecies Case ;
@@ -56,7 +56,7 @@ incomplete concrete ConjunctionScand of Conjunction =
[IAdv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : NPForm => Str ; a : Agr} ;
[AP] = {s1,s2 : AFormPos => Str ; isPre : Bool} ;
[RS] = {s1,s2 : Agr => Str ; c : NPForm} ;
[RS] = {s1,s2 : Agr => RCase => Str ; c : NPForm} ;
[CN] = {s1,s2 : Number => DetSpecies => Case => Str} ; --- g : NGender ; isMod : Bool} ;
}

View File

@@ -42,7 +42,9 @@ interface DiffScand = open CommonScand, Prelude in {
verbBecome : Verb ;
auxFut : Str ;
auxFut : Str ; -- ska
auxFutKommer : Str ; -- "kommer"
auxFutPart : Str ; -- "til"
auxCond : Str ;
negation : Polarity => Str ;

View File

@@ -1,3 +1,5 @@
abstract ExtraScandAbs = Extra ** {
fun
TFutKommer : Tense ; --# notpresent
}

View File

@@ -176,13 +176,13 @@ incomplete concrete NounScand of Noun =
} ;
RelCN cn rs = let g = cn.g in {
s = \\n,d,c => cn.s ! n ! d ! c ++ rs.s ! agrP3 (ngen2gen g) n ;
s = \\n,d,c => cn.s ! n ! d ! c ++ rs.s ! agrP3 (ngen2gen g) n ! RNom ;
g = g ;
isMod = cn.isMod
} ;
RelNP np rs = {
s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ;
s = \\c => np.s ! c ++ "," ++ rs.s ! np.a ! RNom ;
a = np.a ;
isMod = np.isMod
} ;

View File

@@ -6,19 +6,19 @@ incomplete concrete RelativeScand of Relative =
lin
RelCl cl = {
s = \\t,a,p,ag =>
s = \\t,a,p,ag,_ =>
pronSuch ! gennumAgr ag ++ conjThat ++ cl.s ! t ! a ! p ! Sub ;
c = NPAcc
} ;
RelVP rp vp = {
s = \\t,ant,b,ag =>
s = \\t,ant,b,ag,rc =>
let
agr = case rp.a of {
RNoAg => ag ;
RAg g n p => {g = g ; n = n ; p = p}
} ;
cl = mkClause (rp.s ! ag.g ! ag.n ! RNom) agr vp
cl = mkClause (rp.s ! ag.g ! ag.n ! rc) agr vp
in
cl.s ! t ! ant ! b ! Sub ;
c = NPNom
@@ -29,7 +29,7 @@ incomplete concrete RelativeScand of Relative =
-- and the empty relative ("huset hon bor i") are defined in $ExtraScand$.
RelSlash rp slash = {
s = \\t,a,p,ag =>
s = \\t,a,p,ag,_ =>
let
agr = case rp.a of {
RNoAg => ag ;

View File

@@ -16,15 +16,20 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
Noun = {s : Number => Species => Case => Str ; g : NGender} ;
-- This function is here because it depends on $verbHave, auxFut, auxCond$.
-- needed for VP conjunction
param
VPIForm = VPIInf | VPISup ; ---- sup not yet used
predV : Verb -> VP = \verb ->
-- This function is here because it depends on $verbHave, auxFut, auxCond$.
oper
predV : Verb -> VP = \verb ->
let
diath = case verb.vtype of {
VPass => Pass ;
_ => Act
} ;
vfin : Tense -> Str = \t -> verb.s ! vFin t diath ;
vfin : STense -> Str = \t -> verb.s ! vFin t diath ;
vsup = verb.s ! VI (VSupin diath) ; --# notpresent
vinf = verb.s ! VI (VInfin diath) ;
@@ -32,8 +37,9 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
True => verbBe.s ;
_ => verbHave.s
} ;
har : Tense -> Str = \t -> auxv ! vFin t Act ;
har : STense -> Str = \t -> auxv ! vFin t Act ;
ha : Str = auxv ! VI (VInfin Act) ;
vf : Str -> Str -> {fin,inf : Str} = \fin,inf -> {
@@ -43,16 +49,18 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
in {
s = table {
VPFinite t Simul => case t of {
-- Pres | Past => vf (vfin t) [] ; -- the general rule
Past => vf (vfin t) [] ; --# notpresent
Fut => vf auxFut vinf ; --# notpresent
Cond => vf auxCond vinf ; --# notpresent
Pres => vf (vfin t) []
-- SPres | SPast => vf (vfin t) [] ; -- the general rule
SPast => vf (vfin t) [] ; --# notpresent
SFut => vf auxFut vinf ; --# notpresent
SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ vinf) ; --# notpresent
SCond => vf auxCond vinf ; --# notpresent
SPres => vf (vfin t) []
} ;
VPFinite t Anter => case t of { --# notpresent
Pres | Past => vf (har t) vsup ; --# notpresent
Fut => vf auxFut (ha ++ vsup) ; --# notpresent
Cond => vf auxCond (ha ++ vsup) --# notpresent
SPres | SPast => vf (har t) vsup ; --# notpresent
SFut => vf auxFut (ha ++ vsup) ; --# notpresent
SFutKommer => vf auxFutKommer (auxFutPart ++ infMark ++ ha ++ vsup) ; --# notpresent
SCond => vf auxCond (ha ++ vsup) --# notpresent
} ; --# notpresent
VPImperat => vf (verb.s ! VF (VImper diath)) [] ;
VPInfinit Anter => vf [] (ha ++ vsup) ; --# notpresent
@@ -68,9 +76,5 @@ interface ResScand = DiffScand ** open CommonScand, Prelude in {
en2,ea2,eext : Bool = False -- indicate if the field exists
} ;
-- needed for VP conjunction
param
VPIForm = VPIInf | VPISup ; ---- sup not yet used
}

View File

@@ -48,7 +48,7 @@ incomplete concrete SentenceScand of Sentence =
s = \\q => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! q
} ;
UseRCl t p cl = {
s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! r ;
s = \\r,rc => t.s ++ p.s ++ cl.s ! t.t ! t.a ! p.p ! r ! rc ;
c = cl.c
} ;
UseSlash t p cl = {
@@ -60,6 +60,6 @@ incomplete concrete SentenceScand of Sentence =
AdvS a s = {s = \\o => a.s ++ s.s ! Inv} ;
ExtAdvS a s = {s = \\o => a.s ++ "," ++ s.s ! Inv} ;
RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! agrP3 Neutr Sg} ; --- vilket
RelS s r = {s = \\o => s.s ! o ++ "," ++ r.s ! agrP3 Neutr Sg ! RPrep True } ; --- vilket
}