forked from GitHub/gf-core
extended mini resource grammar in examples, with Eng, Ita, Cmn (Mandarin Chinese by Jolene)
This commit is contained in:
92
examples/extmini/ResCmn.gf
Normal file
92
examples/extmini/ResCmn.gf
Normal file
@@ -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
|
||||
} ;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user