mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-09 04:59:31 -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.
|
||||
|
||||
BaseS = twoSS ;
|
||||
ConsS = consrSS thcomma ;
|
||||
ConsS = consrSS duncomma ;
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS thcomma ;
|
||||
ConsAdv = consrSS duncomma ;
|
||||
BaseNP = twoSS ;
|
||||
ConsNP = consrSS thcomma ;
|
||||
ConsNP = consrSS duncomma ;
|
||||
BaseAP = twoSS ;
|
||||
ConsAP = consrSS thcomma ;
|
||||
ConsAP = consrSS duncomma ;
|
||||
BaseRS = twoSS ;
|
||||
ConsRS = consrSS thcomma ;
|
||||
ConsRS = consrSS duncomma ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Str} ;
|
||||
@@ -28,7 +28,4 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
|
||||
[AP] = {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)
|
||||
|
||||
---- 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
|
||||
|
||||
@@ -20,7 +20,7 @@ concrete IdiomChi of Idiom = CatChi ** open Prelude, ResChi in {
|
||||
|
||||
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,
|
||||
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"
|
||||
|
||||
@@ -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. 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
|
||||
|
||||
@@ -272,7 +272,7 @@ p. 168 "can": hui/neng
|
||||
|
||||
p. 174 negation and tense
|
||||
|
||||
p. 185 yes/no
|
||||
p. 185 yes/no DONE
|
||||
|
||||
p. 186 alternation questions
|
||||
|
||||
@@ -280,7 +280,7 @@ p. 197 "or" haishi/huozhe
|
||||
|
||||
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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
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 "在" [] [] [] [] "不" ;
|
||||
fullstop_s = "。" ;
|
||||
questmark_s = "?" ;
|
||||
exclmark_s = "!" ;
|
||||
exclmark_s = "!" ;
|
||||
ge_s = "个" ;
|
||||
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 = [] ;
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ where_IAdv = mkIAdvL "哪里" ;
|
||||
when_IAdv = mkIAdvL "什么时候" ;
|
||||
how_IAdv = mkIAdvL "如何" ;
|
||||
all_Predet = ssword "所有" ;
|
||||
many_Det = mkDet "很多" DTPoss ;
|
||||
many_Det = mkDet (word "很多") DTPoss ;
|
||||
someSg_Det = mkDet (word "一些") Sg ;
|
||||
somePl_Det = mkDet (word "一些") Sg ;
|
||||
few_Det = mkDet "少" Pl ;
|
||||
@@ -145,7 +145,7 @@ so_AdA = ssword "如此" ;
|
||||
somebody_NP = ssword "某人" ;
|
||||
something_NP = ssword "某事" ; -- [mark] in sent, it depends on the context
|
||||
somewhere_Adv = mkAdv "某处" ;
|
||||
that_Subj = mkSubj [] ", " ; -- that + S [mark] comma
|
||||
that_Subj = mkSubj [] chcomma ; -- that + S [mark] comma
|
||||
there7from_Adv = mkAdv "从那里" ; -- from there
|
||||
there7to_Adv = mkAdv "到那里" ;
|
||||
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} ;
|
||||
|
||||
Slash2V3 v np = insertObj np (predV v) ** {c2 = v.c3 ; isPre = True} ;
|
||||
Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2 ; isPre = False} ;
|
||||
Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v) ** {c2 = v.c3 ; isPre = False} ; -- slot for third argument
|
||||
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} ;
|
||||
|
||||
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} ;
|
||||
SlashV2Q v q = insertObj q (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 (ss (say_s ++ s.s)) (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 = {
|
||||
verb = v ;
|
||||
|
||||
@@ -33,7 +33,7 @@ concrete CatCmn of Cat = CommonX - [Tense, Temp, Adv] ** open ResCmn, Prelude in
|
||||
|
||||
VP = 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
|
||||
|
||||
@@ -43,7 +43,8 @@ concrete CatCmn of Cat = CommonX - [Tense, Temp, Adv] ** open ResCmn, Prelude in
|
||||
|
||||
CN = ResCmn.Noun ;
|
||||
NP, Pron = ResCmn.NP ;
|
||||
Det, Quant = Determiner ;
|
||||
Det = Determiner ;
|
||||
Quant = Determiner ** {pl : Str} ;
|
||||
Predet = {s : Str} ; ----
|
||||
Ord = {s : Str} ;
|
||||
Num = {s : Str ; numType : NumType} ;
|
||||
@@ -52,7 +53,8 @@ concrete CatCmn of Cat = CommonX - [Tense, Temp, Adv] ** open ResCmn, Prelude in
|
||||
|
||||
-- Numeral
|
||||
|
||||
Numeral, Card, Digits = {s : Str} ;
|
||||
Numeral = {s,p : Str} ;
|
||||
Card, Digits = {s : Str} ;
|
||||
|
||||
-- Structural
|
||||
|
||||
|
||||
@@ -11,15 +11,15 @@ concrete ConjunctionCmn of Conjunction = CatCmn ** open ResCmn, Prelude, Coordin
|
||||
-- These fun's are generated from the list cat's.
|
||||
|
||||
BaseS = twoSS ;
|
||||
ConsS = consrSS thcomma ;
|
||||
ConsS = consrSS duncomma ;
|
||||
BaseAdv = twoSS ;
|
||||
ConsAdv = consrSS thcomma ;
|
||||
ConsAdv = consrSS duncomma ;
|
||||
BaseNP = twoSS ;
|
||||
ConsNP = consrSS thcomma ;
|
||||
ConsNP = consrSS duncomma ;
|
||||
BaseAP = twoSS ;
|
||||
ConsAP = consrSS thcomma ;
|
||||
ConsAP = consrSS duncomma ;
|
||||
BaseRS = twoSS ;
|
||||
ConsRS = consrSS thcomma ;
|
||||
ConsRS = consrSS duncomma ;
|
||||
|
||||
lincat
|
||||
[S] = {s1,s2 : Str} ;
|
||||
@@ -28,7 +28,4 @@ concrete ConjunctionCmn of Conjunction = CatCmn ** open ResCmn, Prelude, Coordin
|
||||
[AP] = {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)
|
||||
|
||||
---- 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
|
||||
|
||||
@@ -20,7 +20,7 @@ concrete IdiomCmn of Idiom = CatCmn ** open Prelude, ResCmn in {
|
||||
|
||||
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"
|
||||
walk_V = mkV "zou3" ; -- "zou"
|
||||
sleep_V = mkV "shui4" ; -- "shui"
|
||||
---- arrive_V = mkV "dao4" "le" [] [] "guo4"; -- "dao"
|
||||
love_V2 = mkV2 "ai4" ; -- "ai"
|
||||
watch_V2 = mkV2 "kan1" ; -- "kan"
|
||||
--- please2_V2 = mkV "ma2fan2" ; -- "mafan"
|
||||
--- believe_VS = mkV "xiang1xin4" ; -- "xiangxin"
|
||||
know_VS = mkV "zhi1dao4" ; -- "zhidao"
|
||||
wonder_VQ = mkV "hao3ji1" ; -- "haoqi"
|
||||
john_PN = mkPN "yao1han4" ; -- "yuehan"
|
||||
--- mary_PN = mkPN "ma3li2" ; -- "mali"
|
||||
|
||||
|
||||
-- Swadesh
|
||||
|
||||
--big_A = mkA "da4" ;
|
||||
long_A = mkA "chang2" ;
|
||||
wide_A = mkA "kuan1" ;
|
||||
thick_A = mkA "hou4" ;
|
||||
heavy_A = mkA "chong2" ;
|
||||
--small_A = mkA "xiao3" ;
|
||||
short_A = mkA "duan3" ;
|
||||
narrow_A = mkA "zhai3" ;
|
||||
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" ;
|
||||
wife_N = mkN "qi1zi3" ;
|
||||
husband_N = mkN "zhang4fu1" ;
|
||||
--father_N = mkN "fu4qin1" ;
|
||||
animal_N = mkN "dong4wu4" "qi2"; -- [mark] added classifier for nouns
|
||||
fish_N = mkN "yu2" "tiao2";
|
||||
bird_N = mkN "niao3" "qi2";
|
||||
@@ -53,7 +43,6 @@ dog_N = mkN "gou3" "qi2";
|
||||
louse_N = mkN "shi1" "qi2";
|
||||
snake_N = mkN "she2" "tiao2";
|
||||
worm_N = mkN "chong2" "qi2";
|
||||
--tree_N = mkN "shu4" ;
|
||||
forest_N = mkN "sen1lin2" "pian1";
|
||||
stick_N = mkN "shu4zhi1" ;
|
||||
fruit_N = mkN "shui3guo3" ;
|
||||
@@ -105,11 +94,9 @@ breathe_V = mkV "hu1xi1" ;
|
||||
laugh_V = mkV "xiao4" ;
|
||||
see_V2 = mkV2 "kan1" ;
|
||||
hear_V2 = mkV2 "ting1" ;
|
||||
--know_V = mkV "zhi1dao4" ;
|
||||
think_V = mkV "xiang3" ;
|
||||
smell_V = mkV "wen2" ; -- [mark] "xiu4" -> "wen2", "wen2" is the common form for smell.
|
||||
fear_V2 = mkV2 "pa4" ;
|
||||
--sleep_V = mkV "shui4" ;
|
||||
live_V = mkV "huo2" ;
|
||||
die_V = mkV "si3" ;
|
||||
kill_V2 = mkV2 "sha1" ;
|
||||
@@ -123,7 +110,6 @@ scratch_V2 = mkV2 "sao1" ;
|
||||
dig_V = mkV "wa1" ;
|
||||
swim_V = mkV "you2yong3" ;
|
||||
fly_V = mkV "fei1" ;
|
||||
--walk_V = mkV "zou3" ;
|
||||
come_V = mkV "lai2" ;
|
||||
lie_V = mkV "tang3" ;
|
||||
sit_V = mkV "zuo4" ;
|
||||
@@ -174,7 +160,6 @@ burn_V = mkV "shao1" ;
|
||||
road_N = mkN "lu4" "tiao2";
|
||||
mountain_N = mkN "shan1" "zuo4";
|
||||
red_A = mkA "hong2" ;
|
||||
--green_A = mkA "lu:4" ;
|
||||
yellow_A = mkA "huang2" ;
|
||||
white_A = mkA "bai2" ;
|
||||
black_A = mkA "hei1" ;
|
||||
@@ -199,7 +184,7 @@ wet_A = mkA "shi1" ;
|
||||
dry_A = mkA "gan1" ;
|
||||
correct_A = mkA "dui4" ;
|
||||
near_A = mkA "jin4" ;
|
||||
far_A = mkA "yuan3" ;
|
||||
--far_A = mkA "yuan3" ;
|
||||
left_Ord = ss "zuo3" ;
|
||||
right_Ord = ss "you4" ;
|
||||
name_N = mkN "ming2zi4" ; -- [mark] "ming2" --> "ming2zi4"
|
||||
@@ -234,10 +219,8 @@ cow_N = mkN "niu2" "tou2";
|
||||
do_V2 = mkV2 "zuo4" ;
|
||||
doctor_N = mkN "yi1sheng1" "ming2";
|
||||
door_N = mkN "men2" "shan1";
|
||||
---easy_A2V = mkA "rong2yi4" ;
|
||||
factory_N = mkN "gong1chang3" "jian1";
|
||||
far_Adv = mkAdv "yuan3" ;
|
||||
---father_N2 = mkN2 "fu4qin1" ;
|
||||
fear_VS = mkVS (mkV "pa4") ;
|
||||
find_V2 = mkV2 "fa1xian4" ;
|
||||
forget_V2 = mkV2 "wang4" ;
|
||||
@@ -245,20 +228,13 @@ friend_N = mkN "peng2you3" ;
|
||||
girl_N = mkN "gu1niang2" ;
|
||||
give_V3 = mkV3 "gei3" ;
|
||||
go_V = mkV "qu4" ;
|
||||
--go_N = mkN "wang3" ;
|
||||
grammar_N = mkN "yu3fa3" ;
|
||||
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";
|
||||
hope_VS = mkV "xi1wang4" ;
|
||||
horse_N = mkN "ma3" "pi1";
|
||||
hot_A = mkA "re4" ;
|
||||
--how many_N = mkN "duo1shao3" ;
|
||||
important_A = mkA "chong2yao1" ;
|
||||
--heavy_A = mkA "chong2" ;
|
||||
industry_N = mkN "gong1ye4" [];
|
||||
jump_V = mkV "tiao4" ;
|
||||
know_V2 = mkV2 "zhi1dao4" ;
|
||||
@@ -266,16 +242,11 @@ know_VQ = mkV "zhi1dao4" ;
|
||||
lamp_N = mkN "deng1" "zhan3";
|
||||
language_N = mkN "yu3yan2" "zhong3";
|
||||
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
|
||||
--walk_N = mkN "zou3" ;
|
||||
like_V2 = mkV2 "xi3huan1" ;
|
||||
--be willing_N = mkN "yuan4yi4" ;
|
||||
listen_V2 = mkV2 "ting1" ;
|
||||
lose_V2 = mkV2 "diu1" ;
|
||||
--love_N = mkN "xi3huan1" ;
|
||||
love_V2 = mkV2 "ai4" ;
|
||||
---mother_N2 = mkN2 "ma1" ;
|
||||
music_N = mkN "yin1le4" [] ; -- [mark] usually without classifier
|
||||
newspaper_N = mkN "bao4zhi3" "zhang1"; --[mark] "bao4" --> "bao4zhi3"
|
||||
now_Adv = mkAdv "xian4zai4" ;
|
||||
@@ -283,91 +254,43 @@ number_N = mkN "hao2ma3" ; -- [mark] "hao2" --> "hao2ma3"
|
||||
open_V2 = mkV2 "kai1" ;
|
||||
paint_V2A = mkV2A (mkV "hua4") ;
|
||||
paper_N = mkN "zhi3" "zhang1";
|
||||
--place_N = mkN "defang1" ;
|
||||
--part_N = mkN "bu4fen1" ;
|
||||
pen_N = mkN "bi3" "qi2";
|
||||
--pen_N = mkN "gang1bi3" "qi2";
|
||||
person_N = mkN "ren2" ;
|
||||
--beat_N = mkN "da2" ;
|
||||
--pull_N = mkN "la1" ;
|
||||
play_V2 = mkV2 "wan2" ; --[mark] "wan2er2" --> "wan2"
|
||||
--perform_N = mkN "biao3yan3" ;
|
||||
--have_N = mkN "you3" ;
|
||||
put_V2 = mkV2 "bai3" ;
|
||||
--let go_N = mkN "fang4" ;
|
||||
question_N = mkN "wen4ti2" ;
|
||||
|
||||
--be enough_N = mkN "gou4" ;
|
||||
--very_N = mkN "hen3" ;
|
||||
rain_V0 = mkV "xia4yu3";
|
||||
read_V2 = mkV2 "dou4" ;
|
||||
reason_N = mkN "dao4li3" ;
|
||||
restaurant_N = mkN "fan4dian4" "jian1";
|
||||
--appropriate_N = mkN "ge3shi4" ;
|
||||
--correct_N = mkN "zheng1que4" ;
|
||||
--run_N = mkN "pao3bu4" ;
|
||||
run_V = mkV "pao3" ;
|
||||
--road_N = mkN "dao4" ;
|
||||
school_N = mkN "xue2jiao4" "suo3";
|
||||
science_N = mkN "ke1xue2" []; -- [mark] usually without classifier
|
||||
sell_V3 = mkV3 "mai4" ;
|
||||
--go_N = mkN "qu4" ;
|
||||
send_V3 = mkV3 "ji4" ;
|
||||
--clap_N = mkN "pai1" ;
|
||||
sheep_N = mkN "yang2" "qi2";
|
||||
ship_N = mkN "chuan2" "sao1";
|
||||
shoe_N = mkN "xie2" "qi2";
|
||||
shop_N = mkN "shang1dian4" "jian1";
|
||||
--of that kind_N = mkN "na3yang4" ;
|
||||
--what_N = mkN "shen2ma" ;
|
||||
song_N = mkN "ge1" "shou3";
|
||||
--tell_N = mkN "jiang3" ;
|
||||
speak_V2 = mkV2 "shui4" ;
|
||||
--road_N = mkN "dao4" ;
|
||||
--live_N = mkN "zhu4" ;
|
||||
--act as_N = mkN "dang1" ;
|
||||
student_N = mkN "xue2sheng1" "ming2" ;
|
||||
table_N = mkN "zhuo1zi3" "zhang1";
|
||||
--word_N = mkN "hua4" ;
|
||||
talk_V3 = mkV3 "shui4" ;
|
||||
--talk_N = mkN "tan2" ;
|
||||
--education_N = mkN "jiao1yu4" ;
|
||||
teach_V2 = mkV2 "jiao1" ;
|
||||
--coach_N = mkN "fu3dao3" ;
|
||||
--teacher_N = mkN "xian1sheng1" ;
|
||||
--master worker_N = mkN "shi1fu4" ;
|
||||
teacher_N = mkN "lao3shi1" "ming2";
|
||||
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" ;
|
||||
--now_N = mkN "xian4zai4" ;
|
||||
--also_N = mkN "ye3" ;
|
||||
train_N = mkN "huo3che1" "liang4";
|
||||
travel_V = mkV "lu:3hang2" ;
|
||||
--below_N = mkN "xia4bian1" ;
|
||||
--understand_N = mkN "lejie3" ;
|
||||
understand_V2 = mkV2 "dong3" ;
|
||||
--recognize_N = mkN "ren4shi2" ;
|
||||
--open up_N = mkN "tong1" ;
|
||||
university_N = mkN "da4xue2" "suo3";
|
||||
wait_V2 = mkV2 "deng3" ;
|
||||
--need_N = mkN "xu1yao1" ;
|
||||
watch_V2 = mkV2 "kan1" ;
|
||||
--time_N = mkN "shi2hou4" ;
|
||||
--wait_N = mkN "deng3" ;
|
||||
--what_N = mkN "shen2ma" ;
|
||||
--how_N = mkN "zen3ma" ;
|
||||
win_V2 = mkV2 "ying2" ;
|
||||
--window_N = mkN "chuang1hu4" ;
|
||||
window_N = mkN "chuang1" "shan1";
|
||||
wine_N = mkN "jiu3" "ping2";
|
||||
--leave_N = mkN "li2" ;
|
||||
--do_N = mkN "zuo4" ;
|
||||
write_V2 = mkV2 "xie3" ;
|
||||
young_A = mkA "nian2qing1" ;
|
||||
|
||||
@@ -427,7 +350,7 @@ war_N = mkN "zhan4zheng1" "chang3" ; -- [mark] rewritten
|
||||
wood_N = mkN "mu4tou2" "kuai1" ; -- [mark] "mu4" --> "mu4tou2"
|
||||
|
||||
|
||||
-- just missing
|
||||
-- from scratch, by Jolene
|
||||
|
||||
lin
|
||||
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 Pinyin (c2pMap, useMapGF, mkList)
|
||||
import Numeric
|
||||
|
||||
main = do
|
||||
s <- readFile pinyinFile
|
||||
@@ -7,9 +7,40 @@ main = do
|
||||
mapM_ (mkPinyin m) ["Lexicon", "Numeral", "Res", "Structural"]
|
||||
return ()
|
||||
|
||||
pinyinFile = "../pinyin.txt"
|
||||
pinyinFile = "pinyin.txt"
|
||||
|
||||
mkPinyin ma mo = do
|
||||
s <- readFile (mo ++ "Chi.gf")
|
||||
s <- readFile ("../" ++ runghc MkPinyin.hsmo ++ "Chi.gf")
|
||||
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 ;
|
||||
UsePron p = p ;
|
||||
|
||||
DetNP det = det ;
|
||||
DetNP det = {s = det.s ++ ge_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) ;
|
||||
|
||||
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 {
|
||||
NTFull => DTNum ; -- five
|
||||
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 ;
|
||||
detType = case num.numType of {
|
||||
NTFull => DTNum ; -- five
|
||||
NTVoid n => case quant.detType of {
|
||||
DTPoss => DTPoss ; -- our
|
||||
_ => DTFull n -- these/this
|
||||
}
|
||||
NTVoid n => DTFull n -- these/this ; also our, when ord is present
|
||||
}
|
||||
} ;
|
||||
|
||||
PossPron p = {
|
||||
s = p.s ++ possessive_s ;
|
||||
s,pl = p.s ++ possessive_s ;
|
||||
detType = DTPoss
|
||||
} ;
|
||||
|
||||
@@ -52,15 +52,15 @@ concrete NounCmn of Noun = CatCmn ** open ResCmn, Prelude in {
|
||||
NumDigits d = d ** {numType = NTFull} ;
|
||||
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} ;
|
||||
|
||||
AdNum adn num = {s = adn.s ++ num.s ; hasC = True} ;
|
||||
|
||||
OrdSuperl a = {s = superlative_s ++ a.s} ;
|
||||
|
||||
DefArt = mkDet the_s ;
|
||||
IndefArt = mkDet yi_s ; ---- in the plural ?
|
||||
DefArt = mkQuant [] [] DTPoss ; -- use that_Quant if you want the_s
|
||||
IndefArt = mkQuant yi_s [] (DTFull Sg) ; -- empty in the plural
|
||||
|
||||
MassNP cn = cn ;
|
||||
|
||||
|
||||
@@ -16,55 +16,53 @@ oper Wan : Zero => Str =
|
||||
|
||||
oper mkD : Str -> Str -> Str = \x,_ -> word x ; -- hiding the "formal" version
|
||||
|
||||
--lincat Numeral = {s : Str} ;
|
||||
lincat Digit = {s : Str} ;
|
||||
lincat Sub10 = {s : Str} ;
|
||||
lincat Sub100 = {inh : Zero ; s : Bform => Str} ;
|
||||
lincat Sub1000 = {inh : Zero ; s : Qform => Str} ;
|
||||
lincat Sub1000000 = {s : Str} ;
|
||||
lin num x0 =
|
||||
{s = x0.s} ;
|
||||
lincat Digit = {s,p : Str} ;
|
||||
lincat Sub10 = {s,p : Str} ;
|
||||
lincat Sub100 = {inh : Zero ; s,p : Bform => Str} ;
|
||||
lincat Sub1000 = {inh : Zero ; s,p : Qform => Str} ;
|
||||
lincat Sub1000000 = {s,p : Str} ;
|
||||
lin num x0 = x0 ;
|
||||
|
||||
-- 一二三四五六七八九十一百千
|
||||
--
|
||||
|
||||
lin n2 =
|
||||
{s = mkD "er4" "er4"} ;
|
||||
{s = mkD "er4" "er4" ; p = "liang3"} ;
|
||||
lin n3 =
|
||||
{s = mkD "san1" "san1"} ;
|
||||
{s,p = mkD "san1" "san1"} ;
|
||||
lin n4 =
|
||||
{s = mkD "si4" "si4"} ;
|
||||
{s,p = mkD "si4" "si4"} ;
|
||||
lin n5 =
|
||||
{s = mkD "wu3" "wu3"} ;
|
||||
{s,p = mkD "wu3" "wu3"} ;
|
||||
lin n6 =
|
||||
{s = mkD "liu4" "liu4"} ;
|
||||
{s,p = mkD "liu4" "liu4"} ;
|
||||
lin n7 =
|
||||
{s = mkD "qi1" "qi1"} ;
|
||||
{s,p = mkD "qi1" "qi1"} ;
|
||||
lin n8 =
|
||||
{s = mkD "ba1" "ba1"} ;
|
||||
{s,p = mkD "ba1" "ba1"} ;
|
||||
lin n9 =
|
||||
{s = mkD "jiu3" "jiu3"} ;
|
||||
{s,p = mkD "jiu3" "jiu3"} ;
|
||||
lin pot01 =
|
||||
{s = mkD "yi1" "yi1"} ;
|
||||
{s,p = mkD "yi1" "yi1"} ;
|
||||
lin pot0 d =
|
||||
{s = d.s} ;
|
||||
{s = d.s ; p = d.p} ;
|
||||
lin pot110 =
|
||||
{inh = nozero ;
|
||||
s = table {
|
||||
s,p = table {
|
||||
shi => mkD "yi1shi2" "yi1shi2" ;
|
||||
shi0 => mkD "yi1shi2" "yi1shi2" ;
|
||||
wan => mkD "yi1wan4" "yi1wan4" ;
|
||||
wan0 => mkD "yi1wan4" "yi1wan4"}} ;
|
||||
lin pot111 =
|
||||
{inh = nozero ;
|
||||
s = table {
|
||||
s,p = table {
|
||||
shi => mkD "shi2yi1" "shi2yi1" ;
|
||||
shi0 => mkD "yi1shi2yi1" "yi1shi2yi1" ;
|
||||
wan => mkD "shi2yi1wan4" "shi2yi1wan4" ;
|
||||
wan0 => mkD "shi2yi1wan4" "shi2yi1wan4"}} ;
|
||||
lin pot1to19 d =
|
||||
{inh = nozero ;
|
||||
s = table {
|
||||
s,p = table {
|
||||
shi => mkD "yi1shi2" "yi1shi2" ++ d.s ;
|
||||
shi0 => mkD "yi1shi2" "yi1shi2" ;
|
||||
wan => mkD "yi1wan4" "yi1wan4" ++ d.s ++ mkD "qian1" "qian1" ;
|
||||
@@ -75,17 +73,23 @@ lin pot0as1 n =
|
||||
shi => n.s ;
|
||||
shi0 => n.s ;
|
||||
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 =
|
||||
{inh = zero ;
|
||||
s = table {
|
||||
s,p = table {
|
||||
shi => d.s ++ mkD "shi2" "shi2" ;
|
||||
shi0 => d.s ++ mkD "shi2" "shi2" ;
|
||||
wan0 => d.s ++ "wan4" ;
|
||||
wan => d.s ++ "wan4"}} ;
|
||||
lin pot1plus d e =
|
||||
{inh = nozero ;
|
||||
s = table {
|
||||
s,p = table {
|
||||
shi => d.s ++ mkD "shi2" "shi2" ++ e.s ;
|
||||
shi0 => d.s ++ mkD "shi2" "shi2" ++ e.s ;
|
||||
wan => d.s ++ "wan4" ++ e.s ++ mkD "qian1" "qian1" ;
|
||||
@@ -96,27 +100,32 @@ lin pot1as2 n =
|
||||
bai => n.s ! shi ;
|
||||
bai0 => n.s ! shi ;
|
||||
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}} ;
|
||||
lin pot2 d =
|
||||
{inh = zero ;
|
||||
s = table {
|
||||
s,p = table {
|
||||
bai => d.s ++ mkD "bai3" "bai3" ;
|
||||
bai0 => d.s ++ mkD "bai3" "bai3" ;
|
||||
shiwan0 => d.s ++ mkD "shi2wan4" "shi2wan4" ;
|
||||
shiwan => d.s ++ mkD "shi2wan4" "shi2wan4"}} ;
|
||||
lin pot2plus d e =
|
||||
{inh = nozero ;
|
||||
s = table {
|
||||
s,p = table {
|
||||
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 ;
|
||||
shiwan => d.s ++ mkD "" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan ;
|
||||
shiwan0 => d.s ++ mkD "" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan0}} ;
|
||||
lin pot2as3 n =
|
||||
{s = n.s ! bai} ;
|
||||
{s = n.s ! bai ; p = n.p ! bai} ;
|
||||
lin pot3 n =
|
||||
{s = n.s ! shiwan} ;
|
||||
{s,p = n.s ! shiwan} ;
|
||||
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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module Pinyin where
|
||||
module Main where
|
||||
|
||||
import Numeric
|
||||
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
|
||||
|
||||
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
|
||||
--- '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
|
||||
|
||||
@@ -42,18 +42,27 @@ resource ResCmn = ParamX ** open Prelude in {
|
||||
geng_s = "geng1" ; -- more, in comparison
|
||||
|
||||
zai_V = mkVerb "zai4" [] [] [] [] "bu4" ;
|
||||
fullstop_s = "." ;
|
||||
questmark_s = "?" ;
|
||||
exclmark_s = "!" ;
|
||||
fullstop_s = "。" ;
|
||||
questmark_s = "?" ;
|
||||
exclmark_s = "!" ;
|
||||
ge_s = "ge4" ;
|
||||
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 = [] ;
|
||||
|
||||
|
||||
-- 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 {
|
||||
x@? + y@? + z@? + u@? => bword x (bword y (bword z u)) ;
|
||||
@@ -188,6 +197,7 @@ param
|
||||
|
||||
oper
|
||||
Determiner = {s : Str ; detType : DetType} ;
|
||||
Quantifier = Determiner ** {pl : Str} ;
|
||||
|
||||
mkDet = overload {
|
||||
mkDet : Str -> Determiner = \s -> {s = s ; detType = DTFull Sg} ;
|
||||
@@ -195,7 +205,11 @@ oper
|
||||
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 -> {
|
||||
s = word s
|
||||
|
||||
@@ -6,8 +6,8 @@ concrete StructuralCmn of Structural = CatCmn **
|
||||
lin
|
||||
every_Det = mkDet "mei3" Sg ;
|
||||
|
||||
this_Quant = mkDet "zhe4" ;
|
||||
that_Quant = mkDet "na3" ;
|
||||
this_Quant = mkQuant "zhe4" ;
|
||||
that_Quant = mkQuant "na3" ;
|
||||
|
||||
i_Pron = pronNP "wo3" ;
|
||||
youSg_Pron = pronNP "ni3" ;
|
||||
@@ -49,7 +49,7 @@ where_IAdv = mkIAdvL "na3li3" ;
|
||||
when_IAdv = mkIAdvL "shen2mashi2hou4" ;
|
||||
how_IAdv = mkIAdvL "ru2he2" ;
|
||||
all_Predet = ssword "suo3you3" ;
|
||||
many_Det = mkDet "duo1" Pl ;
|
||||
many_Det = mkDet (word "hen3duo1") DTPoss ;
|
||||
someSg_Det = mkDet (word "yi1xie1") Sg ;
|
||||
somePl_Det = mkDet (word "yi1xie1") Sg ;
|
||||
few_Det = mkDet "shao3" Pl ;
|
||||
@@ -69,9 +69,9 @@ under_Prep = mkPrep "xia4" ;
|
||||
why_IAdv = mkIAdvL "wei2shen2ma" ;
|
||||
too_AdA = mkAdA "tai4" ;
|
||||
|
||||
before_Prep = mkPrep "cong1qian2" ; --s
|
||||
between_Prep = mkPrep "zhi1jian1" ; --s
|
||||
but_PConj = mkPConjL "dan4shi4" ; --s
|
||||
before_Prep = mkPrep "cong1qian2" ;
|
||||
between_Prep = mkPrep "zhi1jian1" ;
|
||||
but_PConj = mkPConjL "dan4shi4" ;
|
||||
|
||||
|
||||
can_VV = mkVerb "neng2" [] [] [] [] "bu4" ;
|
||||
@@ -81,33 +81,26 @@ but_PConj = mkPConjL "dan4shi4" ; --s
|
||||
can8know_VV = mkV "hui4" [] [] [] [] "bu4" ; ----
|
||||
|
||||
|
||||
except_Prep = mkPrep "chu2le" "yi3wai4" ; --s
|
||||
for_Prep = mkPrep "wei2le" ; --s
|
||||
from_Prep = mkPrep "cong1" ; --s
|
||||
---how8many_IDet = mkIDet "ji1" ; --s
|
||||
---how8much_IDet = mkIDet "duo1shao3" ; --s
|
||||
in8front_Prep = mkPrep "qian2bian1" ; --s
|
||||
it_Pron = pronNP "ta1" ; --s
|
||||
---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
|
||||
except_Prep = mkPrep "chu2le" "yi3wai4" ;
|
||||
for_Prep = mkPrep "wei2le" ;
|
||||
from_Prep = mkPrep "cong1" ;
|
||||
in8front_Prep = mkPrep "qian2bian1" ;
|
||||
it_Pron = pronNP "ta1" ;
|
||||
much_Det = mkDet "duo1" Sg ;
|
||||
no_Quant = mkQuant "bu4" ;
|
||||
not_Predet = ssword "bu4" ;
|
||||
---only_Predet = mkPredet "qi2" ; --s
|
||||
otherwise_PConj = mkPConjL "hai2shi4" ; --s
|
||||
to_Prep = mkPrep "wang3" ; --s
|
||||
---which_IQuant = mkIQuant "na3" ; --s
|
||||
otherwise_PConj = mkPConjL "hai2shi4" ;
|
||||
to_Prep = mkPrep "wang3" ;
|
||||
|
||||
have_V2 = mkV2 "you3" ;
|
||||
|
||||
yes_Utt = ss copula_s ;
|
||||
yes_Utt = ss "dui4" ;
|
||||
no_Utt = ss neg_s ;
|
||||
|
||||
oper
|
||||
mkConjForm : Str -> {s1,s2 : Str} = \s -> {s1 = [] ; s2 = word s} ;
|
||||
|
||||
-- manually by AR
|
||||
-- manually by AR, Jolene
|
||||
|
||||
lin
|
||||
always_AdV = ssword "yi1zhi2" ;
|
||||
@@ -152,12 +145,13 @@ so_AdA = ssword "ru2ci3" ;
|
||||
somebody_NP = ssword "mou3ren2" ;
|
||||
something_NP = ssword "mou3shi4" ; -- [mark] in sent, it depends on the context
|
||||
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
|
||||
there7to_Adv = mkAdv "dao4na3li3" ;
|
||||
therefore_PConj = ssword "yin1ci3" ;
|
||||
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" [];
|
||||
youPol_Pron = ssword "nin2" ; -- polite you
|
||||
|
||||
|
||||
@@ -5,16 +5,16 @@ concrete VerbCmn of Verb = CatCmn ** open ResCmn, Prelude in {
|
||||
lin
|
||||
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
|
||||
Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2} ;
|
||||
Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v) ** {c2 = v.c3 ; isPre = False} ; -- slot for third argument
|
||||
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} ;
|
||||
SlashV2S v s = insertObj s (predV v) ** {c2 = v.c2} ;
|
||||
SlashV2Q v q = insertObj q (predV v) ** {c2 = v.c2} ;
|
||||
SlashV2V v vp = insertObj (mkNP (infVP vp)) (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 (ss (say_s ++ q.s)) (predV v) ** {c2 = v.c2 ; isPre = True} ;
|
||||
|
||||
ComplVV v vp = {
|
||||
verb = v ;
|
||||
@@ -26,16 +26,19 @@ concrete VerbCmn of Verb = CatCmn ** open ResCmn, Prelude in {
|
||||
ComplVQ v q = insertObj q (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 ;
|
||||
|
||||
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 =
|
||||
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 {
|
||||
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) ; ----
|
||||
|
||||
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) ; ----
|
||||
|
||||
|
||||
Reference in New Issue
Block a user