Merge branch 'master' of www.grammaticalframework.org:/usr/local/www/GF

This commit is contained in:
Krasimir Angelov
2017-08-23 18:54:18 +02:00
12 changed files with 166 additions and 67 deletions

View File

@@ -32,22 +32,40 @@ abstract Extend = Cat ** {
EmptyRelSlash : ClSlash -> RCl ; -- he lives in EmptyRelSlash : ClSlash -> RCl ; -- he lives in
-- $VP$ conjunction, covering both finite and infinitive forms (formerly VPI and VPS). -- $VP$ conjunction, separate categories for finite and infinitive forms (VPS and VPI, respectively)
-- covering both in the same category leads to spurious VPI parses because VPS depends on many more tenses
cat cat
VPS ; VPS ; -- finite VP's with tense and polarity
[VPS] {2} ; [VPS] {2} ;
VPI ;
[VPI] {2} ; -- infinitive VP's (TODO: with anteriority and polarity)
fun fun
MkVPS : Temp -> Pol -> VP -> VPS ; -- to sleep / hasn't slept MkVPS : Temp -> Pol -> VP -> VPS ; -- hasn't slept
ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep ConjVPS : Conj -> [VPS] -> VPS ; -- has walked and won't sleep
PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep] PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep]
ComplVPSVV : VV -> VPS -> VP ; -- want to sleep and to walk
-- in case ComplVPSVV is not available: MkVPI : VP -> VPI ; -- to sleep (TODO: Ant and Pol)
ConjVPI : Conj -> [VPI] -> VPI ; -- to sleep and to walk
ComplVPIVV : VV -> VPI -> VP ; -- must sleep and walk
PredVPSVV : NP -> VV -> VPS -> VP ; -- she wants to sleep and to walk -- the same for VPSlash, taking a complement with shared V2 verbs
cat
VPS2 ; -- have loved (binary version of VPS)
[VPS2] {2} ; -- has loved, hates"
VPI2 ; -- to love (binary version of VPI)
[VPI2] {2} ; -- to love, to hate
fun
MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person
MkVPI2 : VPSlash -> VPI2 ; -- to love
ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate
ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person
fun fun
ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes []: "(io) sono stanco" ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes []: "(io) sono stanco"
@@ -141,7 +159,7 @@ abstract Extend = Cat ** {
--- from Extensions --- from Extensions
ComplGenVV : VV -> Ant -> Pol -> VP -> VP ; -- want not to have slept ComplGenVV : VV -> Ant -> Pol -> VP -> VP ; -- want not to have slept
SlashV2V : V2V -> Ant -> Pol -> VPS -> VPSlash ; -- force (her) not to have slept ---- SlashV2V : V2V -> Ant -> Pol -> VPS -> VPSlash ; -- force (her) not to have slept
CompoundN : N -> N -> N ; -- control system / controls system / control-system CompoundN : N -> N -> N ; -- control system / controls system / control-system
CompoundAP : N -> A -> AP ; -- language independent / language-independent CompoundAP : N -> A -> AP ; -- language independent / language-independent
@@ -187,4 +205,5 @@ abstract Extend = Cat ** {
UttAccIP : NP -> Utt ; -- whom (accusative) UttAccIP : NP -> Utt ; -- whom (accusative)
UttDatIP : NP -> Utt ; -- whom (dative) UttDatIP : NP -> Utt ; -- whom (dative)
} }

View File

