more general discourse particles in Finnish

This commit is contained in:
aarne
2011-02-09 16:42:15 +00:00
parent c2d382746e
commit 0bc1fbccf5
10 changed files with 164 additions and 94 deletions

View File

@@ -2,49 +2,29 @@
concrete DiscourseFin of Discourse =
LexiconFin,
NounFin, VerbFin - [SlashV2VNP,SlashVV],
NounFin, VerbFin - [SlashV2VNP,SlashVV, Slash2V3, Slash3V3],
AdjectiveFin, AdverbFin,
StructuralFin - [nobody_NP,nothing_NP],
TenseX
** open SyntaxFin, (P = ParadigmsFin), (R = ParamX), (E = ExtraFin), Prelude in {
lincat
Clause = {subj : NP ; vp : VP} ;
OClause = {subj : NP ; v : V2 ; obj : NP} ;
Part = Adv ;
Marker = E.Part ;
lin
ClauseS part temp pol cl =
mkS temp pol (mkCl (mkNP cl.subj part) cl.vp) ;
SubjKinS part temp pol cl =
mkS temp pol (mkCl (mkNP (mkNP cl.subj (kin.s ! pol.p)) part) cl.vp) ;
VerbKinS part temp pol cl =
mkS temp pol (mkCl (mkNP cl.subj part) (mkVP cl.vp (kin.s ! pol.p))) ;
AdvKinS part temp pol adv cl =
mkS temp pol (mkCl (mkNP cl.subj part) (mkVP (mkVP cl.vp adv) (kin.s ! pol.p))) ;
ClauseS marker temp pol np vp =
E.S_SVO marker temp pol (E.PredClPlus np vp) ;
FocSubjS marker temp pol np vp =
E.S_SVO marker temp pol (E.PredClPlusFocSubj np vp) ;
FocVerbS marker temp pol np vp =
E.S_SVO marker temp pol (E.PredClPlusFocVerb np vp) ;
FocObjS marker temp pol np vp obj =
E.S_SVO marker temp pol (E.PredClPlusFocObj np vp obj) ;
FocAdvS marker temp pol np vp adv =
E.S_SVO marker temp pol (E.PredClPlusFocAdv np vp adv) ;
PreAdvS part temp pol adv cl =
mkS adv (mkS part (mkS temp pol (mkCl cl.subj cl.vp))) ;
PreAdvKinS part temp pol adv cl =
mkS adv (mkS part (mkS (kin.s ! pol.p) (mkS temp pol (mkCl cl.subj cl.vp)))) ;
PreAdvSubjKinS part temp pol adv cl =
mkS adv (mkS part (mkS temp pol (mkCl (mkNP cl.subj (kin.s ! pol.p)) cl.vp))) ;
PreAdvVerbKinS part temp pol adv cl =
mkS adv (mkS part (mkS temp pol (mkCl cl.subj (mkVP cl.vp (kin.s ! pol.p))))) ;
PredClause subj v = {subj = subj ; vp = v} ;
PredOClause subj v obj = {subj = subj ; v = v ; obj = obj} ;
UseOClause oc = {subj = oc.subj ; vp = mkVP oc.v oc.obj} ;
noPart = P.mkAdv [] ;
han_Part = P.mkAdv (glueTok "han") ;
pa_Part = P.mkAdv (glueTok "pa") ;
pas_Part = P.mkAdv (glueTok "pas") ;
oper
kin : {s : R.Polarity => Adv} =
{s = table {R.Pos => P.mkAdv (glueTok "kin") ; R.Neg => P.mkAdv (glueTok "kaan")}} ;
glueTok : Str -> Str = \s -> "&+" ++ s ;
neutralMarker = E.noPart ;
remindMarker = E.han_Part ;
contrastMarker = E.pas_Part ;
}