1
0
forked from GitHub/gf-core

Pinyin files using diacritics instead of numbers

This commit is contained in:
aarne
2015-07-19 09:11:45 +00:00
parent a68fae0f84
commit 2c61609344
9 changed files with 687 additions and 6111 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
concrete ExtraChi of ExtraChiAbs = CatChi **
open ResChi, Coordination, Prelude in {
open ResChi, Coordination, (S = StructuralChi), Prelude in {
flags coding = utf8 ;
@@ -11,6 +11,7 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
lin
PassVPSlash vps = insertAdv (mkNP passive_s) vps ;
PassAgentVPSlash vps np = insertAdv (ss (appPrep S.by8agent_Prep np.s)) (insertAdv (mkNP passive_s) vps) ;
MkVPS t p vp = {s = t.s ++ p.s ++ (mkClause [] vp).s ! p.p ! t.t} ;
ConjVPS c = conjunctDistrSS (c.s ! CSent) ;
@@ -35,18 +36,18 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
lincat
Aspect = {s : Str ; a : ResChi.Aspect} ;
lin
PredBareAP np ap = case ap.hasAdA of {
True => mkClause np.s (insertObj (mkNP ap.s) (predV nocopula [])) ;
False => mkClause np.s (insertObj (mkNP ap.s) (predV hen_copula []))
CompBareAP ap = case ap.hasAdA of {
True => insertObj (mkNP ap.s) (predV nocopula []) ;
False => insertObj (mkNP ap.s) (predV hen_copula [])
} ;
QuestRepV cl = {
s = \\p,a =>
s = \\_,p,a => ---- also for indirect questions?
let
v = cl.vp.verb ;
verb = case a of {
APlain => v.s ++ v.neg ++ v.sn ;
APerf => v.s ++ "bu4" ++ v.sn ++ v.pp ;
ADurStat => v.s ++ "bu4" ++ v.sn ;
APerf => v.s ++ "bù" ++ v.sn ++ v.pp ;
ADurStat => v.s ++ "bù" ++ v.sn ;
ADurProg => v.dp ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu
AExper => v.s ++ v.neg ++ v.sn ++ v.ep
}
@@ -54,6 +55,6 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl
} ;
TopicAdvCl adv cl = mkClause (adv.s ++ cl.np) cl.vp ;
TopicAdvVP vp adv = insertTopic adv vp ;
}

View File

@@ -8,373 +8,373 @@ lin
-- LexiconCmn
man_N = mkN "nan2ren2" "ge4"; -- "nanren" "ge" first being noun, second is classifier(counter)
woman_N = mkN "nu:3ren2" "ge4"; -- "nvren" "ge" classifier behaves like the "cup" in "cup of tea"
house_N = mkN "fang2zi3" "jian1"; -- "fangzi" "jian"
tree_N = mkN "shu4" "ke1"; -- "shu" "ke"
big_A = mkA "da4" ; -- "da"
small_A = mkA "xiao3" ; -- "xiao"
green_A = mkA "lu:4" ; -- "lv"
walk_V = mkV "zou3" ; -- "zou"
sleep_V = mkV "shui4" ; -- "shui"
love_V2 = mkV2 "ai4" ; -- "ai"
watch_V2 = mkV2 "kan1" ; -- "kan"
know_VS = mkV "zhi1dao4" ; -- "zhidao"
wonder_VQ = mkV "hao3ji1" ; -- "haoqi"
john_PN = mkPN "yao1han4" ; -- "yuehan"
man_N = mkN "nánrén" "gè"; -- "nanren" "ge" first being noun, second is classifier(counter)
woman_N = mkN "nǚrén" "gè"; -- "nvren" "ge" classifier behaves like the "cup" in "cup of tea"
house_N = mkN "fáng" "jiān"; -- "fangzi" "jian"
tree_N = mkN "shù" "kē"; -- "shu" "ke"
big_A = mkA "dà" ; -- "da"
small_A = mkA "xiaǒ" ; -- "xiao"
green_A = mkA "lǜ" ; -- "lv"
walk_V = mkV "zoǔ" ; -- "zou"
sleep_V = mkV "shuìjiaò" ; -- "shui"
love_V2 = mkV2 "aì" ; -- "ai"
watch_V2 = mkV2 "kān" ; -- "kan"
know_VS = mkV "zhīdaò" ; -- "zhidao"
wonder_VQ = mkV "haǒjī" ; -- "haoqi"
john_PN = mkPN "yaōhàn" ; -- "yuehan"
-- Swadesh
long_A = mkA "chang2" ;
wide_A = mkA "kuan1" ;
thick_A = mkA "hou4" ;
heavy_A = mkA "chong2" ;
short_A = mkA "duan3" ;
narrow_A = mkA "zhai3" ;
thin_A = mkA "bo2" ; -- [mark] for person mkA "shou4"
child_N = mkN "hai2zi3" ;
wife_N = mkN "qi1zi3" ;
husband_N = mkN "zhang4fu1" ;
animal_N = mkN "dong4wu4" "qi2"; -- [mark] added classifier for nouns
fish_N = mkN "yu2" "tiao2";
bird_N = mkN "niao3" "qi2";
dog_N = mkN "gou3" "qi2";
louse_N = mkN "shi1" "qi2";
snake_N = mkN "she2" "tiao2";
worm_N = mkN "chong2" "qi2";
forest_N = mkN "sen1lin2" "pian1";
stick_N = mkN "shu4zhi1" ;
fruit_N = mkN "shui3guo3" ;
seed_N = mkN "zhong3zi3" "li4";
leaf_N = mkN "ye4zi3" "pian1"; -- [mark] "ye4" -> "ye4zi3" , "ye4" is often treated as morpheme
root_N = mkN "shu4gen1" ; -- [mark] "gen1" --> "shu4gen1"(tree root)
bark_N = mkN "shu4pi2" "kuai1";
flower_N = mkN "hua1" "duo3";
grass_N = mkN "cao3" "ke1";
rope_N = mkN "sheng2" "gen1";
skin_N = mkN "pi2" "kuai1";
meat_N = mkN "rou4" "kuai1";
blood_N = mkN "xie3" "di1"; -- [mark] several classifiers, "di1"(drop), "tan1"(puddle)
bone_N = mkN "gu3tou2" "kuai1"; -- [mark] "gu3" -> "gu3tou2" , "gu3" is often treated as morpheme
fat_N = mkN "zhi1fang2" "dui1"; -- [mark] often without classifier
egg_N = mkN "dan4" "ke1";
horn_N = mkN "jiao3" "gen1";
tail_N = mkN "wei3ba1" "tiao2"; -- [mark] "wei3" -> "wei3ba1" , "wei3" is often treated as morpheme, or if stands alone, it is a classifier itself
feather_N = mkN "yu3mao2" "gen1";
hair_N = mkN "tou2fa1" "gen1"; -- [mark] several classifiers , "gen1"(single hair), "ba3"(several hairs)
head_N = mkN "tou2" "ke1";
ear_N = mkN "er3duo3" "qi2";
eye_N = mkN "yan3jing1" "qi2";
nose_N = mkN "bi2zi3" ;
mouth_N = mkN "zui3" "zhang1";
tooth_N = mkN "ya2chi3" "ke1";
tongue_N = mkN "she2" "gen1";
fingernail_N = mkN "zhi3jia3" "pian1";
foot_N = mkN "jiao3" "qi2";
leg_N = mkN "tui3" "tiao2";
knee_N = mkN "xi1gai4" ; -- [mark] "xi1" -> "xi1gai4"
hand_N = mkN "shou3" "qi2";
wing_N = mkN "chi4bang3" "qi2"; -- [mark] "yi4" -> "chi4bang3", "chi4bang3" is the common form for wing.
belly_N = mkN "du3zi3" ;
guts_N = mkN "chang2zi3" "gen1";
neck_N = mkN "bo2zi3" ;
back_N = mkN "bei1" ;
breast_N = mkN "xiong1" ;
heart_N = mkN "xin1zang1" "ke1";
liver_N = mkN "gan1" ;
drink_V2 = mkV2 "he1" ;
eat_V2 = mkV2 "chi1" ;
bite_V2 = mkV2 "yao3" ;
suck_V2 = mkV2 "xi1" ;
spit_V = mkV "tu3" ;
vomit_V = mkV "ou3" ;
blow_V = mkV "chui1" ;
breathe_V = mkV "hu1xi1" ;
laugh_V = mkV "xiao4" ;
see_V2 = mkV2 "kan1" ;
hear_V2 = mkV2 "ting1" ;
think_V = mkV "xiang3" ;
smell_V = mkV "wen2" ; -- [mark] "xiu4" -> "wen2", "wen2" is the common form for smell.
fear_V2 = mkV2 "pa4" ;
live_V = mkV "huo2" ;
die_V = mkV "si3" ;
kill_V2 = mkV2 "sha1" ;
fight_V2 = mkV2 "da2jia4" ; -- [mark] "chao3jia4" -> "da2jia4", "chao3jia4" = quarrel, argue
hunt_V2 = mkV2 "da2lie4" ; -- [mark] "da2lie4" is iv, can't think of proper translation in v2 form for hunt
hit_V2 = mkV2 "da2" ;
cut_V2 = mkV2 "ge1" ;
split_V2 = mkV2 "pi1kai1" ;
stab_V2 = mkV2 "ci4" ;
scratch_V2 = mkV2 "sao1" ;
dig_V = mkV "wa1" ;
swim_V = mkV "you2yong3" ;
fly_V = mkV "fei1" ;
come_V = mkV "lai2" ;
lie_V = mkV "tang3" ;
sit_V = mkV "zuo4" ;
stand_V = mkV "zhan4" ;
turn_V = mkV "zhuan3" ;
fall_V = mkV "la4xia4" ;
hold_V2 = mkV2 "wo4" ;
squeeze_V2 = mkV2 "ji3" ;
rub_V2 = mkV2 "rou2" ;
wash_V2 = mkV2 "xi3" ;
wipe_V2 = mkV2 "ca1" ;
pull_V2 = mkV2 "la1" ;
push_V2 = mkV2 "tui1" ;
throw_V2 = mkV2 "reng1" ;
tie_V2 = mkV2 "bang3" ;
sew_V = mkV "feng2" ;
count_V2 = mkV2 "shu3" ;
say_VS = mkVS (mkV "shui4") ;
sing_V = mkV "chang4" ;
play_V = mkV "wan2" ;
float_V = mkV "fu2" ;
flow_V = mkV "liu2" ;
freeze_V = mkV "jie1bing1" ;
swell_V = mkV "peng2zhang4" ;
sun_N = mkN "tai4yang2" ;
moon_N = mkN "yue4liang4" ;
star_N = mkN "xing1xing1" "ke1";
water_N = mkN "shui3" "di1";
rain_N = mkN "yu3" "chang3";
river_N = mkN "he2" "tiao2";
lake_N = mkN "hu2" ;
sea_N = mkN "hai3" "pian1";
salt_N = mkN "yan2" "ping2";
stone_N = mkN "dan4tou2" "kuai1";
sand_N = mkN "sha1" "li4";
dust_N = mkN "chen2tu3" [];
earth_N = mkN "deqiu2" ;
cloud_N = mkN "yun2" "duo3";
fog_N = mkN "wu4" "chang3";
sky_N = mkN "tian1kong1" "pian1";
wind_N = mkN "feng1" "zhen4";
snow_N = mkN "xue3" "chang3";
ice_N = mkN "bing1" "kuai1";
smoke_N = mkN "yan1" "zhen4";
fire_N = mkN "huo3" "chang3";
ashes_N = mkN "hui1" [];
burn_V = mkV "shao1" ;
road_N = mkN "lu4" "tiao2";
mountain_N = mkN "shan1" "zuo4";
red_A = mkA "hong2" ;
yellow_A = mkA "huang2" ;
white_A = mkA "bai2" ;
black_A = mkA "hei1" ;
night_N = mkN "ye4wan3" ; -- [mark] "ye4wan3" 's classifier is "ge4"
day_N = mkN "bai2tian1" []; -- [mark] "bai2tian1" -> "tian1", "tian1" itself is classifier
year_N = mkN "nian2" [] ; -- [mark] "nian2" itself is classifier
warm_A = mkA "wen1nuan3" ;
cold_A = mkA "leng3" ;
full_A = mkA "man3" ;
new_A = mkA "xin1" ;
old_A = mkA "lao3" ; -- [mark] "lao3" for person, "jiu4" for things
good_A = mkA "hao3" ;
bad_A = mkA "huai4" ;
rotten_A = mkA "lan4" ;
dirty_A = mkA "zang1" ;
straight_A = mkA "zhi2" ;
round_A = mkA "yuan2" ;
sharp_A = mkA "jian1" ;
dull_A = mkA "dun4" ;
smooth_A = mkA "guang1gu3" ;
wet_A = mkA "shi1" ;
dry_A = mkA "gan1" ;
correct_A = mkA "dui4" ;
near_A = mkA "jin4" ;
--far_A = mkA "yuan3" ;
left_Ord = ss "zuo3" ;
right_Ord = ss "you4" ;
name_N = mkN "ming2zi4" ; -- [mark] "ming2" --> "ming2zi4"
long_A = mkA "cháng" ;
wide_A = mkA "kuān" ;
thick_A = mkA "hoù" ;
heavy_A = mkA "chóng" ;
short_A = mkA "duǎn" ;
narrow_A = mkA "zhaǐ" ;
thin_A = mkA "bó" ; -- [mark] for person mkA "shoù"
child_N = mkN "haízǐ" ;
wife_N = mkN "qīzǐ" | mkN "aìrén" ;
husband_N = mkN "zhàng" ;
animal_N = mkN "dòng" "qí"; -- [mark] added classifier for nouns
fish_N = mkN "yú" "tiaó";
bird_N = mkN "niaǒ" "qí";
dog_N = mkN "goǔ" "qí";
louse_N = mkN "shī" "qí";
snake_N = mkN "shé" "tiaó";
worm_N = mkN "chóng" "qí";
forest_N = mkN "sēnlín" "piān";
stick_N = mkN "shùzhī" ;
fruit_N = mkN "shuǐguǒ" ;
seed_N = mkN "zhǒng" "lì";
leaf_N = mkN "yèzǐ" "piān"; -- [mark] "yè" -> "yèzǐ" , "yè" is often treated as morpheme
root_N = mkN "shùgēn" ; -- [mark] "gēn" --> "shùgēn"(tree root)
bark_N = mkN "shùpí" "kuaī";
flower_N = mkN "huā" "duǒ";
grass_N = mkN "caǒ" "kē";
rope_N = mkN "shéng" "gēn";
skin_N = mkN "pí" "kuaī";
meat_N = mkN "roù" "kuaī";
blood_N = mkN "xiě" "dī"; -- [mark] several classifiers, "dī"(drop), "tān"(puddle)
bone_N = mkN "gǔtoú" "kuaī"; -- [mark] "gǔ" -> "gǔtoú" , "gǔ" is often treated as morpheme
fat_N = mkN "zhīfáng" "duī"; -- [mark] often without classifier
egg_N = mkN "dàn" "kē";
horn_N = mkN "jiaǒ" "gēn";
tail_N = mkN "weǐbā" "tiaó"; -- [mark] "weǐ" -> "weǐbā" , "weǐ" is often treated as morpheme, or if stands alone, it is a classifier itself
feather_N = mkN "yǔmaó" "gēn";
hair_N = mkN "toúfā" "gēn"; -- [mark] several classifiers , "gēn"(single hair), "bǎ"(several hairs)
head_N = mkN "toú" "kē";
ear_N = mkN "ěrduǒ" "qí";
eye_N = mkN "yǎnjīng" "qí";
nose_N = mkN "bízǐ" ;
mouth_N = mkN "zuǐ" "zhāng";
tooth_N = mkN "yáchǐ" "kē";
tongue_N = mkN "shé" "gēn";
fingernail_N = mkN "zhǐjiǎ" "piān";
foot_N = mkN "jiaǒ" "qí";
leg_N = mkN "tuǐ" "tiaó";
knee_N = mkN "xīgaì" ; -- [mark] "xī" -> "xīgaì"
hand_N = mkN "shoǔ" "qí";
wing_N = mkN "chìbǎng" "qí"; -- [mark] "yì" -> "chìbǎng", "chìbǎng" is the common form for wing.
belly_N = mkN "dǔzǐ" ;
guts_N = mkN "cháng" "gēn";
neck_N = mkN "bózǐ" ;
back_N = mkN "beī" ;
breast_N = mkN "xiōng" ;
heart_N = mkN "xīnzāng" "kē";
liver_N = mkN "gān" ;
drink_V2 = mkV2 "hē" ;
eat_V2 = mkV2 "chī" ;
bite_V2 = mkV2 "yaǒ" ;
suck_V2 = mkV2 "xī" ;
spit_V = mkV "tǔ" ;
vomit_V = mkV "oǔ" ;
blow_V = mkV "chuī" ;
breathe_V = mkV "hūxī" ;
laugh_V = mkV "xiaò" ;
see_V2 = mkV2 "kān" ;
hear_V2 = mkV2 "tīng" ;
think_V = mkV "xiǎng" ;
smell_V = mkV "wén" ; -- [mark] "xiù" -> "wén", "wén" is the common form for smell.
fear_V2 = mkV2 "pà" ;
live_V = mkV "huó" ;
die_V = mkV "sǐ" ;
kill_V2 = mkV2 "shā" ;
fight_V2 = mkV2 "dájià" ; -- [mark] "chaǒjià" -> "dájià", "chaǒjià" = quarrel, argue
hunt_V2 = mkV2 "dáliè" ; -- [mark] "dáliè" is iv, can't think of proper translation in v2 form for hunt
hit_V2 = mkV2 "dá" ;
cut_V2 = mkV2 "gē" ;
split_V2 = mkV2 "pīkaī" ;
stab_V2 = mkV2 "cì" ;
scratch_V2 = mkV2 "saō" ;
dig_V = mkV "wā" ;
swim_V = mkV "yoúyǒng" ;
fly_V = mkV "feī" ;
come_V = mkV "laí" ;
lie_V = mkV "tǎng" ;
sit_V = mkV "zuò" ;
stand_V = mkV "zhàn" ;
turn_V = mkV "zhuǎn" ;
fall_V = mkV "làxià" ;
hold_V2 = mkV2 "wò" ;
squeeze_V2 = mkV2 "jǐ" ;
rub_V2 = mkV2 "roú" ;
wash_V2 = mkV2 "xǐ" ;
wipe_V2 = mkV2 "cā" ;
pull_V2 = mkV2 "lā" ;
push_V2 = mkV2 "tuī" ;
throw_V2 = mkV2 "rēng" ;
tie_V2 = mkV2 "bǎng" ;
sew_V = mkV "féng" ;
count_V2 = mkV2 "shǔ" ;
say_VS = mkVS (mkV "shuì") ;
sing_V = mkV "chàng" ;
play_V = mkV "wán" ;
float_V = mkV "fú" ;
flow_V = mkV "liú" ;
freeze_V = mkV "jiēbīng" ;
swell_V = mkV "péngzhàng" ;
sun_N = mkN "taìyáng" ;
moon_N = mkN "yuèliàng" ;
star_N = mkN "xīngng" "kē";
water_N = mkN "shuǐ" "dī";
rain_N = mkN "yǔ" "chǎng";
river_N = mkN "hé" "tiaó";
lake_N = mkN "hú" ;
sea_N = mkN "haǐ" "piān";
salt_N = mkN "yán" "píng";
stone_N = mkN "dàntoú" "kuaī";
sand_N = mkN "shā" "lì";
dust_N = mkN "chéntǔ" [];
earth_N = mkN "deqiú" ;
cloud_N = mkN "yún" "duǒ";
fog_N = mkN "wù" "chǎng";
sky_N = mkN "tiānkōng" "piān";
wind_N = mkN "fēng" "zhèn";
snow_N = mkN "xuě" "chǎng";
ice_N = mkN "bīng" "kuaī";
smoke_N = mkN "yān" "zhèn";
fire_N = mkN "huǒ" "chǎng";
ashes_N = mkN "huī" [];
burn_V = mkV "shaō" ;
road_N = mkN "lù" "tiaó";
mountain_N = mkN "shān" "zuò";
red_A = mkA "hóng" ;
yellow_A = mkA "huáng" ;
white_A = mkA "baí" ;
black_A = mkA "heī" ;
night_N = mkN "yèwǎn" ; -- [mark] "yèwǎn" 's classifier is "gè"
day_N = mkN "baítiān" []; -- [mark] "baítiān" -> "tiān", "tiān" itself is classifier
year_N = mkN "nián" [] ; -- [mark] "nián" itself is classifier
warm_A = mkA "wēnnuǎn" ;
cold_A = mkA "lěng" ;
full_A = mkA "mǎn" ;
new_A = mkA "xīn" ;
old_A = mkA "laǒ" ; -- [mark] "laǒ" for person, "jiù" for things
good_A = mkA "haǒ" ;
bad_A = mkA "huaì" ;
rotten_A = mkA "làn" ;
dirty_A = mkA "zāng" ;
straight_A = mkA "zhí" ;
round_A = mkA "yuán" ;
sharp_A = mkA "jiān" ;
dull_A = mkA "dùn" ;
smooth_A = mkA "guāng" ;
wet_A = mkA "shī" ;
dry_A = mkA "gān" ;
correct_A = mkA "duì" ;
near_A = mkA "jìn" ;
--far_A = mkA "yuǎn" ;
left_Ord = ss "zuǒ" ;
right_Ord = ss "yoù" ;
name_N = mkN "míng" ; -- [mark] "míng" --> "míng"
-- HSK
add_V3 = mkV3 "jia1" ;
airplane_N = mkN "fei1ji1" "jia4";
already_Adv = mkAdv "yi3jing1" ;
answer_V2S = mkV2S (mkV "hui2da1") ;
apple_N = mkN "pin2guo3" ;
art_N = mkN "yi4shu4" []; -- [mark] usually without classifier
ask_V2Q = mkV2Q (mkV "wen4") ;
bank_N = mkN "yin2hang2" "jian1";
beautiful_A = mkA "piao1liang4" ;
become_VA = mkV "bian4" ;
beer_N = mkN "pi2jiu3" "bei1";
bike_N = mkN "zi4hang2che1" "tai2";
add_V3 = mkV3 "jiā" ;
airplane_N = mkN "feījī" "jià";
already_Adv = mkAdv "yǐjīng" ;
answer_V2S = mkV2S (mkV "huídā") ;
apple_N = mkN "pínguǒ" ;
art_N = mkN "yìshù" []; -- [mark] usually without classifier
ask_V2Q = mkV2Q (mkV "wèn") ;
bank_N = mkN "yínháng" "jiān";
beautiful_A = mkA "piaōliàng" ;
become_VA = mkV "biàn" ;
beer_N = mkN "píjiǔ" "beī";
bike_N = mkN "zìhángchē" "taí";
blue_A = mkA "la" ;
boat_N = mkN "chuan2" "sao1";
book_N = mkN "shu1" "ben3";
bread_N = mkN "mian4bao1" ;
buy_V2 = mkV2 "mai3" ;
cap_N = mkN "mao4zi3" "ding3";
car_N = mkN "qi4che1" "tai2";
chair_N = mkN "yi3zi3" "ba3";
city_N = mkN "cheng2shi4" ; -- [mark] "shi4" --> "cheng2shi4"
clean_A = mkA "gan1jing4" ;
coat_N = mkN "yi1fu2" "jian4";
country_N = mkN "guo2jia1" ; -- [mark] "guo2" --> "guo2jia1"
cow_N = mkN "niu2" "tou2";
do_V2 = mkV2 "zuo4" ;
doctor_N = mkN "yi1sheng1" "ming2";
door_N = mkN "men2" "shan1";
factory_N = mkN "gong1chang3" "jian1";
far_Adv = mkAdv "yuan3" ;
fear_VS = mkVS (mkV "pa4") ;
find_V2 = mkV2 "fa1xian4" ;
forget_V2 = mkV2 "wang4" ;
friend_N = mkN "peng2you3" ;
girl_N = mkN "gu1niang2" ;
give_V3 = mkV3 "gei3" ;
go_V = mkV "qu4" ;
grammar_N = mkN "yu3fa3" ;
hat_N = mkN "mao4zi3" "ding3";
hill_N = mkN "shan1" "zuo4";
hope_VS = mkV "xi1wang4" ;
horse_N = mkN "ma3" "pi1";
hot_A = mkA "re4" ;
important_A = mkA "chong2yao1" ;
industry_N = mkN "gong1ye4" [];
jump_V = mkV "tiao4" ;
know_V2 = mkV2 "zhi1dao4" ;
know_VQ = mkV "zhi1dao4" ;
lamp_N = mkN "deng1" "zhan3";
language_N = mkN "yu3yan2" "zhong3";
learn_V2 = mkV2 "xue2" ;
leave_V2 = mkV2 "li2kai1" ; --[mark] "li2" --> "li2kai1", "li2" itself is either a morpheme, or a marker indicating distance
like_V2 = mkV2 "xi3huan1" ;
listen_V2 = mkV2 "ting1" ;
lose_V2 = mkV2 "diu1" ;
love_V2 = mkV2 "ai4" ;
music_N = mkN "yin1le4" [] ; -- [mark] usually without classifier
newspaper_N = mkN "bao4zhi3" "zhang1"; --[mark] "bao4" --> "bao4zhi3"
now_Adv = mkAdv "xian4zai4" ;
number_N = mkN "hao2ma3" ; -- [mark] "hao2" --> "hao2ma3"
open_V2 = mkV2 "kai1" ;
paint_V2A = mkV2A (mkV "hua4") ;
paper_N = mkN "zhi3" "zhang1";
pen_N = mkN "bi3" "qi2";
person_N = mkN "ren2" ;
play_V2 = mkV2 "wan2" ; --[mark] "wan2er2" --> "wan2"
put_V2 = mkV2 "bai3" ;
question_N = mkN "wen4ti2" ;
boat_N = mkN "chuán" "saō";
book_N = mkN "shū" "běn";
bread_N = mkN "miànbaō" ;
buy_V2 = mkV2 "maǐ" ;
cap_N = mkN "maòzǐ" "dǐng";
car_N = mkN "qìchē" "taí";
chair_N = mkN "yǐzǐ" "bǎ";
city_N = mkN "chéngshì" ; -- [mark] "shì" --> "chéngshì"
clean_A = mkA "gānjìng" ;
coat_N = mkN "yīfú" "jiàn";
country_N = mkN "guójiā" ; -- [mark] "guó" --> "guójiā"
cow_N = mkN "niú" "toú";
do_V2 = mkV2 "zuò" ;
doctor_N = mkN "yīshēng" "míng";
door_N = mkN "mén" "shān";
factory_N = mkN "gōngchǎng" "jiān";
far_Adv = mkAdv "yuǎn" ;
fear_VS = mkVS (mkV "pà") ;
find_V2 = mkV2 "fāxiàn" ;
forget_V2 = mkV2 "wàng" ;
friend_N = mkN "péngyoǔ" ;
girl_N = mkN "gūniáng" ;
give_V3 = mkV3 "geǐ" ;
go_V = mkV "qù" ;
grammar_N = mkN "yǔfǎ" ;
hat_N = mkN "maòzǐ" "dǐng";
hill_N = mkN "shān" "zuò";
hope_VS = mkV "xīwàng" ;
horse_N = mkN "mǎ" "pī";
hot_A = mkA "rè" ;
important_A = mkA "chóngyaō" ;
industry_N = mkN "gōng" [];
jump_V = mkV "tiaò" ;
know_V2 = mkV2 "zhīdaò" ;
know_VQ = mkV "zhīdaò" ;
lamp_N = mkN "dēng" "zhǎn";
language_N = mkN "yǔyán" "zhǒng";
learn_V2 = mkV2 "xué" ;
leave_V2 = mkV2 "líkaī" ; --[mark] "lí" --> "líkaī", "lí" itself is either a morpheme, or a marker indicating distance
like_V2 = mkV2 "xǐhuān" ;
listen_V2 = mkV2 "tīng" ;
lose_V2 = mkV2 "diū" ;
love_V2 = mkV2 "aì" ;
music_N = mkN "yīnlè" [] ; -- [mark] usually without classifier
newspaper_N = mkN "baòzhǐ" "zhāng"; --[mark] "baò" --> "baòzhǐ"
now_Adv = mkAdv "xiànzaì" timeAdvType ;
number_N = mkN "haómǎ" ; -- [mark] "haó" --> "haómǎ"
open_V2 = mkV2 "kaī" ;
paint_V2A = mkV2A (mkV "huà") ;
paper_N = mkN "zhǐ" "zhāng";
pen_N = mkN "bǐ" "qí";
person_N = mkN "rén" ;
play_V2 = mkV2 "wán" ; --[mark] "wánér" --> "wán"
put_V2 = mkV2 "baǐ" ;
question_N = mkN "wèntí" ;
rain_V0 = mkV "xia4yu3";
read_V2 = mkV2 "dou4" ;
reason_N = mkN "dao4li3" ;
restaurant_N = mkN "fan4dian4" "jian1";
run_V = mkV "pao3" ;
school_N = mkN "xue2jiao4" "suo3";
science_N = mkN "ke1xue2" []; -- [mark] usually without classifier
sell_V3 = mkV3 "mai4" ;
send_V3 = mkV3 "ji4" ;
sheep_N = mkN "yang2" "qi2";
ship_N = mkN "chuan2" "sao1";
shoe_N = mkN "xie2" "qi2";
shop_N = mkN "shang1dian4" "jian1";
song_N = mkN "ge1" "shou3";
speak_V2 = mkV2 "shui4" ;
student_N = mkN "xue2sheng1" "ming2" ;
table_N = mkN "zhuo1zi3" "zhang1";
talk_V3 = mkV3 "shui4" ;
teach_V2 = mkV2 "jiao1" ;
teacher_N = mkN "lao3shi1" "ming2";
television_N = mkN "dian4shi4" "tai2";
today_Adv = mkAdv "jin1tian1" ;
train_N = mkN "huo3che1" "liang4";
travel_V = mkV "lu:3hang2" ;
understand_V2 = mkV2 "dong3" ;
university_N = mkN "da4xue2" "suo3";
wait_V2 = mkV2 "deng3" ;
watch_V2 = mkV2 "kan1" ;
win_V2 = mkV2 "ying2" ;
window_N = mkN "chuang1" "shan1";
wine_N = mkN "jiu3" "ping2";
write_V2 = mkV2 "xie3" ;
young_A = mkA "nian2qing1" ;
rain_V0 = mkV "xiàyǔ";
read_V2 = mkV2 "doù" ;
reason_N = mkN "daòlǐ" ;
restaurant_N = mkN "fàndiàn" "jiān";
run_V = mkV "paǒ" ;
school_N = mkN "xuéjiaò" "suǒ";
science_N = mkN "kēxué" []; -- [mark] usually without classifier
sell_V3 = mkV3 "maì" ;
send_V3 = mkV3 "jì" ;
sheep_N = mkN "yáng" "qí";
ship_N = mkN "chuán" "saō";
shoe_N = mkN "xié" "qí";
shop_N = mkN "shāngdiàn" "jiān";
song_N = mkN "gē" "shoǔ";
speak_V2 = mkV2 "shuì" ;
student_N = mkN "xuéshēng" "míng" ;
table_N = mkN "zhuōzǐ" "zhāng";
talk_V3 = mkV3 "shuì" ;
teach_V2 = mkV2 "jiaō" ;
teacher_N = mkN "laǒshī" "míng";
television_N = mkN "diànshì" "taí";
today_Adv = mkAdv "jīntiān" timeAdvType ;
train_N = mkN "huǒchē" "liàng";
travel_V = mkV "lǚháng" ;
understand_V2 = mkV2 "dǒng" ;
university_N = mkN "dàxué" "suǒ";
wait_V2 = mkV2 "děng" ;
watch_V2 = mkV2 "kān" ;
win_V2 = mkV2 "yíng" ;
window_N = mkN "chuāng" "shān";
wine_N = mkN "jiǔ" "píng";
write_V2 = mkV2 "xiě" ;
young_A = mkA "niánqīng" ;
-- from Google
apartment_N = mkN "gong1yu4" "jian1" ;
baby_N = mkN "ying1er2" ;
boot_N = mkN "xue1zi3" "qi2" ; -- [mark] "ji1" --> "xue1zi3"
boss_N = mkN "lao3ban3" ;
boy_N = mkN "nan2hai2" ;
brother_N2 = mkN2 "di4di4" ;
butter_N = mkN "huang2you2" "he2";
camera_N = mkN "she4xiang4tou2" ;
carpet_N = mkN "detan3" "zhang1";
cat_N = mkN "mao1" "qi2" ;
ceiling_N = mkN "tian1hua1ban3" ; --[mark] "tian1hua1ban3shang4" --> "tian1hua1ban3"
cheese_N = mkN "nai3lao4" "kuai1";
church_N = mkN "jiao1tang2" "suo3" ;
computer_N = mkN "ji4suan4ji1" "tai2" ;
cousin_N = mkN "biao3di4" ;
distance_N3 = mkN3 (mkN "deju4li2") emptyPrep emptyPrep ; ----
enemy_N = mkN "di2ren2" ;
father_N2 = mkN2 "fu4qin1" ;
floor_N = mkN "deban3" ; -- [mark] floor "deban3"(have you cleaned the floor) "lou2ceng2"(which floor do you live?)
fridge_N = mkN "bing1xiang1" "tai2" ;
garden_N = mkN "hua1yuan2" "zuo4";
glove_N = mkN "shou3tao4" "fu4";
gold_N = mkN "jin1zi3" "kuai1"; -- [mark] also without classifier
harbour_N = mkN "hai3gang3" ;
iron_N = mkN "tie3" "kuai1"; -- [mark] also without classifier
king_N = mkN "guo2wang2" ;
leather_N = mkN "pi2ge2" "kuai1";
love_N = mkN "ai4" [] ; -- [mark] "kuai1" --> [], often without classifier
milk_N = mkN "niu2nai3" "bei1" ; -- [mark] "nai3" --> "niu2nai3", which literaly means cow milk
mother_N2 = mkN2 "mu3qin1";
oil_N = mkN "you2" "tong3" ; -- [mark] rewritten
peace_N = mkN "he2ping2" []; -- [mark] often without classifier
planet_N = mkN "xing1qiu2" ;
plastic_N = mkN "su4liao4" "kuai1"; -- [mark] "su4liao4zhi4cheng2" --> "su4liao4" often without classifier
policeman_N = mkN "jing3cha2" "ming2" ;
priest_N = mkN "mu4shi1" "wei4";
queen_N = mkN "nu:3wang2" ;
radio_N = mkN "shou1yin1ji1" "tai2" ;
religion_N = mkN "zong1jiao1" []; -- [mark] also without classifier
rock_N = mkN "dan4tou2" "kuai1" ;
roof_N = mkN "wu1ding3" ;
rubber_N = mkN "xiang4jiao1" "kuai1";
rule_N = mkN "gui1ze2" "xiang4"; -- [mark] "yuan2ze2" --> "gui1ze2"
shirt_N = mkN "chen4shan1" "jian4" ;
silver_N = mkN "yin2zi3" "kuai1"; -- [mark] "yin2" --> "yin2zi3"
sister_N = mkN "mei4mei4" ;
sock_N = mkN "wa4zi3" "qi2";
steel_N = mkN "gang1" "kuai1";
stove_N = mkN "lu2zi3" ;
village_N = mkN "cun1zhuang1" "zuo4";
war_N = mkN "zhan4zheng1" "chang3" ; -- [mark] rewritten
wood_N = mkN "mu4tou2" "kuai1" ; -- [mark] "mu4" --> "mu4tou2"
apartment_N = mkN "gōng" "jiān" ;
baby_N = mkN "yīngér" ;
boot_N = mkN "xuēzǐ" "qí" ; -- [mark] "jī" --> "xuēzǐ"
boss_N = mkN "laǒbǎn" ;
boy_N = mkN "nánhaí" ;
brother_N2 = mkN2 "dìdì" ;
butter_N = mkN "huángyoú" "hé";
camera_N = mkN "shèxiàngtoú" ;
carpet_N = mkN "detǎn" "zhāng";
cat_N = mkN "maō" "qí" ;
ceiling_N = mkN "tiānhuābǎn" ; --[mark] "tiānhuābǎnshàng" --> "tiānhuābǎn"
cheese_N = mkN "naǐlaò" "kuaī";
church_N = mkN "jiaōtáng" "suǒ" ;
computer_N = mkN "jìsuànjī" "taí" ;
cousin_N = mkN "biaǒdì" ;
distance_N3 = mkN3 (mkN "dejùlí") emptyPrep emptyPrep ; ----
enemy_N = mkN "dírén" ;
father_N2 = mkN2 "fùqīn" ;
floor_N = mkN "debǎn" ; -- [mark] floor "debǎn"(have you cleaned the floor) "loúcéng"(which floor do you live?)
fridge_N = mkN "bīngxiāng" "taí" ;
garden_N = mkN "huāyuán" "zuò";
glove_N = mkN "shoǔtaò" "fù";
gold_N = mkN "jīnzǐ" "kuaī"; -- [mark] also without classifier
harbour_N = mkN "haǐgǎng" ;
iron_N = mkN "tiě" "kuaī"; -- [mark] also without classifier
king_N = mkN "guówáng" ;
leather_N = mkN "pígé" "kuaī";
love_N = mkN "aì" [] ; -- [mark] "kuaī" --> [], often without classifier
milk_N = mkN "niúnaǐ" "beī" ; -- [mark] "naǐ" --> "niúnaǐ", which literaly means cow milk
mother_N2 = mkN2 "mǔqīn";
oil_N = mkN "yoú" "tǒng" ; -- [mark] rewritten
peace_N = mkN "hépíng" []; -- [mark] often without classifier
planet_N = mkN "xīngqiú" ;
plastic_N = mkN "sùliaò" "kuaī"; -- [mark] "sùliaòzhìchéng" --> "sùliaò" often without classifier
policeman_N = mkN "jǐngchá" "míng" ;
priest_N = mkN "mùshī" "weì";
queen_N = mkN "nǚwáng" ;
radio_N = mkN "shoūyīnjī" "taí" ;
religion_N = mkN "zōngjiaō" []; -- [mark] also without classifier
rock_N = mkN "dàntoú" "kuaī" ;
roof_N = mkN "wūdǐng" ;
rubber_N = mkN "xiàngjiaō" "kuaī";
rule_N = mkN "guīzé" "xiàng"; -- [mark] "yuánzé" --> "guīzé"
shirt_N = mkN "chènshān" "jiàn" ;
silver_N = mkN "yínzǐ" "kuaī"; -- [mark] "yín" --> "yínzǐ"
sister_N = mkN "meìmeì" ;
sock_N = mkN "wàzǐ" "qí";
steel_N = mkN "gāng" "kuaī";
stove_N = mkN "lúzǐ" ;
village_N = mkN "cūnzhuāng" "zuò";
war_N = mkN "zhànzhēng" "chǎng" ; -- [mark] rewritten
wood_N = mkN "mùtoú" "kuaī" ; -- [mark] "mù" --> "mùtoú"
-- from scratch, by Jolene
lin
alas_Interj = ssword "ai1" ;
beg_V2V = mkV2V (mkV "qi3qiu2") ; -- beg him to do something
break_V2 = mkV2 "da2po4" ;
broad_A = mkA "kuan1" ;
brown_A = mkA "zong1" ;
clever_A = mkA "cong1ming2" ;
close_V2 = mkV2 "guan1bi4" ;
easy_A2V = mkA2 "jian3chan2" ;
empty_A = mkA "kong1" ;
fun_AV = mkA "you3qu4" ;
hate_V2 = mkV2 "tao3yan4" ;
married_A2 = mkA2 "jie1hun1" ;
paris_PN = mkPN "ba1li2" ;
probable_AS = mkA "ke3neng2" ;
ready_A = mkA "zhun3bei4hao3" ; -- [mark] "zhun3bei4hao3": 准备(v) + 好(adj,complement)
seek_V2 = mkV2 "xun2qiu2" ;
stop_V = mkV "ting2zhi3" ;
stupid_A = mkA "ben4" ;
switch8off_V2 = mkV2 "guan1" ;
switch8on_V2 = mkV2 "kai1" ;
ugly_A = mkA "chou3" ;
uncertain_A = mkA "bu4que4ding4" ; -- [mark] "bu4que4ding4": 不("un-") + 确定("certain")
alas_Interj = ssword "aī" ;
beg_V2V = mkV2V (mkV "qǐqiú") ; -- beg him to do something
break_V2 = mkV2 "dápò" ;
broad_A = mkA "kuān" ;
brown_A = mkA "zōng" ;
clever_A = mkA "cōngng" ;
close_V2 = mkV2 "guānbì" ;
easy_A2V = mkA2 "jiǎnchán" ;
empty_A = mkA "kōng" ;
fun_AV = mkA "yoǔqù" ;
hate_V2 = mkV2 "taǒyàn" ;
married_A2 = mkA2 "jiēhūn" ;
paris_PN = mkPN "bālí" ;
probable_AS = mkA "kěnéng" ;
ready_A = mkA "zhǔnbeìhaǒ" ; -- [mark] "zhǔnbeìhaǒ": 准备(v) + 好(adj,complement)
seek_V2 = mkV2 "xúnqiú" ;
stop_V = mkV "tíngzhǐ" ;
stupid_A = mkA "bèn" ;
switch8off_V2 = mkV2 "guān" ;
switch8on_V2 = mkV2 "kaī" ;
ugly_A = mkA "choǔ" ;
uncertain_A = mkA "bùquèdìng" ; -- [mark] "bùquèdìng": 不("un-") + 确定("certain")

View File

@@ -12,12 +12,12 @@ main = do
pinyinFile = "pinyin.txt"
resModules = [mo | mo <-
["DictEng","Extra","Lexicon", "Numeral", "Paradigms","Res", "Structural","Symbol"]
["Extra","Lexicon", "Numeral", "Paradigms","Res", "Structural","Symbol"]
]
mkPinyin ma mo = do
s <- readFile mo
writeFile (mo ++ "-cmn") (useMapGF ma s)
s <- readFile ("../" ++ mo ++ "Chi.gf")
writeFile ("tmp/" ++ mo ++ "Chi.gf") (useMapGF ma s)
--import Pinyin (c2pMap, useMapGF, mkList)
@@ -46,7 +46,38 @@ useMapGF m s = case s of
where
convert cs = case cs of
'"':s -> '"' : useMapGF m s
c :s -> maybe [c] (head . words) (Map.lookup [c] m) ++ convert s
c :s -> maybe [c] (tone2tone . head . words) (Map.lookup [c] m) ++ convert s
_ -> cs
c2pMap ws = Map.fromList [(c,unwords ps) | (_,(c,ps)) <- ws]
-- from numeric tones to diacritics
tone2tone :: String -> String
tone2tone = combine . change . analyse where
analyse :: String -> [String] -- four parts: ch,a,ng,1
analyse s = case reverse s of
i:'r': v:x | elem i "1234" -> [reverse x,[v],"r", [i]]
i:'n': v:x | elem i "1234" -> [reverse x,[v],"n", [i]]
i:'g':'n':v:x | elem i "1234" -> [reverse x,[v],"ng",[i]]
i: v:x | elem i "1234" -> [reverse x,[v],"", [i]]
'r': v:x -> [reverse x,[v],"r", []]
'n': v:x -> [reverse x,[v],"n", []]
'g':'n': v:x -> [reverse x,[v],"ng",[]]
v :x -> [reverse x,[v],"", []]
_ -> error $ "illegal pinyin: " ++ s
change ss@[x,[v],ng,i] = case i of
[] -> ss
_ -> [x,[accent v !! (read i - 1)],ng]
combine = concat
accent v = case v of
'a' -> "āáǎà"
'e' -> "ēéěè"
'i' -> "īíǐì"
'o' -> "ōóǒò"
'u' -> "ūúǔù"
'ü' -> "ǖǘǚǜ"
'v' -> "ǖǘǚǜ"
_ -> error $ "no accents for " ++ [v]

View File

@@ -7,19 +7,19 @@ param Qform = bai | bai0 | shiwan | shiwan0 ;
param Bform = shi | shi0 | wan | wan0 ;
param Zero = zero | nozero ;
oper ling : Zero * Zero => Str =
table {<zero,z> => "ling2" ;
<z,zero> => "ling2" ;
table {<zero,z> => "líng" ;
<z,zero> => "líng" ;
<nozero,nozero> => []} ;
oper Wan : Zero => Str =
table {zero => "wan4" ;
table {zero => "wàn" ;
nozero => []} ;
oper mkD : Str -> Str -> Str = \x,_ -> word x ; -- hiding the "formal" version
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 Digit = {s,p : Str} ; -- s/p: without/with classifier (er/liang)
lincat Sub10 = {s,p,t : Str} ; -- t: with "shi wan"
lincat Sub100 = {end0,beg0 : Zero ; s,p : Bform => Str} ; -- end0: ends with zeros, e.g. 20 ; beg0: begins with zeros, e.g. 02
lincat Sub1000 = {end0,beg0 : Zero ; s,p : Qform => Str} ; -- end0: ends with zeros, e.g. 210 ; beg0: begins with zeros, e.g. 021
lincat Sub1000000 = {s,p : Str} ;
lin num x0 = x0 ;
@@ -27,105 +27,116 @@ lin num x0 = x0 ;
--
lin n2 =
{s = mkD "er4" "er4" ; p = "liang3"} ;
{s = mkD "èr" "èr" ; p = "liǎng"} ;
lin n3 =
{s,p = mkD "san1" "san1"} ;
{s,p = mkD "sān" "sān"} ;
lin n4 =
{s,p = mkD "si4" "si4"} ;
{s,p = mkD "sì" "sì"} ;
lin n5 =
{s,p = mkD "wu3" "wu3"} ;
{s,p = mkD "wǔ" "wǔ"} ;
lin n6 =
{s,p = mkD "liu4" "liu4"} ;
{s,p = mkD "liù" "liù"} ;
lin n7 =
{s,p = mkD "qi1" "qi1"} ;
{s,p = mkD "qī" "qī"} ;
lin n8 =
{s,p = mkD "ba1" "ba1"} ;
{s,p = mkD "bā" "bā"} ;
lin n9 =
{s,p = mkD "jiu3" "jiu3"} ;
{s,p = mkD "jiǔ" "jiǔ"} ;
lin pot01 =
{s,p = mkD "yi1" "yi1"} ;
{s,p = mkD "yī" "yī" ; t = []} ; -- t used in "(*yi) shi wan"
lin pot0 d =
{s = d.s ; p = d.p} ;
{s,t = d.s ; p = d.p} ;
lin pot110 =
{inh = nozero ;
{beg0 = nozero ; end0 = zero ;
s,p = table {
shi => mkD "yi1shi2" "yi1shi2" ;
shi0 => mkD "yi1shi2" "yi1shi2" ;
wan => mkD "yi1wan4" "yi1wan4" ;
wan0 => mkD "yi1wan4" "yi1wan4"}} ;
shi => mkD "shí" "shí" ;
shi0 => mkD "yīshí" "yīshí" ;
wan => mkD "yīwàn" "yīwàn" ;
wan0 => mkD "yīwàn" "yīwàn"
}} ;
lin pot111 =
{inh = nozero ;
{beg0 = nozero ; end0 = nozero ;
s,p = table {
shi => mkD "shi2yi1" "shi2yi1" ;
shi0 => mkD "yi1shi2yi1" "yi1shi2yi1" ;
wan => mkD "yi1wan4yi1qian1" "yi1wan4yi1qian1" ; -- 11.16 by chenpeng wan => mkD "shi2yi1wan4" "shi2yi1wan4" ;
wan0 => mkD "yi1wan4yi1qian1" "yi1wan4yi1qian1"}} ; -- 11.16 by chenpeng wan0 => mkD "shi2yi1wan4" "shi2yi1wan4"}} ;
shi => mkD "shíyī" "shíyī" ;
shi0 => mkD "yīshíyī" "yīshíyī" ;
wan => mkD "yīwànyīqiān" "yīwànyīqiān" ; -- 11.16 by chenpeng wan => mkD "shíyīwàn" "shíyīwàn" ;
wan0 => mkD "yīwànyīqiān" "yīwànyīqiān"
}} ; -- 11.16 by chenpeng wan0 => mkD "shíyīwàn" "shíyīwàn"}} ;
lin pot1to19 d =
{inh = nozero ;
{beg0 = nozero ; end0 = nozero ;
s,p = table {
shi => mkD "yi1shi2" "yi1shi2" ++ d.s ;
shi0 => mkD "yi1shi2" "yi1shi2" ;
wan => mkD "yi1wan4" "yi1wan4" ++ d.s ++ mkD "qian1" "qian1" ;
wan0 => mkD "yi1wan4" "yi1wan4" ++ d.s ++ mkD "qian1" "qian1"}} ;
shi => mkD "shí" "yīshí" ++ d.s ;
shi0 => mkD "yīshí" "yīshí" ++ d.s ;
wan => mkD "yīwàn" "yīwàn" ++ d.s ++ mkD "qiān" "qiān" ;
wan0 => mkD "yīwàn" "yīwàn" ++ d.s ++ mkD "qiān" "qiān"
}} ;
lin pot0as1 n =
{inh = zero ;
{beg0 = zero ; end0 = nozero ;
s = table {
shi => n.s ;
shi0 => n.s ;
wan => n.s ++ mkD "qian1" "qian1" ;
wan0 => n.s ++ mkD "qian1" "qian1"} ;
wan => n.p ++ mkD "qiān" "qiān" ;
wan0 => n.p ++ mkD "qiān" "qiān"
} ;
p = table {
shi => n.p ;
shi0 => n.s ;
wan => n.s ++ mkD "qian1" "qian1" ;
wan0 => n.s ++ mkD "qian1" "qian1"}
wan => n.p ++ mkD "qiān" "qiān" ;
wan0 => n.p ++ mkD "qiān" "qiān"
}
} ;
lin pot1 d =
{inh = nozero ; -- inh = zero
{beg0 = nozero ; end0 = zero ; -- inh = nozero ;
s,p = table {
shi => d.s ++ mkD "shi2" "shi2" ;
shi0 => d.s ++ mkD "shi2" "shi2" ;
wan0 => d.s ++ "wan4" ;
wan => d.s ++ "wan4"}} ;
shi => d.s ++ mkD "shí" "shí" ;
shi0 => d.s ++ mkD "shí" "shí" ;
wan0 => (d.p | d.s) ++ "wàn" ;
wan => (d.p | d.s) ++ "wàn"
}} ;
lin pot1plus d e =
{inh = nozero ;
{beg0 = nozero ; end0 = nozero ; -- inh = nozero ;
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" ;
wan0 => d.s ++ "wan4" ++ e.s ++ mkD "qian1" "qian1"}} ;
shi => d.s ++ mkD "shí" "shí" ++ e.s ;
shi0 => d.s ++ mkD "shí" "shí" ++ e.s ;
wan => (d.p | d.s) ++ "wàn" ++ e.s ++ mkD "qiān" "qiān" ;
wan0 => (d.p | d.s) ++ "wàn" ++ e.s ++ mkD "qiān" "qiān"
}} ;
lin pot1as2 n =
{inh = zero ;
{beg0 = zero ; end0 = n.end0 ; -- inh = zero ;
s = table {
bai => n.s ! shi ;
bai0 => n.s ! shi ;
shiwan => n.s ! wan ;
shiwan0 => n.s ! wan0} ;
bai => n.s ! shi ;
bai0 => n.s ! shi0 ;
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}} ;
bai => n.p ! shi ;
bai0 => n.s ! shi0 ;
shiwan => n.s ! wan ;
shiwan0 => n.s ! wan0
}} ;
lin pot2 d =
{inh = zero ;
{beg0 = nozero ; end0 = zero ; -- inh = zero ;
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"}} ;
bai => (d.p | d.s) ++ mkD "baǐ" "baǐ" ;
bai0 => (d.p | d.s) ++ mkD "baǐ" "baǐ" ;
shiwan0 => d.t ++ mkD "shíwàn" "shíwàn" ;
shiwan => d.t ++ mkD "shíwàn" "shíwàn"
}} ;
lin pot2plus d e =
{inh = nozero ;
{beg0 = nozero ; end0 = e.end0 ; -- inh = nozero ;
s,p = table {
bai => d.s ++ mkD "bai3" "bai3" ++ (ling ! <e.inh,e.inh>) ++ e.s ! shi0 ; --why omit "bai3"? i add it /chenpeng
bai0 => d.s ++ mkD "bai3" "bai3" ++ (ling ! <e.inh,e.inh>) ++ e.s ! shi0 ; --why omit "bai3"? i add it /chenpeng
shiwan => d.s ++ mkD "shi2" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan ; --why omit "shi2"? i add it /chenpeng
shiwan0 => d.s ++ mkD "shi2" "shi2" ++ (Wan ! (e.inh)) ++ e.s ! wan0}} ;--why omit "shi2"? i add it /chenpeng
bai => (d.p | d.s) ++ mkD "baǐ" "baǐ" ++ (ling ! <nozero,e.beg0>) ++ e.s ! shi0 ; --why omit "baǐ"? i add it /chenpeng
bai0 => (d.p | d.s) ++ mkD "baǐ" "baǐ" ++ (ling ! <nozero,e.beg0>) ++ e.s ! shi0 ; --why omit "baǐ"? i add it /chenpeng
shiwan => d.t ++ mkD "shí" "shí" ++ (Wan ! (e.end0)) ++ e.s ! wan ; --why omit "shí"? i add it /chenpeng
shiwan0 => d.t ++ mkD "shí" "shí" ++ (Wan ! (e.end0)) ++ e.s ! wan0
}} ;--why omit "shí"? i add it /chenpeng
lin pot2as3 n =
{s = n.s ! bai ; p = n.p ! bai} ;
lin pot3 n =
{s,p = n.s ! shiwan} ;
lin pot3plus n m =
{s,p = (n.s ! shiwan0) ++ (ling ! <n.inh,m.inh>) ++ m.s ! bai0} ;
{s,p = (n.s ! shiwan0) ++ (ling ! <n.end0,m.beg0>) ++ m.s ! bai0} ;
-- numerals as sequences of digits