@@ -7,9 +7,13 @@ lincat
lin lin
BaseVPS = variants {} ; BaseVPS = variants {} ;
ConsVPS = variants {} ; ConsVPS = variants {} ;
BaseVPI = variants {} ;
ConsVPI = variants {} ;
BaseVPS2 = variants {} ;
ConsVPS2 = variants {} ;
BaseVPI2 = variants {} ;
ConsVPI2 = variants {} ;
lin
GenNP = variants {} ; -- NP -> Quant ; -- this man's GenNP = variants {} ; -- NP -> Quant ; -- this man's
GenIP = variants {} ; -- IP -> IQuant ; -- whose GenIP = variants {} ; -- IP -> IQuant ; -- whose
GenRP = variants {} ; -- Num -> CN -> RP ; -- whose car GenRP = variants {} ; -- Num -> CN -> RP ; -- whose car
@@ -19,11 +23,18 @@ lin
StrandQuestSlash = QuestSlash ; -- whom does John live with ; DEFAULT with whom does John live StrandQuestSlash = QuestSlash ; -- whom does John live with ; DEFAULT with whom does John live
StrandRelSlash = RelSlash ; -- that he lives in ; DEFAULT in which he lives StrandRelSlash = RelSlash ; -- that he lives in ; DEFAULT in which he lives
EmptyRelSlash = RelSlash IdRP ; -- he lives in ; DEFAULT in which he lives EmptyRelSlash = RelSlash IdRP ; -- he lives in ; DEFAULT in which he lives
MkVPS vp = variants {} ; -- Temp -> Pol -> VP -> VPS ; -- to sleep / hasn't slept MkVPS vp = variants {} ; -- Temp -> Pol -> VP -> VPS ; -- hasn't slept
ConjVPS = variants {} ; -- Conj -> [VPS] -> VPS ; -- has walked and won't sleep ConjVPS = variants {} ; -- Conj -> [VPS] -> VPS ; -- has walked and won't sleep
PredVPS = variants {} ; -- NP -> VPS -> S ; -- she [has walked and won't sleep] PredVPS = variants {} ; -- NP -> VPS -> S ; -- has walked and won't sleep
ComplVPSVV = variants {} ; -- VV -> VPS -> VP ; -- want to sleep and to walk MkVPI vp = variants {} ; -- Temp -> Pol -> VP -> VPI ; -- to sleep / hasn't slept
PredVPSVV = variants {} ; -- NP -> VV -> VPS -> VP ; -- she wants to sleep and to walk ConjVPI = variants {} ; -- Conj -> [VPI] -> VPI ; -- has walked and won't sleep
ComplVPIVV = variants {} ; -- VV -> VPI -> VP ; -- want to sleep and to walk
MkVPS2 = variants {} ; -- : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
ConjVPS2 = variants {} ; -- : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
ComplVPS2 = variants {} ; -- : VPS2 -> NP -> VPS ; -- has loved and now hates that person
MkVPI2 = variants {} ; -- : Ant -> Pol -> VPSlash -> VPI2 ; -- to have loved
ConjVPI2 = variants {} ; -- : Conj -> [VPI2] -> VPI2 ; -- to love and have hated
ComplVPI2 = variants {} ; -- : VPI2 -> NP -> VPI ; -- to love and hate that person
ProDrop pro = pro ; -- am tired ; DEFAULT I am tired ProDrop pro = pro ; -- am tired ; DEFAULT I am tired
ICompAP = variants {} ; -- AP -> IComp ; -- "how old" ICompAP = variants {} ; -- AP -> IComp ; -- "how old"
IAdvAdv = variants {} ; -- Adv -> IAdv ; -- "how often" IAdvAdv = variants {} ; -- Adv -> IAdv ; -- "how often"

View File

@@ -5,5 +5,5 @@ concrete AllEng of AllEngAbs =
IrregEng-[ IrregEng-[
blow_V,burn_V,come_V,dig_V,fall_V,fly_V,freeze_V,go_V,lie_V,run_V, blow_V,burn_V,come_V,dig_V,fall_V,fly_V,freeze_V,go_V,lie_V,run_V,
sew_V,sing_V,sit_V,sleep_V,spit_V,stand_V,swell_V,swim_V,think_V], sew_V,sing_V,sit_V,sleep_V,spit_V,stand_V,swell_V,swim_V,think_V],
ExtraEng ExtendEng ---- ExtraEng
** {} ; ** {} ;

View File

@@ -5,5 +5,5 @@ abstract AllEngAbs =
IrregEngAbs-[ IrregEngAbs-[
blow_V,burn_V,come_V,dig_V,fall_V,fly_V,freeze_V,go_V,lie_V,run_V, blow_V,burn_V,come_V,dig_V,fall_V,fly_V,freeze_V,go_V,lie_V,run_V,
sew_V,sing_V,sit_V,sleep_V,spit_V,stand_V,swell_V,swim_V,think_V], sew_V,sing_V,sit_V,sleep_V,spit_V,stand_V,swell_V,swim_V,think_V],
ExtraEngAbs Extend ---- ExtraEngAbs
** {} ; ** {} ;

View File

@@ -3,15 +3,19 @@
concrete ExtendEng of Extend = concrete ExtendEng of Extend =
CatEng ** ExtendFunctor - CatEng ** ExtendFunctor -
[ [
VPS, ListVPS, RNP, RNPList, VPS, ListVPS, VPI, ListVPI, VPS2, ListVPS2, VPI2, ListVPI2, RNP, RNPList,
AdAdV, AdjAsCN, AdjAsNP, ApposNP, BaseVPS, Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN, AdAdV, AdjAsCN, AdjAsNP, ApposNP,
BaseVPS, ConsVPS, BaseVPI, ConsVPI, BaseVPS2, ConsVPS2, BaseVPI2, ConsVPI2,
MkVPS, ConjVPS, PredVPS, MkVPI, ConjVPI, ComplVPIVV,
MkVPS2, ConjVPS2, ComplVPS2, MkVPI2, ConjVPI2, ComplVPI2,
Base_nr_RNP, Base_rn_RNP, Base_rr_RNP, ByVP, CompBareCN,
CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP, CompIQuant, CompQS, CompS, CompVP, ComplBareVS, ComplGenVV, ComplSlashPartLast, ComplVPSVV, CompoundAP,
CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPFem, EmbedPresPart, EmptyRelSlash, CompoundN, ConjRNP, ConjVPS, ConsVPS, Cons_nr_RNP, Cons_rr_RNP, DetNPFem, EmbedPresPart, EmptyRelSlash,
ExistsNP, FocusAP, FocusAdV, FocusAdv, FocusObj, FrontExtPredVP, GenIP, GenModIP, GenModNP, GenNP, GenRP, ExistsNP, FocusAP, FocusAdV, FocusAdv, FocusObj, FrontExtPredVP, GenIP, GenModIP, GenModNP, GenNP, GenRP,
GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, InvFrontExtPredVP, MkVPS, NominalizeVPSlashNP, GerundAdv, GerundCN, GerundNP, IAdvAdv, ICompAP, InOrderToVP, InvFrontExtPredVP, MkVPS, NominalizeVPSlashNP,
PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN, PassAgentVPSlash, PassVPSlash, PastPartAP, PastPartAgentAP, PositAdVAdj, PredVPS, PredVPSVV, PredetRNP, PrepCN,
PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash, PresPartAP, PurposeVP, ReflPoss, ReflPron, ReflRNP, SlashBareV2S, SlashV2V, StrandQuestSlash, StrandRelSlash,
UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP UncontractedNeg, UttAccIP, UttAccNP, UttAdV, UttDatIP, UttDatNP, UttVPShort, WithoutVP, BaseVPS2, ConsVPS2, ConjVPS2, ComplVPS2, MkVPS2
] ]
with with
(Grammar = GrammarEng) ** (Grammar = GrammarEng) **
@@ -53,60 +57,80 @@ concrete ExtendEng of Extend =
c = NPAcc c = NPAcc
} ; } ;
{- -----
lincat lincat
VPS = {s : Agr => Str} ;
[VPS] = {s1,s2 : Agr => Str} ;
VPI = {s : VVType => Agr => Str} ; VPI = {s : VVType => Agr => Str} ;
[VPI] = {s1,s2 : VVType => Agr => Str} ; [VPI] = {s1,s2 : VVType => Agr => Str} ;
lin lin
BaseVPS = twoTable Agr ;
ConsVPS = consrTable Agr comma ;
BaseVPI = twoTable2 VVType Agr ; BaseVPI = twoTable2 VVType Agr ;
ConsVPI = consrTable2 VVType Agr comma ; ConsVPI = consrTable2 VVType Agr comma ;
MkVPI vp = { MkVPS t p vp = mkVPS (lin Temp t) (lin Pol p) (lin VP vp) ;
ConjVPS c xs = conjunctDistrTable Agr c xs ;
PredVPS np vps = {s = np.s ! npNom ++ vps.s ! np.a} ;
MkVPI vp = mkVPI (lin VP vp) ;
ConjVPI c xs = conjunctDistrTable2 VVType Agr c xs ;
ComplVPIVV vv vpi = insertObj (\\a => vpi.s ! vv.typ ! a) (predVV vv) ;
-------- two-place verb conjunction
lincat
VPS2 = {s : Agr => Str ; c2 : Str} ;
[VPS2] = {s1,s2 : Agr => Str ; c2 : Str} ;
VPI2 = {s : VVType => Agr => Str ; c2 : Str} ;
[VPI2] = {s1,s2 : VVType => Agr => Str ; c2 : Str} ;
lin
MkVPS2 t p vpsl = mkVPS (lin Temp t) (lin Pol p) (lin VP vpsl) ** {c2 = vpsl.c2} ;
MkVPI2 vpsl = mkVPI (lin VP vpsl) ** {c2 = vpsl.c2} ;
BaseVPS2 x y = twoTable Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb
ConsVPS2 x xs = consrTable Agr comma x xs ** {c2 = xs.c2} ;
BaseVPI2 x y = twoTable2 VVType Agr x y ** {c2 = y.c2} ; ---- just remembering the prep of the latter verb
ConsVPI2 x xs = consrTable2 VVType Agr comma x xs ** {c2 = xs.c2} ;
ConjVPS2 c xs = conjunctDistrTable Agr c xs ** {c2 = xs.c2} ;
ConjVPI2 c xs = conjunctDistrTable2 VVType Agr c xs ** {c2 = xs.c2} ;
ComplVPS2 vps2 np = {
s = \\a => vps2.s ! a ++ vps2.c2 ++ np.s ! NPAcc
} ;
ComplVPI2 vpi2 np = {
s = \\t,a => vpi2.s ! t ! a ++ vpi2.c2 ++ np.s ! NPAcc
} ;
oper
mkVPS : Temp -> Pol -> VP -> VPS = \t,p,vp -> lin VPS {
s = \\a =>
let
verb = vp.s ! t.t ! t.a ! p.p ! oDir ! a ;
verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ;
in t.s ++ p.s ++ vp.ad ! a ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext
} ;
mkVPI : VP -> VPI = \vp -> lin VPI {
s = table { s = table {
VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ; VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ;
VVInf => \\a => "to" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ; VVInf => \\a => "to" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a ;
VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a
} }
} ; } ;
ConjVPI = conjunctDistrTable2 VVType Agr ;
ComplVPIVV vv vpi =
insertObj (\\a => vpi.s ! vv.typ ! a) (predVV vv) ;
----}
lincat
VPS = {s : {s : Agr => Str} ; i : {s : VVType => Agr => Str}} ; --- finite and infinite forms separately
[VPS] = {s : {s1,s2 : Agr => Str} ; i : {s1,s2 : VVType => Agr => Str}} ;
lin
BaseVPS x y = {s = twoTable Agr x.s y.s ; i = twoTable2 VVType Agr x.i y.i} ;
ConsVPS x xs = {s = consrTable Agr comma x.s xs.s ; i = consrTable2 VVType Agr comma x.i xs.i} ;
PredVPS np vps = {s = np.s ! npNom ++ vps.s.s ! np.a} ;
MkVPS t p vp = {
s = {s = \\a =>
let
verb = vp.s ! t.t ! t.a ! p.p ! oDir ! a ;
verbf = verb.aux ++ verb.adv ++ verb.fin ++ verb.inf ;
in t.s ++ p.s ++ vp.ad ! a ++ verbf ++ vp.p ++ vp.s2 ! a ++ vp.ext
} ;
i = {s = table {
VVAux => \\a => vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a;
VVInf => \\a => "to" ++ vp.ad ! a ++ vp.inf ++ vp.p ++ vp.s2 ! a;
VVPresPart => \\a => vp.ad ! a ++ vp.prp ++ vp.p ++ vp.s2 ! a
}
}
} ;
ConjVPS c xs = {s = conjunctDistrTable Agr c xs.s ; i = conjunctDistrTable2 VVType Agr c xs.i} ;
ComplVPIVV vv vpi =
insertObj (\\a => vpi.i.s ! vv.typ ! a) (predVV vv) ;
----- -----
lin
ICompAP ap = {s = "how" ++ ap.s ! agrP3 Sg} ; ---- IComp should have agr! ICompAP ap = {s = "how" ++ ap.s ! agrP3 Sg} ; ---- IComp should have agr!
IAdvAdv adv = {s = "how" ++ adv.s} ; IAdvAdv adv = {s = "how" ++ adv.s} ;
@@ -285,4 +309,8 @@ concrete ExtendEng of Extend =
UncontractedNeg = {s = [] ; p = CNeg False} ; UncontractedNeg = {s = [] ; p = CNeg False} ;
UttVPShort vp = {s = infVP VVAux vp Simul CPos (agrP3 Sg)} ; UttVPShort vp = {s = infVP VVAux vp Simul CPos (agrP3 Sg)} ;
} }

