diff options
| author | aarne <aarne@chalmers.se> | 2012-08-24 06:30:10 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2012-08-24 06:30:10 +0000 |
| commit | 2b77d3e0b05d59c9e7c5a9d50b3a850ddeed82dd (patch) | |
| tree | cb40c4fda2f40d68d3ae1b16c0eae10bd7d67279 /examples/extmini/ResCmn.gf | |
| parent | 57b260508c2fac00c15843003154d1cdf0ad083b (diff) | |
extended mini resource grammar in examples, with Eng, Ita, Cmn (Mandarin Chinese by Jolene)
Diffstat (limited to 'examples/extmini/ResCmn.gf')
| -rw-r--r-- | examples/extmini/ResCmn.gf | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/examples/extmini/ResCmn.gf b/examples/extmini/ResCmn.gf new file mode 100644 index 000000000..0ef4e58bf --- /dev/null +++ b/examples/extmini/ResCmn.gf @@ -0,0 +1,92 @@ +resource ResCmn = open Prelude in { +flags coding=utf8; +-- parameters + +param + TTense = TPres | TPerf | TPast | TFut ; + Aspect = Perf | DurStat | DurProg | Exper ; + Number = Sg | Pl ; + SForm = Phr PosType | Sent; + PosType = APhrase | NPhrase | VPhrase ; + DeForm = DeNoun | NdNoun ; -- parameter created for noun with/out partical "de" + +-- parts of speech + +oper + + VP = { verb : Verb ; compl : Str ; prePart : Str} ; + NP = {s : Str ; n : Number } ; + copula : Verb = { s = table { + True => table { _ => "是" }; + False => table { _ => "不是" }}; + vinf = "是" } ; + +-- for morphology + + Noun : Type = {s : Str; Counter: Str} ; + Adj : Type = {s : Str; monoSyl: Bool} ; + Verb : Type = {s : Bool => Aspect => Str ; vinf : Str} ; + + regNoun : Str -> Str -> Noun = \s,c -> {s = s; Counter = c}; + + mkAdj : Str -> Bool -> Adj = \s,b -> {s = s; monoSyl = b}; + + regVerb : (walk : Str) -> Verb = \v -> { + s = table { + True => table { Perf => v ++ "了" ; + DurStat => v ++ "着" ; + DurProg => "在" ++ v ; + Exper => v ++ "过" } ; + False => table {Perf => "不" ++ v ++ "了" ; + DurStat => "不" ++ v ; + DurProg => "没" ++ "在" ++ v ; + Exper => "没" ++ v ++ "过" }}; + vinf = v} ; + + mkVerb : (believe : Str) -> (PerfPart : Str) + -> (DurStatPart : Str) + -> (DurProgPart : Str) + -> (ExperPart : Str) -> Verb = \v,pp,ds,dp,ep -> { + s = table { + True => table { Perf => v ++ pp ; + DurStat => v ++ ds ; + DurProg => dp ++ v ; + Exper => v ++ ep } ; + False => table {Perf => "不" ++ v ++ pp ; + DurStat => "不" ++ v ; + DurProg => "没" ++ dp ++ v ; + Exper => "没" ++ v ++ ep }} ; + vinf = v} ; + +-- for structural words + + mkDet : Str -> Number -> {s : Str ; n : Number} = \s,n -> { + s = s ; + n = n + } ; + + pronNP : (s : Str) -> Number -> NP = \s,n -> { + s = s ; + n = n + } ; + + mkPrep : Str -> Str -> {s : Str ; prePart : Str} = \s,b -> { + s = s ; + prePart = b} ; + + mkAdv : Str -> Str -> {s : Str ; prePart : Str} = \b,s -> { + s = s ; + prePart = b} ; + + mkSubj : Str -> Str -> {prePart : Str ; sufPart : Str} = \p,s -> { + prePart = p ; + sufPart = s} ; + +-- Proper Noun + + PropN : (s : Str) -> Number -> NP = \s,n -> { + s = s ; + n = n + } ; + + } |