View File

@@ -23,7 +23,10 @@ oper
mkPN : (john : Str) -> PN
= \s -> lin PN {s = word s} ;
= \s -> lin PN {s = word s} ; -- normal name, in Chinese characters
foreignPN : (john : Str) -> PN
= \s -> lin PN {s = s} ; -- foreign name, in Latin or other non-Chinese characters
mkA = overload {
mkA : (small : Str) -> A
@@ -40,6 +43,8 @@ oper
v + "+" + p => lin V (regVerb (v + p)) ;
_ => lin V (regVerb walk)
} ;
mkV : (walk,out : Str) -> V
= \v,p -> lin V (regVerb (v + p)) ; ----
mkV : (arrive : Str) -> Str -> Str -> Str -> Str -> V
= \arrive,pp,ds,dp,ep -> lin V (mkVerb arrive pp ds dp ep neg_s) ;
mkV : (arrive : Str) -> Str -> Str -> Str -> Str -> Str -> V
@@ -80,10 +85,13 @@ oper
} ;
mkVS = overload {
mkVS : V -> VS =
\v -> lin VS v ;
mkVS : Str -> VS =
\v -> lin VS (regVerb v) ;
mkVS : Str -> Str -> VS =
\s,t -> lin VS (regVerb (s + t)) ; ----
mkVS : V -> VS =
\v -> lin VS v ;
} ;
mkVA = overload {
@@ -131,15 +139,17 @@ oper
mkAdv = overload {
mkAdv : Str -> Adv
= \s -> lin Adv {s = word s ; advType = getAdvType s} ;
mkAdv : Str -> Str -> Adv
= \s,t -> lin Adv {s = word (s + t) ; advType = getAdvType s} ; ----
mkAdv : Str -> AdvType -> Adv
= \s,at -> lin Adv {s = word s ; advType = at} ;
} ;
AdvType : Type
= ResChi.AdvType ;
placeAdvType : AdvType -- without "zai4" included
placeAdvType : AdvType -- without "zaì" included
= ATPlace False ;
zai_placeAdvType : AdvType -- with "zai4" included
zai_placeAdvType : AdvType -- with "zaì" included
= ATPlace True ;
timeAdvType : AdvType
= ATTime ;
@@ -168,12 +178,16 @@ oper
= \s -> lin AdN {s = word s} ;
mkSubj : Str -> Subj
= \s -> lin Subj (ResChi.mkSubj s []) ;
mkConj : Str -> Conj
= \s -> lin Conj {s = \\_ => mkConjForm s} ;
mkConj = overload {
mkConj : Str -> Conj
= \s -> lin Conj {s = \\_ => mkConjForm s} ;
mkConj : (both,and : Str) -> Conj
= \s,t -> lin Conj {s = \\_ => mkConjForm2 s t} ;
} ;
mkpDet : Str -> Det
= \s -> lin Det {s = word s ; detType = DTFull Sg} ;
mkQuant : Str -> Quant
= \s -> lin Quant {s,pl = s ; detType = DTFull Sg} ;
= \s -> lin Quant {s,pl = word s ; detType = DTFull Sg} ;
mkAdA : Str -> AdA
= \s -> lin AdA {s = word s} ;
mkNum : Str -> Num

View File

@@ -17,44 +17,44 @@ resource ResChi = ParamX ** open Prelude in {
defaultStr = "" ;
than_s = "bi3" ;
than_s = "bǐ" ;
progressive_s = defaultStr ;
de_s, possessive_s = "de" ; -- also used for AP + NP
deAdvV_s = "de" ; -- between Adv and V
deVAdv_s = "de2" ; -- between V and Adv
deVAdv_s = "dé" ; -- between V and Adv
imperneg_s = neg_s ;
conjThat = emptyStr ; ----
reflPron = word "zi4ji3" ; -- pron + refl
passive_s = "bei4" ;
reflPron = word "zìjǐ" ; -- pron + refl
passive_s = "beì" ;
relative_s = possessive_s ; -- relative
superlative_s = "zui4" ; -- superlative, sup + adj + de
zai_s = "zai4" ; -- copula for place
you_s = "you3" ; -- to have
superlative_s = "zuì" ; -- superlative, sup + adj + de
zai_s = "zaì" ; -- copula for place
you_s = "yoǔ" ; -- to have
copula_s = "shi4" ;
exist_s = word "cun2zai4" ;
neg_s = "bu4" ;
question_s = "ma3" ;
yi_s = "yi1" ;
ordinal_s = "di4" ;
xie_s = "xie1" ;
the_s = "na3" ;
geng_s = "geng1" ; -- more, in comparison
hen_s = "hen3" ; -- very, or predicating a monosyllabic adjective
taN_s = "ta1" ;
copula_s = "shì" ;
exist_s = word "cúnzaì" ;
neg_s = "bù" ;
question_s = "mǎ" ;
yi_s = "yī" ;
ordinal_s = "dì" ;
xie_s = "xiē" ;
the_s = "nǎ" ;
geng_s = "gēng" ; -- more, in comparison
hen_s = "hěn" ; -- very, or predicating a monosyllabic adjective
taN_s = "tā" ;
zai_V = mkVerb "zai4" [] [] [] [] "bu4" ;
zai_V = mkVerb "zaì" [] [] [] [] "bù" ;
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
ge_s = "gè" ;
di_s = "shì" ; -- used in QuestSlash
ba_s = "bǎ" ; -- ba4, object marker
ba0_s = "bā" ; -- ba, used in imperatives
men_s = "men" ;
zan_s = "za2" ;
zan_s = "zá" ;
say_s = "shui4" ; -- used in embedded sentences: she answers him that we sleep
say_s = "shuì" ; -- used in embedded sentences: she answers him that we sleep
duncomma = "、" ;
chcomma = "" ;
@@ -67,6 +67,11 @@ resource ResChi = ParamX ** open Prelude in {
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@? + v@? + w@? + a@? + b@? + c@? + d@? + e@? =>
bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b (bword c (bword d e))))))))) ;
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? =>
bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b (bword c d)))))))) ;
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b c))))))) ;
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a b)))))) ;
x@? + y@? + z@? + u@? + v@? + w@? + a@? => bword x (bword y (bword z (bword u (bword v (bword w a))))) ;
x@? + y@? + z@? + u@? + v@? + w@? => bword x (bword y (bword z (bword u (bword v w)))) ;
@@ -89,13 +94,19 @@ param
CPosType = CAPhrase | CNPhrase | CVPhrase ;
DeForm = DeNoun | NdNoun ; -- parameter created for noun with/out partical "de"
AdvType = ATPlace Bool | ATTime | ATManner ; -- ATPlace True = has zai_s already
AdvType = ATPlace Bool | ATTime | ATManner | ATPoss ; -- ATPlace True = has zai_s already
-- parts of speech
oper
VP = {verb : Verb ; compl : Str ; prePart : Str} ;
VP = {
topic : Str ; -- topicalized item, before subject
prePart : Str ; -- between subject and verb
verb : Verb ;
compl : Str -- after verb
} ;
NP = {s : Str} ;
-- for morphology
@@ -116,16 +127,16 @@ oper
_ => mkAdj s False
} ;
copula : Verb = mkVerb "shi4" [] [] [] [] "bu4" ;
copula : Verb = mkVerb "shì" [] [] [] [] "bù" ;
hen_copula : Verb =
{s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "bu4"} ; ---
{s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "bù"} ; ---
nocopula : Verb =
{s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "bu4"} ; ---
{s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "bù"} ; ---
adjcopula : Verb =
{s = "shi4" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "bu4"} ; ---
{s = "shì" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "bù"} ; ---
regVerb : (walk : Str) -> Verb = \v ->
mkVerb v "le" "zhao1" "zai4" "guo4" "bu4" ; -- 没" ;
mkVerb v "le" "zhaō" "zaì" "guò" "bù" ; -- 没" ;
noVerb : Verb = regVerb [] ; ---?? -- used as copula for verbal adverbs
@@ -143,48 +154,60 @@ oper
} ;
Neg => table {
APlain => v.neg ++ v.sn ; --- neg?
APerf => "bu4" ++ v.sn ++ v.pp ;
ADurStat => "bu4" ++ v.sn ;
APerf => "" ++ v.sn ++ v.pp ;
ADurStat => "" ++ v.sn ;
ADurProg => v.neg ++ v.dp ++ v.sn ; -- mei or bu
AExper => v.neg ++ v.sn ++ v.ep
}
} ;
infVP : VP -> Str = \vp -> vp.prePart ++ vp.verb.s ++ vp.compl ;
infVP : VP -> Str = \vp -> vp.topic ++ vp.prePart ++ vp.verb.s ++ vp.compl ;
predV : Verb -> Str -> VP = \v,part -> {
verb = v ;
compl = part ;
prePart = [] ;
prePart, topic = [] ;
} ;
insertObj : NP -> VP -> VP = \np,vp -> {
verb = vp.verb ;
compl = np.s ++ vp.compl ;
prePart = vp.prePart
prePart = vp.prePart ;
topic = vp.topic
} ;
insertObjPost : NP -> VP -> VP = \np,vp -> {
verb = vp.verb ;
compl = vp.compl ++ np.s ;
prePart = vp.prePart
prePart = vp.prePart ;
topic = vp.topic
} ;
insertAdv : SS -> VP -> VP = \adv,vp -> {
verb = vp.verb ;
compl = vp.compl ;
prePart = adv.s ++ vp.prePart
prePart = adv.s ++ vp.prePart ;
topic = vp.topic
} ;
insertTopic : SS -> VP -> VP = \adv,vp -> {
verb = vp.verb ;
compl = vp.compl ;
prePart = vp.prePart ;
topic = adv.s ++ vp.topic
} ;
insertAdvPost : SS -> VP -> VP = \adv,vp -> {
verb = vp.verb ;
compl = vp.compl ;
prePart = vp.prePart ++ adv.s
prePart = vp.prePart ++ adv.s ;
topic = vp.topic
} ;
insertPP : SS -> VP -> VP = \pp,vp -> {
verb = vp.verb ;
compl = vp.compl ;
prePart = vp.prePart ++ pp.s
prePart = vp.prePart ++ pp.s ;
topic = vp.topic
} ;
insertExtra : SS -> VP -> VP = \ext,vp ->
@@ -211,8 +234,8 @@ oper
} ;
mkClauseCompl : Str -> VP -> Str -> Clause = \np,vp,compl -> {
s = \\p,a => np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
np = np ;
s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
np = vp.topic ++ np ;
vp = insertObj (ss compl) vp ;
} ;
@@ -228,15 +251,15 @@ oper
Quantifier = Determiner ** {pl : Str} ;
mkDet = overload {
mkDet : Str -> Determiner = \s -> {s = s ; detType = DTFull Sg} ;
mkDet : Str -> Number -> Determiner = \s,n -> {s = s ; detType = DTFull n} ;
mkDet : Str -> DetType -> Determiner = \s,d -> {s = s ; detType = d} ;
mkDet : Str -> Determiner = \s -> {s = word s ; detType = DTFull Sg} ;
mkDet : Str -> Number -> Determiner = \s,n -> {s = word s ; detType = DTFull n} ;
mkDet : Str -> DetType -> Determiner = \s,d -> {s = word s ; detType = d} ;
} ;
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} ;
mkQuant : Str -> Quantifier = \s -> {s,pl = word s ; detType = DTFull Sg} ;
mkQuant : Str -> DetType -> Quantifier = \s,d -> {s,pl = word s ; detType = d} ;
mkQuant : Str -> Str -> DetType -> Quantifier = \s,p,d -> {s = word s ; detType = d ; pl = p} ;
} ;
pronNP : (s : Str) -> NP = \s -> {
@@ -252,10 +275,16 @@ oper
} ;
getAdvType : Str -> AdvType = \s -> case s of {
"zai4" + _ => ATPlace True ; -- certain that True
"的" => ATPoss ;
"在" + _ => ATPlace True ; -- certain that True
_ => ATPlace False -- uncertain whether ATPlace
} ;
possessiveIf : AdvType -> Str = \at -> case at of {
ATPoss => [] ; --- to avoid double "de"
_ => possessive_s
} ;
mkSubj : Str -> Str -> {prePart : Str ; sufPart : Str} = \p,s -> {
prePart = word p ;
sufPart = word s

View File

@@ -4,58 +4,58 @@ concrete StructuralChi of Structural = CatChi **
flags coding = utf8 ;
lin
every_Det = mkDet "mei3" Sg ;
every_Det = mkDet "meǐ" Sg ;
this_Quant = mkQuant "zhe4" ;
that_Quant = mkQuant "na3" ;
this_Quant = mkQuant "zhè" ;
that_Quant = mkQuant "nǎ" ;
i_Pron = pronNP "wo3" ;
youSg_Pron = pronNP "ni3" ;
he_Pron = pronNP "ta1" ;
she_Pron = pronNP "ta1" ;
we_Pron = pronNP "wo3men" ;
youPl_Pron = pronNP "ni3men" ;
they_Pron = pronNP "ta1men" ;
i_Pron = pronNP "wǒ" ;
youSg_Pron = pronNP "nǐ" ;
he_Pron = pronNP "tā" ;
she_Pron = pronNP "tā" ;
we_Pron = pronNP "wǒmen" ;
youPl_Pron = pronNP "nǐmen" ;
they_Pron = pronNP "tāmen" ;
very_AdA = ssword "fei1chang2" ;
very_AdA = ssword "feīcháng" ;
by8means_Prep = mkPrep [] "pang2bian1" mannerAdvType ;
-- in_Prep = mkPrep "li3" []; --- in Paris
in_Prep = mkPrep "zai4" "zhong1" ; --- in the house, the car, etc
possess_Prep = mkPrep [] "de" ;
with_Prep = mkPrep "he2" "yi1qi3" ;
---- with_Prep = mkPrep [] "he2"; -- an alternative for some uses
by8means_Prep = mkPrep [] "pángbiān" mannerAdvType ;
-- in_Prep = mkPrep "lǐ" []; --- in Paris
in_Prep = mkPrep "zaì" "zhōng" ; --- in the house, the car, etc
possess_Prep = mkPrep [] "de" ATPoss ;
with_Prep = mkPrep "hé" "yīqǐ" (ATPlace True) ; -- "with you"
---- with_Prep = mkPrep "hé" [] ; -- "with bread"
and_Conj = {s = table {
CPhr CNPhrase => mkConjForm "he2" ;
CPhr CAPhrase => mkConjForm "er2" ;
CPhr CVPhrase => mkConjForm "you4" ;
CSent => mkConjForm "bing4qie3" --modified by chenpneg 11.19
CPhr CNPhrase => mkConjForm "hé" ;
CPhr CAPhrase => mkConjForm "ér" ;
CPhr CVPhrase => mkConjForm "yoù" ;
CSent => mkConjForm "bìngqiě" --modified by chenpneg 11.19
}
} ;
or_Conj = {s = table {
CPhr _ => mkConjForm "huo4" ;
CSent => mkConjForm "hai2shi4"
CPhr _ => mkConjForm "huò" ;
CSent => mkConjForm "haíshì"
}
} ;
although_Subj = mkSubj "sui1ran2" "dan4";
because_Subj = mkSubj "yin1wei2" "suo3yi3" ;
when_Subj = mkSubj [] "deshi2hou4" ;
although_Subj = mkSubj "suīrán" "dàn";
because_Subj = mkSubj "yīnweí" "suǒyǐ" ;
when_Subj = mkSubj [] "deshíhoù" ;
here_Adv = mkAdv "zhe4li3" ;
there_Adv = mkAdv "na3li3" ;
whoSg_IP, whoPl_IP = mkIPL "shei2" ;
whatSg_IP, whatPl_IP = mkIPL " shen2ma" ;
where_IAdv = mkIAdvL "na3li3" ;
when_IAdv = mkIAdvL "shen2mashi2hou4" ;
how_IAdv = mkIAdvL "ru2he2" ;
all_Predet = ssword "suo3you3" ;
many_Det = mkDet (word "hen3duo1") DTPoss ;
someSg_Det = mkDet (word "yi1xie1") Sg ;
somePl_Det = mkDet (word "yi1xie1") Sg ;
few_Det = mkDet "shao3" Pl ;
other_A = mkA "qi2ta1" ;
here_Adv = mkAdv "zhèlǐ" ;
there_Adv = mkAdv "nǎlǐ" ;
whoSg_IP, whoPl_IP = mkIPL "sheí" ;
whatSg_IP, whatPl_IP = mkIPL " shénma" ;
where_IAdv = mkIAdvL "nǎlǐ" ;
when_IAdv = mkIAdvL "shénmashíhoù" ;
how_IAdv = mkIAdvL "rúhé" ;
all_Predet = ssword "suǒyoǔ" ;
many_Det = mkDet (word "hěnduō") DTPoss ;
someSg_Det = mkDet (word "yīxiē") Sg ;
somePl_Det = mkDet (word "yīxiē") Sg ;
few_Det = mkDet "shaǒ" Pl ;
other_A = mkA "qítā" ;
oper
mkIPL, mkIAdvL, mkAdA, mkIDetL, mkPConjL, mkIQuant = ssword ;
@@ -65,115 +65,115 @@ oper
lin
above_Prep = mkPrep [] "shang4bian1" ;
after_Prep = mkPrep [] "yi3hou4" timeAdvType ;
under_Prep = mkPrep [] "xia4" ;
why_IAdv = mkIAdvL "wei2shen2ma" ;
too_AdA = mkAdA "tai4" ;
above_Prep = mkPrep [] "shàngbiān" ;
after_Prep = mkPrep [] "yǐhoù" timeAdvType ;
under_Prep = mkPrep [] "xià" ;
why_IAdv = mkIAdvL "weíshénma" ;
too_AdA = mkAdA "taì" ;
before_Prep = mkPrep [] "zhi1qian2" timeAdvType ;
between_Prep = mkPrep [] "zhi1jian1" ;
but_PConj = mkPConjL "dan4shi4" ;
before_Prep = mkPrep [] "zhīqián" timeAdvType ;
between_Prep = mkPrep [] "zhījiān" ;
but_PConj = mkPConjL "dànshì" ;
can_VV = mkVerb "neng2" [] [] [] [] "bu4" ;
must_VV = mkVerb "bi4xu1" [] [] [] [] "bu4" ; ---- False "bu4neng2"
want_VV = mkVerb "xiang3" [] [] [] [] "bu4" ;
can_VV = mkVerb "néng" [] [] [] [] "bù" ;
must_VV = mkVerb "bìxū" [] [] [] [] "bù" ; ---- False "bùnéng"
want_VV = mkVerb "xiǎng" [] [] [] [] "bù" ;
can8know_VV = mkV "hui4" [] [] [] [] "bu4" ; ----
can8know_VV = mkV "huì" [] [] [] [] "bù" ; ----
except_Prep = mkPrep "yi3wai4" "chu2le" mannerAdvType ;
for_Prep = mkPrep "wei2le" ;
from_Prep = mkPrep "cong1" ;
in8front_Prep = mkPrep zai_s "qian2bian1" ;
it_Pron = pronNP "ta1" ;
much_Det = mkDet "duo1" Sg ;
no_Quant = mkQuant "bu4" ;
not_Predet = ssword "bu4" ;
otherwise_PConj = mkPConjL "hai2shi4" ;
to_Prep = mkPrep "wang3" ;
except_Prep = mkPrep "yǐwaì" "chúle" mannerAdvType ;
for_Prep = mkPrep "weíle" ;
from_Prep = mkPrep "cōng" "" (ATPlace True) ;
in8front_Prep = mkPrep zai_s "qiánbiān" ;
it_Pron = pronNP "tā" ;
much_Det = mkDet "duō" Sg ;
no_Quant = mkQuant "bù" ;
not_Predet = ssword "bù" ;
otherwise_PConj = mkPConjL "haíshì" ;
to_Prep = mkPrep "wǎng" ;
have_V2 = mkV2 (mkV "you3" "le" "zhao1" "zai4" "guo4" "mei2") ;
have_V2 = mkV2 (mkV "yoǔ" "le" "zhaō" "zaì" "guò" "meí") ;
yes_Utt = ss "dui4" ;
yes_Utt = ss "duì" ;
no_Utt = ss neg_s ;
lin
always_AdV = ssword "yi1zhi2" ;
part_Prep = mkPrep possessive_s ;
language_title_Utt = ssword "zhong1wen2" ;
please_Voc = ss "qing3" ;
quite_Adv = mkAdA "de2hen3" ;
always_AdV = ssword "yīzhí" ;
part_Prep = mkPrep [] "de" ATPoss ;
language_title_Utt = ssword "zhōngwén" ;
please_Voc = ss "qǐng" ;
quite_Adv = mkAdA "déhěn" ;
-- just missing
lin
almost_AdA = ssword "ji1hu1" ;
almost_AdN = ssword "ji1hu1" ;
as_CAdv = {s = word "he2" ; p = word "yi1yang4" } ; -- modified by chenpeng 11.24
at_least_AdN = ssword "zui4shao3" ; -- at least five
at_most_AdN = ssword "zui4duo1" ;
behind_Prep = mkPrep "zai4" "hou4mian4" ;
almost_AdA = ssword "jīhū" ;
almost_AdN = ssword "jīhū" ;
as_CAdv = {s = word "hé" ; p = word "yīyàng" } ; -- modified by chenpeng 11.24
at_least_AdN = ssword "zuìshaǒ" ; -- at least five
at_most_AdN = ssword "zuìduō" ;
behind_Prep = mkPrep "zaì" "hoùmiàn" ;
both7and_DConj = {s = table { -- modified by chenpeng 11.19
CPhr CNPhrase => mkConjForm2 "bao1kuo4" "he2" ;
CPhr CAPhrase => mkConjForm2 "ji2" "you4" ;
CPhr CVPhrase => mkConjForm2 "bu4dan4" "er2qie3" ;
CSent => mkConjForm2 "bu4dan4" "er2qie3"
CPhr CNPhrase => mkConjForm2 "baōkuò" "hé" ;
CPhr CAPhrase => mkConjForm2 "jí" "yoù" ;
CPhr CVPhrase => mkConjForm2 "bùdàn" "érqiě" ;
CSent => mkConjForm2 "bùdàn" "érqiě"
}
} ;
by8agent_Prep = mkPrep "bei4" [] mannerAdvType; -- by for agent in passive
by8agent_Prep = mkPrep "beì" [] mannerAdvType; -- by for agent in passive
-- [mark] 被
during_Prep = mkPrep "zai4" "qi1jian1" timeAdvType ; -- [mark] often equivalent to nothing
during_Prep = mkPrep "zaì" "qījiān" timeAdvType ; -- [mark] often equivalent to nothing
-- translation for "he swam during this summer. " and "he swam this summer." are often the same
either7or_DConj = {s = table { -- modified by chenpeng 11.19
CPhr CNPhrase => mkConjForm2 "huo4zhe3" "huo4zhe3" ;
CPhr CAPhrase => mkConjForm2 "yao1ma" "yao1ma" ;
CPhr CVPhrase => mkConjForm2 "yao1ma" "yao1ma" ;
CSent => mkConjForm2 "yao1ma" "yao1ma"
CPhr CNPhrase => mkConjForm2 "huòzhě" "huòzhě" ;
CPhr CAPhrase => mkConjForm2 "yaōma" "yaōma" ;
CPhr CVPhrase => mkConjForm2 "yaōma" "yaōma" ;
CSent => mkConjForm2 "yaōma" "yaōma"
}
} ;
everybody_NP = ssword "mei3ge4ren2" ; -- [mark] "mei3ge4ren2": 每(every)+个(classifier)+人(person)
everything_NP = ssword "mei3jian4shi4" ; -- [mark] "mei3jian4shi4": 每(every)+件(classifier)+事(thing)
everywhere_Adv = mkAdv "dao4chu3" ;
here7from_Adv = mkAdv "cong1zhe4li3" ; -- from here
here7to_Adv = mkAdv "dao4zhe4li3" ; -- to here
-- [mark] "cong1zhe4li3" 从(from) 这里(here)
-- "dao4zhe4li3" 到( to ) 这里(here)
how8many_IDet = mkIDet "duo1shao3" ;
how8much_IAdv = ssword "duo1shao3" ;
if_Subj = mkSubj "ru2guo3" [] ; --"jiu4" ; -- [mark] "jiu4" often comes between NP and VP
less_CAdv = {s = than_s ; p = word "mei2geng1"} ; -- modified by chenpeng 11.24
more_CAdv = {s = than_s ; p = word "geng1"} ; -- modified by chenpeng 11.24
most_Predet = ssword "da4duo1shu3" ;
everybody_NP = ssword "meǐgèrén" ; -- [mark] "meǐgèrén": 每(every)+个(classifier)+人(person)
everything_NP = ssword "meǐjiànshì" ; -- [mark] "meǐjiànshì": 每(every)+件(classifier)+事(thing)
everywhere_Adv = mkAdv "daòchǔ" ;
here7from_Adv = mkAdv "cōngzhèlǐ" ; -- from here
here7to_Adv = mkAdv "daòzhèlǐ" ; -- to here
-- [mark] "cōngzhèlǐ" 从(from) 这里(here)
-- "daòzhèlǐ" 到( to ) 这里(here)
how8many_IDet = mkIDet "duōshaǒ" ;
how8much_IAdv = ssword "duōshaǒ" ;
if_Subj = mkSubj "rúguǒ" [] ; --"jiù" ; -- [mark] "jiù" often comes between NP and VP
less_CAdv = {s = than_s ; p = word "meígēng"} ; -- modified by chenpeng 11.24
more_CAdv = {s = than_s ; p = word "gēng"} ; -- modified by chenpeng 11.24
most_Predet = ssword "dàduōshǔ" ;
if_then_Conj = {s = table { -- added by chenpeng 11.19
CPhr CNPhrase => mkConjForm [] ;
CPhr CAPhrase => mkConjForm [] ;
CPhr CVPhrase => mkConjForm [] ;
CSent => mkConjForm2 "ru2guo3" "na3ma"
CSent => mkConjForm2 "rúguǒ" "nǎma"
}
} ;
nobody_NP = ssword "mei2ren2" ;
nothing_NP = ssword "mei2you3shen2ma" ;
on_Prep = mkPrep "zai4" "shang4" ;
only_Predet = ssword "qi2you3" ; -- only John
so_AdA = ssword "ru2ci3" ;
somebody_NP = ssword "mou3ren2" ;
something_NP = ssword "mou3shi4" ; -- [mark] in sent, it depends on the context
somewhere_Adv = mkAdv "mou3chu3" ;
nobody_NP = ssword "meírén" ;
nothing_NP = ssword "meíyoǔshénma" ;
on_Prep = mkPrep "zaì" "shàng" ;
only_Predet = ssword "qíyoǔ" ; -- only John
so_AdA = ssword "rúcǐ" ;
somebody_NP = ssword "moǔrén" ;
something_NP = ssword "moǔshì" ; -- [mark] in sent, it depends on the context
somewhere_Adv = mkAdv "moǔchǔ" ;
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 = mkIQuant "na3" ;
there7from_Adv = mkAdv "cōngnǎlǐ" ; -- from there
there7to_Adv = mkAdv "daònǎlǐ" ;
therefore_PConj = ssword "yīncǐ" ;
through_Prep = mkPrep "tōngguò" ;
which_IQuant = mkIQuant "nǎ" ; --
--which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context
without_Prep = mkPrep "mei2you3" [] mannerAdvType ;
youPol_Pron = ssword "nin2" ; -- polite you
without_Prep = mkPrep "meíyoǔ" [] mannerAdvType ;
youPol_Pron = ssword "nín" ; -- polite you
}

View File

@@ -1,4 +1,4 @@
--# -path=.:../abstract:../common
--# -path=.:../abstract:../common:../prelude
concrete SymbolChi of Symbol = CatChi ** open Prelude, ResChi in {