View File

@@ -1,12 +1,21 @@
concrete AdjectiveTur of Adjective = CatTur ** open ResTur, Prelude in { concrete AdjectiveTur of Adjective = CatTur ** open ResTur, Prelude in {
lin lin
PositA a = {s = a.s} ; PositA a = {s = a.s} ;
ComparA a np = { ComparA a np = {
s = \\n,c => np.s ! Ablat ++ a.s ! n ! c ; s = \\n,c => np.s ! Ablat ++ a.s ! n ! c ;
} ; } ;
UseComparA a = { UseComparA a = {
s = \\n,c => "daha" ++ a.s ! n ! c s = \\n,c => "daha" ++ a.s ! n ! c
} ; } ;
AdjOrd v = v ;
AdvAP ap adv = {
s = \\n, c => adv.s ++ ap.s ! n ! c
} ;
} }

View File

@@ -1,4 +1,6 @@
concrete AdverbTur of Adverb = CatTur ** open ResTur, Prelude in { concrete AdverbTur of Adverb = CatTur ** open ResTur, Prelude in {
lin lin
PrepNP prep np = {s = np.s ! prep.c ++ prep.s} ; PrepNP prep np = {s = np.s ! prep.c ++ prep.s} ;
always_AdV = {s = "her zaman"} ;
} }

