extensions from Codex

This commit is contained in:
Krasimir Angelov committed 2026-10-20 09:32:00 +02:00
1 parent ef9dd1ca40
commit 4e259e4150
15 files changed
+238 -30

No files matched your search

+2
View File
@@ -20,6 +20,8 @@ concrete AdjectiveTha of Adjective = CatTha ** open ResTha, Prelude in {
AdAP ada ap = thbind ap ada ; AdAP ada ap = thbind ap ada ;
AdvAP ap adv = thbind ap adv ;
UseA2 a = a ; UseA2 a = a ;
} }
+2
View File
@@ -4,6 +4,8 @@ concrete AdverbTha of Adverb = CatTha **
lin lin
PositAdvAdj a = a ; PositAdvAdj a = a ;
PositAdAAdj a = a ;
PrepNP prep np = thbind prep np ; PrepNP prep np = thbind prep np ;
ComparAdvAdj cadv a np = ss (thbind a.s cadv.s cadv.p np.s) ; ComparAdvAdj cadv a np = ss (thbind a.s cadv.s cadv.p np.s) ;
+2
View File
@@ -47,6 +47,8 @@ concrete CatTha of Cat = CommonX ** open ResTha, Prelude in {
Predet = {s1,s2 : Str} ; Predet = {s1,s2 : Str} ;
Ord = {s : Str} ; Ord = {s : Str} ;
Num = {s : Str ; hasC : Bool} ; Num = {s : Str ; hasC : Bool} ;
ACard = {s : Str} ;
DAP = Determiner ** {adj : Str} ;
-- Numeral -- Numeral
+7
View File
@@ -6,6 +6,10 @@ concrete ConjunctionTha of Conjunction = CatTha ** open Prelude, Coordination in
ConjAdv = conjunctDistrSS ; ConjAdv = conjunctDistrSS ;
ConjNP = conjunctDistrSS ; ConjNP = conjunctDistrSS ;
ConjAP = conjunctDistrSS ; ConjAP = conjunctDistrSS ;
ConjCN conj xs = {
s = conj.s1 ++ xs.s1 ++ conj.s2 ++ xs.s2 ;
c = xs.c
} ;
ConjRS = conjunctDistrSS ; ConjRS = conjunctDistrSS ;
-- These fun's are generated from the list cat's. -- These fun's are generated from the list cat's.
@@ -18,6 +22,8 @@ concrete ConjunctionTha of Conjunction = CatTha ** open Prelude, Coordination in
ConsNP = consrSS thcomma ; ConsNP = consrSS thcomma ;
BaseAP = twoSS ; BaseAP = twoSS ;
ConsAP = consrSS thcomma ; ConsAP = consrSS thcomma ;
BaseCN x y = twoSS x y ** {c = y.c} ;
ConsCN x xs = consrSS thcomma x xs ** {c = xs.c} ;
BaseRS = twoSS ; BaseRS = twoSS ;
ConsRS = consrSS thcomma ; ConsRS = consrSS thcomma ;
@@ -26,6 +32,7 @@ concrete ConjunctionTha of Conjunction = CatTha ** open Prelude, Coordination in
[Adv] = {s1,s2 : Str} ; [Adv] = {s1,s2 : Str} ;
[NP] = {s1,s2 : Str} ; [NP] = {s1,s2 : Str} ;
[AP] = {s1,s2 : Str} ; [AP] = {s1,s2 : Str} ;
[CN] = {s1,s2,c : Str} ;
[RS] = {s1,s2 : Str} ; [RS] = {s1,s2 : Str} ;
oper oper
+41 -14
View File
@@ -23,6 +23,22 @@ lin
how_far_QCl x = mkQCl (lin IComp (ss ("ไกล" + "เท่า" + "ไร"))) (lin NP x) ; how_far_QCl x = mkQCl (lin IComp (ss ("ไกล" + "เท่า" + "ไร"))) (lin NP x) ;
-- some more things -- some more things
n_units_AP card unit a = lin AP {
s = R.thbind a.s card.s unit.s
} ;
n_units_of_NP card unit np = lin NP {
s = R.thbind card.s unit.s "ของ" np.s
} ;
n_unit_CN card unit cn = lin CN {
s = R.thbind cn.s card.s unit.s ; c = cn.c
} ;
bottle_of_CN np = lin CN {s = R.thbind "ขวด" "ของ" np.s ; c = "ขวด"} ;
cup_of_CN np = lin CN {s = R.thbind "ถ้วย" "ของ" np.s ; c = "ถ้วย"} ;
glass_of_CN np = lin CN {s = R.thbind "แก้ว" "ของ" np.s ; c = "แก้ว"} ;
---- weather_adjCl ap = mkCl (mkVP (lin AP ap)) ; ---- weather_adjCl ap = mkCl (mkVP (lin AP ap)) ;
---- is_right_VP = mkVP (ParadigmsTha.mkA "对") ; ---- is_right_VP = mkVP (ParadigmsTha.mkA "对") ;
@@ -38,6 +54,19 @@ lincat
lin lin
weekdayPunctualAdv w = SyntaxTha.mkAdv (mkPrep []) (mkNP w) ; weekdayPunctualAdv w = SyntaxTha.mkAdv (mkPrep []) (mkNP w) ;
weekdayHabitualAdv w = SyntaxTha.mkAdv (mkPrep []) (mkNP a_Quant plNum (mkCN w)) ; weekdayHabitualAdv w = SyntaxTha.mkAdv (mkPrep []) (mkNP a_Quant plNum (mkCN w)) ;
-- Weekday names already include วัน; the temporal modifier follows them.
weekdayNextAdv w = lin Adv {s = R.thbind w.s "ถัดไป"} ;
weekdayLastAdv w = lin Adv {s = R.thbind w.s "ที่แล้ว"} ;
monthAdv m = lin Adv {s = R.thbind "เดือน" m.s} ;
yearAdv y = lin Adv {s = R.thbind "ปี" y.s} ;
dayMonthAdv d m = lin Adv {s = R.thbind "วันที่" d.s "เดือน" m.s} ;
monthYearAdv m y = lin Adv {s = R.thbind "เดือน" m.s "ปี" y.s} ;
dayMonthYearAdv d m y = lin Adv {
s = R.thbind "วันที่" d.s "เดือน" m.s "ปี" y.s
} ;
intYear i = lin NP {s = i.s} ;
intMonthday i = lin NP {s = i.s} ;
---- weekdayNextAdv w = lin Adv {s = "下" ++ w.s ; advType = timeAdvType} ; ---- weekdayNextAdv w = lin Adv {s = "下" ++ w.s ; advType = timeAdvType} ;
---- weekdayLastAdv w = lin Adv {s = "上" ++ w.s ; advType = timeAdvType} ; ---- weekdayLastAdv w = lin Adv {s = "上" ++ w.s ; advType = timeAdvType} ;
{- {-
@@ -76,20 +105,18 @@ lin
sunday_Weekday = mkN (R.thword "วัน" "อา" "ทิตย์") ; sunday_Weekday = mkN (R.thword "วัน" "อา" "ทิตย์") ;
{- lin january_Month = mkN "มกราคม" ;
lin january_Month = mkN "一月" ; february_Month = mkN "กุมภาพันธ์" ;
lin february_Month = mkN "二月" ; march_Month = mkN "มีนาคม" ;
lin march_Month = mkN "三月" ; april_Month = mkN "เมษายน" ;
lin april_Month = mkN "四月" ; may_Month = mkN "พฤษภาคม" ;
lin may_Month = mkN "五月" ; june_Month = mkN "มิถุนายน" ;
lin june_Month = mkN "六月" ; july_Month = mkN "กรกฎาคม" ;
lin july_Month = mkN "七月" ; august_Month = mkN "สิงหาคม" ;
lin august_Month = mkN "八月t" ; september_Month = mkN "กันยายน" ;
lin september_Month = mkN "九月" ; october_Month = mkN "ตุลาคม" ;
lin october_Month = mkN "十月" ; november_Month = mkN "พฤศจิกายน" ;
lin november_Month = mkN "十一月" ; december_Month = mkN "ธันวาคม" ;
lin december_Month = mkN "十二月" ;
-}
----lin afrikaans_Language = mkLanguage "南非語" ; ----lin afrikaans_Language = mkLanguage "南非語" ;
+102
View File
@@ -0,0 +1,102 @@
--# -path=.:../abstract:../common
concrete ExtendTha of Extend = CatTha ** open
Prelude, ResTha, StringsTha, Coordination, (G = GrammarTha)
in {
lincat
VPS, VPI = SS ;
[VPS], [VPI] = {s1, s2 : Str} ;
VPS2, VPI2 = SS ** {c2 : Str} ;
[VPS2], [VPI2] = {s1, s2, c2 : Str} ;
RNP = NP ;
RNPList = {s1, s2 : Str} ;
[Comp] = {s1, s2 : Str} ;
[Imp] = {s1, s2 : Polarity => Str} ;
X = SS ;
lin
GenModNP num np cn =
G.DetCN (G.DetQuant G.DefArt num)
(cn ** {s = thbind cn.s khoog_s np.s}) ;
CompBareCN = G.CompCN ;
StrandQuestSlash = G.QuestSlash ;
StrandRelSlash = G.RelSlash ;
EmptyRelSlash slash = {s = \\p => thbind (slash.s ! p) slash.c2} ;
MkVPS t p vp = ss (thbind t.s p.s (vp.s ! p.p) vp.e) ;
BaseVPS = twoSS ;
ConsVPS = consrSS [] ;
ConjVPS = conjunctDistrSS ;
PredVPS np vps = ss (thbind np.s vps.s) ;
MkVPI vp = ss (infVP vp) ;
BaseVPI = twoSS ;
ConsVPI = consrSS [] ;
ConjVPI = conjunctDistrSS ;
ComplVPIVV vv vpi = G.ComplVV vv (lin VP {s = \\_ => vpi.s ; e = []}) ;
BaseComp x y = {s1 = x.s ! Pos ; s2 = y.s ! Pos} ;
ConsComp x xs = {s1 = thbind (x.s ! Pos) xs.s1 ; s2 = xs.s2} ;
ConjComp c xs = {s = \\p => thbind c.s1 xs.s1 c.s2 xs.s2} ;
BaseImp x y = {s1 = x.s ; s2 = y.s} ;
ConsImp x xs = {s1 = \\p => thbind (x.s ! p) (xs.s1 ! p) ; s2 = xs.s2} ;
ConjImp c xs = {s = \\p => thbind c.s1 (xs.s1 ! p) c.s2 (xs.s2 ! p)} ;
PassVPSlash vps = {
s = \\p => thbind (polStr may_s p) thuuk_s (vps.s ! Pos) ;
e = vps.e
} ;
PassAgentVPSlash vps np = insertExtra (thbind "โดย" np.s) (PassVPSlash vps) ;
PresPartAP vp = mkAdj (thbind thii_s (infVP vp)) ;
PastPartAP vps = mkAdj (thbind thii_s thuuk_s (infVP vps)) ;
PastPartAgentAP vps np =
mkAdj (thbind thii_s thuuk_s (infVP vps) "โดย" np.s) ;
ProgrVPSlash vps = vps ** {
s = \\p => thbind (thword kam_s lag2_s) (vps.s ! p)
} ;
ReflPron = mkNP reflPron ;
ReflPoss num cn = mkNP (thbind cn.s khoog_s reflPron) ;
PredetRNP pred rnp = mkNP (thbind pred.s1 rnp.s pred.s2) ;
ReflRNP slash rnp = insertObj rnp slash ;
AdvRNP np prep rnp = mkNP (thbind np.s prep.s rnp.s) ;
AdvRVP vp prep rnp = insertObj (ss (thbind prep.s rnp.s)) vp ;
AdvRAP ap prep rnp = mkAdj (thbind ap.s prep.s rnp.s) ;
ReflA2RNP a rnp = mkAdj (thbind a.s a.c2 rnp.s) ;
PossPronRNP pron num cn rnp =
-- Keep both possessive relations distinct. In particular, do not
-- coordinate the possessed noun with its complement ("his
-- abandonment and his wife ...").
mkNP (thbind cn.s khoog_s pron.s "ที่มีต่อ" rnp.s) ;
Base_rr_RNP x y = twoSS x y ;
Base_nr_RNP x y = twoSS x y ;
Base_rn_RNP x y = twoSS x y ;
Cons_rr_RNP x xs = consrSS [] x xs ;
Cons_nr_RNP x xs = consrSS [] x xs ;
ConjRNP c xs = mkNP (thbind c.s1 xs.s1 c.s2 xs.s2) ;
CompoundN modifier head = {s = thbind head.s modifier.s ; c = head.c} ;
CompoundAP n a = mkAdj (thbind a.s n.s) ;
GerundCN vp = {s = thbind "การ" (infVP vp) ; c = []} ;
GerundNP vp = mkNP (thbind "การ" (infVP vp)) ;
GerundAdv vp = ss (thbind "โดย" (infVP vp)) ;
WithoutVP vp = ss (thbind "โดยไม่" (infVP vp)) ;
ByVP vp = ss (thbind "โดย" (infVP vp)) ;
InOrderToVP vp = ss (thbind "เพื่อ" (infVP vp)) ;
ApposNP np1 np2 = mkNP (thbind np1.s np2.s) ;
PositAdVAdj a = ss a.s ;
UseDAP dap = mkNP (thbind dap.adj dap.s1 dap.s2) ;
UseDAPMasc = UseDAP ;
UseDAPFem = UseDAP ;
ComplBareVS vs s = insertObj (mkNP s.s) (predV vs) ;
ComplSlashPartLast = G.ComplSlash ;
UttVPShort vp = ss (infVP vp) ;
TPastSimple = G.TPast ;
UttAdV adv = adv ;
}
+8 -1
View File
@@ -19,10 +19,17 @@ concrete IdiomTha of Idiom = CatTha ** open Prelude, ResTha in {
}) (case q of {ClQuest => m'ay_s ; _ => []}) }) (case q of {ClQuest => m'ay_s ; _ => []})
} ; } ;
ExistNPAdv np adv = {
s = \\q,p => thbind (case p of {
Pos => thbind mii_s np.s adv.s ;
Neg => thbind may_s mii_s np.s adv.s
}) (case q of {ClQuest => m'ay_s ; _ => []})
} ;
ExistIP ip = mkPolClause ip (predV (regV [])) ; ---- ExistIP ip = mkPolClause ip (predV (regV [])) ; ----
ProgrVP vp = { ProgrVP vp = {
s = \\p => thbind kam_s lag2_s (vp.s ! p) ; s = \\p => thbind (thword kam_s lag2_s) (vp.s ! p) ;
e = vp.e e = vp.e
} ; } ;
+10 -1
View File
@@ -1 +1,10 @@
concrete NamesTha of Names = CatTha ** { } concrete NamesTha of Names = CatTha ** open ResTha, Prelude in {
lin
GivenName, MaleSurname, FemaleSurname, PlSurname = \n -> n ;
FullName gn sn = mkNP (thbind gn.s sn.s) ;
UseLN, PlainLN = \ln -> ln ;
AdjLN ap ln = mkNP (thbind ln.s ap.s) ;
InLN ln = ss (thbind "ใน" ln.s) ;
}
+20 -5
View File
@@ -17,6 +17,8 @@ concrete NounTha of Noun = CatTha ** open StringsTha, ResTha, Prelude in {
AdvNP np adv = thbind np adv ; AdvNP np adv = thbind np adv ;
ExtAdvNP np adv = thbind np adv ;
DetQuant quant num = { DetQuant quant num = {
s1 = num.s ++bIND++ quant.s1 ; --- can there be quant.s1 ?? s1 = num.s ++bIND++ quant.s1 ; --- can there be quant.s1 ??
s2 = quant.s2 ; s2 = quant.s2 ;
@@ -34,6 +36,19 @@ concrete NounTha of Noun = CatTha ** open StringsTha, ResTha, Prelude in {
hasC = False hasC = False
} ; } ;
PossNP cn np = {s = thbind cn.s khoog_s np.s ; c = cn.c} ;
PartNP cn np = {s = thbind cn.s khoog_s np.s ; c = cn.c} ;
CountNP det np = mkNP (thbind det.s1 np.s det.s2) ;
DetDAP det = det ** {adj = []} ;
AdjDAP dap ap = dap ** {adj = thbind dap.adj ap.s} ;
QuantityNP decimal mu = mkNP (case mu.isPre of {
True => thbind mu.s decimal.s ;
False => thbind decimal.s mu.s
}) ;
NumSg, NumPl = {s = [] ; hasC = False} ; NumSg, NumPl = {s = [] ; hasC = False} ;
NumCard n = n ** {hasC = True} ; NumCard n = n ** {hasC = True} ;
@@ -46,7 +61,7 @@ concrete NounTha of Noun = CatTha ** open StringsTha, ResTha, Prelude in {
AdNum adn num = thbind adn num ; ---- always? AdNum adn num = thbind adn num ; ---- always?
OrdSuperl a = {s = thbind a.s thii_s sut_s} ; OrdSuperl a = {s = thbind a.s (thword thii_s sut_s)} ;
DefArt = {s1,s2 = [] ; hasC = False} ; DefArt = {s1,s2 = [] ; hasC = False} ;
IndefArt = {s1,s2 = [] ; hasC = False} ; IndefArt = {s1,s2 = [] ; hasC = False} ;
@@ -63,10 +78,10 @@ concrete NounTha of Noun = CatTha ** open StringsTha, ResTha, Prelude in {
AdjCN ap cn = {s = cn.s ++bIND++ ap.s ; c = cn.c} ; AdjCN ap cn = {s = cn.s ++bIND++ ap.s ; c = cn.c} ;
RelCN cn rs = {s = thbind cn.s rs.s ; c = cn.s} ; RelCN cn rs = {s = thbind cn.s rs.s ; c = cn.c} ;
AdvCN cn ad = {s = thbind cn.s ad.s ; c = cn.s} ; AdvCN cn ad = {s = thbind cn.s ad.s ; c = cn.c} ;
SentCN cn cs = {s = thbind cn.s cs.s ; c = cn.s} ; SentCN cn cs = {s = thbind cn.s cs.s ; c = cn.c} ;
ApposCN cn np = {s = thbind cn.s np.s ; c = cn.s} ; ApposCN cn np = {s = thbind cn.s np.s ; c = cn.c} ;
RelNP np rs = thbind np rs ; RelNP np rs = thbind np rs ;
+16
View File
@@ -44,15 +44,29 @@ lin
s = \\n => thbind (d.s ! ModTen) (sip ! n) (e.s ! After) (phan ! n) s = \\n => thbind (d.s ! ModTen) (sip ! n) (e.s ! After) (phan ! n)
} ; } ;
pot1as2 n = n ; pot1as2 n = n ;
pot21 = {s = \\n => rooy_s} ;
pot2 d = {s = \\n => thbind (d.s ! Indep) (roy ! n)} ; pot2 d = {s = \\n => thbind (d.s ! Indep) (roy ! n)} ;
pot2plus d e = {s = \\n => thbind (d.s ! Indep) (roy ! n) (e.s ! n)} ; pot2plus d e = {s = \\n => thbind (d.s ! Indep) (roy ! n) (e.s ! n)} ;
pot2as3 n = {s = n.s ! Unit} ; pot2as3 n = {s = n.s ! Unit} ;
pot31 = {s = thbind nvg_s phan_s} ;
pot3 n = {s = n.s ! Thousand} ; pot3 n = {s = n.s ! Thousand} ;
pot3plus n m = {s = thbind (n.s ! Thousand) (m.s ! Unit)} ; pot3plus n m = {s = thbind (n.s ! Thousand) (m.s ! Unit)} ;
pot3as4 n = n ; pot3as4 n = n ;
pot3decimal d = {s = thbind d.s phan_s} ;
pot41 = {s = "ล้าน"} ;
pot4 n = {s = thbind (n.s ! Unit) "ล้าน"} ;
pot4plus n m = {s = thbind (n.s ! Unit) "ล้าน" m.s} ;
pot4as5 n = n ; pot4as5 n = n ;
pot4decimal d = {s = thbind d.s "ล้าน"} ;
pot51 = {s = thbind phan_s "ล้าน"} ;
pot5 n = {s = thbind (n.s ! Unit) phan_s "ล้าน"} ;
pot5plus n m = {s = thbind (n.s ! Unit) phan_s "ล้าน" m.s} ;
pot5decimal d = {s = thbind d.s phan_s "ล้าน"} ;
param param
DForm = Indep | ModTen | After ; DForm = Indep | ModTen | After ;
NForm = Unit | Thousand ; NForm = Unit | Thousand ;
@@ -90,5 +104,7 @@ oper
D_9 = ss "๙" ; D_9 = ss "๙" ;
PosDecimal d = d ** {hasDot=False} ; PosDecimal d = d ** {hasDot=False} ;
NegDecimal d = {s = "-" ++ d.s ; hasDot = False} ;
IFrac d i = {s = d.s ++ "." ++ i.s ; hasDot = True} ;
} }
+10 -1
View File
@@ -5,7 +5,7 @@ flags coding = utf8 ;
oper oper
mkN = overload { mkN = overload {
mkN : Str -> N mkN : Str -> N
= \s -> lin N {s = s ; c = "กำ ลัง"} ; ---- for small objects, see LP PB p. 20 = \s -> lin N {s = s ; c = "อัน"} ; ---- general classifier
mkN : Str -> Str -> N mkN : Str -> Str -> N
= \s,c -> lin N {s = s ; c = c} ; = \s,c -> lin N {s = s ; c = c} ;
} ; } ;
@@ -67,6 +67,15 @@ oper
mkVV : Str -> VV = mkVV : Str -> VV =
\s -> lin VV {s=s; typ=VVPre} ; \s -> lin VV {s=s; typ=VVPre} ;
mkVVPre : Str -> VV =
\s -> lin VV {s=s; typ=VVPre} ;
mkVVMid : Str -> VV =
\s -> lin VV {s=s; typ=VVMid} ;
mkVVPost : Str -> VV =
\s -> lin VV {s=s; typ=VVPost} ;
mkVQ : V -> VQ = mkVQ : V -> VQ =
\v -> lin VQ v ; \v -> lin VQ v ;
+1 -1
View File
@@ -158,6 +158,6 @@ oper
conjThat = waa_s ; conjThat = waa_s ;
reflPron = thbind tua_s eeng_s ; reflPron = thword tua_s eeng_s ;
} }
+2
View File
@@ -16,6 +16,8 @@ concrete SentenceTha of Sentence = CatTha **
} }
} ; } ;
AdvImp adv imp = {s = \\p => thbind adv.s (imp.s ! p)} ;
SlashVP np vp = mkPolClause np vp ** {c2 = vp.c2} ; SlashVP np vp = mkPolClause np vp ** {c2 = vp.c2} ;
SlashVS np vs slash = SlashVS np vs slash =
+7 -7
View File
@@ -7,8 +7,8 @@ concrete StructuralTha of Structural = CatTha **
above_Prep = ss (thword "ข้าง" "บน") ; above_Prep = ss (thword "ข้าง" "บน") ;
after_Prep = ss (thword "หลัง" "จาก") ; after_Prep = ss (thword "หลัง" "จาก") ;
all_Predet = {s1 = thword "ทั้ง" "หมด" ; s2 = []} ; all_Predet = {s1 = thword "ทั้ง" "หมด" ; s2 = []} ;
almost_AdA, almost_AdN = ss (thword "เกิ" "อบ") ; almost_AdA, almost_AdN = ss "เกือบ" ;
although_Subj = ss "ถืง" ; although_Subj = ss "ถึงแม้ว่า" ;
always_AdV = ss (thword "เส" "มอ") ; --- pronunciation always_AdV = ss (thword "เส" "มอ") ; --- pronunciation
and_Conj = {s1 = [] ; s2 = "และ"} ; and_Conj = {s1 = [] ; s2 = "และ"} ;
as_CAdv = {s = thword "เท่า" ; p = "กับ"} ; ---- as_CAdv = {s = thword "เท่า" ; p = "กับ"} ; ----
@@ -25,11 +25,11 @@ concrete StructuralTha of Structural = CatTha **
can8know_VV = {s = pen_s ; typ = VVPost} ; can8know_VV = {s = pen_s ; typ = VVPost} ;
can_VV = {s = "ได้" ; typ = VVPost} ; can_VV = {s = "ได้" ; typ = VVPost} ;
during_Prep = ss (thword "ระ" "หว่าง") ; during_Prep = ss (thword "ระ" "หว่าง") ;
either7or_DConj = {s1 = [] ; s2 = "หริอ"} ; ---- or: mai - ko either7or_DConj = {s1 = [] ; s2 = "หรือ"} ; ---- or: mai - ko
everybody_NP = mkNP (thword "ทุก" "คน") ; everybody_NP = mkNP (thword "ทุก" "คน") ;
every_Det = quantDet "ทุก" ; every_Det = quantDet "ทุก" ;
everything_NP = mkNP (thword "ทุก" "สิ่ง") ; everything_NP = mkNP (thword "ทุก" "สิ่ง") ;
everywhere_Adv = ss (thword "ทุก" "ที") ; everywhere_Adv = ss (thword "ทุก" "ที่") ;
except_Prep = ss (thword "นอก" "จาก") ; except_Prep = ss (thword "นอก" "จาก") ;
few_Det = quantDet (thword "สอง" "สาม") ; few_Det = quantDet (thword "สอง" "สาม") ;
for_Prep = ss "ให้" ; for_Prep = ss "ให้" ;
@@ -61,7 +61,7 @@ concrete StructuralTha of Structural = CatTha **
nothing_NP = mkNP "เปล่า" ; nothing_NP = mkNP "เปล่า" ;
on_Prep = ss "บน" ; on_Prep = ss "บน" ;
only_Predet = {s1 = [] ; s2 = thword "เท่า" "นั้น"} ; only_Predet = {s1 = [] ; s2 = thword "เท่า" "นั้น"} ;
or_Conj = {s1 = [] ; s2 = "หริอ"} ; or_Conj = {s1 = [] ; s2 = "หรือ"} ;
otherwise_PConj = ss (thword "ไม่" "อย่าง" "นั้น") ; otherwise_PConj = ss (thword "ไม่" "อย่าง" "นั้น") ;
part_Prep = ss "" ; ---- part_Prep = ss "" ; ----
please_Voc = ss "ขอ" ; please_Voc = ss "ขอ" ;
@@ -84,14 +84,14 @@ concrete StructuralTha of Structural = CatTha **
this_Quant = demDet nii_s ; this_Quant = demDet nii_s ;
through_Prep = ss "ผ่าน" ; through_Prep = ss "ผ่าน" ;
too_AdA = ss (thword "เกิน" "ไป") ; too_AdA = ss (thword "เกิน" "ไป") ;
to_Prep = ss "ถืง" ; to_Prep = ss "ถึง" ;
under_Prep = ss "ใต้" ; under_Prep = ss "ใต้" ;
very_AdA = ss "มาก" ; very_AdA = ss "มาก" ;
want_VV = {s = yaak_s ; typ = VVMid} ; want_VV = {s = yaak_s ; typ = VVMid} ;
we_Pron = ss raw_s ; we_Pron = ss raw_s ;
whatPl_IP, whatSg_IP = ss (thword "อะ" "ไร") ; whatPl_IP, whatSg_IP = ss (thword "อะ" "ไร") ;
when_IAdv = ss (thword "เมื่อไร") ; when_IAdv = ss (thword "เมื่อไร") ;
when_Subj = ss "ที" ; when_Subj = ss "เมื่อ" ;
where_IAdv = ss (thword "ที่" "ไหน") ; where_IAdv = ss (thword "ที่" "ไหน") ;
which_IQuant = demDet "ไหน" ; which_IQuant = demDet "ไหน" ;
whoPl_IP, whoSg_IP = ss "ใคร" ; whoPl_IP, whoSg_IP = ss "ใคร" ;
+8
View File
@@ -53,8 +53,16 @@ concrete VerbTha of Verb = CatTha ** open ResTha, StringsTha, Prelude in {
AdvVP vp adv = insertObj adv vp ; AdvVP vp adv = insertObj adv vp ;
ExtAdvVP vp adv = insertObj adv vp ;
AdVVP adv vp = insertObj adv vp ; AdVVP adv vp = insertObj adv vp ;
VPSlashPrep vp prep = vp ** {c2 = prep.s} ;
AdvVPSlash vp adv = insertObj adv vp ** {c2 = vp.c2} ;
AdVVPSlash adv vp = insertObj adv vp ** {c2 = vp.c2} ;
ReflVP vp = insertObj (mkNP (thbind vp.c2 reflPron)) vp ; ReflVP vp = insertObj (mkNP (thbind vp.c2 reflPron)) vp ;
PassV2 v = {s = \\p => thbind (polStr may_s p) thuuk_s ; e = thbind v.s1 v.s2} ; -- to put agent before verb; --- the place of neg? PassV2 v = {s = \\p => thbind (polStr may_s p) thuuk_s ; e = thbind v.s1 v.s2} ; -- to put agent before verb; --- the place of neg?