1
0
forked from GitHub/gf-core

fixes to Det and ComplSlash in Chi

This commit is contained in:
aarne
2012-10-15 20:03:13 +00:00
parent d21c9913cf
commit fefb95ecc7
8 changed files with 100 additions and 157 deletions

View File

@@ -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

View File

@@ -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 "唉" ;

View File

@@ -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 ;

View File

@@ -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.inh,e.inh>) ++ e.s ! shi0 ;
bai0 => d.s ++ mkD "" "佰" ++ (ling ! <e.inh,e.inh>) ++ 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 ! <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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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