1
0
forked from GitHub/gf-rgl

Change the type of synthetic verbs: instead of Tense as a param, make a new param AuxType.

This commit is contained in:
Inari Listenmaa
2017-10-13 11:15:12 +02:00
parent 47bab9e77f
commit e5afae33e0
2 changed files with 128 additions and 83 deletions

View File

@@ -39,7 +39,7 @@ oper
{ indep = dut ; stem = duda } ; { indep = dut ; stem = duda } ;
} ; } ;
IntransV : Type = Tense => Agr => VForms ; -- Agr = nori or nork IntransV : Type = AuxForm => Agr => VForms ; -- Agr = nori or nork
TransV : Type = Agr => IntransV ; -- Agr = nor TransV : Type = Agr => IntransV ; -- Agr = nor
DitransV : Type = Agr => TransV ; -- Agr = nori DitransV : Type = Agr => TransV ; -- Agr = nori
@@ -68,6 +68,7 @@ oper
-- General building blocks for the forms of ukan -- General building blocks for the forms of ukan
-- All thanks to https://upload.wikimedia.org/wikipedia/commons/3/36/Nor_Nori_Nork_taula_osoa.png -- All thanks to https://upload.wikimedia.org/wikipedia/commons/3/36/Nor_Nori_Nork_taula_osoa.png
norkUkanFirst : Agr => Str = table { -- Past, pot, cond etc. norkUkanFirst : Agr => Str = table { -- Past, pot, cond etc.
Ni => "n" ; Gu => "gen" ; Ni => "n" ; Gu => "gen" ;
Hi _ => "h" ; Hi _ => "h" ;
@@ -85,6 +86,11 @@ oper
Ni => "da" ; Hauek => "e" ; Ni => "da" ; Hauek => "e" ;
x => norkUkanLast ! x } ; x => norkUkanLast ! x } ;
norkUkanImp : Agr => Str = table {
Ni => nonExist ; Gu => nonExist ;
x => norkUkanFirst ! x } ;
noriUkanLast : Agr => Str = table { noriUkanLast : Agr => Str = table {
Hau => "o" ; Hauek => "e" ; Hau => "o" ; Hauek => "e" ;
x => norkUkanLast ! x } ; x => norkUkanLast ! x } ;
@@ -113,7 +119,6 @@ oper
norUkanCond : Agr => Str = table { norUkanCond : Agr => Str = table {
Zuek => "zintu" ; x => norUkanNonpres ! x } ; Zuek => "zintu" ; x => norUkanNonpres ! x } ;
{- {-
============================================================================= =============================================================================
Izan [NOR] Izan [NOR]
@@ -122,7 +127,7 @@ oper
-- common copula -- common copula
izanDa : IntransV = izanDa : IntransV =
table {Past => table {Ni => mkVForms "nintzen" ; table {APast => table {Ni => mkVForms "nintzen" ;
Hi _ => mkVForms "hintzen" ; Hi _ => mkVForms "hintzen" ;
Zu => mkVForms "zinen" ; Zu => mkVForms "zinen" ;
Hau => mkVForms "zen" ; Hau => mkVForms "zen" ;
@@ -130,21 +135,27 @@ oper
Zuek => mkVForms "zineten" ; Zuek => mkVForms "zineten" ;
Hauek => mkVForms "ziren" } ; Hauek => mkVForms "ziren" } ;
Cond => table {Ni => mkVForms "nintzateke" ; ACond => table {Ni => mkVForms "nintzateke" ;
Hi _ => mkVForms "hintzateke" ; Hi _ => mkVForms "hintzateke" ;
Zu => mkVForms "zinateke" ; Zu => mkVForms "zinateke" ;
Hau => mkVForms "litzateke" ; Hau => mkVForms "litzateke" ;
Gu => mkVForms "ginateke" ; Gu => mkVForms "ginateke" ;
Zuek => mkVForms "zinatekete" ; Zuek => mkVForms "zinatekete" ;
Hauek => mkVForms "lirateke" } ; Hauek => mkVForms "lirateke" } ;
-- Present and future are identical APres => table {Ni => mkVForms "naiz" ;
pres => table {Ni => mkVForms "naiz" ;
Hi _ => mkVForms "haiz" ; Hi _ => mkVForms "haiz" ;
Zu => mkVForms "zara" "zare" ; Zu => mkVForms "zara" "zare" ;
Hau => mkVForms "da" "de" ; Hau => mkVForms "da" "de" ;
Gu => mkVForms "gara" "gare" ; Gu => mkVForms "gara" "gare" ;
Zuek => mkVForms "zarete" ; Zuek => mkVForms "zarete" ;
Hauek => mkVForms "dira" "dire" } Hauek => mkVForms "dira" "dire" } ;
AImp => table {Ni => noVForm ;
Hi _ => mkVForms "hadi" ;
Zu => mkVForms "zaitez" ;
Hau => mkVForms "bedi" ;
Gu => noVForm ;
Zuek => mkVForms "zaitezte" ;
Hauek => mkVForms "bitez" }
} ; } ;
{- {-
@@ -155,7 +166,7 @@ oper
ukanDu : TransV = \\nor,tns,nork => mkVForms ( ukanDu : TransV = \\nor,tns,nork => mkVForms (
case tns of { case tns of {
Past => APast =>
case nor of { -- Special forms for past when nor is Hau or Hauek case nor of { -- Special forms for past when nor is Hau or Hauek
Hau => norkPast_norHau ! nork ; Hau => norkPast_norHau ! nork ;
Hauek => norkPast_norHauek ! nork ; Hauek => norkPast_norHauek ! nork ;
@@ -163,7 +174,7 @@ oper
te : Str = norkPast ! nork ; te : Str = norkPast ! nork ;
in nindu + te + "n" } ; in nindu + te + "n" } ;
Cond => ACond =>
case nor of { -- Special forms for conditional when nor is Hau or Hauek case nor of { -- Special forms for conditional when nor is Hau or Hauek
Hau => norkCond_norHau ! nork ; Hau => norkCond_norHau ! nork ;
Hauek => norkCond_norHauek ! nork ; Hauek => norkCond_norHauek ! nork ;
@@ -172,10 +183,14 @@ oper
z : Str = case nor of {(Gu|Zu|Zuek) => "z" ; _ => [] } ; z : Str = case nor of {(Gu|Zu|Zuek) => "z" ; _ => [] } ;
te : Str = norkCond ! nork ; te : Str = norkCond ! nork ;
in gintu + z + "ke" + te } ; in gintu + z + "ke" + te } ;
APres => let gaitu : Str = norPres ! nor ;
pres => let gaitu : Str = norPres ! nor ;
zte : Str = norkPres ! nork ; zte : Str = norkPres ! nork ;
in gaitu + zte in gaitu + zte ;
AImp => let ga = norImp ! nor ;
it = case nor of { (Gu|Hauek) => "it" ; _ => [] } ;
k = norkImp ! nork ;
in ga + it + "za" + k
}) where { }) where {
@@ -197,12 +212,18 @@ oper
<Hauek,Hauek> => "zte" ; <Hauek,Hauek> => "zte" ;
<_,x> => norkUkanMid ! x } ; <_,x> => norkUkanMid ! x } ;
norkImp : Agr => Str = norkUkanImp ;
norPres : Agr => Str = norUkanPres ; norPres : Agr => Str = norUkanPres ;
norPast : Agr => Str = norUkanNonpres ; norPast : Agr => Str = norUkanNonpres ;
norCond : Agr => Str = norUkanCond ; norCond : Agr => Str = norUkanCond ;
norImp : Agr => Str = table { Ni => "na" ; Gu => "ga" ;
Hau => "be" ; Hauek => "b" ;
_ => nonExist } ;
--norCondZ : Agr => Str = table { --norCondZ : Agr => Str = table {
-- (Gu|Zu|Zuek) => "z" ; _ => [] } ; -- (Gu|Zu|Zuek) => "z" ; _ => [] } ;
@@ -257,16 +278,16 @@ oper
te : Str = case nor of { Zuek => "te" ; _ => [] } ; te : Str = case nor of { Zuek => "te" ; _ => [] } ;
zki : Str = case nor of { (Zu|Zuek|Gu|Hauek) => "zki" ; _ => [] } ; zki : Str = case nor of { (Zu|Zuek|Gu|Hauek) => "zki" ; _ => [] } ;
tenses : Tense => Str = table { tenses : AuxForm => Str = table {
Past => let zin : Str = norPast ! nor ; APast => let zin : Str = norPast ! nor ;
da : Str = noriPast ! nori ; da : Str = noriPast ! nori ;
in zin + "tzai" + zki + da + te + "n" ; in zin + "tzai" + zki + da + te + "n" ;
Cond => let zin : Str = norCond ! nor ; ACond => let zin : Str = norCond ! nor ;
da : Str = noriCond ! nori ; da : Str = noriCond ! nori ;
in zin + "tzai" + zki + da + "ke" + te ; in zin + "tzai" + zki + da + "ke" + te ;
pres => let za : Str = norPres ! nor ; aPres => let za : Str = norPres ! nor ;
tzai : Str = case getPers nor of { P3 => "zai" ; _ => "tzai" } ; tzai : Str = case getPers nor of { P3 => "zai" ; _ => "tzai" } ;
da : Str = noriPres ! nori ; da : Str = noriPres ! nori ;
in za + tzai + zki + da + te } ; in za + tzai + zki + da + te } ;
@@ -308,18 +329,18 @@ oper
--- ---
te = case nork of { (Zuek|Hauek) => "te" ; _ => [] } ; te = case nork of { (Zuek|Hauek) => "te" ; _ => [] } ;
tenses : Tense => Str = table { tenses : AuxForm => Str = table {
Cond => let zen = norkCond ! nork ; ACond => let zen = norkCond ! nork ;
izki = norPast ! getNum nor ; -- same forms for past and cond izki = norPast ! getNum nor ; -- same forms for past and cond
da = noriPast ! nori ; -- same forms for past and cond da = noriPast ! nori ; -- same forms for past and cond
in zen + izki + da + "ke" + te ; in zen + izki + da + "ke" + te ;
Past => let zen = norkPast ! nork ; APast => let zen = norkPast ! nork ;
izki = norPast ! getNum nor ; izki = norPast ! getNum nor ;
da = noriPast ! nori ; da = noriPast ! nori ;
in zen + izki + da + te + "n" ; in zen + izki + da + te + "n" ;
pres => let dizki = norPres ! getNum nor ; aPres => let dizki = norPres ! getNum nor ;
da = noriPres ! nori ; --form of nori depends on nork da = noriPres ! nori ; --form of nori depends on nork
zue = norkPres ! nork zue = norkPres ! nork
in dizki + da + zue } in dizki + da + zue }
@@ -333,7 +354,7 @@ oper
-} -}
-- stative copula, like Spanish estar -- stative copula, like Spanish estar
egonDa : IntransV = egonDa : IntransV =
table { Past => table { table { APast => table {
Ni => mkVForms "nengoen" ; Ni => mkVForms "nengoen" ;
Hi _ => mkVForms "hengoen" ; Hi _ => mkVForms "hengoen" ;
Zu => mkVForms "zeunden" ; Zu => mkVForms "zeunden" ;
@@ -341,14 +362,23 @@ oper
Gu => mkVForms "geunden" ; Gu => mkVForms "geunden" ;
Zuek => mkVForms "zeundeten" ; Zuek => mkVForms "zeundeten" ;
Hauek => mkVForms "zeuden" } ; Hauek => mkVForms "zeuden" } ;
_ => table { APres => table {
Ni => mkVForms "nago" ; Ni => mkVForms "nago" ;
Hi _ => mkVForms "hago" "hagoe" ; Hi _ => mkVForms "hago" "hagoe" ;
Zu => mkVForms "zaude" ; Zu => mkVForms "zaude" ;
Hau => mkVForms "dago" "dagoe" ; Hau => mkVForms "dago" "dagoe" ;
Gu => mkVForms "gaude" ; Gu => mkVForms "gaude" ;
Zuek => mkVForms "zaudete" ; Zuek => mkVForms "zaudete" ;
Hauek => mkVForms "daude" } Hauek => mkVForms "daude" } ;
AImp => table {
(Ni|Gu) => noVForm ;
Hi _ => mkVForms "hago" "hagoe" ;
Zu => mkVForms "zaude" ;
Hau => mkVForms "bego" "begoe" ;
Zuek => mkVForms "zaudete" ;
Hauek => mkVForms "beude" } ;
ACond => \\_ => mkVForms "TODO"
} ; } ;
@@ -361,7 +391,7 @@ oper
edukiDu : TransV = table { edukiDu : TransV = table {
-- Nor,Nork -- Nor,Nork
Ni => table { Ni => table {
Pres => table { APres => table {
Gu => noVForm ; Gu => noVForm ;
Hauek => mkVForms "naukate" ; Hauek => mkVForms "naukate" ;
Ni => noVForm ; Ni => noVForm ;
@@ -374,7 +404,7 @@ oper
} ; } ;
Gu => table { Gu => table {
Pres => table { -- Pres APres => table { -- Pres
Gu => noVForm ; Gu => noVForm ;
Hauek => mkVForms "gauzkate" ; Hauek => mkVForms "gauzkate" ;
Ni => noVForm ; Ni => noVForm ;
@@ -385,7 +415,7 @@ oper
tns => \\agr => ukanDu ! Ni ! tns ! agr tns => \\agr => ukanDu ! Ni ! tns ! agr
} ; } ;
Hauek => table { Hauek => table {
Pres => table { -- Pres APres => table { -- Pres
Gu => mkVForms "dauzkagu" ; Gu => mkVForms "dauzkagu" ;
Hauek => mkVForms "dauzkate" ; Hauek => mkVForms "dauzkate" ;
Ni => mkVForms "dauzkat" ; Ni => mkVForms "dauzkat" ;
@@ -397,7 +427,7 @@ oper
tns => \\agr => ukanDu ! Ni ! tns ! agr tns => \\agr => ukanDu ! Ni ! tns ! agr
} ; } ;
Zuek => table { Zuek => table {
Pres => table { APres => table {
Gu => mkVForms "zauzkategu" ; Gu => mkVForms "zauzkategu" ;
Hauek => mkVForms "zauzkatete" ; Hauek => mkVForms "zauzkatete" ;
Ni => mkVForms "zauzkatet" ; Ni => mkVForms "zauzkatet" ;
@@ -408,7 +438,7 @@ oper
tns => \\agr => ukanDu ! Ni ! tns ! agr tns => \\agr => ukanDu ! Ni ! tns ! agr
} ; } ;
Hau => table { Hau => table {
Pres => table { APres => table {
Gu => mkVForms "daukagu" ; Gu => mkVForms "daukagu" ;
Hauek => mkVForms "daukate" ; Hauek => mkVForms "daukate" ;
Ni => mkVForms "daukat" ; Ni => mkVForms "daukat" ;
@@ -420,7 +450,7 @@ oper
tns => \\agr => ukanDu ! Ni ! tns ! agr tns => \\agr => ukanDu ! Ni ! tns ! agr
} ; } ;
Hi _ => table { Hi _ => table {
Pres => table { APres => table {
Gu => mkVForms "haukagu" ; Gu => mkVForms "haukagu" ;
Hauek => mkVForms "haukate" ; Hauek => mkVForms "haukate" ;
Ni => mkVForms "haukat" ; Ni => mkVForms "haukat" ;
@@ -431,7 +461,7 @@ oper
tns => \\agr => ukanDu ! Ni ! tns ! agr tns => \\agr => ukanDu ! Ni ! tns ! agr
} ; } ;
Zu => table { Zu => table {
Pres => table { APres => table {
Gu => mkVForms "zauzkagu" ; Gu => mkVForms "zauzkagu" ;
Hauek => noVForm ; Hauek => noVForm ;
Ni => mkVForms "zauzkat" ; Ni => mkVForms "zauzkat" ;
@@ -452,13 +482,20 @@ oper
etorriDa : IntransV = etorriDa : IntransV =
\\tns,subjAgr => \\tns,subjAgr =>
case <tns,subjAgr> of { case <tns,subjAgr> of {
<Pres,Ni> => mkVForms "nator" ; <APres,Ni> => mkVForms "nator" ;
<Pres,Hi _> => mkVForms "hator" ; <APres,Hi _> => mkVForms "hator" ;
<Pres,Zu> => mkVForms "zatoz" ; <APres,Zu> => mkVForms "zatoz" ;
<Pres,Hau> => mkVForms "dator" ; <APres,Hau> => mkVForms "dator" ;
<Pres,Gu> => mkVForms "gatoz" ; <APres,Gu> => mkVForms "gatoz" ;
<Pres,Zuek> => mkVForms "zatozte" ; <APres,Zuek> => mkVForms "zatozte" ;
<Pres,Hauek> => mkVForms "datoz" ; <APres,Hauek> => mkVForms "datoz" ;
<AImp,(Ni|Gu)> => noVForm ;
<AImp,Hi _> => mkVForms "hator" ;
<AImp,Zu> => mkVForms "zatoz" ;
<AImp,Zuek> => mkVForms "zatozte" ;
<AImp,Hau> => mkVForms "betor" ;
<AImp,Hauek> => mkVForms "betoz" ;
_ => izanDa ! tns ! subjAgr _ => izanDa ! tns ! subjAgr
} ; } ;
@@ -470,20 +507,28 @@ oper
joanDa : IntransV = joanDa : IntransV =
\\tns,subjAgr => \\tns,subjAgr =>
case <tns,subjAgr> of { case <tns,subjAgr> of {
<Pres,Ni> => mkVForms "noa" ; <APres,Ni> => mkVForms "noa" ;
<Pres,Hi _> => mkVForms "hoa" ; <APres,Hi _> => mkVForms "hoa" ;
<Pres,Zu> => mkVForms "zoaz" ; <APres,Zu> => mkVForms "zoaz" ;
<Pres,Hau> => mkVForms "doa" ; <APres,Hau> => mkVForms "doa" ;
<Pres,Gu> => mkVForms "goaz" ; <APres,Gu> => mkVForms "goaz" ;
<Pres,Zuek> => mkVForms "zoazte" ; <APres,Zuek> => mkVForms "zoazte" ;
<Pres,Hauek> => mkVForms "doaz" ; <APres,Hauek> => mkVForms "doaz" ;
<Past,Ni> => mkVForms "nindoan" ;
<Past,Hi _> => mkVForms "hindoan" ; <APast,Ni> => mkVForms "nindoan" ;
<Past,Zu> => mkVForms "zindoazen" ; <APast,Hi _> => mkVForms "hindoan" ;
<Past,Hau> => mkVForms "zihoan" ; <APast,Zu> => mkVForms "zindoazen" ;
<Past,Gu> => mkVForms "gindoazen" ; <APast,Hau> => mkVForms "zihoan" ;
<Past,Zuek> => mkVForms "zindoazten" ; <APast,Gu> => mkVForms "gindoazen" ;
<Past,Hauek> => mkVForms "zihoazen" ; <APast,Zuek> => mkVForms "zindoazten" ;
<APast,Hauek> => mkVForms "zihoazen" ;
<AImp,(Ni|Gu)> => noVForm ;
<AImp,Hi _> => mkVForms "hoa" ;
<AImp,Zu> => mkVForms "zoaz" ;
<AImp,Zuek> => mkVForms "zoazte" ;
<AImp,Hau> => mkVForms "bihoa" ;
<AImp,Hauek> => mkVForms "bihoaz" ;
_ => izanDa ! tns ! subjAgr _ => izanDa ! tns ! subjAgr
} ; } ;
@@ -502,10 +547,9 @@ oper
============================================================================= =============================================================================
-} -}
ibiliDa : IntransV = --TODO: check forms ibiliDa : IntransV = --TODO: check forms
table { table {
Past => table { APast => table {
Ni => mkVForms "nenbilen" ; Ni => mkVForms "nenbilen" ;
Hi _ => mkVForms "henbilen" ; Hi _ => mkVForms "henbilen" ;
Zu => mkVForms "zenbiltzan" ; Zu => mkVForms "zenbiltzan" ;
@@ -514,8 +558,7 @@ oper
Zuek => mkVForms "zenbiltzaten" ; Zuek => mkVForms "zenbiltzaten" ;
Hauek => mkVForms "zebiltzan" } ; Hauek => mkVForms "zebiltzan" } ;
-- Present and future are identical ACond => table {
Cond => table {
Ni => mkVForms "nenbilke" ; Ni => mkVForms "nenbilke" ;
Hi _ => mkVForms "henbilke" ; Hi _ => mkVForms "henbilke" ;
Zu => mkVForms "zenbilzke" ; Zu => mkVForms "zenbilzke" ;
@@ -524,7 +567,7 @@ oper
Zuek => mkVForms "zenbiltzketen" ; Zuek => mkVForms "zenbiltzketen" ;
Hauek => mkVForms "lebilzke" } ; Hauek => mkVForms "lebilzke" } ;
Pres => table { APres => table {
Ni => mkVForms "nabil" ; Ni => mkVForms "nabil" ;
Hi _ => mkVForms "habil" ; Hi _ => mkVForms "habil" ;
Zu => mkVForms "zabiltza" ; Zu => mkVForms "zabiltza" ;
@@ -532,7 +575,15 @@ oper
Gu => mkVForms "gabiltza" ; Gu => mkVForms "gabiltza" ;
Zuek => mkVForms "zabiltzate" ; Zuek => mkVForms "zabiltzate" ;
Hauek => mkVForms "dabiltza" } ; Hauek => mkVForms "dabiltza" } ;
Fut => izanDa ! Fut
AImp => table {
Ni => noVForm ;
Hi _ => mkVForms "habil" ;
Zu => mkVForms "zabiltza" ;
Hau => mkVForms "bebil" ;
Gu => noVForm ;
Zuek => mkVForms "zabiltzate" ;
Hauek => mkVForms "bebiltza" }
} ; } ;
@@ -544,31 +595,31 @@ oper
jakinDu : TransV = jakinDu : TransV =
\\dobjAgr,tns,subjAgr => \\dobjAgr,tns,subjAgr =>
case <dobjAgr,tns,subjAgr> of { case <dobjAgr,tns,subjAgr> of {
<Hau,Pres,Ni> => mkVForms "dakit" ; <Hau,APres,Ni> => mkVForms "dakit" ;
<Hau,Pres,Zu> => mkVForms "dakizu" ; <Hau,APres,Zu> => mkVForms "dakizu" ;
<Hau,Pres,Hau> => mkVForms "daki" ; <Hau,APres,Hau> => mkVForms "daki" ;
<Hau,Pres,Gu> => mkVForms "dakigu" ; <Hau,APres,Gu> => mkVForms "dakigu" ;
<Hau,Pres,Zuek> => mkVForms "dakizue" ; <Hau,APres,Zuek> => mkVForms "dakizue" ;
<Hau,Pres,Hauek> => mkVForms "dakite" ; <Hau,APres,Hauek> => mkVForms "dakite" ;
<Hau,Past,Ni> => mkVForms "nekien" ; <Hau,APast,Ni> => mkVForms "nekien" ;
<Hau,Past,Zu> => mkVForms "zenekien" ; <Hau,APast,Zu> => mkVForms "zenekien" ;
<Hau,Past,Hau> => mkVForms "zekien" ; <Hau,APast,Hau> => mkVForms "zekien" ;
<Hau,Past,Gu> => mkVForms "genekien" ; <Hau,APast,Gu> => mkVForms "genekien" ;
<Hau,Past,Zuek> => mkVForms "zenekiten" ; <Hau,APast,Zuek> => mkVForms "zenekiten" ;
<Hau,Past,Hauek> => mkVForms "zekiten" ; <Hau,APast,Hauek> => mkVForms "zekiten" ;
<_,AImp,(Ni|Gu)> => noVForm ;
<Hau,AImp,Hau> => mkVForms "beki" ;
<Hauek,AImp,Hau> => mkVForms "bekizki" ;
<Hau,AImp,Hauek> => mkVForms "bekite" ;
<Hauek,AImp,Hauek> => mkVForms "bekizkite" ;
_ => ukanDu ! dobjAgr ! tns ! subjAgr _ => ukanDu ! dobjAgr ! tns ! subjAgr
} ; } ;
{-
=============================================================================
Ibili
=============================================================================
-}
{- {-
============================================================================= =============================================================================
Eman Eman
@@ -581,12 +632,6 @@ oper
============================================================================= =============================================================================
-} -}
{-
=============================================================================
Ikusi
=============================================================================
-}
{- {-
============================================================================= =============================================================================
Erabili Erabili

View File

@@ -19,7 +19,7 @@ param
| Du SyntVerb2 | Du SyntVerb2
| Zaio | Dio ; --always Ukan ? | Zaio | Dio ; --always Ukan ?
AuxForm = APres | ACond | APast | AImp ; -- TODO: subjunctive & potential
{- {-
Type of adjectival phrase, e.g. Type of adjectival phrase, e.g.