mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-23 09:52:55 -06:00
fixes in clefts and V3 in Chi; new pinyin versions
This commit is contained in:
@@ -11,15 +11,15 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
|
|||||||
-- These fun's are generated from the list cat's.
|
-- These fun's are generated from the list cat's.
|
||||||
|
|
||||||
BaseS = twoSS ;
|
BaseS = twoSS ;
|
||||||
ConsS = consrSS thcomma ;
|
ConsS = consrSS duncomma ;
|
||||||
BaseAdv = twoSS ;
|
BaseAdv = twoSS ;
|
||||||
ConsAdv = consrSS thcomma ;
|
ConsAdv = consrSS duncomma ;
|
||||||
BaseNP = twoSS ;
|
BaseNP = twoSS ;
|
||||||
ConsNP = consrSS thcomma ;
|
ConsNP = consrSS duncomma ;
|
||||||
BaseAP = twoSS ;
|
BaseAP = twoSS ;
|
||||||
ConsAP = consrSS thcomma ;
|
ConsAP = consrSS duncomma ;
|
||||||
BaseRS = twoSS ;
|
BaseRS = twoSS ;
|
||||||
ConsRS = consrSS thcomma ;
|
ConsRS = consrSS duncomma ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
[S] = {s1,s2 : Str} ;
|
[S] = {s1,s2 : Str} ;
|
||||||
@@ -28,7 +28,4 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
|
|||||||
[AP] = {s1,s2 : Str} ;
|
[AP] = {s1,s2 : Str} ;
|
||||||
[RS] = {s1,s2 : Str} ;
|
[RS] = {s1,s2 : Str} ;
|
||||||
|
|
||||||
oper
|
|
||||||
thcomma : Str = [] ; ---- should be a space
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ concrete IdiomChi of Idiom = CatChi ** open Prelude, ResChi in {
|
|||||||
-- GenericCl vp = mkClause "有人" vp ; (meaning: there is a person)
|
-- GenericCl vp = mkClause "有人" vp ; (meaning: there is a person)
|
||||||
|
|
||||||
---- it is John who did it
|
---- it is John who did it
|
||||||
CleftNP np rs = mkClause np.s copula rs.s ;
|
CleftNP np rs = mkClause rs.s copula np.s ; -- did it + de + is I
|
||||||
|
|
||||||
CleftAdv ad s = mkClause ad.s (insertObj s (predV copula)) ; ---- it is here she slept
|
CleftAdv ad s = mkClause (s.s ++ possessive_s) copula ad.s ; -- she sleeps + de + is here
|
||||||
|
|
||||||
ExistNP np = mkClause [] (regVerb you_s) np.s ; ---- infl of you
|
ExistNP np = mkClause [] (regVerb you_s) np.s ; ---- infl of you
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ concrete IdiomChi of Idiom = CatChi ** open Prelude, ResChi in {
|
|||||||
|
|
||||||
ProgrVP vp = vp ; ----
|
ProgrVP vp = vp ; ----
|
||||||
|
|
||||||
ImpPl1 vp = ss (infVP vp) ; ----
|
ImpPl1 vp = ss (zan_s ++ men_s ++ infVP vp ++ ba0_s) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -238,7 +238,7 @@ Issues from
|
|||||||
London and New York,
|
London and New York,
|
||||||
2009.
|
2009.
|
||||||
|
|
||||||
p. 4 the dun-comma in lists
|
p. 4 the dun-comma in lists DONE
|
||||||
|
|
||||||
p. 28 "who is X" vs. "X is who"
|
p. 28 "who is X" vs. "X is who"
|
||||||
|
|
||||||
@@ -260,7 +260,7 @@ p. 97 AB -> AABB reduplication
|
|||||||
|
|
||||||
p. 104 non-gradable adjectives require shi: zhei tiao yu shi huo de -> keep this as general rule for APs so far
|
p. 104 non-gradable adjectives require shi: zhei tiao yu shi huo de -> keep this as general rule for APs so far
|
||||||
|
|
||||||
p. 106 it was Chinese that I studied -> move cleft to the end
|
p. 106 it was Chinese that I studied -> move cleft to the end DONE 16/10
|
||||||
|
|
||||||
p. 116 I did it better than you -> to implement
|
p. 116 I did it better than you -> to implement
|
||||||
|
|
||||||
@@ -272,7 +272,7 @@ p. 168 "can": hui/neng
|
|||||||
|
|
||||||
p. 174 negation and tense
|
p. 174 negation and tense
|
||||||
|
|
||||||
p. 185 yes/no
|
p. 185 yes/no DONE
|
||||||
|
|
||||||
p. 186 alternation questions
|
p. 186 alternation questions
|
||||||
|
|
||||||
@@ -280,7 +280,7 @@ p. 197 "or" haishi/huozhe
|
|||||||
|
|
||||||
p. 206 "please" in imperative
|
p. 206 "please" in imperative
|
||||||
|
|
||||||
p. 207 "let's" zanmen he yi bei ba
|
p. 207 "let's" zanmen he yi bei ba DONE 16/10
|
||||||
|
|
||||||
p. 242 coverbs
|
p. 242 coverbs
|
||||||
|
|
||||||
@@ -294,6 +294,27 @@ RGL implementation took 4 person weeks altogether. The remaining immediate fixes
|
|||||||
However, there is a lot of Chinese that we will leave outside the common RGL abstract syntax.
|
However, there is a lot of Chinese that we will leave outside the common RGL abstract syntax.
|
||||||
|
|
||||||
|
|
||||||
|
16/10
|
||||||
|
|
||||||
|
Some more changes in the (almost) complete Chi. It has 546 words:
|
||||||
|
|
||||||
|
0 1 2 3 4 5 6 7 8 9 、 。 一 七 万 丈 三 上 下 不 丑 业 丢 两 个 中 为 么 之 乎 乐 九 乞 书 买 了 争 事 二
|
||||||
|
云 五 些 亮 亲 人 什 今 从 他 以 们 件 会 但 位 何 你 候 做 停 像 儿 光 八 公 六 关 写 冰 冷 净 准 几 则 到
|
||||||
|
刺 前 副 割 劈 加 动 包 匹 医 十 千 单 卖 厂 厌 厚 去 又 友 发 变 只 可 台 右 叶 号 吃 名 后 吐 吗 吧 听 吸
|
||||||
|
吹 呕 呼 和 咬 咱 哪 唉 唱 商 啤 喜 喝 嘴 四 回 因 园 国 圆 土 在 地 场 坏 坐 块 城 堂 堆 塑 处 备 外 多 夜
|
||||||
|
大 天 太 夫 头 奇 套 女 奶 她 好 如 妹 妻 姑 娘 婚 婴 子 字 学 孩 它 宗 定 家 宽 寄 寓 察 对 寻 小 少 尖 尘
|
||||||
|
就 尾 屋 山 工 左 己 已 巴 市 师 希 常 帽 干 平 年 庄 店 座 开 弟 张 往 很 得 心 必 忘 怕 您 想 懂 我 或 战
|
||||||
|
房 所 扇 手 打 扔 把 报 拉 指 挖 挤 推 揉 握 搔 摄 摆 擦 收 敌 教 数 文 料 新 旁 旅 时 明 星 是 晚 暖 更 最
|
||||||
|
月 有 朋 服 望 期 木 本 术 朵 机 杀 村 条 来 杯 板 林 果 枝 架 某 树 校 根 桌 桶 棕 森 棵 椅 橡 欢 歌 止 此
|
||||||
|
死 母 每 比 毛 毯 水 求 汽 沙 没 河 油 法 泳 洗 活 流 浮 海 温 港 游 湖 湿 滑 满 滴 漂 火 灯 灰 炉 烂 烟 烧
|
||||||
|
热 然 爱 父 片 牙 牛 牧 物 狗 猎 猫 王 玩 现 球 理 瓶 生 甲 电 男 画 白 百 的 皮 盏 盐 盒 盖 直 看 眼 着 睛
|
||||||
|
睡 知 短 石 码 破 确 离 种 科 空 窄 窗 站 笑 笔 笨 第 等 答 简 算 箱 粒 红 约 纸 经 绑 结 给 绳 绿 缝 羊 羽
|
||||||
|
翅 翰 老 而 耳 聪 肉 肚 肝 肠 肪 胀 背 胶 胸 能 脂 脏 脖 脚 腿 膀 膝 膨 自 舌 船 艘 艺 花 苹 草 落 蓝 薄 虫
|
||||||
|
虱 虽 蛇 蛋 血 行 衣 表 衫 衬 袜 被 要 规 视 角 言 警 计 讨 语 说 请 读 谁 赢 走 起 趣 跑 距 路 跳 躺 车 转
|
||||||
|
轻 辆 边 过 近 还 这 远 通 道 那 酒 酪 里 重 金 钝 钢 铁 银 长 门 闭 问 间 闻 阳 阵 除 雨 雪 零 雾 非 面 革
|
||||||
|
靴 鞋 音 顶 项 须 颗 题 风 飞 饭 首 马 骨 鱼 鸟 黄 黎 黑 鼻 齿 ! , ?
|
||||||
|
|
||||||
|
Also updated the Pinyin version and created a Makefile to convert Chi to Cmn.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -44,10 +44,18 @@ resource ResChi = ParamX ** open Prelude in {
|
|||||||
zai_V = mkVerb "在" [] [] [] [] "不" ;
|
zai_V = mkVerb "在" [] [] [] [] "不" ;
|
||||||
fullstop_s = "。" ;
|
fullstop_s = "。" ;
|
||||||
questmark_s = "?" ;
|
questmark_s = "?" ;
|
||||||
exclmark_s = "!" ;
|
exclmark_s = "!" ;
|
||||||
ge_s = "个" ;
|
ge_s = "个" ;
|
||||||
di_s = "是" ; -- used in QuestSlash
|
di_s = "是" ; -- used in QuestSlash
|
||||||
ba_s = "把" ;
|
ba_s = "把" ; -- ba4, object marker
|
||||||
|
ba0_s = "吧" ; -- ba, used in imperatives
|
||||||
|
men_s = "们" ;
|
||||||
|
zan_s = "咱" ;
|
||||||
|
|
||||||
|
say_s = "说" ; -- used in embedded sentences: she answers him that we sleep
|
||||||
|
|
||||||
|
duncomma = "、" ;
|
||||||
|
chcomma = "," ;
|
||||||
|
|
||||||
emptyStr = [] ;
|
emptyStr = [] ;
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ where_IAdv = mkIAdvL "哪里" ;
|
|||||||
when_IAdv = mkIAdvL "什么时候" ;
|
when_IAdv = mkIAdvL "什么时候" ;
|
||||||
how_IAdv = mkIAdvL "如何" ;
|
how_IAdv = mkIAdvL "如何" ;
|
||||||
all_Predet = ssword "所有" ;
|
all_Predet = ssword "所有" ;
|
||||||
many_Det = mkDet "很多" DTPoss ;
|
many_Det = mkDet (word "很多") DTPoss ;
|
||||||
someSg_Det = mkDet (word "一些") Sg ;
|
someSg_Det = mkDet (word "一些") Sg ;
|
||||||
somePl_Det = mkDet (word "一些") Sg ;
|
somePl_Det = mkDet (word "一些") Sg ;
|
||||||
few_Det = mkDet "少" Pl ;
|
few_Det = mkDet "少" Pl ;
|
||||||
@@ -145,7 +145,7 @@ so_AdA = ssword "如此" ;
|
|||||||
somebody_NP = ssword "某人" ;
|
somebody_NP = ssword "某人" ;
|
||||||
something_NP = ssword "某事" ; -- [mark] in sent, it depends on the context
|
something_NP = ssword "某事" ; -- [mark] in sent, it depends on the context
|
||||||
somewhere_Adv = mkAdv "某处" ;
|
somewhere_Adv = mkAdv "某处" ;
|
||||||
that_Subj = mkSubj [] ", " ; -- that + S [mark] comma
|
that_Subj = mkSubj [] chcomma ; -- that + S [mark] comma
|
||||||
there7from_Adv = mkAdv "从那里" ; -- from there
|
there7from_Adv = mkAdv "从那里" ; -- from there
|
||||||
there7to_Adv = mkAdv "到那里" ;
|
there7to_Adv = mkAdv "到那里" ;
|
||||||
therefore_PConj = ssword "因此" ;
|
therefore_PConj = ssword "因此" ;
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
|
|||||||
|
|
||||||
SlashV2a v = predV v ** {c2 = v.c2 ; isPre = False} ;
|
SlashV2a v = predV v ** {c2 = v.c2 ; isPre = False} ;
|
||||||
|
|
||||||
Slash2V3 v np = insertObj np (predV v) ** {c2 = v.c3 ; isPre = True} ;
|
Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v) ** {c2 = v.c3 ; isPre = False} ; -- slot for third argument
|
||||||
Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2 ; isPre = False} ;
|
Slash3V3 v np = insertObj (mkNP (appPrep v.c3 np.s)) (predV v) ** {c2 = v.c2 ; isPre = True} ; -- slot for ba object
|
||||||
|
|
||||||
SlashV2A v ap = insertObj ap (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
SlashV2A v ap = insertObj ap (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
|
|
||||||
SlashV2V v vp = insertObj (mkNP (infVP vp)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
SlashV2V v vp = insertObj (mkNP (infVP vp)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
SlashV2S v s = insertObj s (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
SlashV2S v s = insertObj (ss (say_s ++ s.s)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
SlashV2Q v q = insertObj q (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
SlashV2Q v q = insertObj (ss (say_s ++ q.s)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
|
|
||||||
ComplVV v vp = {
|
ComplVV v vp = {
|
||||||
verb = v ;
|
verb = v ;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ concrete CatCmn of Cat = CommonX - [Tense, Temp, Adv] ** open ResCmn, Prelude in
|
|||||||
|
|
||||||
VP = ResCmn.VP ;
|
VP = ResCmn.VP ;
|
||||||
Comp = ResCmn.VP ;
|
Comp = ResCmn.VP ;
|
||||||
VPSlash = ResCmn.VP ** {c2 : Preposition} ;
|
VPSlash = ResCmn.VP ** {c2 : Preposition ; isPre : Bool} ; -- whether the missing arg is before verb
|
||||||
|
|
||||||
-- Adjective
|
-- Adjective
|
||||||
|
|
||||||
@@ -43,7 +43,8 @@ concrete CatCmn of Cat = CommonX - [Tense, Temp, Adv] ** open ResCmn, Prelude in
|
|||||||
|
|
||||||
CN = ResCmn.Noun ;
|
CN = ResCmn.Noun ;
|
||||||
NP, Pron = ResCmn.NP ;
|
NP, Pron = ResCmn.NP ;
|
||||||
Det, Quant = Determiner ;
|
Det = Determiner ;
|
||||||
|
Quant = Determiner ** {pl : Str} ;
|
||||||
Predet = {s : Str} ; ----
|
Predet = {s : Str} ; ----
|
||||||
Ord = {s : Str} ;
|
Ord = {s : Str} ;
|
||||||
Num = {s : Str ; numType : NumType} ;
|
Num = {s : Str ; numType : NumType} ;
|
||||||
@@ -52,7 +53,8 @@ concrete CatCmn of Cat = CommonX - [Tense, Temp, Adv] ** open ResCmn, Prelude in
|
|||||||
|
|
||||||
-- Numeral
|
-- Numeral
|
||||||
|
|
||||||
Numeral, Card, Digits = {s : Str} ;
|
Numeral = {s,p : Str} ;
|
||||||
|
Card, Digits = {s : Str} ;
|
||||||
|
|
||||||
-- Structural
|
-- Structural
|
||||||
|
|
||||||
|
|||||||
@@ -11,15 +11,15 @@ concrete ConjunctionCmn of Conjunction = CatCmn ** open ResCmn, Prelude, Coordin
|
|||||||
-- These fun's are generated from the list cat's.
|
-- These fun's are generated from the list cat's.
|
||||||
|
|
||||||
BaseS = twoSS ;
|
BaseS = twoSS ;
|
||||||
ConsS = consrSS thcomma ;
|
ConsS = consrSS duncomma ;
|
||||||
BaseAdv = twoSS ;
|
BaseAdv = twoSS ;
|
||||||
ConsAdv = consrSS thcomma ;
|
ConsAdv = consrSS duncomma ;
|
||||||
BaseNP = twoSS ;
|
BaseNP = twoSS ;
|
||||||
ConsNP = consrSS thcomma ;
|
ConsNP = consrSS duncomma ;
|
||||||
BaseAP = twoSS ;
|
BaseAP = twoSS ;
|
||||||
ConsAP = consrSS thcomma ;
|
ConsAP = consrSS duncomma ;
|
||||||
BaseRS = twoSS ;
|
BaseRS = twoSS ;
|
||||||
ConsRS = consrSS thcomma ;
|
ConsRS = consrSS duncomma ;
|
||||||
|
|
||||||
lincat
|
lincat
|
||||||
[S] = {s1,s2 : Str} ;
|
[S] = {s1,s2 : Str} ;
|
||||||
@@ -28,7 +28,4 @@ concrete ConjunctionCmn of Conjunction = CatCmn ** open ResCmn, Prelude, Coordin
|
|||||||
[AP] = {s1,s2 : Str} ;
|
[AP] = {s1,s2 : Str} ;
|
||||||
[RS] = {s1,s2 : Str} ;
|
[RS] = {s1,s2 : Str} ;
|
||||||
|
|
||||||
oper
|
|
||||||
thcomma : Str = [] ; ---- should be a space
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ concrete IdiomCmn of Idiom = CatCmn ** open Prelude, ResCmn in {
|
|||||||
-- GenericCl vp = mkClause "有人" vp ; (meaning: there is a person)
|
-- GenericCl vp = mkClause "有人" vp ; (meaning: there is a person)
|
||||||
|
|
||||||
---- it is John who did it
|
---- it is John who did it
|
||||||
CleftNP np rs = mkClause np.s copula rs.s ;
|
CleftNP np rs = mkClause rs.s copula np.s ; -- did it + de + is I
|
||||||
|
|
||||||
CleftAdv ad s = mkClause ad.s (insertObj s (predV copula)) ; ---- it is here she slept
|
CleftAdv ad s = mkClause (s.s ++ possessive_s) copula ad.s ; -- she sleeps + de + is here
|
||||||
|
|
||||||
ExistNP np = mkClause [] (regVerb you_s) np.s ; ---- infl of you
|
ExistNP np = mkClause [] (regVerb you_s) np.s ; ---- infl of you
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ concrete IdiomCmn of Idiom = CatCmn ** open Prelude, ResCmn in {
|
|||||||
|
|
||||||
ProgrVP vp = vp ; ----
|
ProgrVP vp = vp ; ----
|
||||||
|
|
||||||
ImpPl1 vp = ss (infVP vp) ; ----
|
ImpPl1 vp = ss (zan_s ++ men_s ++ infVP vp ++ ba0_s) ;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,35 +17,25 @@ lin
|
|||||||
green_A = mkA "lu:4" ; -- "lv"
|
green_A = mkA "lu:4" ; -- "lv"
|
||||||
walk_V = mkV "zou3" ; -- "zou"
|
walk_V = mkV "zou3" ; -- "zou"
|
||||||
sleep_V = mkV "shui4" ; -- "shui"
|
sleep_V = mkV "shui4" ; -- "shui"
|
||||||
---- arrive_V = mkV "dao4" "le" [] [] "guo4"; -- "dao"
|
|
||||||
love_V2 = mkV2 "ai4" ; -- "ai"
|
love_V2 = mkV2 "ai4" ; -- "ai"
|
||||||
watch_V2 = mkV2 "kan1" ; -- "kan"
|
watch_V2 = mkV2 "kan1" ; -- "kan"
|
||||||
--- please2_V2 = mkV "ma2fan2" ; -- "mafan"
|
|
||||||
--- believe_VS = mkV "xiang1xin4" ; -- "xiangxin"
|
|
||||||
know_VS = mkV "zhi1dao4" ; -- "zhidao"
|
know_VS = mkV "zhi1dao4" ; -- "zhidao"
|
||||||
wonder_VQ = mkV "hao3ji1" ; -- "haoqi"
|
wonder_VQ = mkV "hao3ji1" ; -- "haoqi"
|
||||||
john_PN = mkPN "yao1han4" ; -- "yuehan"
|
john_PN = mkPN "yao1han4" ; -- "yuehan"
|
||||||
--- mary_PN = mkPN "ma3li2" ; -- "mali"
|
|
||||||
|
|
||||||
|
|
||||||
-- Swadesh
|
-- Swadesh
|
||||||
|
|
||||||
--big_A = mkA "da4" ;
|
|
||||||
long_A = mkA "chang2" ;
|
long_A = mkA "chang2" ;
|
||||||
wide_A = mkA "kuan1" ;
|
wide_A = mkA "kuan1" ;
|
||||||
thick_A = mkA "hou4" ;
|
thick_A = mkA "hou4" ;
|
||||||
heavy_A = mkA "chong2" ;
|
heavy_A = mkA "chong2" ;
|
||||||
--small_A = mkA "xiao3" ;
|
|
||||||
short_A = mkA "duan3" ;
|
short_A = mkA "duan3" ;
|
||||||
narrow_A = mkA "zhai3" ;
|
narrow_A = mkA "zhai3" ;
|
||||||
thin_A = mkA "bo2" ; -- [mark] for person mkA "shou4"
|
thin_A = mkA "bo2" ; -- [mark] for person mkA "shou4"
|
||||||
--woman_N = mkN "nu:3ren2" ;
|
|
||||||
--man(adult_N = mkN "nan2ren2" ;
|
|
||||||
--man(human_N = mkN "ren2" ;
|
|
||||||
child_N = mkN "hai2zi3" ;
|
child_N = mkN "hai2zi3" ;
|
||||||
wife_N = mkN "qi1zi3" ;
|
wife_N = mkN "qi1zi3" ;
|
||||||
husband_N = mkN "zhang4fu1" ;
|
husband_N = mkN "zhang4fu1" ;
|
||||||
--father_N = mkN "fu4qin1" ;
|
|
||||||
animal_N = mkN "dong4wu4" "qi2"; -- [mark] added classifier for nouns
|
animal_N = mkN "dong4wu4" "qi2"; -- [mark] added classifier for nouns
|
||||||
fish_N = mkN "yu2" "tiao2";
|
fish_N = mkN "yu2" "tiao2";
|
||||||
bird_N = mkN "niao3" "qi2";
|
bird_N = mkN "niao3" "qi2";
|
||||||
@@ -53,7 +43,6 @@ dog_N = mkN "gou3" "qi2";
|
|||||||
louse_N = mkN "shi1" "qi2";
|
louse_N = mkN "shi1" "qi2";
|
||||||
snake_N = mkN "she2" "tiao2";
|
snake_N = mkN "she2" "tiao2";
|
||||||
worm_N = mkN "chong2" "qi2";
|
worm_N = mkN "chong2" "qi2";
|
||||||
--tree_N = mkN "shu4" ;
|
|
||||||
forest_N = mkN "sen1lin2" "pian1";
|
forest_N = mkN "sen1lin2" "pian1";
|
||||||
stick_N = mkN "shu4zhi1" ;
|
stick_N = mkN "shu4zhi1" ;
|
||||||
fruit_N = mkN "shui3guo3" ;
|
fruit_N = mkN "shui3guo3" ;
|
||||||
@@ -105,11 +94,9 @@ breathe_V = mkV "hu1xi1" ;
|
|||||||
laugh_V = mkV "xiao4" ;
|
laugh_V = mkV "xiao4" ;
|
||||||
see_V2 = mkV2 "kan1" ;
|
see_V2 = mkV2 "kan1" ;
|
||||||
hear_V2 = mkV2 "ting1" ;
|
hear_V2 = mkV2 "ting1" ;
|
||||||
--know_V = mkV "zhi1dao4" ;
|
|
||||||
think_V = mkV "xiang3" ;
|
think_V = mkV "xiang3" ;
|
||||||
smell_V = mkV "wen2" ; -- [mark] "xiu4" -> "wen2", "wen2" is the common form for smell.
|
smell_V = mkV "wen2" ; -- [mark] "xiu4" -> "wen2", "wen2" is the common form for smell.
|
||||||
fear_V2 = mkV2 "pa4" ;
|
fear_V2 = mkV2 "pa4" ;
|
||||||
--sleep_V = mkV "shui4" ;
|
|
||||||
live_V = mkV "huo2" ;
|
live_V = mkV "huo2" ;
|
||||||
die_V = mkV "si3" ;
|
die_V = mkV "si3" ;
|
||||||
kill_V2 = mkV2 "sha1" ;
|
kill_V2 = mkV2 "sha1" ;
|
||||||
@@ -123,7 +110,6 @@ scratch_V2 = mkV2 "sao1" ;
|
|||||||
dig_V = mkV "wa1" ;
|
dig_V = mkV "wa1" ;
|
||||||
swim_V = mkV "you2yong3" ;
|
swim_V = mkV "you2yong3" ;
|
||||||
fly_V = mkV "fei1" ;
|
fly_V = mkV "fei1" ;
|
||||||
--walk_V = mkV "zou3" ;
|
|
||||||
come_V = mkV "lai2" ;
|
come_V = mkV "lai2" ;
|
||||||
lie_V = mkV "tang3" ;
|
lie_V = mkV "tang3" ;
|
||||||
sit_V = mkV "zuo4" ;
|
sit_V = mkV "zuo4" ;
|
||||||
@@ -174,7 +160,6 @@ burn_V = mkV "shao1" ;
|
|||||||
road_N = mkN "lu4" "tiao2";
|
road_N = mkN "lu4" "tiao2";
|
||||||
mountain_N = mkN "shan1" "zuo4";
|
mountain_N = mkN "shan1" "zuo4";
|
||||||
red_A = mkA "hong2" ;
|
red_A = mkA "hong2" ;
|
||||||
--green_A = mkA "lu:4" ;
|
|
||||||
yellow_A = mkA "huang2" ;
|
yellow_A = mkA "huang2" ;
|
||||||
white_A = mkA "bai2" ;
|
white_A = mkA "bai2" ;
|
||||||
black_A = mkA "hei1" ;
|
black_A = mkA "hei1" ;
|
||||||
@@ -199,7 +184,7 @@ wet_A = mkA "shi1" ;
|
|||||||
dry_A = mkA "gan1" ;
|
dry_A = mkA "gan1" ;
|
||||||
correct_A = mkA "dui4" ;
|
correct_A = mkA "dui4" ;
|
||||||
near_A = mkA "jin4" ;
|
near_A = mkA "jin4" ;
|
||||||
far_A = mkA "yuan3" ;
|
--far_A = mkA "yuan3" ;
|
||||||
left_Ord = ss "zuo3" ;
|
left_Ord = ss "zuo3" ;
|
||||||
right_Ord = ss "you4" ;
|
right_Ord = ss "you4" ;
|
||||||
name_N = mkN "ming2zi4" ; -- [mark] "ming2" --> "ming2zi4"
|
name_N = mkN "ming2zi4" ; -- [mark] "ming2" --> "ming2zi4"
|
||||||
@@ -234,10 +219,8 @@ cow_N = mkN "niu2" "tou2";
|
|||||||
do_V2 = mkV2 "zuo4" ;
|
do_V2 = mkV2 "zuo4" ;
|
||||||
doctor_N = mkN "yi1sheng1" "ming2";
|
doctor_N = mkN "yi1sheng1" "ming2";
|
||||||
door_N = mkN "men2" "shan1";
|
door_N = mkN "men2" "shan1";
|
||||||
---easy_A2V = mkA "rong2yi4" ;
|
|
||||||
factory_N = mkN "gong1chang3" "jian1";
|
factory_N = mkN "gong1chang3" "jian1";
|
||||||
far_Adv = mkAdv "yuan3" ;
|
far_Adv = mkAdv "yuan3" ;
|
||||||
---father_N2 = mkN2 "fu4qin1" ;
|
|
||||||
fear_VS = mkVS (mkV "pa4") ;
|
fear_VS = mkVS (mkV "pa4") ;
|
||||||
find_V2 = mkV2 "fa1xian4" ;
|
find_V2 = mkV2 "fa1xian4" ;
|
||||||
forget_V2 = mkV2 "wang4" ;
|
forget_V2 = mkV2 "wang4" ;
|
||||||
@@ -245,20 +228,13 @@ friend_N = mkN "peng2you3" ;
|
|||||||
girl_N = mkN "gu1niang2" ;
|
girl_N = mkN "gu1niang2" ;
|
||||||
give_V3 = mkV3 "gei3" ;
|
give_V3 = mkV3 "gei3" ;
|
||||||
go_V = mkV "qu4" ;
|
go_V = mkV "qu4" ;
|
||||||
--go_N = mkN "wang3" ;
|
|
||||||
grammar_N = mkN "yu3fa3" ;
|
grammar_N = mkN "yu3fa3" ;
|
||||||
hat_N = mkN "mao4zi3" "ding3";
|
hat_N = mkN "mao4zi3" "ding3";
|
||||||
--take_N = mkN "dai4" ;
|
|
||||||
--have_N = mkN "you3" ;
|
|
||||||
--take_N = mkN "dai4" ;
|
|
||||||
--have_N = mkN "you3" ;
|
|
||||||
hill_N = mkN "shan1" "zuo4";
|
hill_N = mkN "shan1" "zuo4";
|
||||||
hope_VS = mkV "xi1wang4" ;
|
hope_VS = mkV "xi1wang4" ;
|
||||||
horse_N = mkN "ma3" "pi1";
|
horse_N = mkN "ma3" "pi1";
|
||||||
hot_A = mkA "re4" ;
|
hot_A = mkA "re4" ;
|
||||||
--how many_N = mkN "duo1shao3" ;
|
|
||||||
important_A = mkA "chong2yao1" ;
|
important_A = mkA "chong2yao1" ;
|
||||||
--heavy_A = mkA "chong2" ;
|
|
||||||
industry_N = mkN "gong1ye4" [];
|
industry_N = mkN "gong1ye4" [];
|
||||||
jump_V = mkV "tiao4" ;
|
jump_V = mkV "tiao4" ;
|
||||||
know_V2 = mkV2 "zhi1dao4" ;
|
know_V2 = mkV2 "zhi1dao4" ;
|
||||||
@@ -266,16 +242,11 @@ know_VQ = mkV "zhi1dao4" ;
|
|||||||
lamp_N = mkN "deng1" "zhan3";
|
lamp_N = mkN "deng1" "zhan3";
|
||||||
language_N = mkN "yu3yan2" "zhong3";
|
language_N = mkN "yu3yan2" "zhong3";
|
||||||
learn_V2 = mkV2 "xue2" ;
|
learn_V2 = mkV2 "xue2" ;
|
||||||
--leave_N = mkN "li2kai1" ;
|
|
||||||
leave_V2 = mkV2 "li2kai1" ; --[mark] "li2" --> "li2kai1", "li2" itself is either a morpheme, or a marker indicating distance
|
leave_V2 = mkV2 "li2kai1" ; --[mark] "li2" --> "li2kai1", "li2" itself is either a morpheme, or a marker indicating distance
|
||||||
--walk_N = mkN "zou3" ;
|
|
||||||
like_V2 = mkV2 "xi3huan1" ;
|
like_V2 = mkV2 "xi3huan1" ;
|
||||||
--be willing_N = mkN "yuan4yi4" ;
|
|
||||||
listen_V2 = mkV2 "ting1" ;
|
listen_V2 = mkV2 "ting1" ;
|
||||||
lose_V2 = mkV2 "diu1" ;
|
lose_V2 = mkV2 "diu1" ;
|
||||||
--love_N = mkN "xi3huan1" ;
|
|
||||||
love_V2 = mkV2 "ai4" ;
|
love_V2 = mkV2 "ai4" ;
|
||||||
---mother_N2 = mkN2 "ma1" ;
|
|
||||||
music_N = mkN "yin1le4" [] ; -- [mark] usually without classifier
|
music_N = mkN "yin1le4" [] ; -- [mark] usually without classifier
|
||||||
newspaper_N = mkN "bao4zhi3" "zhang1"; --[mark] "bao4" --> "bao4zhi3"
|
newspaper_N = mkN "bao4zhi3" "zhang1"; --[mark] "bao4" --> "bao4zhi3"
|
||||||
now_Adv = mkAdv "xian4zai4" ;
|
now_Adv = mkAdv "xian4zai4" ;
|
||||||
@@ -283,91 +254,43 @@ number_N = mkN "hao2ma3" ; -- [mark] "hao2" --> "hao2ma3"
|
|||||||
open_V2 = mkV2 "kai1" ;
|
open_V2 = mkV2 "kai1" ;
|
||||||
paint_V2A = mkV2A (mkV "hua4") ;
|
paint_V2A = mkV2A (mkV "hua4") ;
|
||||||
paper_N = mkN "zhi3" "zhang1";
|
paper_N = mkN "zhi3" "zhang1";
|
||||||
--place_N = mkN "defang1" ;
|
|
||||||
--part_N = mkN "bu4fen1" ;
|
|
||||||
pen_N = mkN "bi3" "qi2";
|
pen_N = mkN "bi3" "qi2";
|
||||||
--pen_N = mkN "gang1bi3" "qi2";
|
|
||||||
person_N = mkN "ren2" ;
|
person_N = mkN "ren2" ;
|
||||||
--beat_N = mkN "da2" ;
|
|
||||||
--pull_N = mkN "la1" ;
|
|
||||||
play_V2 = mkV2 "wan2" ; --[mark] "wan2er2" --> "wan2"
|
play_V2 = mkV2 "wan2" ; --[mark] "wan2er2" --> "wan2"
|
||||||
--perform_N = mkN "biao3yan3" ;
|
|
||||||
--have_N = mkN "you3" ;
|
|
||||||
put_V2 = mkV2 "bai3" ;
|
put_V2 = mkV2 "bai3" ;
|
||||||
--let go_N = mkN "fang4" ;
|
|
||||||
question_N = mkN "wen4ti2" ;
|
question_N = mkN "wen4ti2" ;
|
||||||
|
|
||||||
--be enough_N = mkN "gou4" ;
|
|
||||||
--very_N = mkN "hen3" ;
|
|
||||||
rain_V0 = mkV "xia4yu3";
|
rain_V0 = mkV "xia4yu3";
|
||||||
read_V2 = mkV2 "dou4" ;
|
read_V2 = mkV2 "dou4" ;
|
||||||
reason_N = mkN "dao4li3" ;
|
reason_N = mkN "dao4li3" ;
|
||||||
restaurant_N = mkN "fan4dian4" "jian1";
|
restaurant_N = mkN "fan4dian4" "jian1";
|
||||||
--appropriate_N = mkN "ge3shi4" ;
|
|
||||||
--correct_N = mkN "zheng1que4" ;
|
|
||||||
--run_N = mkN "pao3bu4" ;
|
|
||||||
run_V = mkV "pao3" ;
|
run_V = mkV "pao3" ;
|
||||||
--road_N = mkN "dao4" ;
|
|
||||||
school_N = mkN "xue2jiao4" "suo3";
|
school_N = mkN "xue2jiao4" "suo3";
|
||||||
science_N = mkN "ke1xue2" []; -- [mark] usually without classifier
|
science_N = mkN "ke1xue2" []; -- [mark] usually without classifier
|
||||||
sell_V3 = mkV3 "mai4" ;
|
sell_V3 = mkV3 "mai4" ;
|
||||||
--go_N = mkN "qu4" ;
|
|
||||||
send_V3 = mkV3 "ji4" ;
|
send_V3 = mkV3 "ji4" ;
|
||||||
--clap_N = mkN "pai1" ;
|
|
||||||
sheep_N = mkN "yang2" "qi2";
|
sheep_N = mkN "yang2" "qi2";
|
||||||
ship_N = mkN "chuan2" "sao1";
|
ship_N = mkN "chuan2" "sao1";
|
||||||
shoe_N = mkN "xie2" "qi2";
|
shoe_N = mkN "xie2" "qi2";
|
||||||
shop_N = mkN "shang1dian4" "jian1";
|
shop_N = mkN "shang1dian4" "jian1";
|
||||||
--of that kind_N = mkN "na3yang4" ;
|
|
||||||
--what_N = mkN "shen2ma" ;
|
|
||||||
song_N = mkN "ge1" "shou3";
|
song_N = mkN "ge1" "shou3";
|
||||||
--tell_N = mkN "jiang3" ;
|
|
||||||
speak_V2 = mkV2 "shui4" ;
|
speak_V2 = mkV2 "shui4" ;
|
||||||
--road_N = mkN "dao4" ;
|
|
||||||
--live_N = mkN "zhu4" ;
|
|
||||||
--act as_N = mkN "dang1" ;
|
|
||||||
student_N = mkN "xue2sheng1" "ming2" ;
|
student_N = mkN "xue2sheng1" "ming2" ;
|
||||||
table_N = mkN "zhuo1zi3" "zhang1";
|
table_N = mkN "zhuo1zi3" "zhang1";
|
||||||
--word_N = mkN "hua4" ;
|
|
||||||
talk_V3 = mkV3 "shui4" ;
|
talk_V3 = mkV3 "shui4" ;
|
||||||
--talk_N = mkN "tan2" ;
|
|
||||||
--education_N = mkN "jiao1yu4" ;
|
|
||||||
teach_V2 = mkV2 "jiao1" ;
|
teach_V2 = mkV2 "jiao1" ;
|
||||||
--coach_N = mkN "fu3dao3" ;
|
|
||||||
--teacher_N = mkN "xian1sheng1" ;
|
|
||||||
--master worker_N = mkN "shi1fu4" ;
|
|
||||||
teacher_N = mkN "lao3shi1" "ming2";
|
teacher_N = mkN "lao3shi1" "ming2";
|
||||||
television_N = mkN "dian4shi4" "tai2";
|
television_N = mkN "dian4shi4" "tai2";
|
||||||
--that_N = mkN "na3ge4" ;
|
|
||||||
--that_N = mkN "na3" ;
|
|
||||||
--from_N = mkN "cong1" ;
|
|
||||||
--by way of_N = mkN "tong1guo4" ;
|
|
||||||
--towards_N = mkN "xiang4" ;
|
|
||||||
--and_N = mkN "he2" ;
|
|
||||||
today_Adv = mkAdv "jin1tian1" ;
|
today_Adv = mkAdv "jin1tian1" ;
|
||||||
--now_N = mkN "xian4zai4" ;
|
|
||||||
--also_N = mkN "ye3" ;
|
|
||||||
train_N = mkN "huo3che1" "liang4";
|
train_N = mkN "huo3che1" "liang4";
|
||||||
travel_V = mkV "lu:3hang2" ;
|
travel_V = mkV "lu:3hang2" ;
|
||||||
--below_N = mkN "xia4bian1" ;
|
|
||||||
--understand_N = mkN "lejie3" ;
|
|
||||||
understand_V2 = mkV2 "dong3" ;
|
understand_V2 = mkV2 "dong3" ;
|
||||||
--recognize_N = mkN "ren4shi2" ;
|
|
||||||
--open up_N = mkN "tong1" ;
|
|
||||||
university_N = mkN "da4xue2" "suo3";
|
university_N = mkN "da4xue2" "suo3";
|
||||||
wait_V2 = mkV2 "deng3" ;
|
wait_V2 = mkV2 "deng3" ;
|
||||||
--need_N = mkN "xu1yao1" ;
|
|
||||||
watch_V2 = mkV2 "kan1" ;
|
watch_V2 = mkV2 "kan1" ;
|
||||||
--time_N = mkN "shi2hou4" ;
|
|
||||||
--wait_N = mkN "deng3" ;
|
|
||||||
--what_N = mkN "shen2ma" ;
|
|
||||||
--how_N = mkN "zen3ma" ;
|
|
||||||
win_V2 = mkV2 "ying2" ;
|
win_V2 = mkV2 "ying2" ;
|
||||||
--window_N = mkN "chuang1hu4" ;
|
|
||||||
window_N = mkN "chuang1" "shan1";
|
window_N = mkN "chuang1" "shan1";
|
||||||
wine_N = mkN "jiu3" "ping2";
|
wine_N = mkN "jiu3" "ping2";
|
||||||
--leave_N = mkN "li2" ;
|
|
||||||
--do_N = mkN "zuo4" ;
|
|
||||||
write_V2 = mkV2 "xie3" ;
|
write_V2 = mkV2 "xie3" ;
|
||||||
young_A = mkA "nian2qing1" ;
|
young_A = mkA "nian2qing1" ;
|
||||||
|
|
||||||
@@ -427,7 +350,7 @@ war_N = mkN "zhan4zheng1" "chang3" ; -- [mark] rewritten
|
|||||||
wood_N = mkN "mu4tou2" "kuai1" ; -- [mark] "mu4" --> "mu4tou2"
|
wood_N = mkN "mu4tou2" "kuai1" ; -- [mark] "mu4" --> "mu4tou2"
|
||||||
|
|
||||||
|
|
||||||
-- just missing
|
-- from scratch, by Jolene
|
||||||
|
|
||||||
lin
|
lin
|
||||||
alas_Interj = ssword "ai1" ;
|
alas_Interj = ssword "ai1" ;
|
||||||
|
|||||||
8
lib/src/chinese/pinyin/Makefile
Normal file
8
lib/src/chinese/pinyin/Makefile
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
all: cmn pinyin
|
||||||
|
|
||||||
|
pinyin:
|
||||||
|
runghc MkPinyin.hs
|
||||||
|
|
||||||
|
cmn:
|
||||||
|
cd .. ; runghc ../Clone.hs Chi Cmn ; mv *Cmn.gf pinyin/ ; cd pinyin
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import Pinyin (c2pMap, useMapGF, mkList)
|
import Numeric
|
||||||
|
|
||||||
main = do
|
main = do
|
||||||
s <- readFile pinyinFile
|
s <- readFile pinyinFile
|
||||||
@@ -7,9 +7,40 @@ main = do
|
|||||||
mapM_ (mkPinyin m) ["Lexicon", "Numeral", "Res", "Structural"]
|
mapM_ (mkPinyin m) ["Lexicon", "Numeral", "Res", "Structural"]
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
pinyinFile = "../pinyin.txt"
|
pinyinFile = "pinyin.txt"
|
||||||
|
|
||||||
mkPinyin ma mo = do
|
mkPinyin ma mo = do
|
||||||
s <- readFile (mo ++ "Chi.gf")
|
s <- readFile ("../" ++ runghc MkPinyin.hsmo ++ "Chi.gf")
|
||||||
writeFile (mo ++ "Cmn.gf") (useMapGF ma s)
|
writeFile (mo ++ "Cmn.gf") (useMapGF ma s)
|
||||||
|
|
||||||
|
|
||||||
|
--import Pinyin (c2pMap, useMapGF, mkList)
|
||||||
|
|
||||||
|
|
||||||
|
-- AR 3/10/2012
|
||||||
|
-- Chinese unicode - character - pinyin conversions
|
||||||
|
-- character data from http://www.linguanaut.com/chinese_alphabet2.htm
|
||||||
|
|
||||||
|
|
||||||
|
mkList ws = case ws of
|
||||||
|
c:w:ws -> (head (map (flip Numeric.showHex "" . fromEnum) c), (c, chop w)) : mkList ws
|
||||||
|
_ -> []
|
||||||
|
|
||||||
|
chop = words . map unslash
|
||||||
|
where
|
||||||
|
unslash '/' = ' '
|
||||||
|
unslash c = c
|
||||||
|
|
||||||
|
useMapGF m s = case s of
|
||||||
|
'C':'h':'i':'n':cs -> "Chin" ++ useMapGF m cs -- don't change Chinese, China
|
||||||
|
'C':'h':'i' :cs -> "Cmn" ++ useMapGF m cs -- to change language code Chi to Cmn
|
||||||
|
'"':cs -> '"':convert cs
|
||||||
|
c :cs -> c :useMapGF m cs
|
||||||
|
_ -> s
|
||||||
|
where
|
||||||
|
convert cs = case cs of
|
||||||
|
'"':s -> '"' : useMapGF m s
|
||||||
|
c :s -> maybe [c] (head . words) (Map.lookup [c] m) ++ convert s
|
||||||
|
_ -> cs
|
||||||
|
|
||||||
|
c2pMap ws = Map.fromList [(c,unwords ps) | (_,(c,ps)) <- ws]
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ concrete NounCmn of Noun = CatCmn ** open ResCmn, Prelude in {
|
|||||||
UsePN pn = pn ;
|
UsePN pn = pn ;
|
||||||
UsePron p = p ;
|
UsePron p = p ;
|
||||||
|
|
||||||
DetNP det = det ;
|
DetNP det = {s = det.s ++ ge_s} ; ----
|
||||||
|
|
||||||
PredetNP pred np = mkNP (pred.s ++ possessive_s ++ np.s) ;
|
PredetNP pred np = mkNP (pred.s ++ possessive_s ++ np.s) ;
|
||||||
|
|
||||||
@@ -19,7 +19,10 @@ concrete NounCmn of Noun = CatCmn ** open ResCmn, Prelude in {
|
|||||||
AdvNP np adv = mkNP (adv.s ++ possessive_s ++ np.s) ;
|
AdvNP np adv = mkNP (adv.s ++ possessive_s ++ np.s) ;
|
||||||
|
|
||||||
DetQuant quant num = {
|
DetQuant quant num = {
|
||||||
s = quant.s ++ num.s ;
|
s = case num.numType of {
|
||||||
|
NTFull => quant.pl ++ num.s ; -- to avoid yi in indef
|
||||||
|
_ => quant.s ++ num.s
|
||||||
|
} ;
|
||||||
detType = case num.numType of {
|
detType = case num.numType of {
|
||||||
NTFull => DTNum ; -- five
|
NTFull => DTNum ; -- five
|
||||||
NTVoid n => case quant.detType of {
|
NTVoid n => case quant.detType of {
|
||||||
@@ -33,15 +36,12 @@ concrete NounCmn of Noun = CatCmn ** open ResCmn, Prelude in {
|
|||||||
s = quant.s ++ num.s ++ ord.s ;
|
s = quant.s ++ num.s ++ ord.s ;
|
||||||
detType = case num.numType of {
|
detType = case num.numType of {
|
||||||
NTFull => DTNum ; -- five
|
NTFull => DTNum ; -- five
|
||||||
NTVoid n => case quant.detType of {
|
NTVoid n => DTFull n -- these/this ; also our, when ord is present
|
||||||
DTPoss => DTPoss ; -- our
|
|
||||||
_ => DTFull n -- these/this
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
PossPron p = {
|
PossPron p = {
|
||||||
s = p.s ++ possessive_s ;
|
s,pl = p.s ++ possessive_s ;
|
||||||
detType = DTPoss
|
detType = DTPoss
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -52,15 +52,15 @@ concrete NounCmn of Noun = CatCmn ** open ResCmn, Prelude in {
|
|||||||
NumDigits d = d ** {numType = NTFull} ;
|
NumDigits d = d ** {numType = NTFull} ;
|
||||||
OrdDigits d = {s = ordinal_s ++ d.s} ;
|
OrdDigits d = {s = ordinal_s ++ d.s} ;
|
||||||
|
|
||||||
NumNumeral numeral = numeral ** {hasC = True} ;
|
NumNumeral numeral = {s = numeral.p} ; -- liang instead of yi
|
||||||
OrdNumeral numeral = {s = ordinal_s ++ numeral.s} ;
|
OrdNumeral numeral = {s = ordinal_s ++ numeral.s} ;
|
||||||
|
|
||||||
AdNum adn num = {s = adn.s ++ num.s ; hasC = True} ;
|
AdNum adn num = {s = adn.s ++ num.s ; hasC = True} ;
|
||||||
|
|
||||||
OrdSuperl a = {s = superlative_s ++ a.s} ;
|
OrdSuperl a = {s = superlative_s ++ a.s} ;
|
||||||
|
|
||||||
DefArt = mkDet the_s ;
|
DefArt = mkQuant [] [] DTPoss ; -- use that_Quant if you want the_s
|
||||||
IndefArt = mkDet yi_s ; ---- in the plural ?
|
IndefArt = mkQuant yi_s [] (DTFull Sg) ; -- empty in the plural
|
||||||
|
|
||||||
MassNP cn = cn ;
|
MassNP cn = cn ;
|
||||||
|
|
||||||
|
|||||||
@@ -16,55 +16,53 @@ oper Wan : Zero => Str =
|
|||||||
|
|
||||||
oper mkD : Str -> Str -> Str = \x,_ -> word x ; -- hiding the "formal" version
|
oper mkD : Str -> Str -> Str = \x,_ -> word x ; -- hiding the "formal" version
|
||||||
|
|
||||||
--lincat Numeral = {s : Str} ;
|
lincat Digit = {s,p : Str} ;
|
||||||
lincat Digit = {s : Str} ;
|
lincat Sub10 = {s,p : Str} ;
|
||||||
lincat Sub10 = {s : Str} ;
|
lincat Sub100 = {inh : Zero ; s,p : Bform => Str} ;
|
||||||
lincat Sub100 = {inh : Zero ; s : Bform => Str} ;
|
lincat Sub1000 = {inh : Zero ; s,p : Qform => Str} ;
|
||||||
lincat Sub1000 = {inh : Zero ; s : Qform => Str} ;
|
lincat Sub1000000 = {s,p : Str} ;
|
||||||
lincat Sub1000000 = {s : Str} ;
|
lin num x0 = x0 ;
|
||||||
lin num x0 =
|
|
||||||
{s = x0.s} ;
|
|
||||||
|
|
||||||
-- 一二三四五六七八九十一百千
|
-- 一二三四五六七八九十一百千
|
||||||
--
|
--
|
||||||
|
|
||||||
lin n2 =
|
lin n2 =
|
||||||
{s = mkD "er4" "er4"} ;
|
{s = mkD "er4" "er4" ; p = "liang3"} ;
|
||||||
lin n3 =
|
lin n3 =
|
||||||
{s = mkD "san1" "san1"} ;
|
{s,p = mkD "san1" "san1"} ;
|
||||||
lin n4 =
|
lin n4 =
|
||||||
{s = mkD "si4" "si4"} ;
|
{s,p = mkD "si4" "si4"} ;
|
||||||
lin n5 =
|
lin n5 =
|
||||||
{s = mkD "wu3" "wu3"} ;
|
{s,p = mkD "wu3" "wu3"} ;
|
||||||
lin n6 =
|
lin n6 =
|
||||||
{s = mkD "liu4" "liu4"} ;
|
{s,p = mkD "liu4" "liu4"} ;
|
||||||
lin n7 =
|
lin n7 =
|
||||||
{s = mkD "qi1" "qi1"} ;
|
{s,p = mkD "qi1" "qi1"} ;
|
||||||
lin n8 =
|
lin n8 =
|
||||||
{s = mkD "ba1" "ba1"} ;
|
{s,p = mkD "ba1" "ba1"} ;
|
||||||
lin n9 =
|
lin n9 =
|
||||||
{s = mkD "jiu3" "jiu3"} ;
|
{s,p = mkD "jiu3" "jiu3"} ;
|
||||||
lin pot01 =
|
lin pot01 =
|
||||||
{s = mkD "yi1" "yi1"} ;
|
{s,p = mkD "yi1" "yi1"} ;
|
||||||
lin pot0 d =
|
lin pot0 d =
|
||||||
{s = d.s} ;
|
{s = d.s ; p = d.p} ;
|
||||||
lin pot110 =
|
lin pot110 =
|
||||||
{inh = nozero ;
|
{inh = nozero ;
|
||||||
s = table {
|
s,p = table {
|
||||||
shi => mkD "yi1shi2" "yi1shi2" ;
|
shi => mkD "yi1shi2" "yi1shi2" ;
|
||||||
shi0 => mkD "yi1shi2" "yi1shi2" ;
|
shi0 => mkD "yi1shi2" "yi1shi2" ;
|
||||||
wan => mkD "yi1wan4" "yi1wan4" ;
|
wan => mkD "yi1wan4" "yi1wan4" ;
|
||||||
wan0 => mkD "yi1wan4" "yi1wan4"}} ;
|
wan0 => mkD "yi1wan4" "yi1wan4"}} ;
|
||||||
lin pot111 =
|
lin pot111 =
|
||||||
{inh = nozero ;
|
{inh = nozero ;
|
||||||
s = table {
|
s,p = table {
|
||||||
shi => mkD "shi2yi1" "shi2yi1" ;
|
shi => mkD "shi2yi1" "shi2yi1" ;
|
||||||
shi0 => mkD "yi1shi2yi1" "yi1shi2yi1" ;
|
shi0 => mkD "yi1shi2yi1" "yi1shi2yi1" ;
|
||||||
wan => mkD "shi2yi1wan4" "shi2yi1wan4" ;
|
wan => mkD "shi2yi1wan4" "shi2yi1wan4" ;
|
||||||
wan0 => mkD "shi2yi1wan4" "shi2yi1wan4"}} ;
|
wan0 => mkD "shi2yi1wan4" "shi2yi1wan4"}} ;
|
||||||
lin pot1to19 d =
|
lin pot1to19 d =
|
||||||
{inh = nozero ;
|
{inh = nozero ;
|
||||||
s = table {
|
s,p = table {
|
||||||
shi => mkD "yi1shi2" "yi1shi2" ++ d.s ;
|
shi => mkD "yi1shi2" "yi1shi2" ++ d.s ;
|
||||||
shi0 => mkD "yi1shi2" "yi1shi2" ;
|
shi0 => mkD "yi1shi2" "yi1shi2" ;
|
||||||
wan => mkD "yi1wan4" "yi1wan4" ++ d.s ++ mkD "qian1" "qian1" ;
|
wan => mkD "yi1wan4" "yi1wan4" ++ d.s ++ mkD "qian1" "qian1" ;
|
||||||
@@ -75,17 +73,23 @@ lin pot0as1 n =
|
|||||||
shi => n.s ;
|
shi => n.s ;
|
||||||
shi0 => n.s ;
|
shi0 => n.s ;
|
||||||
wan => n.s ++ mkD "qian1" "qian1" ;
|
wan => n.s ++ mkD "qian1" "qian1" ;
|
||||||
wan0 => n.s ++ mkD "qian1" "qian1"}} ;
|
wan0 => n.s ++ mkD "qian1" "qian1"} ;
|
||||||
|
p = table {
|
||||||
|
shi => n.p ;
|
||||||
|
shi0 => n.s ;
|
||||||
|
wan => n.s ++ mkD "qian1" "qian1" ;
|
||||||
|
wan0 => n.s ++ mkD "qian1" "qian1"}
|
||||||
|
} ;
|
||||||
lin pot1 d =
|
lin pot1 d =
|
||||||
{inh = zero ;
|
{inh = zero ;
|
||||||
s = table {
|
s,p = table {
|
||||||
shi => d.s ++ mkD "shi2" "shi2" ;
|
shi => d.s ++ mkD "shi2" "shi2" ;
|
||||||
shi0 => d.s ++ mkD "shi2" "shi2" ;
|
shi0 => d.s ++ mkD "shi2" "shi2" ;
|
||||||
wan0 => d.s ++ "wan4" ;
|
wan0 => d.s ++ "wan4" ;
|
||||||
wan => d.s ++ "wan4"}} ;
|
wan => d.s ++ "wan4"}} ;
|
||||||
lin pot1plus d e =
|
lin pot1plus d e =
|
||||||
{inh = nozero ;
|
{inh = nozero ;
|
||||||
s = table {
|
s,p = table {
|
||||||
shi => d.s ++ mkD "shi2" "shi2" ++ e.s ;
|
shi => d.s ++ mkD "shi2" "shi2" ++ e.s ;
|
||||||
shi0 => d.s ++ mkD "shi2" "shi2" ++ e.s ;
|
shi0 => d.s ++ mkD "shi2" "shi2" ++ e.s ;
|
||||||
wan => d.s ++ "wan4" ++ e.s ++ mkD "qian1" "qian1" ;
|
wan => d.s ++ "wan4" ++ e.s ++ mkD "qian1" "qian1" ;
|
||||||
@@ -96,27 +100,32 @@ lin pot1as2 n =
|
|||||||
bai => n.s ! shi ;
|
bai => n.s ! shi ;
|
||||||
bai0 => n.s ! shi ;
|
bai0 => n.s ! shi ;
|
||||||
shiwan => n.s ! wan ;
|
shiwan => n.s ! wan ;
|
||||||
|
shiwan0 => n.s ! wan0} ;
|
||||||
|
p = table {
|
||||||
|
bai => n.p ! shi ;
|
||||||
|
bai0 => n.s ! shi ;
|
||||||
|
shiwan => n.s ! wan ;
|
||||||
shiwan0 => n.s ! wan0}} ;
|
shiwan0 => n.s ! wan0}} ;
|
||||||
lin pot2 d =
|
lin pot2 d =
|
||||||
{inh = zero ;
|
{inh = zero ;
|
||||||
s = table {
|
s,p = table {
|
||||||
bai => d.s ++ mkD "bai3" "bai3" ;
|
bai => d.s ++ mkD "bai3" "bai3" ;
|
||||||
bai0 => d.s ++ mkD "bai3" "bai3" ;
|
bai0 => d.s ++ mkD "bai3" "bai3" ;
|
||||||
shiwan0 => d.s ++ mkD "shi2wan4" "shi2wan4" ;
|
shiwan0 => d.s ++ mkD "shi2wan4" "shi2wan4" ;
|
||||||
shiwan => d.s ++ mkD "shi2wan4" "shi2wan4"}} ;
|
shiwan => d.s ++ mkD "shi2wan4" "shi2wan4"}} ;
|
||||||
lin pot2plus d e =
|
lin pot2plus d e =
|
||||||
{inh = nozero ;
|
{inh = nozero ;
|
||||||
s = table {
|
s,p = table {
|
||||||
bai => d.s ++ mkD "" "bai3" ++ (ling ! <e.inh,e.inh>) ++ e.s ! shi0 ;
|
bai => d.s ++ mkD "" "bai3" ++ (ling ! <e.inh,e.inh>) ++ e.s ! shi0 ;
|
||||||
bai0 => d.s ++ mkD "" "bai3" ++ (ling ! <e.inh,e.inh>) ++ e.s ! shi0 ;
|
bai0 => d.s ++ mkD "" "bai3" ++ (ling ! <e.inh,e.inh>) ++ e.s ! shi0 ;
|
||||||
shiwan => d.s ++ mkD "" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan ;
|
shiwan => d.s ++ mkD "" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan ;
|
||||||
shiwan0 => d.s ++ mkD "" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan0}} ;
|
shiwan0 => d.s ++ mkD "" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan0}} ;
|
||||||
lin pot2as3 n =
|
lin pot2as3 n =
|
||||||
{s = n.s ! bai} ;
|
{s = n.s ! bai ; p = n.p ! bai} ;
|
||||||
lin pot3 n =
|
lin pot3 n =
|
||||||
{s = n.s ! shiwan} ;
|
{s,p = n.s ! shiwan} ;
|
||||||
lin pot3plus n m =
|
lin pot3plus n m =
|
||||||
{s = (n.s ! shiwan0) ++ (ling ! <n.inh,m.inh>) ++ m.s ! bai0} ;
|
{s,p = (n.s ! shiwan0) ++ (ling ! <n.inh,m.inh>) ++ m.s ! bai0} ;
|
||||||
|
|
||||||
|
|
||||||
-- numerals as sequences of digits
|
-- numerals as sequences of digits
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
module Pinyin where
|
module Main where
|
||||||
|
|
||||||
import Numeric
|
import Numeric
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
@@ -45,8 +45,8 @@ useMapWith :: (String -> [String]) -> ([String] -> String) -> (String -> String)
|
|||||||
useMapWith ws uws deft m = uws . map (\w -> maybe (deft w) id (Map.lookup w m)) . ws
|
useMapWith ws uws deft m = uws . map (\w -> maybe (deft w) id (Map.lookup w m)) . ws
|
||||||
|
|
||||||
useMapGF m s = case s of
|
useMapGF m s = case s of
|
||||||
'C':'h':'i':'n':cs -> "Chin" ++ useMapGF m cs -- don't change Chinese, China
|
--- 'C':'h':'i':'n':cs -> "Chin" ++ useMapGF m cs -- don't change Chinese, China
|
||||||
'C':'h':'i' :cs -> "Cmn" ++ useMapGF m cs -- to change language code Chi to Cmn
|
--- 'C':'h':'i' :cs -> "Cmn" ++ useMapGF m cs -- to change language code Chi to Cmn
|
||||||
'"':cs -> '"':convert cs
|
'"':cs -> '"':convert cs
|
||||||
c :cs -> c :useMapGF m cs
|
c :cs -> c :useMapGF m cs
|
||||||
_ -> s
|
_ -> s
|
||||||
|
|||||||
@@ -42,18 +42,27 @@ resource ResCmn = ParamX ** open Prelude in {
|
|||||||
geng_s = "geng1" ; -- more, in comparison
|
geng_s = "geng1" ; -- more, in comparison
|
||||||
|
|
||||||
zai_V = mkVerb "zai4" [] [] [] [] "bu4" ;
|
zai_V = mkVerb "zai4" [] [] [] [] "bu4" ;
|
||||||
fullstop_s = "." ;
|
fullstop_s = "。" ;
|
||||||
questmark_s = "?" ;
|
questmark_s = "?" ;
|
||||||
exclmark_s = "!" ;
|
exclmark_s = "!" ;
|
||||||
ge_s = "ge4" ;
|
ge_s = "ge4" ;
|
||||||
di_s = "shi4" ; -- used in QuestSlash
|
di_s = "shi4" ; -- used in QuestSlash
|
||||||
|
ba_s = "ba3" ; -- ba4, object marker
|
||||||
|
ba0_s = "ba1" ; -- ba, used in imperatives
|
||||||
|
men_s = "men" ;
|
||||||
|
zan_s = "za2" ;
|
||||||
|
|
||||||
|
say_s = "shui4" ; -- used in embedded sentences: she answers him that we sleep
|
||||||
|
|
||||||
|
duncomma = "、" ;
|
||||||
|
chcomma = "," ;
|
||||||
|
|
||||||
emptyStr = [] ;
|
emptyStr = [] ;
|
||||||
|
|
||||||
|
|
||||||
-- Write the characters that constitute a word separately. This enables straightforward tokenization.
|
-- Write the characters that constitute a word separately. This enables straightforward tokenization.
|
||||||
|
|
||||||
bword : Str -> Str -> Str = \x,y -> x + y ; -- change to x ++ y to treat words as separate tokens
|
bword : Str -> Str -> Str = \x,y -> x + y ; -- change to x + y to treat words as single tokens
|
||||||
|
|
||||||
word : Str -> Str = \s -> case s of {
|
word : Str -> Str = \s -> case s of {
|
||||||
x@? + y@? + z@? + u@? => bword x (bword y (bword z u)) ;
|
x@? + y@? + z@? + u@? => bword x (bword y (bword z u)) ;
|
||||||
@@ -188,6 +197,7 @@ param
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
Determiner = {s : Str ; detType : DetType} ;
|
Determiner = {s : Str ; detType : DetType} ;
|
||||||
|
Quantifier = Determiner ** {pl : Str} ;
|
||||||
|
|
||||||
mkDet = overload {
|
mkDet = overload {
|
||||||
mkDet : Str -> Determiner = \s -> {s = s ; detType = DTFull Sg} ;
|
mkDet : Str -> Determiner = \s -> {s = s ; detType = DTFull Sg} ;
|
||||||
@@ -195,7 +205,11 @@ oper
|
|||||||
mkDet : Str -> DetType -> Determiner = \s,d -> {s = s ; detType = d} ;
|
mkDet : Str -> DetType -> Determiner = \s,d -> {s = s ; detType = d} ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
mkQuant : Str -> {s : Str} = ss ;
|
mkQuant = overload {
|
||||||
|
mkQuant : Str -> Quantifier = \s -> {s,pl = s ; detType = DTFull Sg} ;
|
||||||
|
mkQuant : Str -> DetType -> Quantifier = \s,d -> {s,pl = s ; detType = d} ;
|
||||||
|
mkQuant : Str -> Str -> DetType -> Quantifier = \s,p,d -> {s = s ; detType = d ; pl = p} ;
|
||||||
|
} ;
|
||||||
|
|
||||||
pronNP : (s : Str) -> NP = \s -> {
|
pronNP : (s : Str) -> NP = \s -> {
|
||||||
s = word s
|
s = word s
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ concrete StructuralCmn of Structural = CatCmn **
|
|||||||
lin
|
lin
|
||||||
every_Det = mkDet "mei3" Sg ;
|
every_Det = mkDet "mei3" Sg ;
|
||||||
|
|
||||||
this_Quant = mkDet "zhe4" ;
|
this_Quant = mkQuant "zhe4" ;
|
||||||
that_Quant = mkDet "na3" ;
|
that_Quant = mkQuant "na3" ;
|
||||||
|
|
||||||
i_Pron = pronNP "wo3" ;
|
i_Pron = pronNP "wo3" ;
|
||||||
youSg_Pron = pronNP "ni3" ;
|
youSg_Pron = pronNP "ni3" ;
|
||||||
@@ -49,7 +49,7 @@ where_IAdv = mkIAdvL "na3li3" ;
|
|||||||
when_IAdv = mkIAdvL "shen2mashi2hou4" ;
|
when_IAdv = mkIAdvL "shen2mashi2hou4" ;
|
||||||
how_IAdv = mkIAdvL "ru2he2" ;
|
how_IAdv = mkIAdvL "ru2he2" ;
|
||||||
all_Predet = ssword "suo3you3" ;
|
all_Predet = ssword "suo3you3" ;
|
||||||
many_Det = mkDet "duo1" Pl ;
|
many_Det = mkDet (word "hen3duo1") DTPoss ;
|
||||||
someSg_Det = mkDet (word "yi1xie1") Sg ;
|
someSg_Det = mkDet (word "yi1xie1") Sg ;
|
||||||
somePl_Det = mkDet (word "yi1xie1") Sg ;
|
somePl_Det = mkDet (word "yi1xie1") Sg ;
|
||||||
few_Det = mkDet "shao3" Pl ;
|
few_Det = mkDet "shao3" Pl ;
|
||||||
@@ -69,9 +69,9 @@ under_Prep = mkPrep "xia4" ;
|
|||||||
why_IAdv = mkIAdvL "wei2shen2ma" ;
|
why_IAdv = mkIAdvL "wei2shen2ma" ;
|
||||||
too_AdA = mkAdA "tai4" ;
|
too_AdA = mkAdA "tai4" ;
|
||||||
|
|
||||||
before_Prep = mkPrep "cong1qian2" ; --s
|
before_Prep = mkPrep "cong1qian2" ;
|
||||||
between_Prep = mkPrep "zhi1jian1" ; --s
|
between_Prep = mkPrep "zhi1jian1" ;
|
||||||
but_PConj = mkPConjL "dan4shi4" ; --s
|
but_PConj = mkPConjL "dan4shi4" ;
|
||||||
|
|
||||||
|
|
||||||
can_VV = mkVerb "neng2" [] [] [] [] "bu4" ;
|
can_VV = mkVerb "neng2" [] [] [] [] "bu4" ;
|
||||||
@@ -81,33 +81,26 @@ but_PConj = mkPConjL "dan4shi4" ; --s
|
|||||||
can8know_VV = mkV "hui4" [] [] [] [] "bu4" ; ----
|
can8know_VV = mkV "hui4" [] [] [] [] "bu4" ; ----
|
||||||
|
|
||||||
|
|
||||||
except_Prep = mkPrep "chu2le" "yi3wai4" ; --s
|
except_Prep = mkPrep "chu2le" "yi3wai4" ;
|
||||||
for_Prep = mkPrep "wei2le" ; --s
|
for_Prep = mkPrep "wei2le" ;
|
||||||
from_Prep = mkPrep "cong1" ; --s
|
from_Prep = mkPrep "cong1" ;
|
||||||
---how8many_IDet = mkIDet "ji1" ; --s
|
in8front_Prep = mkPrep "qian2bian1" ;
|
||||||
---how8much_IDet = mkIDet "duo1shao3" ; --s
|
it_Pron = pronNP "ta1" ;
|
||||||
in8front_Prep = mkPrep "qian2bian1" ; --s
|
much_Det = mkDet "duo1" Sg ;
|
||||||
it_Pron = pronNP "ta1" ; --s
|
no_Quant = mkQuant "bu4" ;
|
||||||
---less_CAdv = mkCAdv "shao3" ; --s
|
|
||||||
much_Det = mkDet "duo1" Sg ; --s
|
|
||||||
---more_CAdv = mkCAdv "geng1" ; --s
|
|
||||||
---most_Predet = mkPredet "zui4" ; --s
|
|
||||||
no_Quant = mkDet "bu4" ; --s
|
|
||||||
not_Predet = ssword "bu4" ;
|
not_Predet = ssword "bu4" ;
|
||||||
---only_Predet = mkPredet "qi2" ; --s
|
otherwise_PConj = mkPConjL "hai2shi4" ;
|
||||||
otherwise_PConj = mkPConjL "hai2shi4" ; --s
|
to_Prep = mkPrep "wang3" ;
|
||||||
to_Prep = mkPrep "wang3" ; --s
|
|
||||||
---which_IQuant = mkIQuant "na3" ; --s
|
|
||||||
|
|
||||||
have_V2 = mkV2 "you3" ;
|
have_V2 = mkV2 "you3" ;
|
||||||
|
|
||||||
yes_Utt = ss copula_s ;
|
yes_Utt = ss "dui4" ;
|
||||||
no_Utt = ss neg_s ;
|
no_Utt = ss neg_s ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
mkConjForm : Str -> {s1,s2 : Str} = \s -> {s1 = [] ; s2 = word s} ;
|
mkConjForm : Str -> {s1,s2 : Str} = \s -> {s1 = [] ; s2 = word s} ;
|
||||||
|
|
||||||
-- manually by AR
|
-- manually by AR, Jolene
|
||||||
|
|
||||||
lin
|
lin
|
||||||
always_AdV = ssword "yi1zhi2" ;
|
always_AdV = ssword "yi1zhi2" ;
|
||||||
@@ -152,12 +145,13 @@ so_AdA = ssword "ru2ci3" ;
|
|||||||
somebody_NP = ssword "mou3ren2" ;
|
somebody_NP = ssword "mou3ren2" ;
|
||||||
something_NP = ssword "mou3shi4" ; -- [mark] in sent, it depends on the context
|
something_NP = ssword "mou3shi4" ; -- [mark] in sent, it depends on the context
|
||||||
somewhere_Adv = mkAdv "mou3chu3" ;
|
somewhere_Adv = mkAdv "mou3chu3" ;
|
||||||
that_Subj = mkSubj [] ", " ; -- that + S [mark] comma
|
that_Subj = mkSubj [] chcomma ; -- that + S [mark] comma
|
||||||
there7from_Adv = mkAdv "cong1na3li3" ; -- from there
|
there7from_Adv = mkAdv "cong1na3li3" ; -- from there
|
||||||
there7to_Adv = mkAdv "dao4na3li3" ;
|
there7to_Adv = mkAdv "dao4na3li3" ;
|
||||||
therefore_PConj = ssword "yin1ci3" ;
|
therefore_PConj = ssword "yin1ci3" ;
|
||||||
through_Prep = mkPrep "tong1guo4" ;
|
through_Prep = mkPrep "tong1guo4" ;
|
||||||
which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context
|
which_IQuant = mkIQuant "na3" ;
|
||||||
|
--which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context
|
||||||
without_Prep = mkPrep "mei2you3" [];
|
without_Prep = mkPrep "mei2you3" [];
|
||||||
youPol_Pron = ssword "nin2" ; -- polite you
|
youPol_Pron = ssword "nin2" ; -- polite you
|
||||||
|
|
||||||
|
|||||||
@@ -5,16 +5,16 @@ concrete VerbCmn of Verb = CatCmn ** open ResCmn, Prelude in {
|
|||||||
lin
|
lin
|
||||||
UseV = predV ;
|
UseV = predV ;
|
||||||
|
|
||||||
SlashV2a v = predV v ** {c2 = v.c2} ;
|
SlashV2a v = predV v ** {c2 = v.c2 ; isPre = False} ;
|
||||||
|
|
||||||
Slash2V3 v np = insertObj np (predV v) ** {c2 = v.c3} ; ---- to check arg order
|
Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v) ** {c2 = v.c3 ; isPre = False} ; -- slot for third argument
|
||||||
Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2} ;
|
Slash3V3 v np = insertObj (mkNP (appPrep v.c3 np.s)) (predV v) ** {c2 = v.c2 ; isPre = True} ; -- slot for ba object
|
||||||
|
|
||||||
SlashV2A v ap = insertObj ap (predV v) ** {c2 = v.c2} ;
|
SlashV2A v ap = insertObj ap (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
|
|
||||||
SlashV2V v vp = insertObj (mkNP (infVP vp)) (predV v) ** {c2 = v.c2} ;
|
SlashV2V v vp = insertObj (mkNP (infVP vp)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
SlashV2S v s = insertObj s (predV v) ** {c2 = v.c2} ;
|
SlashV2S v s = insertObj (ss (say_s ++ s.s)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
SlashV2Q v q = insertObj q (predV v) ** {c2 = v.c2} ;
|
SlashV2Q v q = insertObj (ss (say_s ++ q.s)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||||
|
|
||||||
ComplVV v vp = {
|
ComplVV v vp = {
|
||||||
verb = v ;
|
verb = v ;
|
||||||
@@ -26,16 +26,19 @@ concrete VerbCmn of Verb = CatCmn ** open ResCmn, Prelude in {
|
|||||||
ComplVQ v q = insertObj q (predV v) ;
|
ComplVQ v q = insertObj q (predV v) ;
|
||||||
ComplVA v ap = insertObj ap (predV v) ;
|
ComplVA v ap = insertObj ap (predV v) ;
|
||||||
|
|
||||||
ComplSlash vp np = insertObj (mkNP (appPrep vp.c2 np.s)) vp ;
|
ComplSlash vp np = case vp.isPre of {
|
||||||
|
True => insertAdv (mkNP (ba_s ++ np.s)) vp ; --- ba or vp.c2 ?
|
||||||
|
False => insertObj (mkNP (appPrep vp.c2 np.s)) vp
|
||||||
|
} ;
|
||||||
|
|
||||||
UseComp comp = comp ;
|
UseComp comp = comp ;
|
||||||
|
|
||||||
SlashVV v vp = ---- too simple?
|
SlashVV v vp = ---- too simple?
|
||||||
insertObj (mkNP (infVP vp)) (predV v) ** {c2 = vp.c2} ;
|
insertObj (mkNP (infVP vp)) (predV v) ** {c2 = vp.c2 ; isPre = vp.isPre} ;
|
||||||
|
|
||||||
SlashV2VNP v np vp =
|
SlashV2VNP v np vp =
|
||||||
insertObj np
|
insertObj np
|
||||||
(insertObj (mkNP (infVP vp)) (predV v)) ** {c2 = vp.c2} ;
|
(insertObj (mkNP (infVP vp)) (predV v)) ** {c2 = vp.c2 ; isPre = vp.isPre} ;
|
||||||
|
|
||||||
AdvVP vp adv = case adv.advType of {
|
AdvVP vp adv = case adv.advType of {
|
||||||
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps well
|
ATManner => insertObj (ss (deVAdv_s ++ adv.s)) vp ; -- he sleeps well
|
||||||
@@ -48,7 +51,7 @@ concrete VerbCmn of Verb = CatCmn ** open ResCmn, Prelude in {
|
|||||||
|
|
||||||
PassV2 v = insertObj (mkNP passive_s) (predV v) ; ----
|
PassV2 v = insertObj (mkNP passive_s) (predV v) ; ----
|
||||||
|
|
||||||
CompAP ap = insertObj (mkNP ap.s) (predV copula) ; ---- hen / bu
|
CompAP ap = insertObj (mkNP (ap.s ++ possessive_s)) (predV copula) ; ---- hen / bu
|
||||||
|
|
||||||
CompNP np = insertObj np (predV copula) ; ----
|
CompNP np = insertObj np (predV copula) ; ----
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user