View File

@@ -25,7 +25,6 @@ concrete CatTur of Cat = CommonX ** open ResTur, Prelude in {
Digits = {s : CardOrd => Number => Case => Str ; n : Number; tail : DTail} ; Digits = {s : CardOrd => Number => Case => Str ; n : Number; tail : DTail} ;
-- Adjective -- Adjective
AP = {s : Number => Case => Str} ; AP = {s : Number => Case => Str} ;
-- Open lexical classes, e.g. Lexicon -- Open lexical classes, e.g. Lexicon

View File

@@ -6,7 +6,8 @@ concrete GrammarTur of Grammar =
AdjectiveTur, AdjectiveTur,
NumeralTur, NumeralTur,
StructuralTur, StructuralTur,
SentenceTur SentenceTur,
AdverbTur
** { ** {
flags startcat = Phr ; unlexer = text ; lexer = text ; flags startcat = Phr ; unlexer = text ; lexer = text ;

View File

@@ -2,8 +2,7 @@
concrete LangTur of Lang = concrete LangTur of Lang =
GrammarTur, GrammarTur,
LexiconTur, LexiconTur
AdverbTur
** { ** {
flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ; flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;

View File

@@ -25,6 +25,12 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude
useGen = quant.useGen useGen = quant.useGen
} ; } ;
DetQuantOrd quant num o = {
s = quant.s ++ num.s ! Sg ! Nom ++ o.s ! num.n ! Nom ;
n = num.n;
useGen = quant.useGen
} ;
NumSg = {s = \\num,c => []; n = Sg} ; NumSg = {s = \\num,c => []; n = Sg} ;
NumPl = {s = \\num,c => []; n = Pl} ; NumPl = {s = \\num,c => []; n = Pl} ;
@@ -78,4 +84,15 @@ concrete NounTur of Noun = CatTur ** open ResTur, SuffixTur, HarmonyTur, Prelude
s = \\n,c => ap.s ! Sg ! Nom ++ cn.s ! n ! c; s = \\n,c => ap.s ! Sg ! Nom ++ cn.s ! n ! c;
gen = \\n, a => ap.s ! Sg ! Nom ++ cn.gen ! n ! a gen = \\n, a => ap.s ! Sg ! Nom ++ cn.gen ! n ! a
} ; } ;
-- lin CN = {s : Number => Case => Str; gen : Number => Agr => Str} ;
AdvCN cn adv = {
s = \\n, c => adv.s ++ cn.s ! n ! c;
gen = \\n, a => adv.s ++ cn.gen ! n ! a
} ;
AdvNP np adv = {
s = \\c => adv.s ++ np.s ! c;
a = np.a
} ;
} }

