diff options
| author | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2009-06-22 15:39:08 +0000 |
| commit | e89fdae2fa1626348d8025824a7469252fa85e42 (patch) | |
| tree | c7d46bbd0494043b4bd6f917a25a7687517d0547 /old-lib/resource/finnish/QuestionFin.gf | |
| parent | 3049b59b35b25381a7c6787444165c200d66e08b (diff) | |
next-lib renamed to lib, lib to old-lib
Diffstat (limited to 'old-lib/resource/finnish/QuestionFin.gf')
| -rw-r--r-- | old-lib/resource/finnish/QuestionFin.gf | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/old-lib/resource/finnish/QuestionFin.gf b/old-lib/resource/finnish/QuestionFin.gf new file mode 100644 index 000000000..f1dbc21f1 --- /dev/null +++ b/old-lib/resource/finnish/QuestionFin.gf @@ -0,0 +1,96 @@ +concrete QuestionFin of Question = CatFin ** open ResFin, Prelude in { + + flags optimize=all_subs ; + + lin + + QuestCl cl = { + s = \\t,a,p => cl.s ! t ! a ! p ! SQuest + } ; + + QuestVP ip vp = + let + cl = mkClause (subjForm (ip ** {isPron = False ; a = agrP3 ip.n}) vp.sc) (agrP3 ip.n) vp + in { + s = \\t,a,p => cl.s ! t ! a ! p ! SDecl + } ; + + QuestSlash ip slash = { + s = \\t,a,p => + let + cls = slash.s ! t ! a ! p ; + who = appCompl True p slash.c2 (ip ** {a = agrP3 ip.n ; isPron = False}) + in + who ++ cls + } ; + + QuestIAdv iadv cl = { + s = \\t,a,p => iadv.s ++ cl.s ! t ! a ! p ! SDecl + } ; + + QuestIComp icomp np = { + s = \\t,a,p => + let + vp = predV (verbOlla ** {sc = NPCase Nom ; qp = "ko"}) ; + cl = mkClause (subjForm np vp.sc) np.a vp ; + in + icomp.s ! np.a ++ cl.s ! t ! a ! p ! SDecl + } ; + + PrepIP p ip = {s = + appCompl True Pos p (ip ** {a = agrP3 ip.n ; isPron = False})} ; + + AdvIP ip adv = { + s = \\c => ip.s ! c ++ adv.s ; + n = ip.n + } ; + +-- The computation of $ncase$ is a special case of that in $NounFin.DetCN$, +-- since we don't have possessive suffixes or definiteness. +--- It could still be nice to have a common oper... + + IdetCN idet cn = let n = idet.n in { + s = \\c => + let + k = npform2case n c ; + ncase = case <k,idet.isNum> of { + <Nom, True> => NCase Sg Part ; -- mitkä kolme kytkintä + <_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi + _ => NCase n k -- mitkä kytkimet + } + in + idet.s ! k ++ cn.s ! ncase ; + n = n + } ; + + IdetIP idet = let n = idet.n in { + s = \\c => + let + k = npform2case n c ; + in + idet.s ! k ; + n = n + } ; + + IdetQuant idet num = + let + n = num.n ; + isn = num.isNum + in { + s = \\k => + let + ncase = case <k,isn> of { + <Nom, True> => NCase Sg Part ; -- mitkä kolme kytkintä + <_, True> => NCase Sg k ; -- miksi kolmeksi kytkimeksi + _ => NCase n k -- mitkä kytkimet + } + in + idet.s ! n ! k ++ num.s ! Sg ! k ; + n = n ; + isNum = isn + } ; + + CompIAdv a = {s = \\_ => a.s} ; + CompIP ip = {s = \\_ => ip.s ! NPCase Nom} ; + +} |
