diff --git a/lib/src/chinese/CatChi.gf b/lib/src/chinese/CatChi.gf index 71f38ea03..5a9d10b67 100644 --- a/lib/src/chinese/CatChi.gf +++ b/lib/src/chinese/CatChi.gf @@ -33,7 +33,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Adv] ** open ResChi, Prelude in VP = ResChi.VP ; Comp = ResChi.VP ; - VPSlash = ResChi.VP ** {c2 : Preposition} ; + VPSlash = ResChi.VP ** {c2 : Preposition ; isPre : Bool} ; -- whether the missing arg is before verb -- Adjective @@ -43,7 +43,8 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Adv] ** open ResChi, Prelude in CN = ResChi.Noun ; NP, Pron = ResChi.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 CatChi of Cat = CommonX - [Tense, Temp, Adv] ** open ResChi, Prelude in -- Numeral - Numeral, Card, Digits = {s : Str} ; + Numeral = {s,p : Str} ; + Card, Digits = {s : Str} ; -- Structural diff --git a/lib/src/chinese/LexiconChi.gf b/lib/src/chinese/LexiconChi.gf index 3ff8e39b6..ac40a41f3 100644 --- a/lib/src/chinese/LexiconChi.gf +++ b/lib/src/chinese/LexiconChi.gf @@ -17,35 +17,25 @@ lin green_A = mkA "绿" ; -- "lv" walk_V = mkV "走" ; -- "zou" sleep_V = mkV "睡" ; -- "shui" ----- arrive_V = mkV "到" "了" [] [] "过"; -- "dao" love_V2 = mkV2 "爱" ; -- "ai" watch_V2 = mkV2 "看" ; -- "kan" ---- please2_V2 = mkV "麻烦" ; -- "mafan" ---- believe_VS = mkV "相信" ; -- "xiangxin" know_VS = mkV "知道" ; -- "zhidao" wonder_VQ = mkV "好奇" ; -- "haoqi" john_PN = mkPN "约翰" ; -- "yuehan" ---- mary_PN = mkPN "玛丽" ; -- "mali" -- Swadesh ---big_A = mkA "大" ; long_A = mkA "长" ; wide_A = mkA "宽" ; thick_A = mkA "厚" ; heavy_A = mkA "重" ; ---small_A = mkA "小" ; short_A = mkA "短" ; narrow_A = mkA "窄" ; thin_A = mkA "薄" ; -- [mark] for person mkA "瘦" ---woman_N = mkN "女人" ; ---man(adult_N = mkN "男人" ; ---man(human_N = mkN "人" ; child_N = mkN "孩子" ; wife_N = mkN "妻子" ; husband_N = mkN "丈夫" ; ---father_N = mkN "父亲" ; animal_N = mkN "动物" "只"; -- [mark] added classifier for nouns fish_N = mkN "鱼" "条"; bird_N = mkN "鸟" "只"; @@ -53,7 +43,6 @@ dog_N = mkN "狗" "只"; louse_N = mkN "虱" "只"; snake_N = mkN "蛇" "条"; worm_N = mkN "虫" "只"; ---tree_N = mkN "树" ; forest_N = mkN "森林" "片"; stick_N = mkN "树枝" ; fruit_N = mkN "水果" ; @@ -105,11 +94,9 @@ breathe_V = mkV "呼吸" ; laugh_V = mkV "笑" ; see_V2 = mkV2 "看" ; hear_V2 = mkV2 "听" ; ---know_V = mkV "知道" ; think_V = mkV "想" ; smell_V = mkV "闻" ; -- [mark] "嗅" -> "闻", "闻" is the common form for smell. fear_V2 = mkV2 "怕" ; ---sleep_V = mkV "睡" ; live_V = mkV "活" ; die_V = mkV "死" ; kill_V2 = mkV2 "杀" ; @@ -123,7 +110,6 @@ scratch_V2 = mkV2 "搔" ; dig_V = mkV "挖" ; swim_V = mkV "游泳" ; fly_V = mkV "飞" ; ---walk_V = mkV "走" ; come_V = mkV "来" ; lie_V = mkV "躺" ; sit_V = mkV "坐" ; @@ -174,7 +160,6 @@ burn_V = mkV "烧" ; road_N = mkN "路" "条"; mountain_N = mkN "山" "座"; red_A = mkA "红" ; ---green_A = mkA "绿" ; yellow_A = mkA "黄" ; white_A = mkA "白" ; black_A = mkA "黑" ; @@ -199,7 +184,7 @@ wet_A = mkA "湿" ; dry_A = mkA "干" ; correct_A = mkA "对" ; near_A = mkA "近" ; -far_A = mkA "远" ; +--far_A = mkA "远" ; left_Ord = ss "左" ; right_Ord = ss "右" ; name_N = mkN "名字" ; -- [mark] "名" --> "名字" @@ -234,10 +219,8 @@ cow_N = mkN "牛" "头"; do_V2 = mkV2 "做" ; doctor_N = mkN "医生" "名"; door_N = mkN "门" "扇"; ----easy_A2V = mkA "容易" ; factory_N = mkN "工厂" "间"; far_Adv = mkAdv "远" ; ----father_N2 = mkN2 "父亲" ; fear_VS = mkVS (mkV "怕") ; find_V2 = mkV2 "发现" ; forget_V2 = mkV2 "忘" ; @@ -245,20 +228,13 @@ friend_N = mkN "朋友" ; girl_N = mkN "姑娘" ; give_V3 = mkV3 "给" ; go_V = mkV "去" ; ---go_N = mkN "往" ; grammar_N = mkN "语法" ; hat_N = mkN "帽子" "顶"; ---take_N = mkN "带" ; ---have_N = mkN "有" ; ---take_N = mkN "带" ; ---have_N = mkN "有" ; hill_N = mkN "山" "座"; hope_VS = mkV "希望" ; horse_N = mkN "马" "匹"; hot_A = mkA "热" ; ---how many_N = mkN "多少" ; important_A = mkA "重要" ; ---heavy_A = mkA "重" ; industry_N = mkN "工业" []; jump_V = mkV "跳" ; know_V2 = mkV2 "知道" ; @@ -266,16 +242,11 @@ know_VQ = mkV "知道" ; lamp_N = mkN "灯" "盏"; language_N = mkN "语言" "种"; learn_V2 = mkV2 "学" ; ---leave_N = mkN "离开" ; leave_V2 = mkV2 "离开" ; --[mark] "离" --> "离开", "离" itself is either a morpheme, or a marker indicating distance ---walk_N = mkN "走" ; like_V2 = mkV2 "喜欢" ; ---be willing_N = mkN "愿意" ; listen_V2 = mkV2 "听" ; lose_V2 = mkV2 "丢" ; ---love_N = mkN "喜欢" ; love_V2 = mkV2 "爱" ; ----mother_N2 = mkN2 "妈" ; music_N = mkN "音乐" [] ; -- [mark] usually without classifier newspaper_N = mkN "报纸" "张"; --[mark] "报" --> "报纸" now_Adv = mkAdv "现在" ; @@ -283,91 +254,43 @@ number_N = mkN "号码" ; -- [mark] "号" --> "号码" open_V2 = mkV2 "开" ; paint_V2A = mkV2A (mkV "画") ; paper_N = mkN "纸" "张"; ---place_N = mkN "地方" ; ---part_N = mkN "部分" ; pen_N = mkN "笔" "只"; ---pen_N = mkN "钢笔" "只"; person_N = mkN "人" ; ---beat_N = mkN "打" ; ---pull_N = mkN "拉" ; play_V2 = mkV2 "玩" ; --[mark] "玩儿" --> "玩" ---perform_N = mkN "表演" ; ---have_N = mkN "有" ; put_V2 = mkV2 "摆" ; ---let go_N = mkN "放" ; question_N = mkN "问题" ; ---be enough_N = mkN "够" ; ---very_N = mkN "很" ; rain_V0 = mkV "下雨"; read_V2 = mkV2 "读" ; reason_N = mkN "道理" ; restaurant_N = mkN "饭店" "间"; ---appropriate_N = mkN "合适" ; ---correct_N = mkN "正确" ; ---run_N = mkN "跑步" ; run_V = mkV "跑" ; ---road_N = mkN "道" ; school_N = mkN "学校" "所"; science_N = mkN "科学" []; -- [mark] usually without classifier sell_V3 = mkV3 "卖" ; ---go_N = mkN "去" ; send_V3 = mkV3 "寄" ; ---clap_N = mkN "拍" ; sheep_N = mkN "羊" "只"; ship_N = mkN "船" "艘"; shoe_N = mkN "鞋" "只"; shop_N = mkN "商店" "间"; ---of that kind_N = mkN "那样" ; ---what_N = mkN "什么" ; song_N = mkN "歌" "首"; ---tell_N = mkN "讲" ; speak_V2 = mkV2 "说" ; ---road_N = mkN "道" ; ---live_N = mkN "住" ; ---act as_N = mkN "当" ; student_N = mkN "学生" "名" ; table_N = mkN "桌子" "张"; ---word_N = mkN "话" ; talk_V3 = mkV3 "说" ; ---talk_N = mkN "谈" ; ---education_N = mkN "教育" ; teach_V2 = mkV2 "教" ; ---coach_N = mkN "辅导" ; ---teacher_N = mkN "先生" ; ---master worker_N = mkN "师傅" ; teacher_N = mkN "老师" "名"; television_N = mkN "电视" "台"; ---that_N = mkN "那个" ; ---that_N = mkN "那" ; ---from_N = mkN "从" ; ---by way of_N = mkN "通过" ; ---towards_N = mkN "向" ; ---and_N = mkN "和" ; today_Adv = mkAdv "今天" ; ---now_N = mkN "现在" ; ---also_N = mkN "也" ; train_N = mkN "火车" "辆"; travel_V = mkV "旅行" ; ---below_N = mkN "下边" ; ---understand_N = mkN "了解" ; understand_V2 = mkV2 "懂" ; ---recognize_N = mkN "认识" ; ---open up_N = mkN "通" ; university_N = mkN "大学" "所"; wait_V2 = mkV2 "等" ; ---need_N = mkN "需要" ; watch_V2 = mkV2 "看" ; ---time_N = mkN "时候" ; ---wait_N = mkN "等" ; ---what_N = mkN "什么" ; ---how_N = mkN "怎么" ; win_V2 = mkV2 "赢" ; ---window_N = mkN "窗户" ; window_N = mkN "窗" "扇"; wine_N = mkN "酒" "瓶"; ---leave_N = mkN "离" ; ---do_N = mkN "作" ; write_V2 = mkV2 "写" ; young_A = mkA "年轻" ; @@ -427,7 +350,7 @@ war_N = mkN "战争" "场" ; -- [mark] rewritten wood_N = mkN "木头" "块" ; -- [mark] "木" --> "木头" --- just missing +-- from scratch, by Jolene lin alas_Interj = ssword "唉" ; diff --git a/lib/src/chinese/NounChi.gf b/lib/src/chinese/NounChi.gf index 3fc0b4bdc..0da33db6a 100644 --- a/lib/src/chinese/NounChi.gf +++ b/lib/src/chinese/NounChi.gf @@ -10,7 +10,7 @@ concrete NounChi of Noun = CatChi ** open ResChi, 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 NounChi of Noun = CatChi ** open ResChi, 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 NounChi of Noun = CatChi ** open ResChi, 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 NounChi of Noun = CatChi ** open ResChi, 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 ; diff --git a/lib/src/chinese/NumeralChi.gf b/lib/src/chinese/NumeralChi.gf index c509ea2cc..4e5b0d385 100644 --- a/lib/src/chinese/NumeralChi.gf +++ b/lib/src/chinese/NumeralChi.gf @@ -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 "二" "贰"} ; + {s = mkD "二" "贰" ; p = "两"} ; lin n3 = - {s = mkD "三" "叁"} ; + {s,p = mkD "三" "叁"} ; lin n4 = - {s = mkD "四" "肆"} ; + {s,p = mkD "四" "肆"} ; lin n5 = - {s = mkD "五" "伍"} ; + {s,p = mkD "五" "伍"} ; lin n6 = - {s = mkD "六" "陆"} ; + {s,p = mkD "六" "陆"} ; lin n7 = - {s = mkD "七" "柒"} ; + {s,p = mkD "七" "柒"} ; lin n8 = - {s = mkD "八" "捌"} ; + {s,p = mkD "八" "捌"} ; lin n9 = - {s = mkD "九" "玖"} ; + {s,p = mkD "九" "玖"} ; lin pot01 = - {s = mkD "一" "壹"} ; + {s,p = mkD "一" "壹"} ; lin pot0 d = - {s = d.s} ; + {s = d.s ; p = d.p} ; lin pot110 = {inh = nozero ; - s = table { + s,p = table { shi => mkD "一十" "壹拾" ; shi0 => mkD "一十" "壹拾" ; wan => mkD "一万" "壹万" ; wan0 => mkD "一万" "壹万"}} ; lin pot111 = {inh = nozero ; - s = table { + s,p = table { shi => mkD "十一" "拾壹" ; shi0 => mkD "一十一" "壹拾壹" ; wan => mkD "十一万" "拾壹万" ; wan0 => mkD "十一万" "拾壹万"}} ; lin pot1to19 d = {inh = nozero ; - s = table { + s,p = table { shi => mkD "一十" "壹拾" ++ d.s ; shi0 => mkD "一十" "壹拾" ; wan => mkD "一万" "壹万" ++ d.s ++ mkD "千" "仟" ; @@ -75,17 +73,23 @@ lin pot0as1 n = shi => n.s ; shi0 => n.s ; wan => n.s ++ mkD "千" "仟" ; - wan0 => n.s ++ mkD "千" "仟"}} ; + wan0 => n.s ++ mkD "千" "仟"} ; + p = table { + shi => n.p ; + shi0 => n.s ; + wan => n.s ++ mkD "千" "仟" ; + wan0 => n.s ++ mkD "千" "仟"} + } ; lin pot1 d = {inh = zero ; - s = table { + s,p = table { shi => d.s ++ mkD "十" "拾" ; shi0 => d.s ++ mkD "十" "拾" ; wan0 => d.s ++ "万" ; wan => d.s ++ "万"}} ; lin pot1plus d e = {inh = nozero ; - s = table { + s,p = table { shi => d.s ++ mkD "十" "拾" ++ e.s ; shi0 => d.s ++ mkD "十" "拾" ++ e.s ; wan => d.s ++ "万" ++ e.s ++ mkD "千" "仟" ; @@ -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 "百" "佰" ; bai0 => d.s ++ mkD "百" "佰" ; shiwan0 => d.s ++ mkD "十万" "拾万" ; shiwan => d.s ++ mkD "十万" "拾万"}} ; lin pot2plus d e = {inh = nozero ; - s = table { + s,p = table { bai => d.s ++ mkD "" "佰" ++ (ling ! ) ++ e.s ! shi0 ; bai0 => d.s ++ mkD "" "佰" ++ (ling ! ) ++ e.s ! shi0 ; shiwan => d.s ++ mkD "" "拾" ++ (Wan ! (e.inh)) ++ e.s ! wan ; shiwan0 => d.s ++ mkD "" "拾" ++ (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 ! ) ++ m.s ! bai0} ; + {s,p = (n.s ! shiwan0) ++ (ling ! ) ++ m.s ! bai0} ; -- numerals as sequences of digits diff --git a/lib/src/chinese/README b/lib/src/chinese/README index 59d401449..a07ea8105 100644 --- a/lib/src/chinese/README +++ b/lib/src/chinese/README @@ -287,6 +287,14 @@ p. 242 coverbs p. 255 disyllabic prepositions +Today's work 6h AR, 3h Jolene. Total 29h. + +Jolene worked 3 weeks for the extended mini Chinese. This means the complete (but not yet perfect) Chinese +RGL implementation took 4 person weeks altogether. The remaining immediate fixes shouldn't take a lot of time. +However, there is a lot of Chinese that we will leave outside the common RGL abstract syntax. + + + diff --git a/lib/src/chinese/ResChi.gf b/lib/src/chinese/ResChi.gf index 783a02955..f6185a348 100644 --- a/lib/src/chinese/ResChi.gf +++ b/lib/src/chinese/ResChi.gf @@ -47,6 +47,7 @@ resource ResChi = ParamX ** open Prelude in { exclmark_s = "!" ; ge_s = "个" ; di_s = "是" ; -- used in QuestSlash + ba_s = "把" ; emptyStr = [] ; @@ -188,6 +189,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 +197,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 diff --git a/lib/src/chinese/StructuralChi.gf b/lib/src/chinese/StructuralChi.gf index d71403307..6bd91b7fe 100644 --- a/lib/src/chinese/StructuralChi.gf +++ b/lib/src/chinese/StructuralChi.gf @@ -6,8 +6,8 @@ concrete StructuralChi of Structural = CatChi ** lin every_Det = mkDet "每" Sg ; - this_Quant = mkDet "这" ; - that_Quant = mkDet "那" ; + this_Quant = mkQuant "这" ; + that_Quant = mkQuant "那" ; i_Pron = pronNP "我" ; youSg_Pron = pronNP "你" ; @@ -23,8 +23,6 @@ lin in_Prep = mkPrep "里" []; possess_Prep = mkPrep "的" []; with_Prep = mkPrep "一起" "和"; - - ba_s = "把" ; and_Conj = {s = table { CPhr CNPhrase => mkConjForm "和" ; @@ -71,9 +69,9 @@ under_Prep = mkPrep "下" ; why_IAdv = mkIAdvL "为什么" ; too_AdA = mkAdA "太" ; -before_Prep = mkPrep "从前" ; --s -between_Prep = mkPrep "之间" ; --s -but_PConj = mkPConjL "但是" ; --s +before_Prep = mkPrep "从前" ; +between_Prep = mkPrep "之间" ; +but_PConj = mkPConjL "但是" ; can_VV = mkVerb "能" [] [] [] [] "不" ; @@ -83,23 +81,16 @@ but_PConj = mkPConjL "但是" ; --s can8know_VV = mkV "会" [] [] [] [] "不" ; ---- -except_Prep = mkPrep "除了" "以外" ; --s -for_Prep = mkPrep "为了" ; --s -from_Prep = mkPrep "从" ; --s ----how8many_IDet = mkIDet "几" ; --s ----how8much_IDet = mkIDet "多少" ; --s -in8front_Prep = mkPrep "前边" ; --s -it_Pron = pronNP "它" ; --s ----less_CAdv = mkCAdv "少" ; --s -much_Det = mkDet "多" Sg ; --s ----more_CAdv = mkCAdv "更" ; --s ----most_Predet = mkPredet "最" ; --s -no_Quant = mkDet "不" ; --s +except_Prep = mkPrep "除了" "以外" ; +for_Prep = mkPrep "为了" ; +from_Prep = mkPrep "从" ; +in8front_Prep = mkPrep "前边" ; +it_Pron = pronNP "它" ; +much_Det = mkDet "多" Sg ; +no_Quant = mkQuant "不" ; not_Predet = ssword "不" ; ----only_Predet = mkPredet "只" ; --s -otherwise_PConj = mkPConjL "还是" ; --s -to_Prep = mkPrep "往" ; --s ----which_IQuant = mkIQuant "哪" ; --s +otherwise_PConj = mkPConjL "还是" ; +to_Prep = mkPrep "往" ; have_V2 = mkV2 "有" ; @@ -109,7 +100,7 @@ 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 "一直" ; @@ -159,7 +150,8 @@ there7from_Adv = mkAdv "从那里" ; -- from there there7to_Adv = mkAdv "到那里" ; therefore_PConj = ssword "因此" ; through_Prep = mkPrep "通过" ; -which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context +which_IQuant = mkIQuant "哪" ; +--which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context without_Prep = mkPrep "没有" []; youPol_Pron = ssword "您" ; -- polite you diff --git a/lib/src/chinese/VerbChi.gf b/lib/src/chinese/VerbChi.gf index 6f708557e..eb74673b5 100644 --- a/lib/src/chinese/VerbChi.gf +++ b/lib/src/chinese/VerbChi.gf @@ -5,16 +5,16 @@ concrete VerbChi of Verb = CatChi ** open ResChi, 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 = insertObj np (predV v) ** {c2 = v.c3 ; isPre = True} ; + Slash3V3 v np = insertObj np (predV v) ** {c2 = v.c2 ; isPre = False} ; - 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 s (predV v) ** {c2 = v.c2 ; isPre = True} ; + SlashV2Q v q = insertObj q (predV v) ** {c2 = v.c2 ; isPre = True} ; ComplVV v vp = { verb = v ; @@ -26,16 +26,19 @@ concrete VerbChi of Verb = CatChi ** open ResChi, 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