View File

@@ -42,7 +42,7 @@ concrete StructuralTur of Structural = CatTur **
mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" Pl P2 ; mkPron "siz" "sizi" "size" "sizin" "sizde" "sizden" "sizli" "sizsiz" Pl P2 ;
with_Prep = with_Prep =
mkPrep "ile" Nom ; mkPrep [] (Abess Pos) ;
-- ...den sonra -- ...den sonra
after_Prep = after_Prep =
@@ -65,12 +65,26 @@ concrete StructuralTur of Structural = CatTur **
on_Prep = on_Prep =
variants {mkPrep "üzerinde" Gen; mkPrep "üstünde" Gen} ; variants {mkPrep "üzerinde" Gen; mkPrep "üstünde" Gen} ;
in_Prep =
variants {mkPrep "içinde" Gen; mkPrep "içerisinde" Gen} ;
-- ... sırasında
during_Prep =
mkPrep "sırasında" Nom ;
-- ... ile ...nin arasında -- ... ile ...nin arasında
between_Prep = between_Prep =
mkPrep "arasında" Gen ; mkPrep "arasındaki" Gen ;
and_Conj = ss "ve" ; and_Conj = ss "ile" ;
or_Conj = ss "veya" ; or_Conj = ss "veya" ;
yes_Utt = ss "evet" ;
no_Utt = ss "hayır" ;
always_AdV = {s = "her zaman"} ;
but_PConj = ss "ama" ;
} }