1
0
forked from GitHub/gf-core

examples/discourse on Finnish discourse particles and their translations

This commit is contained in:
aarne
2011-02-08 12:30:13 +00:00
parent b380d4ba37
commit 55d15c9bf8
4 changed files with 139 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
abstract Discourse =
Lexicon,
Noun, Verb,
Adjective, Adverb,
Structural - [nobody_NP, nothing_NP],
Tense
** {
flags startcat = S ;
cat
Clause ; Part ;
fun
ClauseS : Part -> Temp -> Pol -> Clause -> S ; -- arihan juo nyt
SubjKinS : Part -> Temp -> Pol -> Clause -> S ; -- arikinhan juo nyt
VerbKinS : Part -> Temp -> Pol -> Clause -> S ; -- arihan juokin nyt
AdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- arihan juo nytkin
PreAdvKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nytkinhän ari juo
PreAdvS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän ari juo
PreAdvSubjKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän arikin juo
PreAdvVerbKinS : Part -> Temp -> Pol -> Adv -> Clause -> S ; -- nythän ari juokin
PreAdvAdvKinS : Part -> Temp -> Pol -> Adv -> Adv -> Clause -> S ; -- nythän ari juo täälläkin
--- AnterVerbS : Part -> PartKin -> Tense -> Pol -> Clause -> S ; -- arihan onkin juonut
--- doesn't put in right place
PredClause : NP -> VP -> Clause ;
noPart, han_Part, pa_Part, pas_Part, ko_Part, kos_Part, kohan_Part, pahan_Part : Part ;
}

View File

@@ -0,0 +1,54 @@
--# -path=.:alltenses
concrete DiscourseEng of Discourse =
LexiconEng,
NounEng, VerbEng,
AdjectiveEng, AdverbEng,
StructuralEng - [nobody_NP, nothing_NP],
TenseX
** open SyntaxEng, (P = ParadigmsEng), (R = ParamX), Prelude in {
lincat
Clause = {subj : NP ; vp : VP} ;
Part = Adv ;
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))) ;
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))))) ;
PreAdvAdvKinS part temp pol adv1 adv2 cl =
mkS adv1 (mkS part (mkS temp pol (mkCl cl.subj (mkVP (mkVP cl.vp adv2) (kin.s ! pol.p))))) ;
PredClause subj v = {subj = subj ; vp = v} ;
--- AnterVerbS part kin t pol cl =
--- mkS t anteriorAnt pol (mkCl (mkNP cl.subj part) (mkVP cl.vp (kin.s ! pol.p))) ;
noPart = P.mkAdv [] ;
han_Part = P.mkAdv "as you know" ;
pa_Part = P.mkAdv "and nobody else" ;
pas_Part = P.mkAdv "and nobody else" ;
ko_Part = P.mkAdv "whether" ;
kos_Part = P.mkAdv "whether" ;
kohan_Part = P.mkAdv "whether" ;
pahan_Part = P.mkAdv "and nobody else as you know" ;
oper
kin : {s : R.Polarity => Adv} =
{s = table {R.Pos => P.mkAdv "too" ; R.Neg => P.mkAdv "either"}} ;
}

View File

@@ -0,0 +1,53 @@
--# -path=.:alltenses
concrete DiscourseFin of Discourse =
LexiconFin,
NounFin, VerbFin - [SlashV2VNP,SlashVV],
AdjectiveFin, AdverbFin,
StructuralFin - [nobody_NP,nothing_NP],
TenseX
** open SyntaxFin, (P = ParadigmsFin), (R = ParamX), Prelude in {
lincat
Clause = {subj : NP ; vp : VP} ;
Part = Adv ;
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))) ;
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))))) ;
PreAdvAdvKinS part temp pol adv1 adv2 cl =
mkS adv1 (mkS part (mkS temp pol (mkCl cl.subj (mkVP (mkVP cl.vp adv2) (kin.s ! pol.p))))) ;
PredClause subj v = {subj = subj ; vp = v} ;
noPart = P.mkAdv [] ;
han_Part = P.mkAdv (glueTok "han") ;
pa_Part = P.mkAdv (glueTok "pa") ;
pas_Part = P.mkAdv (glueTok "pas") ;
ko_Part = P.mkAdv (glueTok "ko") ;
kos_Part = P.mkAdv (glueTok "kos") ;
kohan_Part = P.mkAdv (glueTok "kohan") ;
pahan_Part = P.mkAdv (glueTok "pahan") ;
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 ;
}