summaryrefslogtreecommitdiff
path: root/examples/discourse/DiscourseFin.gf
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2011-02-08 12:30:13 +0000
committeraarne <aarne@chalmers.se>2011-02-08 12:30:13 +0000
commit3c82593fdd59cb6d8861c5a7d37faa50cddbac3b (patch)
tree8caeca43c4770c153c2906d79fefa1b88b997bcf /examples/discourse/DiscourseFin.gf
parent12ad869c69835d2e46304e43b8b0892e1161b7d3 (diff)
examples/discourse on Finnish discourse particles and their translations
Diffstat (limited to 'examples/discourse/DiscourseFin.gf')
-rw-r--r--examples/discourse/DiscourseFin.gf53
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/discourse/DiscourseFin.gf b/examples/discourse/DiscourseFin.gf
new file mode 100644
index 000000000..6c577d086
--- /dev/null
+++ b/examples/discourse/DiscourseFin.gf
@@ -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 ;
+
+}