Merge branch 'master' into new-rus-rg

This commit is contained in:
Roman Suzi
2020-09-12 09:59:49 +03:00
85 changed files with 294838 additions and 703 deletions

View File

@@ -67,6 +67,16 @@ http://acl.ldc.upenn.edu/W/W07/W07-08.pdf
//and agreement of constructions with numerals.// //and agreement of constructions with numerals.//
===Basque===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/basque (Inari Listenmaa, Francis Tyers)
- **Publications**
Inari Listenmaa.
//Formal Methods for Testing Grammars.// PhD thesis. Chalmers University of Technology and University of Gothenburg. 2019. [PDF https://gupea.ub.gu.se/bitstream/2077/59037/1/gupea_2077_59037_1.pdf]
#BR
//Mentioned in Chapter 5 of the thesis.//
===Bulgarian=== ===Bulgarian===
@@ -117,6 +127,10 @@ Appendix to the GF book (A. Ranta, //Grammatical Framework//, CSLI 2011),
http://www.grammaticalframework.org/gf-book/gf-chinese-appendix.pdf http://www.grammaticalframework.org/gf-book/gf-chinese-appendix.pdf
===Czech===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/czech (Aarne Ranta, Michal Měchura)
===Danish=== ===Danish===
@@ -155,8 +169,13 @@ The GF Resource Grammar Library.
- **Source**: http://www.grammaticalframework.org/lib/src/estonian (Kaarel Kaljurand, Inari Listenmaa) - **Source**: http://www.grammaticalframework.org/lib/src/estonian (Kaarel Kaljurand, Inari Listenmaa)
%- **Publications** - **Publications**
Inari Listenmaa and Kaarel Kaljurand.
Computational Estonian Grammar in Grammatical Framework.
//Proceedings of the SALTMIL Workshop at LREC//,
2014.
[PDF http://ixa2.si.ehu.es/~jipsagak/SALTMIL/LREC_2014_Workshop_Proceedings_Saltmil.pdf]
===Finnish=== ===Finnish===
@@ -256,6 +275,9 @@ In The 3rd Workshop
on South and Southeast Asian NLP, COLING 2012. //Reprinted in Shafqat's thesis// on South and Southeast Asian NLP, COLING 2012. //Reprinted in Shafqat's thesis//
===Hungarian===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/hungarian (Inari Listenmaa, Julia Jansson)
===Icelandic=== ===Icelandic===
@@ -281,8 +303,6 @@ Bjarki Traustason, MSc thesis, Chalmers
%- **Publications** %- **Publications**
===Japanese=== ===Japanese===
- **Source**: http://www.grammaticalframework.org/lib/src/japanese (Liza Zimina) - **Source**: http://www.grammaticalframework.org/lib/src/japanese (Liza Zimina)
@@ -302,14 +322,31 @@ Lecture Notes in Computer Science Volume 7614, 2012, pp 156-167.
http://link.springer.com/chapter/10.1007%2F978-3-642-33983-7_16 http://link.springer.com/chapter/10.1007%2F978-3-642-33983-7_16
===Korean===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/korean (Inari Listenmaa)
===Latin=== ===Latin===
- **Source**: http://www.grammaticalframework.org/lib/src/latin (Aarne Ranta) - **Source**: http://www.grammaticalframework.org/lib/src/latin (Herbert Lange, Aarne Ranta)
%- **Publications** - **Publications**
Herbert Lange.
Erstellen einer Grammatik für das Lateinische im “Grammatical Framework”,
Masters thesis (Magiserarbeit), Ludwig-Maximilians-University Munich, 2013.
Herbert Lange. Implementation of a Latin Grammar in Grammatical Framework, //DATeCH//, 2017.
Herbert Lange and Peter Ljunglöf.
MULLE: A grammar-based Latin language learning tool to supplement the classroom setting.
//Proceedings of the 5th Workshop on Natural Language Processing Techniques for Educational Applications//,
2018.
[PDF https://www.aclweb.org/anthology/W18-3715.pdf]
#BR
//Latin RGL used in a language-learning application.//
===Latvian=== ===Latvian===
@@ -397,6 +434,15 @@ Slide presentation, TYPES 2010, Warsaw,
http://www.mimuw.edu.pl/~asl/publications/types2010-slides.pdf http://www.mimuw.edu.pl/~asl/publications/types2010-slides.pdf
===Portuguese===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/portuguese (Bruno Cuconato)
- **Publications**
Bruno Cuconato Claro.
//A computational grammar for Portuguese//. MSc thesis. Rio de Janeiro, 2019.
===Punjabi=== ===Punjabi===
@@ -438,7 +484,7 @@ LNCS 6008,
===Russian=== ===Russian===
- **Source**: http://www.grammaticalframework.org/lib/src/russian (Janna Khegai, Nikita Frolov) - **Source**: http://www.grammaticalframework.org/lib/src/russian (Janna Khegai, Nikita Frolov, Roman Suzi)
- **Publications** - **Publications**
@@ -475,6 +521,21 @@ MSc Thesis, Chalmers University of Technology,
http://publications.lib.chalmers.se/records/fulltext/163234.pdf http://publications.lib.chalmers.se/records/fulltext/163234.pdf
===Slovak===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/slovak (Aarne Ranta, Slavomír Čéplö, Michal Měchura)
===Slovenian===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/slovenian (Krasimir Angelov, Anna Ehrlemark)
===Somali===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/somali (Inari Listenmaa)
===Spanish=== ===Spanish===
- **Source**: http://www.grammaticalframework.org/lib/src/spanish http://www.grammaticalframework.org/lib/src/romance - **Source**: http://www.grammaticalframework.org/lib/src/spanish http://www.grammaticalframework.org/lib/src/romance
@@ -485,7 +546,8 @@ http://publications.lib.chalmers.se/records/fulltext/163234.pdf
===Swahili=== ===Swahili===
- **Source**: http://www.grammaticalframework.org/lib/src/swahili (Wanjiku Ng'ang'a) - **Source**: http://www.grammaticalframework.org/lib/src/swahili (Benson Kituku).
- **Previous version**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/swahili/old (Wanjiku Ng'ang'a).
- **Publications** - **Publications**
@@ -519,10 +581,6 @@ P. Sojka et al (eds), TSD 2012, LNCS 7499, pp. 183-190.
http://link.springer.com/content/pdf/10.1007%2F978-3-642-32790-2_22.pdf http://link.springer.com/content/pdf/10.1007%2F978-3-642-32790-2_22.pdf
===Thai=== ===Thai===
- **Source**: http://www.grammaticalframework.org/lib/src/thai (Aarne Ranta, Chotiros Kairoje) - **Source**: http://www.grammaticalframework.org/lib/src/thai (Aarne Ranta, Chotiros Kairoje)
@@ -556,3 +614,17 @@ July 21-22, 2007, LSA 2007 Linguistic Institute, Stanford University.
2007. 2007.
See also **Hindi** above. See also **Hindi** above.
===Zulu===
- **Source:** https://github.com/LauretteM/gf-rgl-zul/tree/master/src/zulu (Laurette Marais, Laurette Pretorius)
- **Publications**
Laurette Marais, Johannes A. Louw, Jaco Badenhorst, Karen Calteaux, Ilana Wilken, Nina van Niekerk,and Glenn Stein.
AwezaMed: A Multilingual, MultimodalSpeech-To-Speech Translation Application for Maternal Health Care.
//Proceedings of the 23rd International Conference on Information Fusion//.
July 6-9, 2020.
#BR
//The article presents a health care translation system, which uses the Zulu resource grammar.//

View File

@@ -11,60 +11,63 @@ For another view, see the
[The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] . [The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] .
Corrections and additions are welcome! Notice that only those parts of implementations Corrections and additions are welcome! Notice that only those parts of implementations
that are currently available via http://grammaticalframework.org that are currently available via https://github.com/GrammaticalFramework/gf-rgl/
are marked in the table are marked in the table
|| ISO | Language | Git | Mini | Parad | Lex | Lang | API | Symb | Irreg | Dict | Trans | tested | publ | authors || || ISO | Language | Parad | Lex | Lang | API | Symb | Irreg | Dict | WN | tested | publ | authors ||
| Afr | Afrikaans | + | - | ++ | + | + | + | - | - | - | - | - | - | *LP,LM | Afr | Afrikaans | ++ | + | + | + | - | - | - | - | - | - | *LP,LM |
| Amh | Amharic | + | + | ++ | + | + | - | - | - | - | - | - | + | *MK | Amh | Amharic | ++ | + | + | - | - | - | - | - | - | + | *MK |
| Ara | Arabic | + | + | + | + | + | + | + | - | - | - | + | + | AD,*IL | Ara | Arabic | + | + | + | + | + | - | - | - | + | + | AD,*IL |
| Bul | Bulgarian | + | + | + | + | + | + | + | + | + | + | ++ | + | *KA | Bul | Bulgarian | + | + | + | + | + | + | + | + | ++ | + | *KA |
| Cat | Catalan | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL | Cat | Catalan | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL |
| Chi | Chinese | + | - | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH | Chi | Chinese | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH |
| Dan | Danish | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR | Cze | Czech | + | + | + | + | - | - | - | - | + | - | *AR,*MM |
| Dut | Dutch | + | + | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ | Dan | Danish | ++ | + | + | + | + | + | - | - | + | - | *AR |
| Eng | English | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA | Dut | Dutch | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ |
| Est | Estonian | + | - | ++ | + | + | + | - | - | + | + | + | + | *KK,*IL | Eng | English | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA |
| Eus | Basque | + | - | ++ | + | + | + | - | - | - | - | - | + | *IL | Est | Estonian | ++ | + | + | + | - | - | + | + | + | + | *KK,*IL |
| Fin | Finnish | + | + | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL | Eus | Basque | ++ | + | + | + | - | - | - | - | - | + | *IL |
| Fre | French | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,RE | Fin | Finnish | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL |
| Ger | German | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,HH,EG | Fre | French | ++ | + | + | + | + | + | + | - | ++ | - | *AR,RE |
| Gre | Greek(mod) | + | - | ++ | + | + | + | - | - | - | - | - | + | *IP | Ger | German | ++ | + | + | + | + | + | + | - | ++ | - | *AR,HH,EG |
| Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | - | - | + | *HLe | Gre | Greek(mod) | ++ | + | + | + | - | - | - | - | - | + | *IP |
| Heb | Hebrew | + | - | - | - | - | - | - | - | - | - | - | + | *DD | Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | + | *HLe |
| Hin | Hindi | + | + | ++ | + | + | + | + | - | - | + | + | + | *SV,*KP,MH,AR,PK | Heb | Hebrew | - | - | - | - | - | - | - | - | - | + | *DD |
| Ice | Icelandic | + | - | ++ | + | + | + | - | - | - | - | - | + | *BT | Hin | Hindi | ++ | + | + | + | + | - | - | - | + | + | *SV,*KP,MH,AR,PK |
| Ina | Interlingua | + | + | ++ | + | + | - | - | - | - | - | - | - | JB | Hun | Hungarian | ++ | + | + | + | + | - | - | - | + | - | *IL,*JJ |
| Ita | Italian | + | + | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP | Ice | Icelandic | ++ | + | + | + | - | - | - | - | - | + | *BT |
| Jpn | Japanese | + | - | ++ | + | + | + | - | - | - | + | + | + | *LZ | Ina | Interlingua | ++ | + | + | - | - | - | - | - | - | - | JB |
| Lat | Latin | + | - | - | - | - | - | - | - | + | - | - | - | *AR,*HLa | Ita | Italian | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP |
| Lav | Latvian | + | - | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP | Jpn | Japanese | ++ | + | + | + | - | - | - | - | + | + | *LZ |
| Mlt | Maltese | + | + | ++ | + | + | + | + | - | - | - | - | + | *JC | Kor | Korean | ++ | + | + | + | + | - | - | - | + | - | *IL |
| Mon | Mongolian | + | - | ++ | + | + | + | - | - | + | - | - | + | *NE | Lat | Latin | - | - | - | - | - | - | + | - | - | - | *AR,*HLa |
| Nep | Nepali | + | + | ++ | + | + | - | - | - | - | - | - | + | *DS | Lav | Latvian | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP |
| Nno | Norwegian(n) | + | + | ++ | + | + | + | + | + | - | - | - | - | *SRE | Mlt | Maltese | ++ | + | + | + | + | - | - | - | - | + | *JC |
| Nor | Norwegian(b) | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR | Mon | Mongolian | ++ | + | + | + | - | - | + | - | - | + | *NE |
| Pes | Persian | + | - | + | + | + | + | - | - | - | - | + | + | SV,EA,SM,*IL | Nep | Nepali | ++ | + | + | - | - | - | - | - | - | + | *DS |
| Pnb | Punjabi | + | + | + | + | + | + | + | - | - | - | - | + | *SV,MH | Nno | Norwegian(n) | ++ | + | + | + | + | + | - | - | - | - | *SRE |
| Pol | Polish | + | + | + | + | + | + | + | - | - | - | + | + | IN,*AS | Nor | Norwegian(b) | ++ | + | + | + | + | + | - | - | + | - | *AR |
| Por | Portuguese | + | + | ++ | + | + | + | + | + | - | + | + | - | *BC | Pes | Persian | + | + | + | + | - | - | - | - | + | + | SV,EA,SM,*IL |
| Ron | Romanian | + | + | ++ | + | + | + | + | - | - | - | + | + | *RE | Pnb | Punjabi | + | + | + | + | + | - | - | - | - | + | *SV,MH |
| Rus | Russian | + | + | ++ | + | + | + | - | - | + | + | - | + | JK,*NF | Pol | Polish | + | + | + | + | + | - | - | - | + | + | IN,*AS |
| Snd | Sindhi | + | + | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD | Por | Portuguese | ++ | + | + | + | + | + | + | + | + | + | *BC |
| Spa | Spanish | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *AR,IA,TS,*IL | Ron | Romanian | ++ | + | + | + | + | - | - | - | + | + | *RE |
| Swa | Swahili | + | - | - | - | - | - | - | - | - | - | - | + | *WN,JM | Rus | Russian | ++ | + | + | + | - | - | + | - | - | + | JK,NF,*RS |
| Swe | Swedish | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *MA,*AR,MF | Slk | Slovak | + | + | + | + | - | - | - | - | + | - | *AR,*MM,SČ |
| Tha | Thai | + | - | ++ | + | + | + | + | - | - | + | + | - | *AR,CK | Slv | Slovene | ++ | + | + | + | - | - | - | + | + | - | *KA,AE |
| Tsn | Tswana | - | - | - | - | - | - | - | - | - | - | - | - | *LP,AB | Snd | Sindhi | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD |
| Tur | Turkish | + | - | ++ | + | - | - | - | - | + | - | - | - | *SC,KA | Som | Somali | + | - | - | - | - | - | - | - | - | - | *IL |
| Urd | Urdu | + | + | ++ | + | + | + | + | - | - | - | + | + | *SV,MH | Spa | Spanish | ++ | + | + | + | + | + | - | + | ++ | - | *AR,IA,TS,*IL |
| Swa | Swahili | + | + | - | - | - | - | - | - | - | + | *WN,JM,BK |
| Swe | Swedish | ++ | + | + | + | + | + | + | + | ++ | + | *MA,*AR,MF |
| Tha | Thai | ++ | + | + | + | + | - | - | + | + | - | *AR,CK |
| Tur | Turkish | ++ | + | - | - | - | - | + | + | - | - | *SC,KA |
| Urd | Urdu | ++ | + | + | + | + | - | - | - | + | + | *SV,MH |
ISO = 3-letter ISO language code, used in library file names ISO = 3-letter ISO language code, used in library file names
(mostly ISO 639-2 B (bibliographic)) (mostly ISO 639-2 B (bibliographic))
Git = available in the gf-rgl Git repository
Parad = ``Paradigms`` file complete for major POS, ++ means with smart paradigms Parad = ``Paradigms`` file complete for major POS, ++ means with smart paradigms
Lex = the resource ``Lexicon`` (nearly) complete Lex = the resource ``Lexicon`` (nearly) complete
@@ -73,13 +76,13 @@ Lang = the resource ``Syntax`` (nearly) complete
API = the ``Syntax`` compiles API = the ``Syntax`` compiles
Symb = the ``Symbolic`` API compiles Symb = the ``Symbolic`` API complete
Irreg = the ``Irreg`` module with irregular verbs exists Irreg = the ``Irreg`` module with irregular verbs exists
Dict = the ``Dict`` module, large-scale morphological lexicon, exists Dict = the ``Dict`` module, large-scale morphological lexicon, exists
Trans = large-scale translation module and dictionary exists WN = WordNet lexicon exists
tested = tested in some applications, ++ means extensively tested with no major issues tested = tested in some applications, ++ means extensively tested with no major issues
@@ -93,10 +96,12 @@ authors = main contributors, * means still active
AB Ansu Berg, AB Ansu Berg,
AD Ali El Dada, AD Ali El Dada,
AE Anna Ehrlemark,
AR Aarne Ranta, AR Aarne Ranta,
AS Adam Slaski, AS Adam Slaski,
BB Björn Bringert, BB Björn Bringert,
BC Bruno Cuconato, BC Bruno Cuconato,
BK Benson Kituku,
BT Bjarki Traustason, BT Bjarki Traustason,
CK Chotiros Kairoje, CK Chotiros Kairoje,
CP Chen Peng, CP Chen Peng,
@@ -116,6 +121,7 @@ IP Ioanna Papadopoulou,
JB Jean-Philippe Bernardy, JB Jean-Philippe Bernardy,
JC John J. Camilleri, JC John J. Camilleri,
JD Jherna Devi, JD Jherna Devi,
JJ Julia Jansson,
JK Janna Khegai, JK Janna Khegai,
JM Juliet Mutahi, JM Juliet Mutahi,
JS Jordi Saludes, JS Jordi Saludes,
@@ -129,13 +135,16 @@ MA Malin Ahlberg,
MF Markus Forsberg, MF Markus Forsberg,
MK Markos Kassa Gobena, MK Markos Kassa Gobena,
MH Muhammad Humayoun, MH Muhammad Humayoun,
MM Michal Měchura,
NE Nyamsuren Erdenebadrakh, NE Nyamsuren Erdenebadrakh,
NF Nick Frolov, NF Nick Frolov,
NG Normunds Gruzitis, NG Normunds Gruzitis,
QH Qiao Haiyan, QH Qiao Haiyan,
RE Ramona Enache, RE Ramona Enache,
RS Roman Suzi,
PP Peteris Paikens, PP Peteris Paikens,
SC Server Cimen, SC Server Cimen,
SČ Slavomír Čéplö,
SM Sofy Moradi, SM Sofy Moradi,
SRE Stian Rødven Eide, SRE Stian Rødven Eide,
SV Shafqat Virk, SV Shafqat Virk,
@@ -147,7 +156,7 @@ ZL Zhuo Lin Qiqige
==Rules== ==Rules==
Only components available at http://grammaticalframework.org are indicated in the table. Only components available at https://github.com/GrammaticalFramework/gf-rgl/ are indicated in the table.
If you want to work on a language already in the table, please be kind and contact the If you want to work on a language already in the table, please be kind and contact the
active authors of it. active authors of it.

View File

@@ -99,4 +99,4 @@ oper whoSg_IP : IP = notYet "whoSg_IP" ;
oper youPl_Pron : Pron = notYet "youPl_Pron" ; oper youPl_Pron : Pron = notYet "youPl_Pron" ;
oper youPol_Pron : Pron = notYet "youPol_Pron" ; oper youPol_Pron : Pron = notYet "youPol_Pron" ;
} }

View File

@@ -30,28 +30,28 @@ lin
UsePron pron = { UsePron pron = {
s = table { s = table {
Nom | Voc => pron.nom ; Nom | Voc => pron.nom ;
Gen => pron.gen ; Gen => pron.gen ;
Dat => pron.dat ; Dat => pron.dat ;
Acc => pron.acc ; Acc => pron.acc ;
Loc => pron.loc ; Loc => pron.loc ;
Ins => pron.ins Ins => pron.ins
} ; } ;
clit = table { clit = table {
Nom => pron.cnom ; Nom => pron.cnom ;
Voc => pron.nom ; Voc => pron.nom ;
Gen => pron.cgen ; Gen => pron.cgen ;
Dat => pron.cdat ; Dat => pron.cdat ;
Acc => pron.cacc ; Acc => pron.cacc ;
Loc => pron.loc ; Loc => pron.loc ;
Ins => pron.ins Ins => pron.ins
} ; } ;
prep = table { prep = table {
Nom | Voc => pron.nom ; Nom | Voc => pron.nom ;
Gen => pron.pgen ; Gen => pron.pgen ;
Dat => pron.pdat ; Dat => pron.pdat ;
Acc => pron.pacc ; Acc => pron.pacc ;
Loc => pron.loc ; Loc => pron.loc ;
Ins => pron.pins Ins => pron.pins
} ; } ;
a = pron.a ; a = pron.a ;
hasClit = True ; hasClit = True ;

View File

@@ -0,0 +1,729 @@
LangCgg
AdAdv
AddAdvQVP
AdnCAdv
AdvAP
AdvIAdv
AdvIP
AdvQVP
AdvS
AdvSlash
BaseAP
BaseAdV
BaseAdv
BaseCN
BaseDAP
BaseIAdv
BaseNP
BaseRS
BaseS
CAdvAP
CleftAdv
CleftNP
ComparA
ComparAdvAdj
ComparAdvAdjS
ComplA
ComplSlashIP
ConjAP
ConjAdV
ConjAdv
ConjCN
ConjDet
ConjIAdv
ConjNP
ConjRS
ConjS
ConsAP
ConsAdV
ConsAdv
ConsCN
ConsDAP
ConsIAdv
ConsNP
ConsRS
ConsS
EmbedQS
EmbedS
EmbedVP
ExistIP
ExistIPAdv
ExistNP
ExistNPAdv
ExtAdvS
ExtAdvVP
FunRP
GenericCl
IdetQuant
ImpP
ImpPl
ImpersCl
InLanguage
InflectionA
InflectionA
InflectionAdv
InflectionN
InflectionN
InflectionN
InflectionPrep
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionVA
InflectionVQ
InflectionVS
InflectionVV
MarkupAP
MarkupAdv
MarkupCN
MarkupNP
MarkupPhr
MarkupS
MarkupText
MarkupUtt
MkDefinition
MkDefinitionEx
MkDocument
MkTag
NoDefinition
PConjConj
PassV
PositAdAAdj
PositAdvAdj
PredSCVP
PrepIP
ProgrVP
QuestQVP
ReflA
ReflVP
RelS
SSubjS
SelfAdVVP
SelfAdvVP
SelfNP
SentAP
SentCN
SlashPrep
SlashV
SlashV
SlashV
SlashV
SlashV
VNP
SlashVS
SubjS
UseA
UseSlash
VPSlashPrep
VocNP
Mark
above
Prep
active
passive
afrikaans
Language
airplane
already
Adv
although
Subj
amharic
Language
answer
apartment
april
Month
arabic
Language
art
as
CAdv
ashes
ask
at
most
AdN
august
Month
Mark
back
bank
bark
beautiful
because
Subj
before
Prep
beg
belly
blow
bone
boot
boss
both
and
DConj
bottle
of
CN
breast
breathe
broad
brother
brown
bulgarian
Language
burn
butter
by
agent
Prep
by
means
Prep
camera
cap
carpet
catalan
Language
ceiling
chair
cheese
chinese
Language
church
clever
coat
correct
country
cousin
cup
of
CN
danish
Language
dayMonthAdv
dayMonthYearAdv
day
day
Timeunit
dconcat
december
Month
die
dig
digits
num
digits
numeral
dirty
dn
dn
dn
dn
dn
dn
dn
doctor
door
dry
dull
during
Prep
dust
dutch
Language
ear
earth
easy
egg
eightHour
eighteenHour
either
or
DConj
elevenHour
empty
enemy
english
Language
estonian
Language
everybody
NP
everything
NP
except
Prep
eye
factory
fall
far
Adv
fat
feather
february
Month
few
short
of
fifteenHour
fight
fingernail
finnish
Language
fiveHour
float
floor
flow
fly
fog
foot
for
Prep
forest
forget
fourHour
fourteenHour
freeze
french
Language
friday
Weekday
fridge
fruit
full
fun
AV
garden
german
Language
glass
of
CN
glove
gold
grass
greek
Language
guts
Mark
Mark
hair
hand
harbour
has
age
VP
hat
hate
have
name
Cl
head
hear
heart
hebrew
Language
here
from
Adv
here
to
Adv
hill
hindi
Language
hit
hold
horn
hour
Timeunit
how
much
IAdv
how
far
QCl
how
old
QCl
hungry
VP
hunt
husband
Mark
ice
if
Subj
if
then
Conj
ill
VP
important
industry
intMonthday
intYear
iron
is
right
VP
is
wrong
VP
italian
Language
january
Month
japanese
Language
july
Month
june
Month
king
knee
know
lake
lamp
languageCN
languageNP
language
title
Utt
latin
Language
latvian
Language
laugh
leaf
learn
leather
leave
left
Ord
leg
less
CAdv
li
Mark
lie
like
listen
liver
long
lose
louse
love
maltese
Language
march
Month
married
married
Cl
may
Month
meat
minute
Timeunit
monday
Weekday
monthAdv
monthN
monthPN
monthYearAdv
month
Timeunit
moon
more
CAdv
mother
mountain
mouth
much
Det
units
AP
units
of
NP
name
narrow
nd
nd
nd
nd
nd
near
neck
nepali
Language
newspaper
night
nineHour
nineteenHour
no
Utt
nobody
NP
norwegian
Language
nose
nothing
NP
november
Month
num
digits
number
october
Month
oil
oneHour
open
Mark
paint
paper
part
Prep
peace
pen
persian
Language
person
planet
plastic
play
policeman
polish
Language
possess
Prep
priest
probable
AS
pull
punjabi
Language
push
put
queen
question
quite
Adv
radio
rain
rain
ready
VP
reason
religion
restaurant
right
Ord
road
rock
romanian
Language
roof
root
rope
rotten
round
rub
rubber
rule
russian
Language
salt
sand
saturday
Weekday
scared
VP
school
science
scratch
second
Timeunit
seed
seek
september
Month
sevenHour
seventeenHour
sew
sharp
sheep
shirt
shoe
shop
short
silver
sindhi
Language
sing
sister
sit
sixHour
sixteenHour
skin
sky
smell
smoke
smooth
snake
snow
sock
somebody
NP
something
NP
somewhere
Adv
song
spanish
Language
speak
spit
split
squeeze
stab
stand
steel
stick
stone
stop
stove
straight
student
stupid
suck
sun
sunday
Weekday
swahili
Language
swedish
Language
swell
switch
off
switch
on
table
Mark
table
tail
td
Mark
teacher
television
tenHour
thai
Language
there
from
Adv
there
to
Adv
there
Adv
they
Pron
thick
thin
think
thirsty
VP
thirteenHour
threeHour
through
Prep
throw
thursday
Weekday
tie
timeHour
timeHourMinute
timeunitAdv
tired
VP
today
Adv
tongue
tooth
tr
Mark
tuesday
Weekday
turkish
Language
turn
twelveHour
twentyFourHour
twentyHour
twentyOneHour
twentyThreeHour
twentyTwoHour
twoHour
ugly
ul
Mark
uncertain
university
urdu
Language
village
vomit
war
wash
watch
weather
adjCl
wednesday
Weekday
week
Timeunit
weekdayHabitualAdv
weekdayLastAdv
weekdayN
weekdayNextAdv
weekdayPN
weekdayPunctualAdv
wet
what
name
QCl
when
Subj
wide
wife
win
wind
window
wing
wipe
without
Prep
wonder
VQ
wood
worm
write
yearAdv
year
year
Timeunit
yes
Utt
youPol
Pron

View File

@@ -0,0 +1,729 @@
LangCgg
AdAdv
AddAdvQVP
AdnCAdv
AdvAP
AdvIAdv
AdvIP
AdvQVP
AdvS
AdvSlash
BaseAP
BaseAdV
BaseAdv
BaseCN
BaseDAP
BaseIAdv
BaseNP
BaseRS
BaseS
CAdvAP
CleftAdv
CleftNP
ComparA
ComparAdvAdj
ComparAdvAdjS
ComplA
ComplSlashIP
ConjAP
ConjAdV
ConjAdv
ConjCN
ConjDet
ConjIAdv
ConjNP
ConjRS
ConjS
ConsAP
ConsAdV
ConsAdv
ConsCN
ConsDAP
ConsIAdv
ConsNP
ConsRS
ConsS
EmbedQS
EmbedS
EmbedVP
ExistIP
ExistIPAdv
ExistNP
ExistNPAdv
ExtAdvS
ExtAdvVP
FunRP
GenericCl
IdetQuant
ImpP
ImpPl
ImpersCl
InLanguage
InflectionA
InflectionA
InflectionAdv
InflectionN
InflectionN
InflectionN
InflectionPrep
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionVA
InflectionVQ
InflectionVS
InflectionVV
MarkupAP
MarkupAdv
MarkupCN
MarkupNP
MarkupPhr
MarkupS
MarkupText
MarkupUtt
MkDefinition
MkDefinitionEx
MkDocument
MkTag
NoDefinition
PConjConj
PassV
PositAdAAdj
PositAdvAdj
PredSCVP
PrepIP
ProgrVP
QuestQVP
ReflA
ReflVP
RelS
SSubjS
SelfAdVVP
SelfAdvVP
SelfNP
SentAP
SentCN
SlashPrep
SlashV
SlashV
SlashV
SlashV
SlashV
VNP
SlashVS
SubjS
UseA
UseSlash
VPSlashPrep
VocNP
Mark
above
Prep
active
passive
afrikaans
Language
airplane
already
Adv
although
Subj
amharic
Language
answer
apartment
april
Month
arabic
Language
art
as
CAdv
ashes
ask
at
most
AdN
august
Month
Mark
back
bank
bark
beautiful
because
Subj
before
Prep
beg
belly
blow
bone
boot
boss
both
and
DConj
bottle
of
CN
breast
breathe
broad
brother
brown
bulgarian
Language
burn
butter
by
agent
Prep
by
means
Prep
camera
cap
carpet
catalan
Language
ceiling
chair
cheese
chinese
Language
church
clever
coat
correct
country
cousin
cup
of
CN
danish
Language
dayMonthAdv
dayMonthYearAdv
day
day
Timeunit
dconcat
december
Month
die
dig
digits
num
digits
numeral
dirty
dn
dn
dn
dn
dn
dn
dn
doctor
door
dry
dull
during
Prep
dust
dutch
Language
ear
earth
easy
egg
eightHour
eighteenHour
either
or
DConj
elevenHour
empty
enemy
english
Language
estonian
Language
everybody
NP
everything
NP
except
Prep
eye
factory
fall
far
Adv
fat
feather
february
Month
few
short
of
fifteenHour
fight
fingernail
finnish
Language
fiveHour
float
floor
flow
fly
fog
foot
for
Prep
forest
forget
fourHour
fourteenHour
freeze
french
Language
friday
Weekday
fridge
fruit
full
fun
AV
garden
german
Language
glass
of
CN
glove
gold
grass
greek
Language
guts
Mark
Mark
hair
hand
harbour
has
age
VP
hat
hate
have
name
Cl
head
hear
heart
hebrew
Language
here
from
Adv
here
to
Adv
hill
hindi
Language
hit
hold
horn
hour
Timeunit
how
much
IAdv
how
far
QCl
how
old
QCl
hungry
VP
hunt
husband
Mark
ice
if
Subj
if
then
Conj
ill
VP
important
industry
intMonthday
intYear
iron
is
right
VP
is
wrong
VP
italian
Language
january
Month
japanese
Language
july
Month
june
Month
king
knee
know
lake
lamp
languageCN
languageNP
language
title
Utt
latin
Language
latvian
Language
laugh
leaf
learn
leather
leave
left
Ord
leg
less
CAdv
li
Mark
lie
like
listen
liver
long
lose
louse
love
maltese
Language
march
Month
married
married
Cl
may
Month
meat
minute
Timeunit
monday
Weekday
monthAdv
monthN
monthPN
monthYearAdv
month
Timeunit
moon
more
CAdv
mother
mountain
mouth
much
Det
units
AP
units
of
NP
name
narrow
nd
nd
nd
nd
nd
near
neck
nepali
Language
newspaper
night
nineHour
nineteenHour
no
Utt
nobody
NP
norwegian
Language
nose
nothing
NP
november
Month
num
digits
number
october
Month
oil
oneHour
open
Mark
paint
paper
part
Prep
peace
pen
persian
Language
person
planet
plastic
play
policeman
polish
Language
possess
Prep
priest
probable
AS
pull
punjabi
Language
push
put
queen
question
quite
Adv
radio
rain
rain
ready
VP
reason
religion
restaurant
right
Ord
road
rock
romanian
Language
roof
root
rope
rotten
round
rub
rubber
rule
russian
Language
salt
sand
saturday
Weekday
scared
VP
school
science
scratch
second
Timeunit
seed
seek
september
Month
sevenHour
seventeenHour
sew
sharp
sheep
shirt
shoe
shop
short
silver
sindhi
Language
sing
sister
sit
sixHour
sixteenHour
skin
sky
smell
smoke
smooth
snake
snow
sock
somebody
NP
something
NP
somewhere
Adv
song
spanish
Language
speak
spit
split
squeeze
stab
stand
steel
stick
stone
stop
stove
straight
student
stupid
suck
sun
sunday
Weekday
swahili
Language
swedish
Language
swell
switch
off
switch
on
table
Mark
table
tail
td
Mark
teacher
television
tenHour
thai
Language
there
from
Adv
there
to
Adv
there
Adv
they
Pron
thick
thin
think
thirsty
VP
thirteenHour
threeHour
through
Prep
throw
thursday
Weekday
tie
timeHour
timeHourMinute
timeunitAdv
tired
VP
today
Adv
tongue
tooth
tr
Mark
tuesday
Weekday
turkish
Language
turn
twelveHour
twentyFourHour
twentyHour
twentyOneHour
twentyThreeHour
twentyTwoHour
twoHour
ugly
ul
Mark
uncertain
university
urdu
Language
village
vomit
war
wash
watch
weather
adjCl
wednesday
Weekday
week
Timeunit
weekdayHabitualAdv
weekdayLastAdv
weekdayN
weekdayNextAdv
weekdayPN
weekdayPunctualAdv
wet
what
name
QCl
when
Subj
wide
wife
win
wind
window
wing
wipe
without
Prep
wonder
VQ
wood
worm
write
yearAdv
year
year
Timeunit
yes
Utt
youPol
Pron

View File

@@ -15,6 +15,11 @@ lin
{-Assumed that a PrepNP is always Acc-} {-Assumed that a PrepNP is always Acc-}
PrepNP prep np = {s = prep.s ++ np.s ! Acc; agr = AgrNo}; -- aha meza PrepNP prep np = {s = prep.s ++ np.s ! Acc; agr = AgrNo}; -- aha meza
-- Subordinate clauses can function as adverbs.
--SubjS : Subj -> S -> Adv ; -- when she sleeps
SubjS subjunctive sent = {s=subjunctive.s ++ sent.s; agr=AgrNo};
--PositAdvAdj : A -> Adv ; -- warmly --PositAdvAdj : A -> Adv ; -- warmly
--"Impossible to implement because each is lexically different word." --"Impossible to implement because each is lexically different word."

5
src/rukiga/AllCgg.gf Normal file
View File

@@ -0,0 +1,5 @@
--# -path=.:../abstract:../common:../prelude
concrete AllCgg of AllCggAbs =
LangCgg, SentenceExtraCgg,LexiconExtraCgg
** {} ;

7
src/rukiga/AllCggAbs.gf Normal file
View File

@@ -0,0 +1,7 @@
--# -path=.:../abstract:../common:prelude
abstract AllCggAbs =
Lang,
SentenceExtra,
LexiconExtra
** {} ;

View File

@@ -20,6 +20,9 @@ lincat
[CN] = {s1,s2 : Number => Case => Str}; [CN] = {s1,s2 : Number => Case => Str};
[DAP] = {s1,s2 : Str ; n : Number}; [DAP] = {s1,s2 : Str ; n : Number};
-} -}
{- {-
--1 Conjunction: Coordination --1 Conjunction: Coordination

View File

@@ -1,23 +0,0 @@
abstract DictCggAbs = Cat ** {
{- --beginning of comment
fun
{-
--since this is a structural word, maybe take it to
Extend module for structural as you have done for Dict.
We have ahandi = at another place whic has no English equivalent.
-}
------ Structural words
{-aditions-}
here1_Adv; -- hanu
here2_Adv; -- hanuuya --exactly here or here with emphasis
there1_Adv; -- hariya
outside_Adv; -- aheeru
near_Adv; --haihi
hare_Adv; --far
-} --end of comment
}

View File

@@ -1,5 +0,0 @@
abstract ExtraCatAbs = Cat **{
cat
TenseExtra;
TempExtra;
}

View File

@@ -1,16 +0,0 @@
abstract ExtraCggAbs = Cat **{
-- there is a default linearization for abstract
-- categories Tense and Temp
-- these in TenseX
--
cat
AllTenses;
--TempExtra;
fun
UseClExtra : TempExtra -> Pol -> Cl -> S ; -- she had not slept
UseQClExtra : TempExtra -> Pol -> QCl -> QS ; -- who had not slept
UseRClExtra : TempExtra -> Pol -> RCl -> RS ; -- that had not slept
UseSlashExtra : TempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
}

View File

@@ -1,14 +0,0 @@
concrete ExtraCggAbsCgg of ExtraCggAbs = CatCgg
open (R=ResCgg), (P=ParamX) in {
lincat
AllTenses = {s : Str ; t : P.Tense; tExtra : R.TensesExtra } ;
TempExtra = {s : Str ; t : R.TensesExtra } ;
--TempExtraWithAspects = {s : Str ; t : P.Tense ; a : R.AspectsExtra } ;
fun
UseClExtra : TempTempExtra -> Pol -> Cl -> S ; -- she had not slept
UseQClExtra : TempTempExtra -> Pol -> QCl -> QS ; -- who had not slept
UseRClExtra : TempTempExtra -> Pol -> RCl -> RS ; -- that had not slept
UseSlashExtra : TempTempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
}

View File

@@ -1,97 +0,0 @@
abstract ExtraStructuralAbs = Cat ** {
fun
--Pronouns additional
it_N_N_Sg_Pron : Pron;
it_N_N_Pl_Pron : Pron;
it_KU_MA _Sg_Pron : Pron ;
it_KU_MA_Pl_Pron : Pron;
it_BU_MA_Sg_Pron : Pron;
it_BU_MA_Pl_Pron : Pron;
it_RU_BU_Sg_Pron : Pron;
it_RU_BU_Pl_Pron : Pron;
it_GU_GA_Sg_Pron : Pron;
it_GU_GA_Pl_Pron : Pron;
it_ZERO_ZERO_Sg_Pron : Pron; --what do you do with this?
it_ZERO_ZERO_Pl_Pron : Pron; --what would you do with this?
it_MU_MI_Sg_Pron : Pron;
it_MU_MI_Pl_Pron : Pron;
it_RI_MA_Sg_Pron : Pron;
it_RI_MA_Pl_Pron : Pron;
it_I_MA_Sg_Pron : Pron;
it_I_MA_Pl_Pron : Pron;
it_KA_BU_Sg_Pron : Pron;
it_KA_BU_Pl_Pron : Pron;
it_KA_TU_Sg_Pron : Pron;
it_KA_TU_Pl_Pron : Pron;
it_RU_N_Sg_Pron : Pron;
it_RU_N_Pl_Pron : Pron;
it_RU_MA_Sg_Pron : Pron;
it_RU_MA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron;
it_HA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron; -- might have to remove this.
it_HA_Pl_Pron : Pron;
it_MU_Sg_Pron : Pron;
it_MU_Pl_Pron : Pron;
it_KU_Sg_Pron : Pron;
it_KU_Pl_Pron : Pron;
--it_ZERO_BU_Sg_Pron : Pron;
it_ZERO_BU_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_MA_Sg_Pron : Pron;
it_ZERO_MA_Pl_Pron : Pron;
--it_ZERO_MI_Sg_Pron : Pron;
it_ZERO_MI_Pl_Pron : Pron;
--it_ZERO_TU_Sg_Pron : Pron;
it_ZERO_TU_Pl_Pron : Pron;
--it_ZERO_N_Sg_Pron : Pron;
it_ZERO_N_Pl_Pron : Pron;
it_I_ZERO_Sg_Pron : Pron;
--it_I_ZERO_Pl_Pron : Pron;
it_RI_ZERO_Sg_Pron : Pron;
--it_RI_ZERO_Pl_Pron : Pron;
it_KU_ZERO_Sg_Pron : Pron;
--it_KU_ZERO_Pl_Pron : Pron;
it_MU_ZERO_Sg_Pron : Pron;
it_MU_ZERO_Pl_Pron : Pron;
it_RU_ZERO_Sg_Pron : Pron;
--it_RU_ZERO_Pl_Pron : Pron;
it_KA_ZERO_Sg_Pron : Pron;
--it_KA_ZERO_Pl_Pron : Pron;
it_ZERO_BAA_Sg_Pron : Pron;
--it_ZERO_BAA_Pl_Pron : Pron;
}

View File

@@ -1,97 +0,0 @@
abstract ExtraStructuralAbs = Cat ** {
fun
--Pronouns additional
it_N_N_Sg_Pron : Pron;
it_N_N_Pl_Pron : Pron;
it_KU_MA _Sg_Pron : Pron ;
it_KU_MA_Pl_Pron : Pron;
it_BU_MA_Sg_Pron : Pron;
it_BU_MA_Pl_Pron : Pron;
it_RU_BU_Sg_Pron : Pron;
it_RU_BU_Pl_Pron : Pron;
it_GU_GA_Sg_Pron : Pron;
it_GU_GA_Pl_Pron : Pron;
it_ZERO_ZERO_Sg_Pron : Pron; --what do you do with this?
it_ZERO_ZERO_Pl_Pron : Pron; --what would you do with this?
it_MU_MI_Sg_Pron : Pron;
it_MU_MI_Pl_Pron : Pron;
it_RI_MA_Sg_Pron : Pron;
it_RI_MA_Pl_Pron : Pron;
it_I_MA_Sg_Pron : Pron;
it_I_MA_Pl_Pron : Pron;
it_KA_BU_Sg_Pron : Pron;
it_KA_BU_Pl_Pron : Pron;
it_KA_TU_Sg_Pron : Pron;
it_KA_TU_Pl_Pron : Pron;
it_RU_N_Sg_Pron : Pron;
it_RU_N_Pl_Pron : Pron;
it_RU_MA_Sg_Pron : Pron;
it_RU_MA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron;
it_HA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron; -- might have to remove this.
it_HA_Pl_Pron : Pron;
it_MU_Sg_Pron : Pron;
it_MU_Pl_Pron : Pron;
it_KU_Sg_Pron : Pron;
it_KU_Pl_Pron : Pron;
--it_ZERO_BU_Sg_Pron : Pron;
it_ZERO_BU_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_MA_Sg_Pron : Pron;
it_ZERO_MA_Pl_Pron : Pron;
--it_ZERO_MI_Sg_Pron : Pron;
it_ZERO_MI_Pl_Pron : Pron;
--it_ZERO_TU_Sg_Pron : Pron;
it_ZERO_TU_Pl_Pron : Pron;
--it_ZERO_N_Sg_Pron : Pron;
it_ZERO_N_Pl_Pron : Pron;
it_I_ZERO_Sg_Pron : Pron;
--it_I_ZERO_Pl_Pron : Pron;
it_RI_ZERO_Sg_Pron : Pron;
--it_RI_ZERO_Pl_Pron : Pron;
it_KU_ZERO_Sg_Pron : Pron;
--it_KU_ZERO_Pl_Pron : Pron;
it_MU_ZERO_Sg_Pron : Pron;
it_MU_ZERO_Pl_Pron : Pron;
it_RU_ZERO_Sg_Pron : Pron;
--it_RU_ZERO_Pl_Pron : Pron;
it_KA_ZERO_Sg_Pron : Pron;
--it_KA_ZERO_Pl_Pron : Pron;
it_ZERO_BAA_Sg_Pron : Pron;
--it_ZERO_BAA_Pl_Pron : Pron;
}

View File

@@ -1,97 +0,0 @@
abstract ExtraStructuralCggAbs = Cat ** {
fun
--Pronouns additional
it_N_N_Sg_Pron : Pron;
it_N_N_Pl_Pron : Pron;
it_KU_MA _Sg_Pron : Pron ;
it_KU_MA_Pl_Pron : Pron;
it_BU_MA_Sg_Pron : Pron;
it_BU_MA_Pl_Pron : Pron;
it_RU_BU_Sg_Pron : Pron;
it_RU_BU_Pl_Pron : Pron;
it_GU_GA_Sg_Pron : Pron;
it_GU_GA_Pl_Pron : Pron;
it_ZERO_ZERO_Sg_Pron : Pron; --what do you do with this?
it_ZERO_ZERO_Pl_Pron : Pron; --what would you do with this?
it_MU_MI_Sg_Pron : Pron;
it_MU_MI_Pl_Pron : Pron;
it_RI_MA_Sg_Pron : Pron;
it_RI_MA_Pl_Pron : Pron;
it_I_MA_Sg_Pron : Pron;
it_I_MA_Pl_Pron : Pron;
it_KA_BU_Sg_Pron : Pron;
it_KA_BU_Pl_Pron : Pron;
it_KA_TU_Sg_Pron : Pron;
it_KA_TU_Pl_Pron : Pron;
it_RU_N_Sg_Pron : Pron;
it_RU_N_Pl_Pron : Pron;
it_RU_MA_Sg_Pron : Pron;
it_RU_MA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron;
it_HA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron; -- might have to remove this.
it_HA_Pl_Pron : Pron;
it_MU_Sg_Pron : Pron;
it_MU_Pl_Pron : Pron;
it_KU_Sg_Pron : Pron;
it_KU_Pl_Pron : Pron;
--it_ZERO_BU_Sg_Pron : Pron;
it_ZERO_BU_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_MA_Sg_Pron : Pron;
it_ZERO_MA_Pl_Pron : Pron;
--it_ZERO_MI_Sg_Pron : Pron;
it_ZERO_MI_Pl_Pron : Pron;
--it_ZERO_TU_Sg_Pron : Pron;
it_ZERO_TU_Pl_Pron : Pron;
--it_ZERO_N_Sg_Pron : Pron;
it_ZERO_N_Pl_Pron : Pron;
it_I_ZERO_Sg_Pron : Pron;
--it_I_ZERO_Pl_Pron : Pron;
it_RI_ZERO_Sg_Pron : Pron;
--it_RI_ZERO_Pl_Pron : Pron;
it_KU_ZERO_Sg_Pron : Pron;
--it_KU_ZERO_Pl_Pron : Pron;
it_MU_ZERO_Sg_Pron : Pron;
it_MU_ZERO_Pl_Pron : Pron;
it_RU_ZERO_Sg_Pron : Pron;
--it_RU_ZERO_Pl_Pron : Pron;
it_KA_ZERO_Sg_Pron : Pron;
--it_KA_ZERO_Pl_Pron : Pron;
it_ZERO_BAA_Sg_Pron : Pron;
--it_ZERO_BAA_Pl_Pron : Pron;
}

View File

@@ -1,101 +0,0 @@
concrete ExtraStructuralCggAbsCgg of ExtraStructuralCggAbs = CatCgg ** open ResCgg {
{-
lin
--Pronouns additional
it_N_N_Sg_Pron : Pron;
it_N_N_Pl_Pron : Pron;
it_KU_MA _Sg_Pron : Pron ;
it_KU_MA_Pl_Pron : Pron;
it_BU_MA_Sg_Pron : Pron;
it_BU_MA_Pl_Pron : Pron;
it_RU_BU_Sg_Pron : Pron;
it_RU_BU_Pl_Pron : Pron;
it_GU_GA_Sg_Pron : Pron;
it_GU_GA_Pl_Pron : Pron;
it_ZERO_ZERO_Sg_Pron : Pron; --what do you do with this?
it_ZERO_ZERO_Pl_Pron : Pron; --what would you do with this?
it_MU_MI_Sg_Pron : Pron;
it_MU_MI_Pl_Pron : Pron;
it_RI_MA_Sg_Pron : Pron;
it_RI_MA_Pl_Pron : Pron;
it_I_MA_Sg_Pron : Pron;
it_I_MA_Pl_Pron : Pron;
it_KA_BU_Sg_Pron : Pron;
it_KA_BU_Pl_Pron : Pron;
it_KA_TU_Sg_Pron : Pron;
it_KA_TU_Pl_Pron : Pron;
it_RU_N_Sg_Pron : Pron;
it_RU_N_Pl_Pron : Pron;
it_RU_MA_Sg_Pron : Pron;
it_RU_MA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron;
it_HA_Pl_Pron : Pron;
it_HA_Sg_Pron : Pron; -- might have to remove this.
it_HA_Pl_Pron : Pron;
it_MU_Sg_Pron : Pron;
it_MU_Pl_Pron : Pron;
it_KU_Sg_Pron : Pron;
it_KU_Pl_Pron : Pron;
--it_ZERO_BU_Sg_Pron : Pron;
it_ZERO_BU_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_BI_Sg_Pron : Pron;
it_ZERO_BI_Pl_Pron : Pron;
--it_ZERO_MA_Sg_Pron : Pron;
it_ZERO_MA_Pl_Pron : Pron;
--it_ZERO_MI_Sg_Pron : Pron;
it_ZERO_MI_Pl_Pron : Pron;
--it_ZERO_TU_Sg_Pron : Pron;
it_ZERO_TU_Pl_Pron : Pron;
--it_ZERO_N_Sg_Pron : Pron;
it_ZERO_N_Pl_Pron : Pron;
it_I_ZERO_Sg_Pron : Pron;
--it_I_ZERO_Pl_Pron : Pron;
it_RI_ZERO_Sg_Pron : Pron;
--it_RI_ZERO_Pl_Pron : Pron;
it_KU_ZERO_Sg_Pron : Pron;
--it_KU_ZERO_Pl_Pron : Pron;
it_MU_ZERO_Sg_Pron : Pron;
it_MU_ZERO_Pl_Pron : Pron;
it_RU_ZERO_Sg_Pron : Pron;
--it_RU_ZERO_Pl_Pron : Pron;
it_KA_ZERO_Sg_Pron : Pron;
--it_KA_ZERO_Pl_Pron : Pron;
it_ZERO_BAA_Sg_Pron : Pron;
--it_ZERO_BAA_Pl_Pron : Pron;
-}
}

View File

@@ -6,7 +6,8 @@ concrete GrammarCgg of Grammar =
AdjectiveCgg, AdjectiveCgg,
AdverbCgg, AdverbCgg,
NumeralCgg, NumeralCgg,
SentenceCgg, SentenceCgg,
--SentenceExtraCgg,
QuestionCgg, QuestionCgg,
RelativeCgg, RelativeCgg,
ConjunctionCgg, ConjunctionCgg,

View File

@@ -17,7 +17,7 @@ lin
bread_N = mkN "omugati" MU_MI; bread_N = mkN "omugati" MU_MI;
car_N = mkN "emootoka" N_N ; car_N = mkN "emootoka" N_N ;
cat_N = mkN "enjangu" N_N ; cat_N = mkN "enjangu" N_N ;
--chair_N = mkN "entebbe" N_N ; chair_N = mkN "entebbe" N_N ;
child_N = mkN "omwana" MU_BA ; child_N = mkN "omwana" MU_BA ;
city_N = mkN "ekibúga" KI_BI; --orurêmbo pl endêmbo city_N = mkN "ekibúga" KI_BI; --orurêmbo pl endêmbo
cloud_N = mkN "ekikyu" KI_BI ; cloud_N = mkN "ekikyu" KI_BI ;
@@ -25,6 +25,7 @@ lin
cow_N = mkN "ente" N_N ; cow_N = mkN "ente" N_N ;
dog_N = mkN "embwa" N_N ; dog_N = mkN "embwa" N_N ;
--person_N = mkN "omuntu" "abantu" MU_BA ; --person_N = mkN "omuntu" "abantu" MU_BA ;
eye_N = mkN "eriisho" RI_MA;
fire_N = mkN "omuriro" MU_MI ; fire_N = mkN "omuriro" MU_MI ;
fish_N = mkN "eky'ényanja" KI_BI ; fish_N = mkN "eky'ényanja" KI_BI ;
flower_N = mkN "ekimuri" KI_BI ; flower_N = mkN "ekimuri" KI_BI ;
@@ -44,9 +45,11 @@ lin
horse_N = mkN "embaráàsi" N_N ; horse_N = mkN "embaráàsi" N_N ;
house_N = mkN "enju" N_N ; house_N = mkN "enju" N_N ;
language_N = mkN "orurími" "endími" RU_N ; language_N = mkN "orurími" "endími" RU_N ;
meat_N = mkN "enyama" N_N;
man_N = mkN "omushaija" MU_BA ; man_N = mkN "omushaija" MU_BA ;
milk_N = mkN "amate" ZERO_MA ; milk_N = mkN "amate" ZERO_MA ;
music_N = mkN "music" ZERO_ZERO ; -- I have not found the translation music_N = mkN "music" ZERO_ZERO ; -- I have not found the translation
rule_N = mkN "ekiragiro" KI_BI;
river_N = mkN "omugyera" MU_MI ; --omurîndi, river_N = mkN "omugyera" MU_MI ; --omurîndi,
sea_N = mkN "enyanja" N_N ; sea_N = mkN "enyanja" N_N ;
ship_N = mkN "ekyombo" KI_BI ; -- eméèri [NC_n_n] ship_N = mkN "ekyombo" KI_BI ; -- eméèri [NC_n_n]
@@ -56,7 +59,9 @@ lin
water_N = mkN "amáìzi" ZERO_MA ; water_N = mkN "amáìzi" ZERO_MA ;
wine_N = mkN "víìnyo" ZERO_ZERO ; wine_N = mkN "víìnyo" ZERO_ZERO ;
woman_N = mkN "omwishiki" MU_BA ; woman_N = mkN "omwishiki" MU_BA ;
reason_N = mkN "enshoonga" N_N;
sheep_N = mkN "entaama" N_N;
hat_N = mkN "enkofira" N_N;
--Proper Nouns --Proper Nouns
john_PN = mkPN "Yohana" (AgP3 Sg MU_BA) False; john_PN = mkPN "Yohana" (AgP3 Sg MU_BA) False;
paris_PN = mkPN "Paris" (AgP3 Sg N_N) True; --Noun class for places??? paris_PN = mkPN "Paris" (AgP3 Sg N_N) True; --Noun class for places???
@@ -68,24 +73,26 @@ lin
black_A = mkAdjective "kwirangura" Post False False; black_A = mkAdjective "kwirangura" Post False False;
blue_A = mkAdjective "buuru" Post True True ; blue_A = mkAdjective "buuru" Post True True ;
clean_A = mkAdjective "yonjo" Post False False; --: A ; clean_A = mkAdjective "yonjo" Post False False; --: A ;
cold_A = mkAdjective "rikufuka" Post False False; --: A ; cold_A = mkAdjective "kufuka" Post False False; --: A ;
correct_A = mkAdjective "hikire" Post False False; --: A ;
good_A =mkAdjective "rungi" Post False False; --: A ; good_A =mkAdjective "rungi" Post False False; --: A ;
heavy_A = mkAdjective "rikuremeera" Post False False; --: A ; --notice ri as a verb is heavy_A = mkAdjective "kuremeera" Post False False; --: A ; --notice ri as a verb is
hot_A = mkAdjective "rikwotsya" Post False False; -- rikutagata -- problematic words like hot we need a new set of clitics hot_A = mkAdjective "kwosya" Post False False; -- rikutagata -- problematic words like hot we need a new set of clitics
new_A = mkAdjective "sya" Post False False; --: A ; new_A = mkAdjective "sya" Post False False; --: A ;
old_A = mkAdjective "kúru" Post False False; --: A ; old_A = mkAdjective "kúru" Post False False; --: A ;
ready_A = mkAdjective "eteekateekire" Post False False; --: A ; ready_A = mkAdjective "eteekateekire" Post False False; --: A ;
red_A = mkAdjective "kutukura" Post False False; --: A ; red_A = mkAdjective "kutukura" Post False False; --: A ;
small_A = mkAdjective "kye" Post False False; small_A = mkAdjective "kye" Post False False;
warm_A = mkAdjective "rikutagata" Post False False;--: A ; warm_A = mkAdjective "kutagata" Post False False;--: A ;
white_A = mkAdjective "rikwera" Post False False;--: A ; white_A = mkAdjective "rikwera" Post False False;--: A ;
yellow_A = mkAdjective "kinekye" Post True True;--: A ; or yero, or kyenju yellow_A = mkAdjective "kinekye" Post True True;--: A ; or yero, or kyenju
young_A = mkAdjective "to" Post False False;--: A ; young_A = mkAdjective "to" Post False False;--: A ;
green_A =mkAdjective "kijubwe" Post False True; green_A =mkAdjective "kijubwe" Post False True;
thin_A = mkAdjective "kye" Post False False;
--ditransitive verbs --ditransitive verbs
bite_V2 = mkV2 "rum"; bite_V2 = mkV2 "rum";
break_V2 = mkV2 "hend"; --: V2 ; break_V2 = mkV2 "hen" "da" "zire"; --: V2 ;
buy_V2 = mkV2 "gur" ; --: V2 ; buy_V2 = mkV2 "gur" ; --: V2 ;
close_V2 = mkV2 "king"; close_V2 = mkV2 "king";
count_V2 = mkV2 "ba" "ra" "zire"; count_V2 = mkV2 "ba" "ra" "zire";
@@ -96,13 +103,13 @@ lin
fear_V2 = mkV2 "tiin"; fear_V2 = mkV2 "tiin";
find_V2 = mkV2 "bon" ; --: V2 ; -- many words; kureeba, kubóna,kushanga, kumamya,kujumbura find_V2 = mkV2 "bon" ; --: V2 ; -- many words; kureeba, kubóna,kushanga, kumamya,kujumbura
kill_V2 = mkV2 "it"; --: V2 ; kill_V2 = mkV2 "it"; --: V2 ;
love_V2 = mkV2 "kûnd"; --: V2 ; love_V2 = mkV2 "kûnd" "da" "zire"; --: V2 ;
read_V2 = mkV2 "shom";--: V2 ; read_V2 = mkV2 "shom";--: V2 ;
see_V2 = mkV2 "reeb"; --: V2 ; see_V2 = mkV2 "reeb"; --: V2 ;
teach_V2 = mkV2 "shomes" ; --: V2 ; or kwegyesa teach_V2 = mkV2 "shomes" ; --: V2 ; or kwegyesa
understand_V2 = mkV2 "étegyerez"; --: V2 ; understand_V2 = mkV2 "étegyerez"; --: V2 ;
wait_V2 = mkV2 "tegyerez"; --: V2 ; wait_V2 = mkV2 "tegyerez"; --: V2 ;
-- ditransitive verbs -- ditransitive verbs
add_V3 = mkV3 "gáìt"; add_V3 = mkV3 "gáìt";
give_V3 = mkV3 "héére" "za" "ize"; give_V3 = mkV3 "héére" "za" "ize";
@@ -113,12 +120,13 @@ lin
-- Intransitive verbs -- Intransitive verbs
come_V = mkV "ij"; come_V = mkV "ij";
go_V = mkV "gyend"; --: V ; -- Many words: kuza, kuraba,kutoora, kugyenda=go away, kushuma=go down die_V = mkV "f";
go_V = mkV "gyen" "da" "zire"; --: V ; -- Many words: kuza, kuraba,kutoora, kugyenda=go away, kushuma=go down
jump_V = mkV "guruk" ; jump_V = mkV "guruk" ;
play_V = mkV "záàn"; --: V ; play_V = mkV "záàn"; --: V ;
live_V = mkV "tuur" ; --manyF: kutuura i.e. live somewhere, stay = kuráàra live_V = mkV "tuur" ; --manyF: kutuura i.e. live somewhere, stay = kuráàra
run_V = mkV "íruk"; -- : V ; run_V = mkV "íruk"; -- : V ;
sleep_V = mkV "nyama" ; --: V ;--Kugwejegyera, kubyama sleep_V = mkV "gwejegyer" ; --: V ;--Kugwejegyera, kubyama
swim_V = mkV "og"; --: V ; swim_V = mkV "og"; --: V ;
travel_V = mkV "gyen" "da" "zire" ;--: V ; travel_V = mkV "gyen" "da" "zire" ;--: V ;
walk_V = mkV "ribá" "ta" "si"; --: V ; or kuribata Runynakore it is different walk_V = mkV "ribá" "ta" "si"; --: V ; or kuribata Runynakore it is different
@@ -143,7 +151,7 @@ lin
now_Adv = mkAdv "hati" AgrNo; now_Adv = mkAdv "hati" AgrNo;
--far_Adv = mkAdv "hare"; --far_Adv = mkAdv "hare";
--today_Adv = mkAdv "erizooba" AgrNo; today_Adv = mkAdv "erizooba" AgrNo;
father_N2 = mkN2 (mkN "tata" ZERO_BAA) (lin Prep (mkPrep [] [] True)) ; father_N2 = mkN2 (mkN "tata" ZERO_BAA) (lin Prep (mkPrep [] [] True)) ;
@@ -151,6 +159,247 @@ lin
alas_Interj ={s="ryakareeba"; }; --: Interj ; alas_Interj ={s="ryakareeba"; }; --: Interj ;
-- New Lexicon
switch8off_V2 = mkV2 "raza" "za" "riize";
television_N = mkN "TV" N_N;
doctor_N = mkN "omushaho" MU_BA;
clever_A =mkAdjective "amagyezi" Post False True;
laugh_V = mkV "sheka";
airplane_N = mkN "endegye" N_N;
{--
answer_V2S
apartment_N
art_N
ashes_N
ask_V2Q
back_N
bank_N
bark_N
beautiful_A
beg_V2V
belly_N
blow_V
bone_N
boot_N
boss_N
breast_N
breathe_V
broad_A
brother_N2
brown_A
burn_V
butter_N
camera_N
cap_N
carpet_N
ceiling_N
cheese_N
church_N
coat_N
country_N
cousin_N
day_N
dig_V
dirty_A
doctor_N
door_N
dry_A
dull_A
dust_N
ear_N
earth_N
easy_A2V
egg_N
empty_A
enemy_N
factory_N
fall_V
far_Adv
fat_N
feather_N
fight_V2
fingernail_N
float_V
floor_N
flow_V
fly_V
fog_N
foot_N
forest_N
forget_V2
freeze_V
fridge_N
fruit_N
full_A
fun_AV
garden_N
glove_N
gold_N
grass_N
guts_N
hair_N
hand_N
harbour_N
hat_N
hate_V2
head_N
hear_V2
heart_N
hill_N
hit_V2
hold_V2
horn_N
hunt_V2
husband_N
ice_N
important_A
industry_N
iron_N
king_N
knee_N
know_V2
lake_N
lamp_N
leaf_N
learn_V2
leather_N
leave_V2
left_Ord
leg_N
lie_V
like_V2
listen_V2
liver_N
long_A
lose_V2
louse_N
love_N
married_A2
moon_N
mother_N2
mountain_N
mouth_N
name_N
narrow_A
near_A
neck_N
newspaper_N
night_N
nose_N
number_N
oil_N
open_V2
paint_V2A
paper_N
peace_N
pen_N
person_N
planet_N
plastic_N
play_V2
policeman_N
priest_N
probable_AS
pull_V2
push_V2
put_V2
queen_N
question_N
radio_N
rain_N
rain_V0
religion_N
restaurant_N
right_Ord
road_N
rock_N
roof_N
root_N
rope_N
rotten_A
round_A
rub_V2
rubber_N
salt_N
sand_N
school_N
science_N
scratch_V2
seed_N
seek_V2
sew_V
sharp_A
shirt_N
shoe_N
shop_N
short_A
silver_N
sing_V
sister_N
sit_V
skin_N
sky_N
smell_V
smoke_N
smooth_A
snake_N
snow_N
sock_N
song_N
speak_V2
spit_V
split_V2
squeeze_V2
stab_V2
stand_V
steel_N
stick_N
stone_N
stop_V
stove_N
straight_A
student_N
stupid_A
suck_V2
sun_N
swell_V
switch8on_V2
table_N
tail_N
teacher_N
thick_A
think_V
throw_V2
tie_V2
tongue_N
tooth_N
turn_V
ugly_A
uncertain_A
university_N
village_N
vomit_V
war_N
wash_V2
watch_V2
wet_A
wide_A
wife_N
win_V2
wind_N
window_N
wing_N
wipe_V2
wonder_VQ
wood_N
worm_N
write_V2
--}
year_N = mkN "omwaka" "emyaka" MU_MI;
-- End of New Lexicon
oper oper
aboutP = mkPrep "about" ; aboutP = mkPrep "about" ;
atP = mkPrep "at" ; atP = mkPrep "at" ;

2322
src/rukiga/LexiconExtra.gf Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -18,20 +18,14 @@ lin
--UsePron pron = pron; -- the result of use pron is a NounPhrase --UsePron pron = pron; -- the result of use pron is a NounPhrase
--MassNP : CN -> NP ; -- (beer) --MassNP : CN -> NP ; -- (beer)
MassNP cn = {s = \\_ =>cn.s ! Sg ! Complete; agr = AgP3 Sg cn.gender; nounCat = ComNoun}; --: CN -> NP ; -- milk MassNP cn = {s = \\_ =>cn.s ! Sg ! Complete; agr = AgP3 Sg cn.gender; nounCat = ComNoun}; --: CN -> NP ; -- milk
--DetCN det cn = mkDeterminer det cn; --Should be nemed mkDetCN --DetCN det cn = mkDeterminer det cn; --Should be named mkDetCN
DetCN det cn = mkDetCN det cn; -- the man DetCN det cn = mkDetCN det cn; -- the man
{-
case det.pos of{
PreDeterminer =>{s = det.s ++ cn.s!det.ntype!det.num} ;
PostDeterminer=>{s = cn.s!det.ntype!det.num ++ mkNCParticles!SubjM!AgP3 det.num cn.nc + det.s}
}; --use a function because code is becoming long
-}
UseN noun = noun ; UseN noun = noun ;
--Noun = {s : NounType=>Number => Str ; nc : NClass} ; --Noun = {s : NounType=>Number => Str ; nc : NClass} ;
--AdjCN ap cn = {s=\\ntype, num=>cn.s!ntype!num ++ ap.s!AgP3 num cn.nc; nc=cn.nc}; --AdjCN ap cn = {s=\\ntype, num=>cn.s!ntype!num ++ ap.s!AgP3 num cn.nc; nc=cn.nc};
--AdjCN : AP -> CN -> CN ; -- big house --AdjCN : AP -> CN -> CN ; -- big house
AdjCN ap cn = AdjCN ap cn =
case <ap.position, ap.isProper, > of { case <ap.position, ap.isProper, > of {
<Pre, True> => { <Pre, True> => {
s = \\ num, ns =>ap.s ! AgP3 num cn.gender ++ cn.s ! num ! ns ; s = \\ num, ns =>ap.s ! AgP3 num cn.gender ++ cn.s ! num ! ns ;
@@ -39,7 +33,7 @@ lin
}; };
<Post, False> => case ap.isPrep of { <Post, False> => case ap.isPrep of {
False => { False => {
s = \\ num, ns => cn.s ! num ! ns ++ mkAdjPronIVClitic (AgP3 num cn.gender) s = \\ num, ns => cn.s ! num ! ns ++ mkAdjClitic ! (AgP3 num cn.gender)
++ ap.s ! AgP3 Sg KI_BI; ++ ap.s ! AgP3 Sg KI_BI;
gender = cn.gender; nounCat = cn.nounCat gender = cn.gender; nounCat = cn.nounCat
}; };
@@ -62,7 +56,8 @@ lin
}; -- big house }; -- big house
--RelCN : CN -> RS -> CN ; -- house that John bought --RelCN : CN -> RS -> CN ; -- house that John bought
RelCN cn rs = {s=\\n,ns => cn.s !n ! ns ++ rs.s! (RF RObj); gender = cn.gender; nounCat = cn.nounCat}; --RelCN cn rs = {s=\\n,ns => cn.s !n ! ns ++ rs.s! (RF RObj); gender = cn.gender; nounCat = cn.nounCat};
RelCN cn rs = {s=\\n,ns => cn.s !n ! ns ++ mkRPsNoClitic !RObj ! (AgP3 n cn.gender) ++ rs.s! (RF RObj); gender = cn.gender; nounCat = cn.nounCat};
{- {-
A predeterminer is any word that modifies a noun Phrase. A predeterminer is any word that modifies a noun Phrase.
@@ -95,8 +90,8 @@ lin
-- quantifier and an optional numeral can be discerned. -- quantifier and an optional numeral can be discerned.
--DetQuant : Quant -> Num -> Det ; -- these five --DetQuant : Quant -> Num -> Det ; -- these five
DetQuant quant num = case quant.isPron of { DetQuant quant num = case quant.isPron of {
True => {s=[]; s2 = quant.s2; ntype = Incomplete; num = num.n; pos=Pre; doesAgree = quant.doesAgree}; False => {s=[]; s2 = quant.s2; ntype = Incomplete; num = num.n; pos=Pre; doesAgree = quant.doesAgree; numeralS = num.s; numeralExists=num.numeralExists;};
False => {s= quant.s.s ! Nom; s2 =\\_ =>[]; ntype = Complete; num = num.n; pos=Pre; doesAgree = quant.doesAgree} -- True => {s= quant.s.s ! Nom; s2 =\\_ =>[]; ntype = Complete; num = num.n; pos=Pre; doesAgree = quant.doesAgree; numeralS = num.s; numeralExists=num.numeralExists;} --
}; };
--DetQuantOrd : Quant -> Num -> Ord -> Det ; -- these five best --DetQuantOrd : Quant -> Num -> Ord -> Det ; -- these five best
@@ -106,13 +101,15 @@ lin
ntype = Complete; ntype = Complete;
num = num.n; num = num.n;
pos = Pre; pos = Pre;
doesAgree = True doesAgree = True;
numeralS = num.s;
numeralExists = num.numeralExists
}; };
NumSg = {s=\\_=>[]; n=Sg}; --Num NumSg = {s=\\_=>[]; n=Sg; numeralExists=False}; --Num
NumPl = {s=\\_=>[]; n=Pl}; --Num NumPl = {s=\\_=>[]; n=Pl; numeralExists=False}; --Num
--NumCard : Card -> Num ; -- one/five [explicit numeral] --NumCard : Card -> Num ; -- one/five [explicit numeral]
NumCard card = {s =\\agr =>card.s ! agr; n=card.n }; NumCard card = {s =\\agr =>card.s ! agr; n=card.n; numeralExists=True; };
--Quant = {s : Res.Pronoun; s2 :Res.Agreement => Str; doesAgree : Bool; isPron: Bool} ; --Quant = {s : Res.Pronoun; s2 :Res.Agreement => Str; doesAgree : Bool; isPron: Bool} ;
IndefArt = {s={s=\\_=>[]; third = \\_,_=>[];agr = AgrNo }; s2 = \\_=>[]; doesAgree = False; isPron=False}; IndefArt = {s={s=\\_=>[]; third = \\_,_=>[];agr = AgrNo }; s2 = \\_=>[]; doesAgree = False; isPron=False};
DefArt = {s={s =\\_=>[]; third = \\_,_=>[]; agr = AgrNo }; s2 = \\_=>[]; doesAgree = False; isPron = False}; -- noun with initial vowel DefArt = {s={s =\\_=>[]; third = \\_,_=>[]; agr = AgrNo }; s2 = \\_=>[]; doesAgree = False; isPron = False}; -- noun with initial vowel
@@ -151,7 +148,9 @@ lin
ntype = dap.ntype ; ntype = dap.ntype ;
num = dap.num ; num = dap.num ;
pos = dap.pos; pos = dap.pos;
doesAgree= True doesAgree= True;
numeralS = dap.numeralS;
numeralExists=dap.numeralExists;
}; };
--DetDAP : Det -> DAP ; -- this (or that) --DetDAP : Det -> DAP ; -- this (or that)

View File

@@ -37,6 +37,7 @@ oper
mkV3 = overload { mkV3 = overload {
mkV3 : Str -> Verb3 = \root ->mkV2 root ** {comp2 =[]}; mkV3 : Str -> Verb3 = \root ->mkV2 root ** {comp2 =[]};
mkV3 : Str -> Str ->Str -> Verb3 = \root ,s1,s2 ->mkV2 root s1 s2 ** {comp2 =[]}; mkV3 : Str -> Str ->Str -> Verb3 = \root ,s1,s2 ->mkV2 root s1 s2 ** {comp2 =[]};
--mkV3 : Str -> Str ->Str ->Str ->Verb3 =\root, s1, s2, prep
}; };

View File

@@ -62,6 +62,7 @@ lin
--UttAP : AP -> Utt ; -- fine --UttAP : AP -> Utt ; -- fine
--UttInterj : Interj -> Utt ; -- alas --UttInterj : Interj -> Utt ; -- alas
UttInterj interj = let agr = AgMUBAP2 Pl in {s= mkObjClitic agr ++ interj.s}; UttInterj interj = let agr = AgMUBAP2 Pl in {s= mkObjClitic agr ++ interj.s};
{- {-
--1 Phrase: Phrases and Utterances --1 Phrase: Phrases and Utterances

View File

@@ -61,34 +61,34 @@ lin
whichRel = RF RSubj; whichRel = RF RSubj;
}; };
--RelSlash : RP -> ClSlash -> RCl ; -- whom John loves --RelSlash : RP -> ClSlash -> RCl ; -- whom John loves
RelSlash rp clSlash = RelSlash rp clSlash =
let comp = case clSlash.complType of{ let comp = case clSlash.complType of{
Ap => clSlash.ap; Ap => clSlash.ap;
Adverbial => clSlash.adv; Adverbial => clSlash.adv;
AdverbialVerb => clSlash.adV; AdverbialVerb => clSlash.adV;
_ => [] _ => []
}; };
isCompApStem = case clSlash.complType of{ isCompApStem = case clSlash.complType of{
Adverbial => True; Adverbial => True;
_ => False _ => False
}; };
in in
{ {
s = clSlash.s; s = clSlash.s;
agr = AgrYes clSlash.subjAgr; agr = AgrYes clSlash.subjAgr;
rp = rp.s; rp = rp.s;
--rObjVariant2 = rp.rObjVariant2; --rObjVariant2 = rp.rObjVariant2;
pres = clSlash.pres; pres = clSlash.pres;
perf = clSlash.perf; perf = clSlash.perf;
root = clSlash.root; root = clSlash.root;
--morphs = clSlash.morphs; --morphs = clSlash.morphs;
isPresBlank = clSlash.isPresBlank; isPresBlank = clSlash.isPresBlank;
isPerfBlank = clSlash.isPerfBlank; isPerfBlank = clSlash.isPerfBlank;
compl = comp; compl = comp;
isCompApStem = isCompApStem; isCompApStem = isCompApStem;
whichRel = RF RObj; whichRel = RF RObj;
}; };
{- {-
--1 Relative clauses and pronouns --1 Relative clauses and pronouns

View File

@@ -49,6 +49,8 @@ param
ConjArg = Nn_Nn | Nps_Nps | Pns_Pns | RelSubjCls | Other; ConjArg = Nn_Nn | Nps_Nps | Pns_Pns | RelSubjCls | Other;
AgrConj = AConj ConjArg; AgrConj = AConj ConjArg;
Agreement = AgP3 Number Gender | AgMUBAP1 Number |AgMUBAP2 Number | NONE; --Default is AgP3 Sg KI_BI Agreement = AgP3 Number Gender | AgMUBAP1 Number |AgMUBAP2 Number | NONE; --Default is AgP3 Sg KI_BI
AgreementPl = AgP3Pl Gender | AgMUBAP1Pl |AgMUBAP2Pl | NONExistPl; --Default is AgP3 Sg KI_BI
AgreementSg = AgP3Sg Gender | AgMUBAP1Sg |AgMUBAP2Sg | NONExistSg; --Default is AgP3 Sg KI_BI
AgrExist = AgrNo | AgrYes Agreement; AgrExist = AgrNo | AgrYes Agreement;
--Position = PostDeterminer | PreDeterminer ; --Position = PostDeterminer | PreDeterminer ;
Position = Post | Pre; Position = Post | Pre;
@@ -64,11 +66,13 @@ param
PrepForm = Form1 | Form2; -- omu and omuri, aha, ahari PrepForm = Form1 | Form2; -- omu and omuri, aha, ahari
-- for Extra Tenses not implemented -- for Extra Tenses not implemented
-- would be better if I had alliases -- would be better if I had alliases
TensesExtra = RemotePast | ImmediatePast | RemoteFuture; --Tenses = RemotePast|NearPast | ImmediatePast |ExPres|NearFut |RemoteFut;
-- for Extra Aspects not implemented -- for Extra Aspects not implemented
-- would be better if I had alliases -- would be better if I had alliases
Aspect = Performative | Perfect | Resultative | Retrospective | Habitual | Progressive | Persitive; --Aspect = Performative | Perfect | Resultative | Retrospective | Habitual | Progressive | Persitive;
{- {-
Complete = Nouns with IV, Complete = Nouns with IV,
Incomplete = Nouns without IV: important for use with pre-determiners Incomplete = Nouns without IV: important for use with pre-determiners
@@ -363,7 +367,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
AgP3 Pl KA_ZERO => mkClitic "" ; AgP3 Pl KA_ZERO => mkClitic "" ;
_ => mkClitic "SubjNotKnown" --for checking if there is some class unaccounted for _ => mkClitic "SubjNotKnown" --for checking if there is some class unaccounted for
}; };
mkSubjCliticTableSg : Agreement => Str = table { mkSubjCliticTableSg : Agreement => Str = table {
AgMUBAP1 Sg => mkClitic "n" ; AgMUBAP1 Sg => mkClitic "n" ;
--AgMUBAP1 Pl => "tu" ; --AgMUBAP1 Pl => "tu" ;
@@ -432,12 +436,56 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
AgP3 Pl ZERO_TU => mkClitic "tu" ; AgP3 Pl ZERO_TU => mkClitic "tu" ;
--AgP3 Sg (ZERO_MI | ZERO_ZERO) => mkClitic "" ; --AgP3 Sg (ZERO_MI | ZERO_ZERO) => mkClitic "" ;
AgP3 Pl ZERO_MI => mkClitic "e" ; AgP3 Pl ZERO_MI => mkClitic "e" ;
AgP3 Pl KA_ZERO => mkClitic "" ; AgP3 Pl KA_ZERO => mkClitic "give example" ;
_ => mkClitic "Plural" --for checking if there is some class unaccounted for AgP3 Pl GU_GA => mkClitic "ga";
AgP3 Pl ZERO_ZERO => mkClitic "give example";
AgP3 Pl KA_TU => mkClitic "tu";
AgP3 Pl HA => mkClitic "ha";
AgP3 Pl (MU | KU |I_ZERO |ZERO_BAA |N_ZERO |KI_ZERO|Null) => "";
AgP3 Pl ZERO_N => mkClitic "zimwe";
_ => "Plural-NonExist" --;_ => mkClitic "Plural-NonExist" --for checking if there is some class unaccounted for
}; };
agrToAgrPl: Agreement -> AgreementPl = \a -> case a of {
AgMUBAP1 Sg => NONExistPl;
AgMUBAP1 Pl => AgMUBAP1Pl;
AgMUBAP2 Sg => NONExistPl;
AgMUBAP2 Pl => AgMUBAP2Pl ;
AgP3 Sg MU_BA => NONExistPl;
AgP3 Pl MU_BA => AgP3Pl MU_BA ;
AgP3 Sg KI_BI => NONExistPl;
AgP3 Pl (KI_BI | ZERO_BI) => AgP3Pl (KI_BI | ZERO_BI) ;
AgP3 Sg (RU_N | RU_MA | RU_ZERO | RU_BU) => NONExistPl ;
AgP3 Pl RU_N => AgP3Pl RU_N ; --| "i";
AgP3 Sg N_N => NONExistPl;
AgP3 Pl N_N => AgP3Pl N_N; --| "i";
AgP3 Sg (MU_MI | MU_ZERO) => NONExistPl;
AgP3 Pl MU_MI => AgP3Pl MU_MI;
AgP3 Sg (RI_MA | RI_ZERO | I_ZERO) =>NONExistPl;
AgP3 Pl (RI_MA | BU_MA | KU_MA | ZERO_MA | I_MA |RU_MA) => AgP3Pl (RI_MA | BU_MA | KU_MA | ZERO_MA | I_MA |RU_MA) ;
AgP3 Sg (KA_BU | KA_ZERO | KA_TU) => NONExistPl;
AgP3 Pl (KA_BU | RU_BU) => AgP3Pl (KA_BU | RU_BU);
AgP3 Sg ZERO_BU => NONExistPl;
AgP3 Pl ZERO_BU => AgP3Pl ZERO_BU ;
AgP3 Sg ZERO_BI => NONExistPl;
AgP3 Sg ZERO_MA => NONExistPl;
AgP3 Pl RI_ZERO => AgP3Pl RI_ZERO ;
AgP3 Sg KU_ZERO => NONExistPl;
AgP3 Pl KU_ZERO => AgP3Pl KU_ZERO;
AgP3 Pl MU_ZERO => AgP3Pl MU_ZERO ;
AgP3 Pl RU_ZERO => AgP3Pl RU_ZERO ;
AgP3 Sg ZERO_TU => NONExistPl;
AgP3 Pl ZERO_TU => AgP3Pl ZERO_TU ;
AgP3 Sg (ZERO_MI | ZERO_ZERO) => NONExistPl;
AgP3 Pl ZERO_MI => AgP3Pl ZERO_MI ;
AgP3 Pl KA_ZERO => AgP3Pl KA_ZERO ;
_ => NONExistPl --for checking if there is some class unaccounted for
};
{-Object particle may be used as {-Object particle may be used as
1. a prefix: e.g mu-kwate = catch him, 1. a prefix: e.g mu-kwate = catch him,
2. an infix: o-mu-kwate = you catch him 2. an infix: o-mu-kwate = you catch him
}
-} -}
mkObjClitic : Agreement -> Str = \a ->case a of { mkObjClitic : Agreement -> Str = \a ->case a of {
@@ -525,7 +573,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
--Adjective : Type = {s : Str ; post : Str; isPre : Bool; isProper : Bool; isPrep: Bool}; --Adjective : Type = {s : Str ; post : Str; isPre : Bool; isProper : Bool; isPrep: Bool};
Adjective : Type = {s : Str ; position : Position; isProper : Bool; isPrep: Bool}; Adjective : Type = {s : Str ; position : Position; isProper : Bool; isPrep: Bool};
mkAdjective: Str -> Position -> Bool -> Bool -> Adjective = \ a , pos, isProper, isPrep -> mkAdjective: Str -> Position -> Bool -> Bool -> Adjective = \ a , pos, isProper, isPrep ->
{ s = a ; position = pos ; isPre = True; isProper = isProper; isPrep = isPrep}; { s = a ; position = pos ; isPre = False; isProper = isProper; isPrep = isPrep};
{- {-
TO DO: TO DO:
@@ -642,6 +690,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
AgP3 Pl (KA_BU | RU_BU) => mkClitic "obu" ; AgP3 Pl (KA_BU | RU_BU) => mkClitic "obu" ;
AgP3 Pl (KI_BI | ZERO_BI) => mkClitic "ebi" ; AgP3 Pl (KI_BI | ZERO_BI) => mkClitic "ebi" ;
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => mkClitic "aga"; AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => mkClitic "aga";
AgP3 Sg ZERO_MA => mkClitic "aga";
AgP3 ( Pl) HA => mkClitic "aha" ; -- of place HA AgP3 ( Pl) HA => mkClitic "aha" ; -- of place HA
AgP3 ( Pl) MU => mkClitic "omu" ; -- of place MU AgP3 ( Pl) MU => mkClitic "omu" ; -- of place MU
AgP3 ( Pl) KU => mkClitic "oku" ; -- of place KU AgP3 ( Pl) KU => mkClitic "oku" ; -- of place KU
@@ -661,6 +710,76 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
_ => mkClitic "XXXThisThese" -- error checking for any case not catered for _ => mkClitic "XXXThisThese" -- error checking for any case not catered for
}; };
-- TThis is for demonstrative pronouns which can also be use as Quantifiers
-- These are self-standing
-- How can it be done without code repeation?
mkThisNoClitic = table{
AgMUBAP1 Sg => "ogu";
AgMUBAP1 Pl => "aba" ;
AgMUBAP2 Sg => "ogu"; --probably an error check your grammar book
AgMUBAP2 Pl => "aba" ;
AgP3 Sg MU_BA => "ogu";
AgP3 Pl MU_BA => "aba" ;
AgP3 Pl ZERO_BU => "obu" ;
AgP3 Sg BU_MA => "obu" ;
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "aga";
AgP3 Sg ZERO_MA => "aga";
AgP3 ( Pl) HA => "aha" ; -- of place HA
AgP3 ( Pl) MU => "omu" ; -- of place MU
AgP3 ( Pl) KU => "oku" ; -- of place KU
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
AgP3 Sg (KA_ZERO | KA_BU) => "aka" ;
AgP3 Sg KI_BI => "eki" ;
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
AgP3 Sg (ZERO_ZERO | N_N) => "egi" ;
AgP3 Pl ZERO_MI => "egi" ;
AgP3 Pl MU_MI => "egi";
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
AgP3 Sg GU_GA => "ogu" ;
AgP3 Pl GU_GA => "aga" ;
_ => "XXXThisThese" -- error checking for any case not catered for
};
mkAdjClitic = table{
AgMUBAP1 Sg => "ogu";
AgMUBAP1 Pl => "aba" ;
AgMUBAP2 Sg => "ogu"; --probably an error check your grammar book
AgMUBAP2 Pl => "aba" ;
AgP3 Sg MU_BA => "ogu";
AgP3 Pl MU_BA => "aba" ;
AgP3 Pl ZERO_BU => "obu" ;
AgP3 Sg BU_MA => "obu" ;
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "aga";
AgP3 Sg ZERO_MA => "aga";
AgP3 ( Pl) HA => "aha" ; -- of place HA
AgP3 ( Pl) MU => "omu" ; -- of place MU
AgP3 ( Pl) KU => "oku" ; -- of place KU
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
AgP3 Sg (KA_ZERO | KA_BU) => "aka" ;
AgP3 Sg KI_BI => "eki" ;
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
AgP3 Sg (ZERO_ZERO | N_N) => "en" ;
AgP3 Pl ZERO_MI => "egi" ;
AgP3 Pl MU_MI => "egi";
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
AgP3 Sg GU_GA => "ogu" ;
AgP3 Pl GU_GA => "aga" ;
_ => "XXXThisThese" -- error checking for any case not catered for
};
{- {-
-- TThis is for demonstrative pronouns which can also be use as Quantifiers -- TThis is for demonstrative pronouns which can also be use as Quantifiers
-- How can it be done without code repeation? -- How can it be done without code repeation?
@@ -744,6 +863,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
--AgP3 Pl (KA_BU | RU_BU) => mkClitic "obu" ; --AgP3 Pl (KA_BU | RU_BU) => mkClitic "obu" ;
--AgP3 Pl (KI_BI | ZERO_BI) => mkClitic "ebi" ; --AgP3 Pl (KI_BI | ZERO_BI) => mkClitic "ebi" ;
--AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => mkClitic "aga"; --AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => mkClitic "aga";
AgP3 Sg ZERO_MA => mkClitic "agwo";
AgP3 (Sg ) HA => mkClitic "aho" ; -- of place HA AgP3 (Sg ) HA => mkClitic "aho" ; -- of place HA
AgP3 (Sg ) MU => mkClitic "omwo" ; -- of place MU AgP3 (Sg ) MU => mkClitic "omwo" ; -- of place MU
AgP3 (Sg ) KU => mkClitic "okwo" ; -- of place KU AgP3 (Sg ) KU => mkClitic "okwo" ; -- of place KU
@@ -960,6 +1080,71 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
} }
}; };
mkRPsNoClitic : RCase => Agreement =>Str = table{
RSubj => table {
AgMUBAP1 Sg => "o";
AgMUBAP1 Pl => "aba" ;
AgMUBAP2 Sg => "o";
AgMUBAP2 Pl => "aba" ;
AgP3 Sg MU_BA => "o";
AgP3 Pl MU_BA => "aba" ;
AgP3 Pl ZERO_BU => "obu" ;
AgP3 Sg BU_MA => "obu" ;
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "aga";
AgP3 (Sg ) HA => "aha" ; -- of place HA
AgP3 (Sg ) MU => "aha" ; -- of place MU
AgP3 (Sg ) KU => "e" ; -- of place KU
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
AgP3 Sg (KA_ZERO | KA_BU) => "aka" ;
AgP3 Sg KI_BI => "eki" ;
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
AgP3 Sg (ZERO_ZERO | N_N) => "e" ;
AgP3 Pl ZERO_MI => "e" ;
AgP3 Pl MU_MI => "e";
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
AgP3 Sg GU_GA => "ogu" ;
AgP3 Pl GU_GA => "aga" ;
_ => "XXXThat" -- error checking for any case not catered for
};
_ => table {
AgMUBAP1 Sg => "ou";
AgMUBAP1 Pl => "abu" ; --note: abu or abi is used. GF does not allow free variation. However, abu is more natural
AgMUBAP2 Sg => "ou"; --probably an error check your grammar book
AgMUBAP2 Pl => "abu" ;
AgP3 Sg MU_BA => "o";
AgP3 Pl MU_BA => "abu" ;
AgP3 Pl ZERO_BU => "obu" ;
AgP3 Sg BU_MA => "obu" ;
AgP3 Pl (KA_BU | RU_BU) => "obu" ;
AgP3 Pl (KI_BI | ZERO_BI) => "ebi" ;
AgP3 Pl (ZERO_MA | KU_MA | RI_MA | I_MA | BU_MA) => "agu";
AgP3 (Sg ) HA => "ahu" ; -- of place HA
AgP3 (Sg ) MU => "ahu" ; -- of place MU
AgP3 (Sg ) KU => "ei" ; -- of place KU
AgP3 Sg (I_ZERO | I_MA | RI_MA) => "eri" ;
AgP3 Sg (KA_ZERO | KA_BU) => "aku" ;
AgP3 Sg KI_BI => "eki" ;
AgP3 Sg (KU_ZERO | KU_MA) => "oku" ;
AgP3 Sg (MU_MI | MU_ZERO) => "ogu" ;
AgP3 Sg (RU_ZERO | RU_BU | RU_MA| RU_N) => "oru" ;
AgP3 Pl (ZERO_TU | KA_TU) => "otu" ;
AgP3 Sg (ZERO_ZERO | N_N) => "ei" ;
AgP3 Pl ZERO_MI => "ei" ;
AgP3 Pl MU_MI => "ei";
AgP3 Pl (ZERO_ZERO | ZERO_N | N_N | RU_N) => "ezi" ;
AgP3 Sg GU_GA => "ogu" ;
AgP3 Pl GU_GA => "agu" ;
_ => mkClitic "XXXThat" -- error checking for any case not catered for
}
};
mkIPPref : Agreement =>Str = table{ mkIPPref : Agreement =>Str = table{
AgMUBAP1 Sg => mkClitic "o"; AgMUBAP1 Sg => mkClitic "o";
AgMUBAP1 Pl => mkClitic "ba" ; AgMUBAP1 Pl => mkClitic "ba" ;
@@ -1034,7 +1219,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
4. Cardinal numbers 4. Cardinal numbers
6. Ordinal numbers 6. Ordinal numbers
-} -}
Determiner : Type = {s : Str ; s2: Agreement=>Str; ntype : NounState ; num : Number ; pos : Position; doesAgree: Bool}; Determiner : Type = {s : Str ; s2: Agreement=>Str; ntype : NounState ; num : Number ; pos : Position; doesAgree: Bool; numeralS:Agreement=>Str; numeralExists : Bool};
mkDet : Str -> NounState -> Number -> Position -> Determiner mkDet : Str -> NounState -> Number -> Position -> Determiner
= \ det, ns, num,pos -> = \ det, ns, num,pos ->
{ {
@@ -1043,7 +1228,9 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
ntype = ns; ntype = ns;
num = num; num = num;
pos = pos; pos = pos;
doesAgree = False doesAgree = False;
numeralS = \\_ => []; -- A true determiner is not a quantifier
numeralExists = False;
}; };
-- Pronouns must have agreement because they are used -- Pronouns must have agreement because they are used
@@ -1096,13 +1283,16 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
mkDetCN : Determiner -> Noun -> NounPhrase = \ det, cn -> mkDetCN : Determiner -> Noun -> NounPhrase = \ det, cn ->
let subjClitic = mkSubjClitic (AgP3 det.num cn.gender) let subjClitic = mkSubjClitic (AgP3 det.num cn.gender)
in in
case <det.pos, det.num> of { case <det.pos, det.num> of {
<Post, Pl> => {s = \\_=> subjClitic ++ cn.s!det.num! det.ntype ++ subjClitic ++ det.s; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat}; <Post, Pl> => {s = \\_=> cn.s!det.num! det.ntype ++ subjClitic ++ det.s2 !AgP3 det.num cn.gender; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat}; --subjClitic ++ cn.s!det.num! det.ntype ++ subjClitic ++ det.s2 !AgP3 det.num cn.gender; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
<Post, Sg> => {s = \\_=>cn.s!det.num! det.ntype ++ subjClitic ++ det.s; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat}; <Post, Sg> => {s = \\_=>cn.s!det.num! det.ntype ++ subjClitic ++ det.s2 ! AgP3 det.num cn.gender; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
<Pre, n> => { s =\\_ => det.s ++ cn.s !n ! det.ntype; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat} --; <Pre, n> => case det.numeralExists of {
False => { s =\\_ => det.s2 !(AgP3 det.num cn.gender) ++ cn.s !n ! Complete; agr = AgP3 det.num cn.gender; nounCat = cn.nounCat};
True => { s =\\_ => cn.s !n ! Complete ++ det.numeralS ! (AgP3 n cn.gender); agr = AgP3 det.num cn.gender; nounCat = cn.nounCat}
}
--<PostDeterminer, PFalse> => {s = \\_=> cn.s!det.ntype!det.num; agr = AgP3 det.num cn.gender } --<PostDeterminer, PFalse> => {s = \\_=> cn.s!det.ntype!det.num; agr = AgP3 det.num cn.gender }
}; };
@@ -1351,7 +1541,7 @@ mkSubjPrefix : Agreement -> Str =\a ->case a of {
glueGen: Agreement ->Str = \ a -> mkGenPrepNoIVClitic a ++ BIND ++ mkGenAdjSuffix a; glueGen: Agreement ->Str = \ a -> mkGenPrepNoIVClitic a ++ BIND ++ mkGenAdjSuffix a;
--Number determining element --Number determining element
Numer : Type = { s: Agreement => Str ; n : Number}; Numer : Type = { s: Agreement => Str ; n : Number; numeralExists:Bool};
--VPSlash : Type = VerbPhrase ** { c : Str }; --VPSlash : Type = VerbPhrase ** { c : Str };
VPSlash : Type = { VPSlash : Type = {

View File

@@ -25,8 +25,8 @@ lin
in in
case <temp.t,temp.a, pol.p> of { case <temp.t,temp.a, pol.p> of {
<Pres,Simul, Pos> => case cl.isPresBlank of { <Pres,Simul, Pos> => case cl.isPresBlank of {
True => {s = subj ++ clitic ++ root ++ compl}; True => {s = subj ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ compl} False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
}; };
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-} {-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
<Pres,Simul, Neg> => case cl.isPresBlank of { <Pres,Simul, Neg> => case cl.isPresBlank of {
@@ -46,32 +46,33 @@ lin
<Past,Simul, Pos> => case cl.isPerfBlank of { <Past,Simul, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "ka" ++ Predef.BIND ++ root ++ compl}; _ => {s = subj ++ clitic ++ "ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}--;
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl} --False => {s = subj ++ clitic ++ "ka" ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
}; };
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-} {-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
<Past,Simul, Neg> => case cl.isPerfBlank of { <Past,Simul, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ compl}; True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ Predef.BIND ++ "ra" ++
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
root ++ pastRestOfVerb ++ compl} False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ra" ++ Predef.BIND ++
root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
}; };
<Past,Anter, Pos> => case cl.isPerfBlank of { <Past,Anter, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "kaba" ++Predef.BIND ++ clitic ++ True => {s = subj ++ clitic ++ "kaba" ++Predef.BIND ++ clitic ++
root ++ compl}; root ++ Predef.BIND ++ "ire"++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "a" ++ Predef.BIND ++ False => {s = subj ++ clitic ++ "kaba" ++ clitic ++
root ++ Predef.BIND ++ pastRestOfVerb ++ compl} root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
}; };
<Past,Anter, Neg> =>case cl.isPerfBlank of { <Past,Anter, Neg> =>case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "ka" ++Predef.BIND ++ clitic ++ True => {s = subj ++ clitic ++ "ka" ++Predef.BIND ++ clitic ++
root ++ compl}; root ++ Predef.BIND ++ "ire"++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "taa" ++ Predef.BIND ++ False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta" ++ Predef.BIND ++
root ++ Predef.BIND ++ pastRestOfVerb ++ compl} root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
}; };
<Fut,Simul, Pos> => case cl.isPresBlank of { <Fut,Simul, Pos> => case cl.isPresBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija
root ++ compl}; root ++ "a" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za ku" ++ Predef.BIND ++ --choice of za over ija
root ++ Predef.BIND ++ presRestOfVerb ++ compl} root ++ Predef.BIND ++ presRestOfVerb ++ compl}
}; };
@@ -79,23 +80,23 @@ lin
{-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-} {-Note: when I use pol.s instead of ti, the word alignment instead becomes worse-}
<Fut,Simul, Neg> => case cl.isPresBlank of { <Fut,Simul, Neg> => case cl.isPresBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++ True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "raaza ku" ++ Predef.BIND ++
root ++ compl}; root ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "kuza ku" ++ Predef.BIND ++ False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "raaza ku" ++ Predef.BIND ++
root ++ BIND ++ presRestOfVerb ++ compl} root ++ BIND ++ presRestOfVerb ++ compl}
}; };
<Fut,Anter, Pos> => case cl.isPerfBlank of { <Fut,Anter, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ clitic ++ --choice of za over ija True => {s = subj ++ Predef.BIND ++clitic ++ "raaba" ++ clitic ++ --choice of za over ija
root ++ Predef.BIND ++ "ire" ++ compl}; root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ "za kuba" ++ Predef.BIND ++ clitic ++ --choice of za over ija False => {s = subj ++ Predef.BIND ++clitic ++ "raaba" ++ clitic ++ --choice of za over ija
root ++ Predef.BIND ++ pastRestOfVerb ++ compl} root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
}; };
<Fut,Anter, Neg> => case cl.isPerfBlank of { <Fut,Anter, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ Predef.BIND ++ True => {s = subj ++ Predef.BIND ++ clitic ++ "raaba " ++ clitic ++ "ta"++ Predef.BIND ++
root ++ "ire" ++ compl}; root ++ "ire" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ "za kuba" ++ clitic ++ "taka" ++ Predef.BIND ++ False => {s = subj ++ Predef.BIND ++ clitic ++ "raaba " ++ clitic ++ "ta" ++ Predef.BIND ++
root ++ pastRestOfVerb ++ compl} root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
}; };
<Cond,Simul, Pos> => case cl.isPresBlank of { <Cond,Simul, Pos> => case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "kaa" ++Predef.BIND ++ root ++ compl}; True => {s = subj ++ clitic ++ "kaa" ++Predef.BIND ++ root ++ compl};
@@ -142,8 +143,8 @@ lin
_ => mkRPs!RSubj! AgP3 Sg MU_BA _ => mkRPs!RSubj! AgP3 Sg MU_BA
}; };
robjClitic = case rcl.agr of { robjClitic = case rcl.agr of {
AgrYes a => mkRPs!RObj! a; AgrYes a => mkRPsNoClitic!RObj! a;
_ => mkRPs!RObj! AgP3 Sg MU_BA _ => mkRPsNoClitic!RObj! AgP3 Sg MU_BA
}; };
presSimul = vMorphs ! VFPres; --this is not delivering the string presSimul = vMorphs ! VFPres; --this is not delivering the string
presAnt = vMorphs ! VFPastPart; --this is not delivering the string presAnt = vMorphs ! VFPastPart; --this is not delivering the string
@@ -186,7 +187,7 @@ lin
<Past,Simul, Pos> => { <Past,Simul, Pos> => {
s = table { s = table {
RF RSubj => subj ++ rsubjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl; RF RSubj => subj ++ rsubjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl;
RF RObj => subj ++ robjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl; RF RObj => robjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl;
Such_That => "kugira ngu" ++ subjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl Such_That => "kugira ngu" ++ subjClitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl
} }
}; };
@@ -279,8 +280,9 @@ lin
}; };
PredVP np vp = case vp.isCompApStem of{
False => { PredVP np vp = case <vp.isCompApStem, vp.containsAdV> of {
<False,True> => {
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
subjAgr = np.agr; subjAgr = np.agr;
pres = vp.pres; pres = vp.pres;
@@ -297,9 +299,10 @@ lin
pastPart = mkVerbPastPart vp.root; -- subject pastPart = mkVerbPastPart vp.root; -- subject
-} -}
--root = vp.root ; --root = vp.root ;
compl = vp.comp compl = vp.adV
}; };
True => {
<_, _> => {
s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk s = np.s ! Nom; --: NP -> VP -> Cl ; -- John walks / John does not walk
subjAgr = np.agr; subjAgr = np.agr;
pres = vp.pres; pres = vp.pres;
@@ -319,8 +322,6 @@ lin
compl = mkSubjClitic np.agr ++ vp.comp --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp compl = mkSubjClitic np.agr ++ vp.comp --mkSubjClitic np.agr ++ Predef.BIND ++ vp.comp
} }
};--: NP -> VP -> Cl ; -- John walks / John does not walk };--: NP -> VP -> Cl ; -- John walks / John does not walk
{- {-
Note: It seems mkSubjClitic comes with a Predef.BIND already Note: It seems mkSubjClitic comes with a Predef.BIND already
@@ -382,9 +383,25 @@ lin
--AdvSlash : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today --AdvSlash : ClSlash -> Adv -> ClSlash ; -- (whom) he sees today
--SlashPrep : Cl -> Prep -> ClSlash ; -- (with whom) he walks --SlashPrep : Cl -> Prep -> ClSlash ; -- (with whom) he walks
--SlashVS : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves --SlashVS : NP -> VS -> SSlash -> ClSlash ; -- (whom) she says that he loves
--2 Embedded sentences
-- Sentences, questions, and infinitival phrases can be used as
-- subjects and (adverbial) complements.
--EmbedS : S -> SC ; -- that she goes
--EmbedQS : QS -> SC ; -- who goes
--EmbedVP : VP -> SC ; -- to go
EmbedVP vp = case vp.isPresBlank of {
TRUE => {s= "oku" ++ Predef.BIND ++ vp.s ++ BIND ++ "a"};
_ => {s= "oku" ++ Predef.BIND ++ vp.s ++ BIND ++ vp.pres}
};
-- An adverb can be added to the beginning of a sentence, either with comma ("externally")
-- or without:
--AdvS : Adv -> S -> S ; -- then I will go home
--ExtAdvS : Adv -> S -> S ; -- next week, I will go home
ExtAdvS adv s = {s=adv.s ++ "," ++ s.s};
{- {-

View File

@@ -1,33 +0,0 @@
concrete SentenceCggAbsCgg of SentenceCggAbs = CatCgg
open (R=ResCgg) in {
lincat
ExtTense = {s : Str ; t : R.TensesExtra } ;
TempExtra = {s : Str ; t : R.TensesExtra a : R.Aspects} ;
Aspect = {s : Str ; a : R.AspectsExtra } ;
lin
--TAspect -> ExtTense ->Ant -> TempExtra ;
TAspect extT a ={s = extT.s ++ a.s; t = exT.t; a = a.a};
--TRPast : ExtTense ; -- bakagyenda [Remote past]
TRPast = {s = [] ; t = R.Remotepast };
--TIPast : ExtTense ; -- baagyenda [Immediate Past or Memorial ]
TIPast = {s =[] ; t = R.ImmediatePast};
--TRFut : ExtTense ; -- I sleep/slept [simultaneous, not compound]
TRFut = {s = [] ; t = R.RemoteFut};
--APerformative : Aspect ; -- I slept [past, "imperfect"] --# notpresent
APerformative = {s = []; a = R.Performative };
APerfect = {s = []; a = R.Perfect }; -- I will sleep [future] --# notpresent
ARes = {s = []; a = R.Resultative }; -- I would sleep [conditional] --# notpresent
ARetr = {s = []; a = R.Retrospective }; -- I have slept/had slept [anterior, "compound", "perfect"] --# notpresent
AHab = {s = []; a = R.Habitual };
AProg = {s = []; a = R.Progrssive };
APer = {s = []; a = R.Persitive };
UseClExtra : TempExtra -> Pol -> Cl -> S ; -- she had not slept
--UseQClExtra : TempExtra -> Pol -> QCl -> QS ; -- who had not slept
--UseRClExtra : TempExtra -> Pol -> RCl -> RS ; -- that had not slept
--UseSlashExtra : TempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
}

View File

@@ -1,25 +0,0 @@
abstract SentenceCggExtraAbs = Cat **{
cat
ExtTense;
TempExtra;
Aspect;
fun
TAspect -> ExtTense ->Ant -> TempExtra ;
TRPast : ExtTense ; -- bakagyenda [Remote past]
TIPast : ExtTense ; -- baagyenda [Immediate Past or Memorial ]
TRFut : ExtTense ; -- I sleep/slept [simultaneous, not compound]
APerformative : Aspect ; -- I slept [past, "imperfect"] --# notpresent
APerfect : Aspect ; -- I will sleep [future] --# notpresent
ARes : Aspect ; -- I would sleep [conditional] --# notpresent
ARetr : Aspect ; -- I have slept/had slept [anterior, "compound", "perfect"] --# notpresent
AHab : Aspect ;
AProg : Aspect ;
APer : Aspect ;
UseClExtra : TempExtra -> Pol -> Cl -> S ; -- she had not slept
UseQClExtra : TempExtra -> Pol -> QCl -> QS ; -- who had not slept
UseRClExtra : TempExtra -> Pol -> RCl -> RS ; -- that had not slept
UseSlashExtra : TempExtra -> Pol -> ClSlash -> SSlash ; -- (that) she had not seen
}

View File

@@ -0,0 +1,9 @@
abstract SentenceExtra = Cat, TenseExtra ** {
fun
UseClExtra : TempExtra -> Pol -> Cl ->S; -- Maria naagura
UseQClExtra : TempExtra -> Pol -> QCl -> QS ; -- Maria naagura?
UseRClExtra : TempExtra -> Pol -> RCl -> RS ; -- ngu Maria naagura
UseSlashExtra : TempExtra -> Pol -> ClSlash -> SSlash ; -- (ngu) Maria tiaagura = tyaagura
}

View File

@@ -0,0 +1,280 @@
concrete SentenceExtraCgg of SentenceExtra = CatCgg, TenseExtraCgg **
open Prelude, ResCgg in {
lin
UseClExtra temp pol cl = let
subj = cl.s;
vMorphs = mkVerbMorphs;
clitic = mkSubjClitic cl.subjAgr;
presSimul = vMorphs ! VFPres; --this is not delivering the string
presAnt = vMorphs ! VFPastPart; --this is not delivering the string
root = cl.root;
presRestOfVerb = cl.pres;
pastRestOfVerb = cl.perf; --morphs ! VFPastPart ! RestOfVerb;
compl = cl.compl
in
case <temp.t, temp.a, Pos> of {
<RemotePast, Performative,Pos> => case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "ka" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemotePast, Perfomative,Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ra" ++ Predef.BIND++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ra" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemotePast, (Perfect | Resultative),Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemotePast, (Perfect | Resultative),Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemotePast, Retrospective, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++Predef.BIND ++ "aa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++Predef.BIND ++ "aa" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemotePast, Retrospective, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++ Predef.BIND++ "ta" ++Predef.BIND ++ "ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ Predef.BIND++ "ta" ++Predef.BIND ++ "ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemotePast, Habitual, Pos> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemotePast, Habitual, Neg> => case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta" ++Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta" ++Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemotePast, Progressive, Pos> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "kaba ni" ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "kaba ni" ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemotePast, Progressive, Neg> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta riku" ++Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta riku" ++Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemotePast, Persistive, Pos> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++"kyaa" ++Predef.BIND++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++"kyaa" ++Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemotePast, Persistive, Neg> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta ki" ++Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "kaba" ++ clitic ++ "ta ki" ++Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearPast, Performative,Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearPast, Performative,Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ti" ++Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearPast, (Perfect |Resultative),Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "baire" ++clitic ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "baire" ++clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearPast, (Perfect |Resultative),Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "baire" ++clitic ++ Predef.BIND ++"ta" ++ Predef.BIND++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++clitic ++ "baire" ++clitic ++ Predef.BIND ++"ta" ++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearPast, Retrospective,Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "bire" ++clitic ++"aa"++ Predef.BIND++ root ++ Predef.BIND ++ "ire" ++ compl}; --I had already bought
False => {s = subj ++ clitic ++ "bire" ++clitic ++"aa"++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl} --I had already bought
};
<NearPast, Retrospective,Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "bire" ++clitic ++"ta ka"++ Predef.BIND++ Predef.BIND ++"ta" ++ Predef.BIND++ root ++ Predef.BIND ++ "ire" ++ compl};-- I had not yet bought
False => {s = subj ++clitic ++ "bire" ++clitic ++"ta ka"++ Predef.BIND++ Predef.BIND ++"ta" ++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl} -- -- I had not yet bought
};
<(NearPast | MemorialPres|ExpPres|NearFut), Habitual,Pos> => case cl.isPresBlank of {
True => {s = subj ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<(NearPast | MemorialPres|ExpPres|NearFut), Habitual,Neg> => case cl.isPresBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearPast, Progressive, Pos> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "beire ni" ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "beire ni" ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearPast, Progressive, Neg> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "beire" ++ clitic ++ "ta riku" ++Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "beire" ++ clitic ++ "ta riku" ++Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearPast, Persistive, Pos> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "bire" ++ clitic ++ "kyaa" ++ Predef.BIND ++root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "bire" ++ clitic ++ "kyaa" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearPast, Persistive, Neg> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "bire" ++ clitic ++ "ta ki" ++Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "bire" ++ clitic ++ "ta ki" ++Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<MemorialPres, Performative, Pos> => case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "aa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "aa" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<MemorialPres, Performative, Neg> => case cl.isPresBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "aa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "aa" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<MemorialPres, (Perfect | Resultative), Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "aba" ++ clitic ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "aba" ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<MemorialPres, (Perfect | Resultative), Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "aba" ++ clitic ++ "ta" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "aba" ++ clitic ++ "ta" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<MemorialPres, Restrospective, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "aaba" ++ clitic ++"aa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "aaba" ++ clitic ++"aa" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<MemorialPres, Restrospective, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "ta ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "ta ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<MemorialPres, Progressive, Pos> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "aaba ni" ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "aaba ni" ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<MemorialPres, Progressive, Neg> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "ta riku"++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "ta riku"++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<MemorialPres, Persistive, Pos> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "kaa"++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "kaa"++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<MemorialPres, Persistive, Neg> => case cl.isPresBlank of{
True => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "ta ki"++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "aaba" ++ clitic ++ "ta ki"++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<ExpPres, Performative,(Pos|Neg)> =>{s="ImpossibleInLanguage"}; -- with GF could allow one to throw Error messages that can be caught
<ExpPres, (Perfect |Resultative), Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<ExpPres, (Perfect |Resultative), Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++"ti"++Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++"ti"++Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<ExpPres, Retrospective, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "naa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "naa" ++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<ExpPres, Retrospective, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ka" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ka" ++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<ExpPres, Progressive, Pos> => case cl.isPresBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<ExpPres, Progressive, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ri ku" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ri ku" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<ExpPres, Persistive, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "kaa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "kaa" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<ExpPres, Persistive, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ri ku" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "ri ku" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearFut, Performative, Pos> => case cl.isPresBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za ku" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za ku" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
-- Uses the subjunctive e.g a + e = e
<NearFut, Performative, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "raa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "e" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "raa" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++Predef.BIND ++"e" ++ compl} -- my own way of performing the subjuctive i.e a+e =e
};
<NearFut, (Perfect | Resultative), Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "raaba" ++ clitic ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "raaba" ++ clitic ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearFut, (Perfect | Resultative), Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "raaba" ++ clitic ++ "ta" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "raaba" ++ clitic ++ "ta" ++ Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearFut, Retrospective, Pos> =>case cl.isPerfBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ Predef.BIND ++ clitic ++ "aa" ++Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ Predef.BIND ++ clitic ++ "aa" ++Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearFut, Retrospective, Neg> =>case cl.isPerfBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ Predef.BIND ++ clitic ++ "taka" ++Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ Predef.BIND ++ clitic ++ "taka" ++Predef.BIND ++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<NearFut, Progressive, Pos> => case cl.isPresBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba ni" ++ Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba ni" ++ Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearFut, Progressive, Neg> => case cl.isPresBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ clitic ++ "tariku" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ clitic ++ "tariku" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearFut, Persistive, Pos> => case cl.isPresBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ clitic ++ "kyaa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ clitic ++ "kyaa" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<NearFut, Persistive, Neg> => case cl.isPresBlank of {
True => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ clitic ++ "taki" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ni" ++ Predef.BIND ++clitic ++"za kuba" ++ clitic ++ "taki" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemoteFut, Performative, Pos> => case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "rya" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "rya" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemoteFut, Performative, Neg> => case cl.isPresBlank of {
True => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "rya" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ "ti" ++ Predef.BIND ++ clitic ++ "rya" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemoteFut, (Perfect | Resultative), Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemoteFut, (Perfect | Resultative), Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ "ta" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ "ta" ++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemoteFut, Restrospective, Pos> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ "aa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ "aa"++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemoteFut, Restrospective, Neg> => case cl.isPerfBlank of {
True => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ "taka" ++ Predef.BIND ++ root ++ Predef.BIND ++ "ire" ++ compl};
False => {s = subj ++ clitic ++ "ryaba" ++ clitic ++ "taka" ++ Predef.BIND++ root ++ Predef.BIND ++ pastRestOfVerb ++ compl}
};
<RemoteFut, Habitual, Pos> =>case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "raa" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "raa" ++ Predef.BIND++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemoteFut, Habitual, Neg> =>{s="Non Existent. Can someone suggest?"};
<RemoteFut, Progressive, Pos> =>case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "riba ni" ++ Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "riba ni" ++ Predef.BIND ++ clitic ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemoteFut, Progressive, Neg> =>case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "riba" ++ clitic ++ "ta riku" ++ Predef.BIND++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "riba" ++ clitic ++ "ta riku" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemoteFut, Persistive, Pos> =>case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "riba" ++ Predef.BIND ++ clitic ++"kya" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "riba" ++ Predef.BIND ++ clitic ++"kya" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
};
<RemoteFut, Persistive, Neg> =>case cl.isPresBlank of {
True => {s = subj ++ clitic ++ "riba" ++ Predef.BIND ++ clitic ++"taki" ++ Predef.BIND ++ root ++ Predef.BIND ++ "a" ++ compl};
False => {s = subj ++ clitic ++ "riba" ++ Predef.BIND ++ clitic ++"taki" ++ Predef.BIND ++ root ++ Predef.BIND ++ presRestOfVerb ++ compl}
}
};
}

View File

@@ -15,19 +15,20 @@ concrete StructuralCgg of Structural = CatCgg **
lin lin
--Determiner : Type = {s : Str ; s2: Agreement=>Str; ntype : NounState ; num : Number ; pos : Position; doesAgree: Bool }; --Determiner : Type = {s : Str ; s2: Agreement=>Str; ntype : NounState ; num : Number ; pos : Position; doesAgree: Bool };
a_Det = {s =[] ; s2 = \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False}; --: Det ; indefinite singular ---s a_Det = {s =[] ; s2 = \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False}; --: Det ; indefinite singular ---s
aPl_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Pl; pos = Pre; doesAgree = False}; -- : Det ;indefinite plural ---s aPl_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Pl; pos = Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False}; -- : Det ;indefinite plural ---s
the_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False}; --: Det ; -- definite singular ---s thePl_Det = {s =[]; ntype = Complete; num = Pl; pos = PreDeterminer}; --: Det ;definite plural ---s the_Det = {s =[]; s2= \\_ => []; ntype = Complete; num = Sg; pos = Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False}; --: Det ; -- definite singular ---s thePl_Det = {s =[]; ntype = Complete; num = Pl; pos = PreDeterminer}; --: Det ;definite plural ---s
every_Det = {s ="buri"; s2 = \\_ => []; ntype=Incomplete; num=Sg; pos=Pre; doesAgree = False} ; every_Det = {s ="buri"; s2 = \\_ => []; ntype=Incomplete; num=Sg; pos=Pre; doesAgree = False; numeralS=\\_=>[]; numeralExists = False} ;
few_Det = {s="kye"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False} ; few_Det = {s="kye"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False; numeralS=\\_=>[]; numeralExists = False} ;
many_Det ={s="ingi"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False} ; many_Det ={s="ingi"; s2 = \\_ => []; ntype =Complete; num=Pl; pos=Post; doesAgree = False; numeralS=\\_=>[]; numeralExists = False} ;
i_Pron = {s = table{Gen => glueGen (AgMUBAP1 Sg); _=> mkSStand (AgMUBAP1 Sg)}; third = \\_,_=>[]; agr = AgrYes (AgMUBAP1 Sg)};--mkPron "nyowe" "nyowe" (AgMUBAP1 Sg); i_Pron = {s = table{Gen => glueGen (AgMUBAP1 Sg); _=> mkSStand (AgMUBAP1 Sg)}; third = \\_,_=>[]; agr = AgrYes (AgMUBAP1 Sg)};--mkPron "nyowe" "nyowe" (AgMUBAP1 Sg);
youSg_Pron = {s = table{Gen => glueGen (AgMUBAP2 Sg); _=>mkSStand (AgMUBAP2 Sg)}; third = \\_,_=>[]; agr = AgrYes(AgMUBAP2 Sg)};--mkPron "iwe" "we" (AgMUBAP2 Sg); youSg_Pron = {s = table{Gen => glueGen (AgMUBAP2 Sg); _=>mkSStand (AgMUBAP2 Sg)}; third = \\_,_=>[]; agr = AgrYes(AgMUBAP2 Sg)};--mkPron "iwe" "we" (AgMUBAP2 Sg);
he_Pron, she_Pron = {s = table{Gen => glueGen (AgP3 Sg MU_BA); _=>mkSStand (AgP3 Sg MU_BA)}; third = \\_,_=>[]; agr = AgrYes(AgP3 Sg MU_BA)};--mkPron "uwe" "uwe" (AgP3 Sg MU_BA); he_Pron, she_Pron = {s = table{Gen => glueGen (AgP3 Sg MU_BA); _=>mkSStand (AgP3 Sg MU_BA)}; third = \\_,_=>[]; agr = AgrYes(AgP3 Sg MU_BA)};--mkPron "uwe" "uwe" (AgP3 Sg MU_BA);
we_Pron = {s = table{Gen => glueGen (AgMUBAP1 Pl); _=>mkSStand (AgMUBAP1 Pl)}; third = \\_,_=>[]; agr = AgrYes (AgMUBAP1 Pl)}; --mkPron "itwe" "itwe" (AgMUBAP1 Pl); we_Pron = {s = table{Gen => glueGen (AgMUBAP1 Pl); _=>mkSStand (AgMUBAP1 Pl)}; third = \\_,_=>[]; agr = AgrYes (AgMUBAP1 Pl)}; --mkPron "itwe" "itwe" (AgMUBAP1 Pl);
youPl_Pron = {s = table{Gen => glueGen (AgMUBAP2 Pl); _=>mkSStand (AgMUBAP2 Pl)}; third = \\_,_=>[]; agr =AgrYes (AgMUBAP2 Pl)};--mkPron "imwe" "imwe" (AgMUBAP2 Pl); they_Pron = {s = table{Gen => glueGen AgP3 Pl MU_BA; _=>mkSStand (AgP3 Pl MU_BA)}; third = \\_,_=>[]; itP3Required=False};--mkPron "bo" "bo" (AgP3 Pl MU_BA); youPl_Pron = {s = table{Gen => glueGen (AgMUBAP2 Pl); _=>mkSStand (AgMUBAP2 Pl)}; third = \\_,_=>[]; agr =AgrYes (AgMUBAP2 Pl)};--mkPron "imwe" "imwe" (AgMUBAP2 Pl); they_Pron = {s = table{Gen => glueGen AgP3 Pl MU_BA; _=>mkSStand (AgP3 Pl MU_BA)}; third = \\_,_=>[]; itP3Required=False};--mkPron "bo" "bo" (AgP3 Pl MU_BA);
they_Pron = {s = table{Gen => glueGen (AgP3 Pl MU_BA); _=>mkSStand (AgP3 Pl MU_BA)}; third = \\_,_=>[]; agr =AgrYes (AgP3 Pl MU_BA)};--mkPron "bo" "bo" (AgP3 Pl MU_BA);
-- default implementation Using KI_BI. Use mkmkGenPrepNoIVClitic and -- default implementation Using KI_BI. Use mkmkGenPrepNoIVClitic and
it_Pron = { it_Pron = {
s = \\_=>[]; s = \\_=>[];
@@ -97,7 +98,7 @@ lin
n = Sg n = Sg
}; };
have_V2 ={s= "ine"; pres=[]; perf =[]; isPresBlank = False; have_V2 ={s= "in"; pres="e"; perf ="e"; isPresBlank = False;
isPerfBlank = False; morphs = mkVerbMorphs; comp = []; isRegular=False}; --: V2 ; isPerfBlank = False; morphs = mkVerbMorphs; comp = []; isRegular=False}; --: V2 ;
{- {-
@@ -145,7 +146,7 @@ lin
that_Quant = {s={s = \\_=>[]; third =\\_,_=>[]; agr = AgrNo}; s2 = mkThat; doesAgree = True; isPron = False}; --: Quant ; that_Quant = {s={s = \\_=>[]; third =\\_,_=>[]; agr = AgrNo}; s2 = mkThat; doesAgree = True; isPron = False}; --: Quant ;
this_Quant = {s={s = \\_=>[]; third =\\_,_=>[]; agr = AgrNo}; s2 = mkThis; doesAgree = True; isPron = False}; --: Quant ; this_Quant = {s={s = \\_=>[]; third =\\_,_=>[]; agr = AgrNo}; s2 = mkThis; doesAgree = True; isPron = False}; --: Quant ;
no_Quant = {s ={s=\\_=>"tihariho";third =\\_,_=>[]; agr=AgrNo}; s2 =\\_=> []; doesAgree = False; isPron = False};--: Quant ; no_Quant = {s ={s=\\_=>"tihariho";third =\\_,_=>[]; agr=AgrNo}; s2 =\\_=> "tihariho"; doesAgree = False; isPron = False};--: Quant ;
{-End of Quantifiers-} {-End of Quantifiers-}
@@ -165,7 +166,7 @@ lin
whatPl_IP = { s= "ki"; n = IPl; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True} ; -- what (plural) whatPl_IP = { s= "ki"; n = IPl; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True} ; -- what (plural)
whatSg_IP = { s= "ki"; n = ISg; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True}; --: IP ; -- what (singular) whatSg_IP = { s= "ki"; n = ISg; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True}; --: IP ; -- what (singular)
whoPl_IP = { s= "ha"; n = IPl; isVerbSuffix = True; requiresIPPrefix = False; aux="ni"; endOfSentence = True} ;--: IP ; -- who (plural) whoPl_IP = { s= "ha"; n = IPl; isVerbSuffix = True; requiresIPPrefix = False; aux="ni"; endOfSentence = True} ;--: IP ; -- who (plural)
whoSg_IP = { s= "ha"; n = ISg; isVerbSuffix = True; requiresIPPrefix = False; aux=[]; endOfSentence = True}; --: IP ; -- who (singular) whoSg_IP = { s= "ha"; n = ISg; isVerbSuffix = True; requiresIPPrefix = False; aux="ni"; endOfSentence = True}; --: IP ; -- who (singular)
--You may need to use booleans to indicate that you need these tables rather than carrying them. --You may need to use booleans to indicate that you need these tables rather than carrying them.
how_IAdv = {s ="ta"; requiresSubjPrefix = True; endOfSentence =True}; --: IAdv ; how_IAdv = {s ="ta"; requiresSubjPrefix = True; endOfSentence =True}; --: IAdv ;
--how8much_IAdv = {s ="kwiga"; s2requireSubjPrefix = True};--: IAdv ; --how8much_IAdv = {s ="kwiga"; s2requireSubjPrefix = True};--: IAdv ;
@@ -191,17 +192,21 @@ lin
s2 =\\agr => mkSubjCliticTableSg ! agr ++ BIND++ "mwe"; s2 =\\agr => mkSubjCliticTableSg ! agr ++ BIND++ "mwe";
ntype = Complete; ntype = Complete;
num = Sg; num = Sg;
pos = Pre; pos = Post;
doesAgree = True doesAgree = True;
numeralS=\\_=>[];
numeralExists = False
}; };
somePl_Det = somePl_Det =
{ {
s =[]; s =[];
s2 =\\agr => mkSubjCliticTablePl ! agr ++ BIND++ "mwe"; s2 =\\agr => "mwe";-- mkSubjCliticTablePl ! agr ++ "mwe";
ntype = Complete; ntype = Complete;
num = Pl; num = Pl;
pos = Pre; pos = Post;
doesAgree = True doesAgree = True;
numeralS=\\_=>[];
numeralExists = False
};--: Det ; };--: Det ;
want_VV = {s = "yend"; pres="da"; perf = "zire"; isPresBlank = False; want_VV = {s = "yend"; pres="da"; perf = "zire"; isPresBlank = False;
@@ -219,6 +224,8 @@ lin
--somewhere_Adv : Adv ; --somewhere_Adv : Adv ;
that_Subj = ss "ngu" ; that_Subj = ss "ngu" ;
when_Subj = ss "obu";
because_Subj = ss "ahabwokuba";
--Adjective modifying Adverbs --Adjective modifying Adverbs
almost_AdA = {s="haihi"; position=Pre}; --: AdA ; almost_AdA = {s="haihi"; position=Pre}; --: AdA ;

26
src/rukiga/TenseExtra.gf Normal file
View File

@@ -0,0 +1,26 @@
abstract TenseExtra = {
cat
TempExtra;
TenseExtra;
Asp;
fun
TTAsp : TenseExtra -> Asp -> TempExtra ; -- [combination of tense and Apect, e.g. ExPres Performative]
--PPos : Pol ; -- I sleep [positive polarity]
--PNeg : Pol ; -- I don't sleep [negative polarity]
TExPres : TenseExtra ; -- I sleep/have slept [present]
TMPres : TenseExtra ; -- I slept [past, "imperfect"] --# notpresent
TNFut : TenseExtra ; -- I will sleep [future] --# notpresent
TNPast : TenseExtra ; -- I would sleep [conditional] --# notpresent
TRPast : TenseExtra ;
TRFut : TenseExtra ;
APerform : Asp ; -- I sleep/slept [simultaneous, not compound]
APerf : Asp ; -- I have slept/had slept [anterior, "compound", "perfect"] --# notpresent
AResult : Asp ;
ARetrosp : Asp ;
AHabitual : Asp ;
AProg : Asp ;
APersist : Asp ;
}

View File

@@ -0,0 +1,37 @@
concrete TenseExtraCgg of TenseExtra = {
param
-- for Extra Tenses not implemented
-- would be better if I had alliases
Tenses = RemotePast|NearPast | MemorialPres |ExpPres|NearFut |RemoteFut;
-- for Extra Aspects not implemented
-- would be better if I had alliases
Aspect = Performative | Perfect | Resultative | Retrospective | Habitual | Progressive | Persistive;
lincat
TempExtra = {s:Str; t:Tenses; a:Aspect};
TenseExtra = {s:Str; t:Tenses};
Asp = {s:Str; a:Aspect};
--lindef
--TempExtra = \str_0 -> {s = str_0; a = Habitual;t = ExPres} ;
lin
--TTAsp : TenseExtra -> Asp -> TempExtra ; -- [combination of tense and Apect, e.g. ExPres Performative]
TTAsp tense aspect = {s=[]; t=tense.t; a=aspect.a};
--PPos : Pol ; -- I sleep [positive polarity]
--PNeg : Pol ; -- I don't sleep [negative polarity]
TExPres = {s=[]; t= ExpPres} ; -- I sleep/have slept [present]
TMPres = {s=[]; t=MemorialPres} ; -- I slept [past, "imperfect"] --# notpresent
TNFut = {s=[]; t=NearFut} ; -- I will sleep [future] --# notpresent
TNPast = {s=[]; t= NearPast} ; -- I would sleep [conditional] --# notpresent
TRPast = {s=[]; t= RemotePast} ;
TRFut = {s=[]; t = RemoteFut} ;
APerform = {s=[]; a = Performative} ; -- I sleep/slept [simultaneous, not compound]
APerf = {s=[]; a= Perfect}; -- I have slept/had slept [anterior, "compound", "perfect"] --# notpresent
AResult = {s=[]; a= Resultative};
ARetrosp = {s=[]; a= Retrospective};
AHabitual = {s=[]; a= Habitual};
AProg = {s=[]; a=Progressive} ;
APersist = {s=[]; a=Persistive} ;
}

View File

@@ -194,7 +194,7 @@ lin
isCompApStem = False; isCompApStem = False;
agr = AgrNo; agr = AgrNo;
isRegular = vp.isRegular; isRegular = vp.isRegular;
adv = []; adv = adv.s;
containsAdv =True; containsAdv =True;
adV =[]; adV =[];
containsAdV = False containsAdV = False

12
src/rukiga/_grpha_1.dot Normal file
View File

@@ -0,0 +1,12 @@
digraph {
rankdir=LR ;
node [shape = record] ;
struct0[label = "<n0> Yohana | <n1> a &+ | <n2> nyw | <n3> &+ | <n4> a | <n5> amáìzi | <n6> aga | <n7> kwosya"] ;
struct0:n0:e -> struct1:n0:w ;
struct0:n2:e -> struct1:n1:w ;
struct0:n4:e -> struct1:n1:w ;
struct0:n5:e -> struct1:n3:w ;
struct0:n7:e -> struct1:n2:w ;
struct1[label = "<n0> John | <n1> drinks | <n2> hot | <n3> water"] ;
}

BIN
src/rukiga/_grpha_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

95
src/rukiga/_grphp_1.dot Normal file
View File

@@ -0,0 +1,95 @@
graph {
edge[style="solid"]; node[shape="plaintext"];
subgraph {rank=same;
n20[label="PhrUtt : Phr"];
}
subgraph {rank=same;
n18[label="UttS : Utt"];
}
n20 -- n18;
subgraph {rank=same;
n17[label="UseCl : S"];
}
n18 -- n17;
subgraph {rank=same;
n16[label="PredVP : Cl"];
}
n17 -- n16;
subgraph {rank=same;
n6[label="UsePN : NP"];
n15[label="ComplSlash : VP"];
edge[style="invis"];
n6 -- n15 ;
}
n16 -- n6;
n16 -- n15;
subgraph {rank=same;
n5[label="john_PN : PN"];
n8[label="SlashV2a : VPSlash"];
n14[label="MassNP : NP"];
edge[style="invis"];
n5 -- n8 -- n14 ;
}
n6 -- n5;
n15 -- n8;
n15 -- n14;
subgraph {rank=same;
n7[label="drink_V2 : V2"];
n13[label="AdjCN : CN"];
edge[style="invis"];
n7 -- n13 ;
}
n8 -- n7;
n14 -- n13;
subgraph {rank=same;
n12[label="UseN : CN"];
n10[label="PositA : AP"];
edge[style="invis"];
n12 -- n10 ;
}
n13 -- n12;
n13 -- n10;
subgraph {rank=same;
n11[label="water_N : N"];
n9[label="hot_A : A"];
edge[style="invis"];
n11 -- n9 ;
}
n12 -- n11;
n10 -- n9;
edge[style="dashed"]; node[shape="plaintext"];
subgraph {rank=same;
n100000[label="Yohana"];
n100001[label="a"];
n100002[label="&+"];
n100003[label="ka"];
n100004[label="nyw"];
n100005[label="&+"];
n100006[label="a"];
n100007[label="amáìzi"];
n100008[label="aga"];
n100009[label="kwosya"];
edge[style="invis"];
n100000 -- n100001 -- n100002 -- n100003 -- n100004 -- n100005 -- n100006 -- n100007 -- n100008 -- n100009 ;
}
n5 -- n100000;
n17 -- n100001;
n17 -- n100002;
n17 -- n100003;
n7 -- n100004;
n17 -- n100005;
n17 -- n100006;
n11 -- n100007;
n13 -- n100008;
n9 -- n100009;
}

BIN
src/rukiga/_grphp_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

873
src/rukiga/all_func.txt Normal file
View File

@@ -0,0 +1,873 @@
AAnter
ASimul
AdAP
AdAdv
AdNum
AdVVP
AdVVPSlash
AddAdvQVP
AdjCN
AdjDAP
AdjOrd
AdnCAdv
AdvAP
AdvCN
AdvIAdv
AdvIP
AdvNP
AdvQVP
AdvS
AdvSlash
AdvVP
AdvVPSlash
ApposCN
BaseAP
BaseAdV
BaseAdv
BaseCN
BaseDAP
BaseIAdv
BaseNP
BaseRS
BaseS
CAdvAP
CleftAdv
CleftNP
CompAP
CompAdv
CompCN
CompIAdv
CompIP
CompNP
ComparA
ComparAdvAdj
ComparAdvAdjS
ComplA2
ComplN2
ComplN3
ComplSlash
ComplSlashIP
ComplVA
ComplVQ
ComplVS
ComplVV
ConjAP
ConjAdV
ConjAdv
ConjCN
ConjDet
ConjIAdv
ConjNP
ConjRS
ConjS
ConsAP
ConsAdV
ConsAdv
ConsCN
ConsDAP
ConsIAdv
ConsNP
ConsRS
ConsS
CountNP
D_0
D_1
D_2
D_3
D_4
D_5
D_6
D_7
D_8
D_9
DefArt
DetCN
DetDAP
DetNP
DetQuant
DetQuantOrd
EmbedQS
EmbedS
EmbedVP
ExistIP
ExistIPAdv
ExistNP
ExistNPAdv
ExtAdvNP
ExtAdvS
ExtAdvVP
FunRP
GenericCl
IDig
IIDig
IdRP
IdetCN
IdetIP
IdetQuant
ImpP3
ImpPl1
ImpVP
ImpersCl
InLanguage
IndefArt
InflectionA
InflectionA2
InflectionAdv
InflectionN
InflectionN2
InflectionN3
InflectionPrep
InflectionV
InflectionV2
InflectionV2A
InflectionV2Q
InflectionV2S
InflectionV2V
InflectionV3
InflectionVA
InflectionVQ
InflectionVS
InflectionVV
MarkupAP
MarkupAdv
MarkupCN
MarkupNP
MarkupPhr
MarkupS
MarkupText
MarkupUtt
MassNP
MkDefinition
MkDefinitionEx
MkDocument
MkTag
NoDefinition
NoPConj
NoVoc
NumCard
NumDigits
NumNumeral
NumPl
NumSg
OrdDigits
OrdNumeral
OrdNumeralSuperl
OrdSuperl
PConjConj
PNeg
PPartNP
PPos
PartNP
PassV2
PhrUtt
PositA
PositAdAAdj
PositAdvAdj
PossNP
PossPron
PredSCVP
PredVP
PredetNP
PrepIP
PrepNP
ProgrVP
QuestCl
QuestIAdv
QuestIComp
QuestQVP
QuestSlash
QuestVP
ReflA2
ReflVP
RelCN
RelCl
RelNP
RelS
RelSlash
RelVP
SSubjS
SelfAdVVP
SelfAdvVP
SelfNP
SentAP
SentCN
Slash2V3
Slash3V3
SlashPrep
SlashV2A
SlashV2Q
SlashV2S
SlashV2V
SlashV2VNP
SlashV2a
SlashVP
SlashVS
SlashVV
SubjS
TCond
TEmpty
TExclMark
TFullStop
TFut
TPast
TPres
TQuestMark
TTAnt
Use2N3
Use3N3
UseA2
UseCl
UseComp
UseComparA
UseCopula
UseN
UseN2
UsePN
UsePron
UseQCl
UseRCl
UseSlash
UseV
UttAP
UttAdv
UttCN
UttCard
UttIAdv
UttIP
UttImpPl
UttImpPol
UttImpSg
UttInterj
UttNP
UttQS
UttS
UttVP
VPSlashPrep
VocNP
a_Mark
above_Prep
active2passive
add_V3
afrikaans_Language
after_Prep
airplane_N
alas_Interj
all_Predet
almost_AdA
almost_AdN
already_Adv
although_Subj
always_AdV
amharic_Language
and_Conj
animal_N
answer_V2S
apartment_N
apple_N
april_Month
arabic_Language
art_N
as_CAdv
ashes_N
ask_V2Q
at_least_AdN
at_most_AdN
august_Month
b_Mark
baby_N
back_N
bad_A
bank_N
bark_N
beautiful_A
because_Subj
become_VA
beer_N
before_Prep
beg_V2V
behind_Prep
belly_N
between_Prep
big_A
bike_N
bird_N
bite_V2
black_A
blood_N
blow_V
blue_A
boat_N
bone_N
book_N
boot_N
boss_N
both7and_DConj
bottle_of_CN
boy_N
bread_N
break_V2
breast_N
breathe_V
broad_A
brother_N2
brown_A
bulgarian_Language
burn_V
but_PConj
butter_N
buy_V2
by8agent_Prep
by8means_Prep
camera_N
can8know_VV
can_VV
cap_N
car_N
carpet_N
cat_N
catalan_Language
ceiling_N
chair_N
cheese_N
child_N
chinese_Language
church_N
city_N
clean_A
clever_A
close_V2
cloud_N
coat_N
cold_A
come_V
computer_N
correct_A
count_V2
country_N
cousin_N
cow_N
cup_of_CN
cut_V2
danish_Language
dayMonthAdv
dayMonthYearAdv
day_N
day_Timeunit
dconcat
december_Month
die_V
dig_V
digits2num
digits2numeral
dirty_A
distance_N3
dn
dn10
dn100
dn1000
dn1000000a
dn1000000b
dn1000000c
do_V2
doctor_N
dog_N
door_N
drink_V2
dry_A
dull_A
during_Prep
dust_N
dutch_Language
ear_N
earth_N
easy_A2V
eat_V2
egg_N
eightHour
eighteenHour
either7or_DConj
elevenHour
empty_A
enemy_N
english_Language
estonian_Language
every_Det
everybody_NP
everything_NP
everywhere_Adv
except_Prep
eye_N
factory_N
fall_V
far_Adv
fat_N
father_N2
fear_V2
fear_VS
feather_N
february_Month
few_Det
few_X_short_of_Y
fifteenHour
fight_V2
find_V2
fingernail_N
finnish_Language
fire_N
fish_N
fiveHour
float_V
floor_N
flow_V
flower_N
fly_V
fog_N
foot_N
for_Prep
forest_N
forget_V2
fourHour
fourteenHour
freeze_V
french_Language
friday_Weekday
fridge_N
friend_N
from_Prep
fruit_N
full_A
fun_AV
garden_N
german_Language
girl_N
give_V3
glass_of_CN
glove_N
go_V
gold_N
good_A
grammar_N
grass_N
greek_Language
green_A
guts_N
h1_Mark
h2_Mark
hair_N
hand_N
harbour_N
has_age_VP
hat_N
hate_V2
have_V2
have_name_Cl
he_Pron
head_N
hear_V2
heart_N
heavy_A
hebrew_Language
here7from_Adv
here7to_Adv
here_Adv
hill_N
hindi_Language
hit_V2
hold_V2
hope_VS
horn_N
horse_N
hot_A
hour_Timeunit
house_N
how8many_IDet
how8much_IAdv
how_IAdv
how_far_QCl
how_old_QCl
hungry_VP
hunt_V2
husband_N
i_Mark
i_Pron
ice_N
if_Subj
if_then_Conj
ill_VP
important_A
in8front_Prep
in_Prep
industry_N
intMonthday
intYear
iron_N
is_right_VP
is_wrong_VP
it_Pron
italian_Language
january_Month
japanese_Language
john_PN
july_Month
jump_V
june_Month
kill_V2
king_N
knee_N
know_V2
know_VQ
know_VS
lake_N
lamp_N
languageCN
languageNP
language_N
language_title_Utt
latin_Language
latvian_Language
laugh_V
leaf_N
learn_V2
leather_N
leave_V2
left_Ord
leg_N
less_CAdv
li_Mark
lie_V
like_V2
listen_V2
live_V
liver_N
long_A
lose_V2
louse_N
love_N
love_V2
maltese_Language
man_N
many_Det
march_Month
married_A2
married_Cl
may_Month
meat_N
milk_N
minute_Timeunit
monday_Weekday
monthAdv
monthN
monthPN
monthYearAdv
month_Timeunit
moon_N
more_CAdv
most_Predet
mother_N2
mountain_N
mouth_N
much_Det
music_N
must_VV
n2
n3
n4
n5
n6
n7
n8
n9
n_units_AP
n_units_of_NP
name_N
narrow_A
nd
nd10
nd100
nd1000
nd1000000
near_A
neck_N
nepali_Language
new_A
newspaper_N
night_N
nineHour
nineteenHour
no_Quant
no_Utt
nobody_NP
norwegian_Language
nose_N
not_Predet
nothing_NP
november_Month
now_Adv
num
num2digits
number_N
october_Month
oil_N
old_A
on_Prep
oneHour
only_Predet
open_V2
or_Conj
otherwise_PConj
p_Mark
paint_V2A
paper_N
paris_PN
part_Prep
peace_N
pen_N
persian_Language
person_N
planet_N
plastic_N
play_V
play_V2
please_Voc
policeman_N
polish_Language
possess_Prep
pot0
pot01
pot0as1
pot1
pot110
pot111
pot1as2
pot1plus
pot1to19
pot2
pot2as3
pot2plus
pot3
pot3plus
priest_N
probable_AS
pull_V2
punjabi_Language
push_V2
put_V2
queen_N
question_N
quite_Adv
radio_N
rain_N
rain_V0
read_V2
ready_A
ready_VP
reason_N
red_A
religion_N
restaurant_N
right_Ord
river_N
road_N
rock_N
romanian_Language
roof_N
root_N
rope_N
rotten_A
round_A
rub_V2
rubber_N
rule_N
run_V
russian_Language
salt_N
sand_N
saturday_Weekday
say_VS
scared_VP
school_N
science_N
scratch_V2
sea_N
second_Timeunit
see_V2
seed_N
seek_V2
sell_V3
send_V3
september_Month
sevenHour
seventeenHour
sew_V
sharp_A
she_Pron
sheep_N
ship_N
shirt_N
shoe_N
shop_N
short_A
silver_N
sindhi_Language
sing_V
sister_N
sit_V
sixHour
sixteenHour
skin_N
sky_N
sleep_V
small_A
smell_V
smoke_N
smooth_A
snake_N
snow_N
so_AdA
sock_N
somePl_Det
someSg_Det
somebody_NP
something_NP
somewhere_Adv
song_N
spanish_Language
speak_V2
spit_V
split_V2
squeeze_V2
stab_V2
stand_V
star_N
steel_N
stick_N
stone_N
stop_V
stove_N
straight_A
student_N
stupid_A
suck_V2
sun_N
sunday_Weekday
swahili_Language
swedish_Language
swell_V
swim_V
switch8off_V2
switch8on_V2
table_Mark
table_N
tail_N
talk_V3
td_Mark
teach_V2
teacher_N
television_N
tenHour
thai_Language
that_Quant
that_Subj
there7from_Adv
there7to_Adv
there_Adv
therefore_PConj
they_Pron
thick_A
thin_A
think_V
thirsty_VP
thirteenHour
this_Quant
threeHour
through_Prep
throw_V2
thursday_Weekday
tie_V2
timeHour
timeHourMinute
timeunitAdv
tired_VP
to_Prep
today_Adv
tongue_N
too_AdA
tooth_N
tr_Mark
train_N
travel_V
tree_N
tuesday_Weekday
turkish_Language
turn_V
twelveHour
twentyFourHour
twentyHour
twentyOneHour
twentyThreeHour
twentyTwoHour
twoHour
ugly_A
ul_Mark
uncertain_A
under_Prep
understand_V2
university_N
urdu_Language
very_AdA
village_N
vomit_V
wait_V2
walk_V
want_VV
war_N
warm_A
wash_V2
watch_V2
water_N
we_Pron
weather_adjCl
wednesday_Weekday
week_Timeunit
weekdayHabitualAdv
weekdayLastAdv
weekdayN
weekdayNextAdv
weekdayPN
weekdayPunctualAdv
wet_A
whatPl_IP
whatSg_IP
what_name_QCl
when_IAdv
when_Subj
where_IAdv
which_IQuant
white_A
whoPl_IP
whoSg_IP
why_IAdv
wide_A
wife_N
win_V2
wind_N
window_N
wine_N
wing_N
wipe_V2
with_Prep
without_Prep
woman_N
wonder_VQ
wood_N
worm_N
write_V2
yearAdv
year_N
year_Timeunit
yellow_A
yes_Utt
youPl_Pron
youPol_Pron
youSg_Pron
young_A

View File

@@ -0,0 +1,198 @@
Lang: PhrUtt NoPConj (UttNP (AdvNP (DetCN (DetQuant DefArt NumPl) (UseN child_N)) (SubjS when_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron we_Pron) (ComplSlash (SlashV2a see_V2) (UsePron they_Pron))))))) NoVoc
LangEng: the children when we see them
LangCgg: abaana [SubjS]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (SentCN (UseN reason_N) (EmbedVP (UseV go_V)))))))) NoVoc
LangEng: I have a reason to go
LangCgg: nyowe nine[SentCN]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a like_V2) (DetCN (DetQuant DefArt NumSg) (SentCN (UseN rule_N) (EmbedS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (UseN book_N)) (UseComp (CompAP (PositA thin_A)))))))))))) NoVoc
LangEng: I like the rule that the books are thin
LangCgg: nyowe n[like_V2][SentCN]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (UsePron youSg_Pron) (SlashV2a love_V2)))))))))) NoVoc
LangEng: I saw the man that you love
LangCgg: nyowe nreebire omushaija iwe oukûnda
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (UsePron youSg_Pron) (SlashV2a buy_V2)))))))))) NoVoc
LangEng: I saw the book that you bought
LangCgg: nyowe nreebire ekitabo iwe ougurire
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (AdvVP (UseV jump_V) (SubjS when_Subj (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN dog_N)) (UseV come_V)))))))) NoVoc
LangEng: the cat jumped when the dog came
LangCgg: enjangu egurukire [SubjS]
Lang: PhrUtt NoPConj (UttS (ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TPast ASimul) PPos (QuestVP whoSg_IP (ComplSlash (SlashV2a do_V2) (UsePron it_Pron)))))))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV must_VV (UseV go_V)))))) NoVoc
LangEng: if you know who did it , you must go
LangCgg: [ExtAdvS]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (AdvVP (UseComp (CompAP (PositA ready_A))) (SubjS when_Subj (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (UsePron he_Pron))))))))) NoVoc
LangEng: he was ready when I saw him
LangCgg: uwe akaba [SubjS]
Lang: PhrUtt NoPConj (UttCN (AdjCN (AdAP (PositAdAAdj clever_A) (PositA correct_A)) (UseN rule_N))) NoVoc
LangEng: cleverly correct rule
LangCgg: [rule_N] omu[correct_A] [PositAdAAdj]
Lang: PhrUtt NoPConj (UttAdv (ComparAdvAdj less_CAdv probable_AS (UsePN john_PN))) NoVoc
LangEng: less probably than John
LangCgg: [ComparAdvAdj]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a eat_V2) (MassNP (AdjCN (PositA red_A) (UseN meat_N))))))) NoVoc
LangEng: John eats red meat
LangCgg: Yohana ary[meat_N] omuríkutukura
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePN john_PN) (UseV die_V)))) NoVoc
LangEng: John has died
LangCgg: Yohana a[die_V][die_V]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVV must_VV (UseV go_V))))) NoVoc
LangEng: he must go
LangCgg: uwe ashemereire kugyenda
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePN john_PN) (PassV2 kill_V2)))) NoVoc
LangEng: John has been killed
LangCgg: Yohana a[PassV2][PassV2] [PassV2]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (PassV2 kill_V2)))) NoVoc
LangEng: John was killed
LangCgg: Yohana a[PassV2][PassV2] [PassV2]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (AdvCN (UseN cat_N) (PrepNP in_Prep (DetCN (DetQuant IndefArt NumSg) (UseN hat_N))))))))) NoVoc
LangEng: I saw a cat in a hat
LangCgg: nyowe nreebire enjangu omu [hat_N]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))) (PrepNP with_Prep (DetCN (DetQuant (PossPron i_Pron) NumPl) (UseN eye_N))))))) NoVoc
LangEng: I saw a cat with my eyes
LangCgg: nyowe nreebire na [eye_N] ba
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (UseComp (CompAP (ComplA2 married_A2 (UsePron she_Pron))))))) NoVoc
LangEng: he is married to her
LangCgg: uwe aba a[ComplA2]
Lang: PhrUtt (PConjConj and_Conj) (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron we_Pron) (UseV go_V)))) NoVoc
LangEng: and we went
LangCgg: [PConjConj] itwe tugyendire
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (ConjNP both7and_DConj (BaseNP (DetCN (DetQuant DefArt NumPl) (UseN boy_N)) (DetCN (DetQuant DefArt NumPl) (UseN girl_N)))) (UseComp (CompAdv here_Adv))))) NoVoc
LangEng: both the boys and the girls are here
LangCgg: [ConjNP] aba hanu
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVS say_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV want_VV (UseV swim_V)))))))) NoVoc
LangEng: he says that you want to swim
LangCgg: uwe agiiwe oyendda kuoga
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompAP (SentAP (PositA uncertain_A) (EmbedS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a do_V2) (UsePron it_Pron))))))))))) NoVoc
LangEng: I am uncertain that he did it
LangCgg: nyowe nba n[SentAP]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot3 (pot1as2 (pot0as1 (pot0 n4)))))))) (UseN sheep_N)))))) NoVoc
LangEng: I have four thousand sheep
LangCgg: nyowe nine[sheep_N] enkumi ina
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a switch8off_V2) (DetCN (DetQuant DefArt NumSg) (UseN television_N)))))) NoVoc
LangEng: they switch off the television
LangCgg: [they_Pron] ki[switch8off_V2][television_N]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAP (ConjAP and_Conj (BaseAP (PositA big_A) (PositA clever_A)))))))) NoVoc
LangEng: John is big and clever
LangCgg: Yohana aba a[ConjAP]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompCN (AdjCN (PositA clever_A) (UseN man_N))))))) NoVoc
LangEng: John is a clever man
LangCgg: Yohana aba omushaija omu[clever_A]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAdv (PrepNP from_Prep (DetCN (DetQuant DefArt NumSg) (UseN city_N)))))))) NoVoc
LangEng: John is from the city
LangCgg: Yohana aba kurunga ekibúga
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAP (PositA clever_A)))))) NoVoc
LangEng: John is clever
LangCgg: Yohana aba a[clever_A]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron it_Pron) (UseComp (CompAdv today_Adv))))) NoVoc
LangEng: it was today
LangCgg: kyo kikaba [today_Adv]
Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestIComp (CompIP whatSg_IP) (DetNP (DetQuant that_Quant NumSg))))) NoVoc
LangEng: what is that
LangCgg: ekyokiri ki
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron it_Pron) (UseComp (CompAdv (SubjS because_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAP (PositA clever_A))))))))))) NoVoc
LangEng: it was because John is clever
LangCgg: kyo kikaba [SubjS]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplVA become_VA (PositA clever_A))))) NoVoc
LangEng: John became clever
LangCgg: Yohana abire a
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (ProgrVP (UseV sleep_V))))) NoVoc
LangEng: John is sleeping
LangCgg: Yohana a[ProgrVP][ProgrVP]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (ExistNPAdv (DetCN (DetQuant IndefArt NumSg) (UseN cow_N)) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN forest_N)))))) NoVoc
LangEng: there is a cow in the forest
LangCgg: [ExistNPAdv] a[ExistNPAdv][ExistNPAdv]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredSCVP (EmbedQS (UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whatSg_IP (SlashVP (UsePron she_Pron) (SlashV2a do_V2))))) (UseComp (CompAP (PositA important_A)))))) NoVoc
LangEng: what she did is important
LangCgg: [PredSCVP] a[PredSCVP][PredSCVP]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredSCVP (EmbedS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))) (AdvVP (PassV2 see_V2) (PrepNP by8agent_Prep (DetNP every_Det)))))) NoVoc
LangEng: that she slept was seen by everything
LangCgg: [PredSCVP] a[PredSCVP][PredSCVP] [PredSCVP]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (UseComp (CompAdv here_Adv))))) NoVoc
LangEng: the man is here
LangCgg: omushaija aba hanu
Lang: PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN book_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a like_V2))))) NoVoc
LangEng: which book do you like
LangCgg:
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (PredetNP all_Predet (DetCN (DetQuant DefArt NumPl) (UseN boy_N))) (UseComp (CompAdv here_Adv))))) NoVoc
LangEng: all the boys are here
LangCgg: abojo boòna baba hanu
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (ComplSlash (Slash2V3 give_V3 (UsePron i_Pron)) (DetCN (DetQuant IndefArt NumSg) (UseN apple_N)))))) NoVoc
LangEng: she gave me an apple
LangCgg: uwe ahééreize nyowe apple
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (ExistNPAdv (DetCN (DetQuant IndefArt NumSg) (UseN cat_N)) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N)))))) NoVoc
LangEng: there is a cat in the house
LangCgg: [ExistNPAdv] a[ExistNPAdv][ExistNPAdv]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (ComplSlash (Slash2V3 give_V3 (UsePron i_Pron)) (DetCN (DetQuant IndefArt NumSg) (UseN apple_N)))))) NoVoc
LangEng: she gave me an apple
LangCgg: uwe ahééreize nyowe apple
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant IndefArt NumPl) (UseN boy_N)) (AdvVP (ProgrVP (UseV swim_V)) (SubjS when_Subj (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (UseN girl_N)) (UseV come_V)))))))) NoVoc
LangEng: boys were swimming when the girls came
LangCgg: abojo ba[ProgrVP][ProgrVP] [SubjS]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVS say_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV want_VV (UseV swim_V)))))))) NoVoc
LangEng: he says that you want to swim
LangCgg: uwe agiiwe oyendda kuoga
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a eat_V2) (UsePron it_Pron)))))) NoVoc
LangEng: I wanted to eat it
LangCgg: nyowe nkayendda kurya kyo
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompNP (PredetNP not_Predet (DetCN (DetQuant IndefArt NumSg) (UseN doctor_N)))))))) NoVoc
LangEng: John is not a doctor
LangCgg: Yohana aba [doctor_N] ti
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePN john_PN) (UseV laugh_V)))) NoVoc
LangEng: John doesn't laugh
LangCgg: Yohana tia[laugh_V][laugh_V]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant no_Quant NumPl) (UseN animal_N)))))) NoVoc
LangEng: John saw no animals
LangCgg: Yohana areebire enyamaishwa
Lang: PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumSg) (PossNP (UseN house_N) (DetCN (DetQuant DefArt NumSg) (UseN doctor_N))))) NoVoc
LangEng: the house of the doctor
LangCgg: enju wa[doctor_N]
Lang: PhrUtt NoPConj (UttImpSg PPos (ImpVP (ComplSlash (Slash2V3 send_V3 (DetCN (DetQuant DefArt NumPl) (UseN apple_N))) (DetCN (DetQuant DefArt NumPl) (UseN child_N))))) NoVoc
LangEng: send the apples to the children
LangCgg: tuma apple abaana
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN boy_N)) (has_age_VP (NumDigits (IDig D_6)))))) NoVoc
LangEng: the boy is 6 years old
LangCgg: omwojo a[has_age_VP][has_age_VP]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN science_N)) (SelfAdVVP (UseComp (CompAP (PositA important_A))))))) NoVoc
LangEng: the science is itself important
LangCgg: [science_N] a[SelfAdVVP][SelfAdVVP]
Lang: PhrUtt NoPConj (UttS (ExtAdvS today_Adv (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (UseV swim_V) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN sea_N)))))))) NoVoc
LangEng: today , I swam in the sea
LangCgg: [ExtAdvS]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (AdvVP (ComplVV must_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (UseN book_N)))) (PrepNP before_Prep (UsePN (weekdayPN monday_Weekday))))))) NoVoc
LangEng: you must read the book before Monday
LangCgg:
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a kill_V2) (UsePron he_Pron))))) NoVoc
LangEng: John killed him
LangCgg: Yohana aitire uwe
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (AdvVP (PassV2 kill_V2) (PrepNP by8agent_Prep (UsePN john_PN)))))) NoVoc
LangEng: he was killed by John
LangCgg: uwe a[PassV2][PassV2] [by8agent_Prep] Yohana
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a eat_V2) (DetCN (DetQuant IndefArt (NumCard (NumDigits (IDig D_3)))) (UseN sheep_N)))))) NoVoc
LangEng: John ate 3 sheep
LangCgg: Yohana aryire [sheep_N] 3
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a find_V2) (DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1 n4))))))) (UseN cat_N)))))) NoVoc
LangEng: John found forty cats
LangCgg: Yohana abonire enjangu ana
Lang: TExclMark (PhrUtt NoPConj (UttImpSg PPos (ImpVP (AdvVP (UseV go_V) (PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N)))))) NoVoc) TEmpty
LangEng: go to the house !
LangCgg: gyenda aha enju !
Lang: TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a love_V2) (DetCN (DetQuant IndefArt NumPl) (AdjCN (PositA red_A) (UseN apple_N))))))) NoVoc) TEmpty
LangEng: I love red apples .
LangCgg: nyowe nkûndapple eziríkutukura .
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompNP (DetCN (DetQuant IndefArt NumSg) (AdjCN (PositA clever_A) (UseN man_N)))))))) NoVoc
LangEng: John is a clever man
LangCgg: Yohana aba omushaija omu[clever_A]
Lang: PhrUtt NoPConj (UttImpSg PPos (ImpVP (AdvVP (UseV come_V) here_Adv))) (VocNP (DetCN (DetQuant IndefArt NumPl) (UseN boy_N)))
LangEng: come here , boys
LangCgg: ija hanu [VocNP]
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVS say_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV want_VV (UseV swim_V)))))))) NoVoc
LangEng: he says that you want to swim
LangCgg: uwe agiiwe oyendda kuoga
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (ComplSlash (SlashV2V beg_V2V (ComplSlash (SlashV2a find_V2) (DetCN (DetQuant (PossPron she_Pron) NumSg) (UseN dog_N)))) (UsePN john_PN))))) NoVoc
LangEng: she begged John to find her dog
LangCgg: uwe a[SlashV2V][SlashV2V] [SlashV2V] Yohana
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2A paint_V2A (PositA red_A)) (UsePron it_Pron))))) NoVoc
LangEng: I paint it red
LangCgg: nyowe n[SlashV2A][SlashV2A] kyo
Lang: PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (ComplVA become_VA (AdAP very_AdA (PositA beautiful_A)))))) NoVoc
LangEng: she becomes very beautiful
LangCgg: uwe aba

5
src/rukiga/file1.txt Normal file
View File

@@ -0,0 +1,5 @@
lines1
lines2
lines8
lines7
lines10

4
src/rukiga/file2.txt Normal file
View File

@@ -0,0 +1,4 @@
lines3
lines4
lines11
lines8

View File

@@ -0,0 +1,728 @@
AdAdv
AddAdvQVP
AdnCAdv
AdvAP
AdvIAdv
AdvIP
AdvQVP
AdvS
AdvSlash
BaseAP
BaseAdV
BaseAdv
BaseCN
BaseDAP
BaseIAdv
BaseNP
BaseRS
BaseS
CAdvAP
CleftAdv
CleftNP
ComparA
ComparAdvAdj
ComparAdvAdjS
ComplA
ComplSlashIP
ConjAP
ConjAdV
ConjAdv
ConjCN
ConjDet
ConjIAdv
ConjNP
ConjRS
ConjS
ConsAP
ConsAdV
ConsAdv
ConsCN
ConsDAP
ConsIAdv
ConsNP
ConsRS
ConsS
EmbedQS
EmbedS
EmbedVP
ExistIP
ExistIPAdv
ExistNP
ExistNPAdv
ExtAdvS
ExtAdvVP
FunRP
GenericCl
IdetQuant
ImpP
ImpPl
ImpersCl
InLanguage
InflectionA
InflectionA
InflectionAdv
InflectionN
InflectionN
InflectionN
InflectionPrep
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionVA
InflectionVQ
InflectionVS
InflectionVV
MarkupAP
MarkupAdv
MarkupCN
MarkupNP
MarkupPhr
MarkupS
MarkupText
MarkupUtt
MkDefinition
MkDefinitionEx
MkDocument
MkTag
NoDefinition
PConjConj
PassV
PositAdAAdj
PositAdvAdj
PredSCVP
PrepIP
ProgrVP
QuestQVP
ReflA
ReflVP
RelS
SSubjS
SelfAdVVP
SelfAdvVP
SelfNP
SentAP
SentCN
SlashPrep
SlashV
SlashV
SlashV
SlashV
SlashV
VNP
SlashVS
SubjS
UseA
UseSlash
VPSlashPrep
VocNP
Mark
above
Prep
active
passive
afrikaans
Language
airplane
already
Adv
although
Subj
amharic
Language
answer
apartment
april
Month
arabic
Language
art
as
CAdv
ashes
ask
at
most
AdN
august
Month
Mark
back
bank
bark
beautiful
because
Subj
before
Prep
beg
belly
blow
bone
boot
boss
both
and
DConj
bottle
of
CN
breast
breathe
broad
brother
brown
bulgarian
Language
burn
butter
by
agent
Prep
by
means
Prep
camera
cap
carpet
catalan
Language
ceiling
chair
cheese
chinese
Language
church
clever
coat
correct
country
cousin
cup
of
CN
danish
Language
dayMonthAdv
dayMonthYearAdv
day
day
Timeunit
dconcat
december
Month
die
dig
digits
num
digits
numeral
dirty
dn
dn
dn
dn
dn
dn
dn
doctor
door
dry
dull
during
Prep
dust
dutch
Language
ear
earth
easy
egg
eightHour
eighteenHour
either
or
DConj
elevenHour
empty
enemy
english
Language
estonian
Language
everybody
NP
everything
NP
except
Prep
eye
factory
fall
far
Adv
fat
feather
february
Month
few
short
of
fifteenHour
fight
fingernail
finnish
Language
fiveHour
float
floor
flow
fly
fog
foot
for
Prep
forest
forget
fourHour
fourteenHour
freeze
french
Language
friday
Weekday
fridge
fruit
full
fun
AV
garden
german
Language
glass
of
CN
glove
gold
grass
greek
Language
guts
Mark
Mark
hair
hand
harbour
has
age
VP
hat
hate
have
name
Cl
head
hear
heart
hebrew
Language
here
from
Adv
here
to
Adv
hill
hindi
Language
hit
hold
horn
hour
Timeunit
how
much
IAdv
how
far
QCl
how
old
QCl
hungry
VP
hunt
husband
Mark
ice
if
Subj
if
then
Conj
ill
VP
important
industry
intMonthday
intYear
iron
is
right
VP
is
wrong
VP
italian
Language
january
Month
japanese
Language
july
Month
june
Month
king
knee
know
lake
lamp
languageCN
languageNP
language
title
Utt
latin
Language
latvian
Language
laugh
leaf
learn
leather
leave
left
Ord
leg
less
CAdv
li
Mark
lie
like
listen
liver
long
lose
louse
love
maltese
Language
march
Month
married
married
Cl
may
Month
meat
minute
Timeunit
monday
Weekday
monthAdv
monthN
monthPN
monthYearAdv
month
Timeunit
moon
more
CAdv
mother
mountain
mouth
much
Det
units
AP
units
of
NP
name
narrow
nd
nd
nd
nd
nd
near
neck
nepali
Language
newspaper
night
nineHour
nineteenHour
no
Utt
nobody
NP
norwegian
Language
nose
nothing
NP
november
Month
num
digits
number
october
Month
oil
oneHour
open
Mark
paint
paper
part
Prep
peace
pen
persian
Language
person
planet
plastic
play
policeman
polish
Language
possess
Prep
priest
probable
AS
pull
punjabi
Language
push
put
queen
question
quite
Adv
radio
rain
rain
ready
VP
reason
religion
restaurant
right
Ord
road
rock
romanian
Language
roof
root
rope
rotten
round
rub
rubber
rule
russian
Language
salt
sand
saturday
Weekday
scared
VP
school
science
scratch
second
Timeunit
seed
seek
september
Month
sevenHour
seventeenHour
sew
sharp
sheep
shirt
shoe
shop
short
silver
sindhi
Language
sing
sister
sit
sixHour
sixteenHour
skin
sky
smell
smoke
smooth
snake
snow
sock
somebody
NP
something
NP
somewhere
Adv
song
spanish
Language
speak
spit
split
squeeze
stab
stand
steel
stick
stone
stop
stove
straight
student
stupid
suck
sun
sunday
Weekday
swahili
Language
swedish
Language
swell
switch
off
switch
on
table
Mark
table
tail
td
Mark
teacher
television
tenHour
thai
Language
there
from
Adv
there
to
Adv
there
Adv
they
Pron
thick
thin
think
thirsty
VP
thirteenHour
threeHour
through
Prep
throw
thursday
Weekday
tie
timeHour
timeHourMinute
timeunitAdv
tired
VP
today
Adv
tongue
tooth
tr
Mark
tuesday
Weekday
turkish
Language
turn
twelveHour
twentyFourHour
twentyHour
twentyOneHour
twentyThreeHour
twentyTwoHour
twoHour
ugly
ul
Mark
uncertain
university
urdu
Language
village
vomit
war
wash
watch
weather
adjCl
wednesday
Weekday
week
Timeunit
weekdayHabitualAdv
weekdayLastAdv
weekdayN
weekdayNextAdv
weekdayPN
weekdayPunctualAdv
wet
what
name
QCl
when
Subj
wide
wife
win
wind
window
wing
wipe
without
Prep
wonder
VQ
wood
worm
write
yearAdv
year
year
Timeunit
yes
Utt
youPol
Pron

View File

@@ -0,0 +1,874 @@
AAnter : Ant ;
ASimul : Ant ;
AdAP : AdA -> AP -> AP ;
AdAdv : AdA -> Adv -> Adv ;
AdNum : AdN -> Card -> Card ;
AdVVP : AdV -> VP -> VP ;
AdVVPSlash : AdV -> VPSlash -> VPSlash ;
AddAdvQVP : QVP -> IAdv -> QVP ;
AdjCN : AP -> CN -> CN ;
AdjDAP : DAP -> AP -> DAP ;
AdjOrd : Ord -> AP ;
AdnCAdv : CAdv -> AdN ;
AdvAP : AP -> Adv -> AP ;
AdvCN : CN -> Adv -> CN ;
AdvIAdv : IAdv -> Adv -> IAdv ;
AdvIP : IP -> Adv -> IP ;
AdvNP : NP -> Adv -> NP ;
AdvQVP : VP -> IAdv -> QVP ;
AdvS : Adv -> S -> S ;
AdvSlash : ClSlash -> Adv -> ClSlash ;
AdvVP : VP -> Adv -> VP ;
AdvVPSlash : VPSlash -> Adv -> VPSlash ;
ApposCN : CN -> NP -> CN ;
BaseAP : AP -> AP -> ListAP ;
BaseAdV : AdV -> AdV -> ListAdV ;
BaseAdv : Adv -> Adv -> ListAdv ;
BaseCN : CN -> CN -> ListCN ;
BaseDAP : DAP -> DAP -> ListDAP ;
BaseIAdv : IAdv -> IAdv -> ListIAdv ;
BaseNP : NP -> NP -> ListNP ;
BaseRS : RS -> RS -> ListRS ;
BaseS : S -> S -> ListS ;
CAdvAP : CAdv -> AP -> NP -> AP ;
CleftAdv : Adv -> S -> Cl ;
CleftNP : NP -> RS -> Cl ;
CompAP : AP -> Comp ;
CompAdv : Adv -> Comp ;
CompCN : CN -> Comp ;
CompIAdv : IAdv -> IComp ;
CompIP : IP -> IComp ;
CompNP : NP -> Comp ;
ComparA : A -> NP -> AP ;
ComparAdvAdj : CAdv -> A -> NP -> Adv ;
ComparAdvAdjS : CAdv -> A -> S -> Adv ;
ComplA2 : A2 -> NP -> AP ;
ComplN2 : N2 -> NP -> CN ;
ComplN3 : N3 -> NP -> N2 ;
ComplSlash : VPSlash -> NP -> VP ;
ComplSlashIP : VPSlash -> IP -> QVP ;
ComplVA : VA -> AP -> VP ;
ComplVQ : VQ -> QS -> VP ;
ComplVS : VS -> S -> VP ;
ComplVV : VV -> VP -> VP ;
ConjAP : Conj -> ListAP -> AP ;
ConjAdV : Conj -> ListAdV -> AdV ;
ConjAdv : Conj -> ListAdv -> Adv ;
ConjCN : Conj -> ListCN -> CN ;
ConjDet : Conj -> ListDAP -> Det ;
ConjIAdv : Conj -> ListIAdv -> IAdv ;
ConjNP : Conj -> ListNP -> NP ;
ConjRS : Conj -> ListRS -> RS ;
ConjS : Conj -> ListS -> S ;
ConsAP : AP -> ListAP -> ListAP ;
ConsAdV : AdV -> ListAdV -> ListAdV ;
ConsAdv : Adv -> ListAdv -> ListAdv ;
ConsCN : CN -> ListCN -> ListCN ;
ConsDAP : DAP -> ListDAP -> ListDAP ;
ConsIAdv : IAdv -> ListIAdv -> ListIAdv ;
ConsNP : NP -> ListNP -> ListNP ;
ConsRS : RS -> ListRS -> ListRS ;
ConsS : S -> ListS -> ListS ;
CountNP : Det -> NP -> NP ;
D_0 : Dig ;
D_1 : Dig ;
D_2 : Dig ;
D_3 : Dig ;
D_4 : Dig ;
D_5 : Dig ;
D_6 : Dig ;
D_7 : Dig ;
D_8 : Dig ;
D_9 : Dig ;
DefArt : Quant ;
DetCN : Det -> CN -> NP ;
DetDAP : Det -> DAP ;
DetNP : Det -> NP ;
DetQuant : Quant -> Num -> Det ;
DetQuantOrd : Quant -> Num -> Ord -> Det ;
EmbedQS : QS -> SC ;
EmbedS : S -> SC ;
EmbedVP : VP -> SC ;
ExistIP : IP -> QCl ;
ExistIPAdv : IP -> Adv -> QCl ;
ExistNP : NP -> Cl ;
ExistNPAdv : NP -> Adv -> Cl ;
ExtAdvNP : NP -> Adv -> NP ;
ExtAdvS : Adv -> S -> S ;
ExtAdvVP : VP -> Adv -> VP ;
FunRP : Prep -> NP -> RP -> RP ;
GenericCl : VP -> Cl ;
IDig : Dig -> Digits ;
IIDig : Dig -> Digits -> Digits ;
IdRP : RP ;
IdetCN : IDet -> CN -> IP ;
IdetIP : IDet -> IP ;
IdetQuant : IQuant -> Num -> IDet ;
ImpP3 : NP -> VP -> Utt ;
ImpPl1 : VP -> Utt ;
ImpVP : VP -> Imp ;
ImpersCl : VP -> Cl ;
InLanguage : Language -> Adv ;
IndefArt : Quant ;
InflectionA : A -> Inflection ;
InflectionA2 : A2 -> Inflection ;
InflectionAdv : Adv -> Inflection ;
InflectionN : N -> Inflection ;
InflectionN2 : N2 -> Inflection ;
InflectionN3 : N3 -> Inflection ;
InflectionPrep : Prep -> Inflection ;
InflectionV : V -> Inflection ;
InflectionV2 : V2 -> Inflection ;
InflectionV2A : V2A -> Inflection ;
InflectionV2Q : V2Q -> Inflection ;
InflectionV2S : V2S -> Inflection ;
InflectionV2V : V2V -> Inflection ;
InflectionV3 : V3 -> Inflection ;
InflectionVA : VA -> Inflection ;
InflectionVQ : VQ -> Inflection ;
InflectionVS : VS -> Inflection ;
InflectionVV : VV -> Inflection ;
MarkupAP : Mark -> AP -> AP ;
MarkupAdv : Mark -> Adv -> Adv ;
MarkupCN : Mark -> CN -> CN ;
MarkupNP : Mark -> NP -> NP ;
MarkupPhr : Mark -> Phr -> Phr ;
MarkupS : Mark -> S -> S ;
MarkupText : Mark -> Text -> Text ;
MarkupUtt : Mark -> Utt -> Utt ;
MassNP : CN -> NP ;
MkDefinition : String -> String -> Definition ;
MkDefinitionEx : String -> String -> String -> Definition ;
MkDocument : Definition -> Inflection -> String -> Document ;
MkTag : Inflection -> Tag ;
NoDefinition : String -> Definition ;
NoPConj : PConj ;
NoVoc : Voc ;
NumCard : Card -> Num ;
NumDigits : Digits -> Card ;
NumNumeral : Numeral -> Card ;
NumPl : Num ;
NumSg : Num ;
OrdDigits : Digits -> Ord ;
OrdNumeral : Numeral -> Ord ;
OrdNumeralSuperl : Numeral -> A -> Ord ;
OrdSuperl : A -> Ord ;
PConjConj : Conj -> PConj ;
PNeg : Pol ;
PPartNP : NP -> V2 -> NP ;
PPos : Pol ;
PartNP : CN -> NP -> CN ;
PassV2 : V2 -> VP ;
PhrUtt : PConj -> Utt -> Voc -> Phr ;
PositA : A -> AP ;
PositAdAAdj : A -> AdA ;
PositAdvAdj : A -> Adv ;
PossNP : CN -> NP -> CN ;
PossPron : Pron -> Quant ;
PredSCVP : SC -> VP -> Cl ;
PredVP : NP -> VP -> Cl ;
PredetNP : Predet -> NP -> NP ;
PrepIP : Prep -> IP -> IAdv ;
PrepNP : Prep -> NP -> Adv ;
ProgrVP : VP -> VP ;
QuestCl : Cl -> QCl ;
QuestIAdv : IAdv -> Cl -> QCl ;
QuestIComp : IComp -> NP -> QCl ;
QuestQVP : IP -> QVP -> QCl ;
QuestSlash : IP -> ClSlash -> QCl ;
QuestVP : IP -> VP -> QCl ;
ReflA2 : A2 -> AP ;
ReflVP : VPSlash -> VP ;
RelCN : CN -> RS -> CN ;
RelCl : Cl -> RCl ;
RelNP : NP -> RS -> NP ;
RelS : S -> RS -> S ;
RelSlash : RP -> ClSlash -> RCl ;
RelVP : RP -> VP -> RCl ;
SSubjS : S -> Subj -> S -> S ;
SelfAdVVP : VP -> VP ;
SelfAdvVP : VP -> VP ;
SelfNP : NP -> NP ;
SentAP : AP -> SC -> AP ;
SentCN : CN -> SC -> CN ;
Slash2V3 : V3 -> NP -> VPSlash ;
Slash3V3 : V3 -> NP -> VPSlash ;
SlashPrep : Cl -> Prep -> ClSlash ;
SlashV2A : V2A -> AP -> VPSlash ;
SlashV2Q : V2Q -> QS -> VPSlash ;
SlashV2S : V2S -> S -> VPSlash ;
SlashV2V : V2V -> VP -> VPSlash ;
SlashV2VNP : V2V -> NP -> VPSlash -> VPSlash ;
SlashV2a : V2 -> VPSlash ;
SlashVP : NP -> VPSlash -> ClSlash ;
SlashVS : NP -> VS -> SSlash -> ClSlash ;
SlashVV : VV -> VPSlash -> VPSlash ;
SubjS : Subj -> S -> Adv ;
TCond : Tense ;
TEmpty : Text ;
TExclMark : Phr -> Text -> Text ;
TFullStop : Phr -> Text -> Text ;
TFut : Tense ;
TPast : Tense ;
TPres : Tense ;
TQuestMark : Phr -> Text -> Text ;
TTAnt : Tense -> Ant -> Temp ;
Use2N3 : N3 -> N2 ;
Use3N3 : N3 -> N2 ;
UseA2 : A2 -> AP ;
UseCl : Temp -> Pol -> Cl -> S ;
UseComp : Comp -> VP ;
UseComparA : A -> AP ;
UseCopula : VP ;
UseN : N -> CN ;
UseN2 : N2 -> CN ;
UsePN : PN -> NP ;
UsePron : Pron -> NP ;
UseQCl : Temp -> Pol -> QCl -> QS ;
UseRCl : Temp -> Pol -> RCl -> RS ;
UseSlash : Temp -> Pol -> ClSlash -> SSlash ;
UseV : V -> VP ;
UttAP : AP -> Utt ;
UttAdv : Adv -> Utt ;
UttCN : CN -> Utt ;
UttCard : Card -> Utt ;
UttIAdv : IAdv -> Utt ;
UttIP : IP -> Utt ;
UttImpPl : Pol -> Imp -> Utt ;
UttImpPol : Pol -> Imp -> Utt ;
UttImpSg : Pol -> Imp -> Utt ;
UttInterj : Interj -> Utt ;
UttNP : NP -> Utt ;
UttQS : QS -> Utt ;
UttS : S -> Utt ;
UttVP : VP -> Utt ;
VPSlashPrep : VP -> Prep -> VPSlash ;
VocNP : NP -> Voc ;
a_Mark : String -> Mark ;
above_Prep : Prep ;
active2passive : Cl -> Cl ;
add_V3 : V3 ;
afrikaans_Language : Language ;
after_Prep : Prep ;
airplane_N : N ;
alas_Interj : Interj ;
all_Predet : Predet ;
almost_AdA : AdA ;
almost_AdN : AdN ;
already_Adv : Adv ;
although_Subj : Subj ;
always_AdV : AdV ;
amharic_Language : Language ;
and_Conj : Conj ;
animal_N : N ;
answer_V2S : V2S ;
apartment_N : N ;
apple_N : N ;
april_Month : Month ;
arabic_Language : Language ;
art_N : N ;
as_CAdv : CAdv ;
ashes_N : N ;
ask_V2Q : V2Q ;
at_least_AdN : AdN ;
at_most_AdN : AdN ;
august_Month : Month ;
b_Mark : Mark ;
baby_N : N ;
back_N : N ;
bad_A : A ;
bank_N : N ;
bark_N : N ;
beautiful_A : A ;
because_Subj : Subj ;
become_VA : VA ;
beer_N : N ;
before_Prep : Prep ;
beg_V2V : V2V ;
behind_Prep : Prep ;
belly_N : N ;
between_Prep : Prep ;
big_A : A ;
bike_N : N ;
bird_N : N ;
bite_V2 : V2 ;
black_A : A ;
blood_N : N ;
blow_V : V ;
blue_A : A ;
boat_N : N ;
bone_N : N ;
book_N : N ;
boot_N : N ;
boss_N : N ;
both7and_DConj : Conj ;
bottle_of_CN : NP -> CN ;
boy_N : N ;
bread_N : N ;
break_V2 : V2 ;
breast_N : N ;
breathe_V : V ;
broad_A : A ;
brother_N2 : N2 ;
brown_A : A ;
bulgarian_Language : Language ;
burn_V : V ;
but_PConj : PConj ;
butter_N : N ;
buy_V2 : V2 ;
by8agent_Prep : Prep ;
by8means_Prep : Prep ;
camera_N : N ;
can8know_VV : VV ;
can_VV : VV ;
cap_N : N ;
car_N : N ;
carpet_N : N ;
cat_N : N ;
catalan_Language : Language ;
ceiling_N : N ;
chair_N : N ;
cheese_N : N ;
child_N : N ;
chinese_Language : Language ;
church_N : N ;
city_N : N ;
clean_A : A ;
clever_A : A ;
close_V2 : V2 ;
cloud_N : N ;
coat_N : N ;
cold_A : A ;
come_V : V ;
computer_N : N ;
correct_A : A ;
count_V2 : V2 ;
country_N : N ;
cousin_N : N ;
cow_N : N ;
cup_of_CN : NP -> CN ;
cut_V2 : V2 ;
danish_Language : Language ;
dayMonthAdv : Monthday -> Month -> Adv ;
dayMonthYearAdv : Monthday -> Month -> Year -> Adv ;
day_N : N ;
day_Timeunit : Timeunit ;
dconcat : Digits -> Digits -> Digits ;
december_Month : Month ;
die_V : V ;
dig_V : V ;
digits2num : Digits -> Numeral ;
digits2numeral : Card -> Card ;
dirty_A : A ;
distance_N3 : N3 ;
dn : Dig -> Digit ;
dn10 : Dig -> Sub10 ;
dn100 : Dig -> Dig -> Sub100 ;
dn1000 : Dig -> Dig -> Dig -> Sub1000 ;
dn1000000a : Dig -> Dig -> Dig -> Dig -> Sub1000000 ;
dn1000000b : Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 ;
dn1000000c : Dig -> Dig -> Dig -> Dig -> Dig -> Dig -> Sub1000000 ;
do_V2 : V2 ;
doctor_N : N ;
dog_N : N ;
door_N : N ;
drink_V2 : V2 ;
dry_A : A ;
dull_A : A ;
during_Prep : Prep ;
dust_N : N ;
dutch_Language : Language ;
ear_N : N ;
earth_N : N ;
easy_A2V : A2 ;
eat_V2 : V2 ;
egg_N : N ;
eightHour : Hour ;
eighteenHour : Hour ;
either7or_DConj : Conj ;
elevenHour : Hour ;
empty_A : A ;
enemy_N : N ;
english_Language : Language ;
estonian_Language : Language ;
every_Det : Det ;
everybody_NP : NP ;
everything_NP : NP ;
everywhere_Adv : Adv ;
except_Prep : Prep ;
eye_N : N ;
factory_N : N ;
fall_V : V ;
far_Adv : Adv ;
fat_N : N ;
father_N2 : N2 ;
fear_V2 : V2 ;
fear_VS : VS ;
feather_N : N ;
february_Month : Month ;
few_Det : Det ;
few_X_short_of_Y : NP -> CN -> CN -> S ;
fifteenHour : Hour ;
fight_V2 : V2 ;
find_V2 : V2 ;
fingernail_N : N ;
finnish_Language : Language ;
fire_N : N ;
fish_N : N ;
fiveHour : Hour ;
float_V : V ;
floor_N : N ;
flow_V : V ;
flower_N : N ;
fly_V : V ;
fog_N : N ;
foot_N : N ;
for_Prep : Prep ;
forest_N : N ;
forget_V2 : V2 ;
fourHour : Hour ;
fourteenHour : Hour ;
freeze_V : V ;
french_Language : Language ;
friday_Weekday : Weekday ;
fridge_N : N ;
friend_N : N ;
from_Prep : Prep ;
fruit_N : N ;
full_A : A ;
fun_AV : A ;
garden_N : N ;
german_Language : Language ;
girl_N : N ;
give_V3 : V3 ;
glass_of_CN : NP -> CN ;
glove_N : N ;
go_V : V ;
gold_N : N ;
good_A : A ;
grammar_N : N ;
grass_N : N ;
greek_Language : Language ;
green_A : A ;
guts_N : N ;
h1_Mark : Mark ;
h2_Mark : Mark ;
hair_N : N ;
hand_N : N ;
harbour_N : N ;
has_age_VP : Card -> VP ;
hat_N : N ;
hate_V2 : V2 ;
have_V2 : V2 ;
have_name_Cl : NP -> NP -> Cl ;
he_Pron : Pron ;
head_N : N ;
hear_V2 : V2 ;
heart_N : N ;
heavy_A : A ;
hebrew_Language : Language ;
here7from_Adv : Adv ;
here7to_Adv : Adv ;
here_Adv : Adv ;
hill_N : N ;
hindi_Language : Language ;
hit_V2 : V2 ;
hold_V2 : V2 ;
hope_VS : VS ;
horn_N : N ;
horse_N : N ;
hot_A : A ;
hour_Timeunit : Timeunit ;
house_N : N ;
how8many_IDet : IDet ;
how8much_IAdv : IAdv ;
how_IAdv : IAdv ;
how_far_QCl : NP -> QCl ;
how_old_QCl : NP -> QCl ;
hungry_VP : VP ;
hunt_V2 : V2 ;
husband_N : N ;
i_Mark : Mark ;
i_Pron : Pron ;
ice_N : N ;
if_Subj : Subj ;
if_then_Conj : Conj ;
ill_VP : VP ;
important_A : A ;
in8front_Prep : Prep ;
in_Prep : Prep ;
industry_N : N ;
intMonthday : Int -> Monthday ;
intYear : Int -> Year ;
iron_N : N ;
is_right_VP : VP ;
is_wrong_VP : VP ;
it_Pron : Pron ;
italian_Language : Language ;
january_Month : Month ;
japanese_Language : Language ;
john_PN : PN ;
july_Month : Month ;
jump_V : V ;
june_Month : Month ;
kill_V2 : V2 ;
king_N : N ;
knee_N : N ;
know_V2 : V2 ;
know_VQ : VQ ;
know_VS : VS ;
lake_N : N ;
lamp_N : N ;
languageCN : Language -> CN ;
languageNP : Language -> NP ;
language_N : N ;
language_title_Utt : Utt ;
latin_Language : Language ;
latvian_Language : Language ;
laugh_V : V ;
leaf_N : N ;
learn_V2 : V2 ;
leather_N : N ;
leave_V2 : V2 ;
left_Ord : Ord ;
leg_N : N ;
less_CAdv : CAdv ;
li_Mark : Mark ;
lie_V : V ;
like_V2 : V2 ;
listen_V2 : V2 ;
live_V : V ;
liver_N : N ;
long_A : A ;
lose_V2 : V2 ;
louse_N : N ;
love_N : N ;
love_V2 : V2 ;
maltese_Language : Language ;
man_N : N ;
many_Det : Det ;
march_Month : Month ;
married_A2 : A2 ;
married_Cl : NP -> NP -> Cl ;
may_Month : Month ;
meat_N : N ;
milk_N : N ;
minute_Timeunit : Timeunit ;
monday_Weekday : Weekday ;
monthAdv : Month -> Adv ;
monthN : Month -> N ;
monthPN : Month -> PN ;
monthYearAdv : Month -> Year -> Adv ;
month_Timeunit : Timeunit ;
moon_N : N ;
more_CAdv : CAdv ;
most_Predet : Predet ;
mother_N2 : N2 ;
mountain_N : N ;
mouth_N : N ;
much_Det : Det ;
music_N : N ;
must_VV : VV ;
n2 : Digit ;
n3 : Digit ;
n4 : Digit ;
n5 : Digit ;
n6 : Digit ;
n7 : Digit ;
n8 : Digit ;
n9 : Digit ;
n_units_AP : Card -> CN -> A -> AP ;
n_units_of_NP : Card -> CN -> NP -> NP ;
name_N : N ;
narrow_A : A ;
nd : Digit -> Dig ;
nd10 : Sub10 -> Digits ;
nd100 : Sub100 -> Digits ;
nd1000 : Sub1000 -> Digits ;
nd1000000 : Sub1000000 -> Digits ;
near_A : A ;
neck_N : N ;
nepali_Language : Language ;
new_A : A ;
newspaper_N : N ;
night_N : N ;
nineHour : Hour ;
nineteenHour : Hour ;
no_Quant : Quant ;
no_Utt : Utt ;
nobody_NP : NP ;
norwegian_Language : Language ;
nose_N : N ;
not_Predet : Predet ;
nothing_NP : NP ;
november_Month : Month ;
now_Adv : Adv ;
num : Sub1000000 -> Numeral ;
num2digits : Numeral -> Digits ;
number_N : N ;
october_Month : Month ;
oil_N : N ;
old_A : A ;
on_Prep : Prep ;
oneHour : Hour ;
only_Predet : Predet ;
open_V2 : V2 ;
or_Conj : Conj ;
otherwise_PConj : PConj ;
p_Mark : Mark ;
paint_V2A : V2A ;
paper_N : N ;
paris_PN : PN ;
part_Prep : Prep ;
peace_N : N ;
pen_N : N ;
persian_Language : Language ;
person_N : N ;
planet_N : N ;
plastic_N : N ;
play_V : V ;
play_V2 : V2 ;
please_Voc : Voc ;
policeman_N : N ;
polish_Language : Language ;
possess_Prep : Prep ;
pot0 : Digit -> Sub10 ;
pot01 : Sub10 ;
pot0as1 : Sub10 -> Sub100 ;
pot1 : Digit -> Sub100 ;
pot110 : Sub100 ;
pot111 : Sub100 ;
pot1as2 : Sub100 -> Sub1000 ;
pot1plus : Digit -> Sub10 -> Sub100 ;
pot1to19 : Digit -> Sub100 ;
pot2 : Sub10 -> Sub1000 ;
pot2as3 : Sub1000 -> Sub1000000 ;
pot2plus : Sub10 -> Sub100 -> Sub1000 ;
pot3 : Sub1000 -> Sub1000000 ;
pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ;
priest_N : N ;
probable_AS : A ;
pull_V2 : V2 ;
punjabi_Language : Language ;
push_V2 : V2 ;
put_V2 : V2 ;
queen_N : N ;
question_N : N ;
quite_Adv : AdA ;
radio_N : N ;
rain_N : N ;
rain_V0 : V ;
read_V2 : V2 ;
ready_A : A ;
ready_VP : VP ;
reason_N : N ;
red_A : A ;
religion_N : N ;
restaurant_N : N ;
right_Ord : Ord ;
river_N : N ;
road_N : N ;
rock_N : N ;
romanian_Language : Language ;
roof_N : N ;
root_N : N ;
rope_N : N ;
rotten_A : A ;
round_A : A ;
rub_V2 : V2 ;
rubber_N : N ;
rule_N : N ;
run_V : V ;
russian_Language : Language ;
salt_N : N ;
sand_N : N ;
saturday_Weekday : Weekday ;
say_VS : VS ;
scared_VP : VP ;
school_N : N ;
science_N : N ;
scratch_V2 : V2 ;
sea_N : N ;
second_Timeunit : Timeunit ;
see_V2 : V2 ;
seed_N : N ;
seek_V2 : V2 ;
sell_V3 : V3 ;
send_V3 : V3 ;
september_Month : Month ;
sevenHour : Hour ;
seventeenHour : Hour ;
sew_V : V ;
sharp_A : A ;
she_Pron : Pron ;
sheep_N : N ;
ship_N : N ;
shirt_N : N ;
shoe_N : N ;
shop_N : N ;
short_A : A ;
silver_N : N ;
sindhi_Language : Language ;
sing_V : V ;
sister_N : N ;
sit_V : V ;
sixHour : Hour ;
sixteenHour : Hour ;
skin_N : N ;
sky_N : N ;
sleep_V : V ;
small_A : A ;
smell_V : V ;
smoke_N : N ;
smooth_A : A ;
snake_N : N ;
snow_N : N ;
so_AdA : AdA ;
sock_N : N ;
somePl_Det : Det ;
someSg_Det : Det ;
somebody_NP : NP ;
something_NP : NP ;
somewhere_Adv : Adv ;
song_N : N ;
spanish_Language : Language ;
speak_V2 : V2 ;
spit_V : V ;
split_V2 : V2 ;
squeeze_V2 : V2 ;
stab_V2 : V2 ;
stand_V : V ;
star_N : N ;
steel_N : N ;
stick_N : N ;
stone_N : N ;
stop_V : V ;
stove_N : N ;
straight_A : A ;
student_N : N ;
stupid_A : A ;
suck_V2 : V2 ;
sun_N : N ;
sunday_Weekday : Weekday ;
swahili_Language : Language ;
swedish_Language : Language ;
swell_V : V ;
swim_V : V ;
switch8off_V2 : V2 ;
switch8on_V2 : V2 ;
table_Mark : Mark ;
table_N : N ;
tail_N : N ;
talk_V3 : V3 ;
td_Mark : Mark ;
teach_V2 : V2 ;
teacher_N : N ;
television_N : N ;
tenHour : Hour ;
thai_Language : Language ;
that_Quant : Quant ;
that_Subj : Subj ;
there7from_Adv : Adv ;
there7to_Adv : Adv ;
there_Adv : Adv ;
therefore_PConj : PConj ;
they_Pron : Pron ;
thick_A : A ;
thin_A : A ;
think_V : V ;
thirsty_VP : VP ;
thirteenHour : Hour ;
this_Quant : Quant ;
threeHour : Hour ;
through_Prep : Prep ;
throw_V2 : V2 ;
thursday_Weekday : Weekday ;
tie_V2 : V2 ;
timeHour : Hour -> Adv ;
timeHourMinute : Hour -> Card -> Adv ;
timeunitAdv : Card -> Timeunit -> Adv ;
tired_VP : VP ;
to_Prep : Prep ;
today_Adv : Adv ;
tongue_N : N ;
too_AdA : AdA ;
tooth_N : N ;
tr_Mark : Mark ;
train_N : N ;
travel_V : V ;
tree_N : N ;
tuesday_Weekday : Weekday ;
turkish_Language : Language ;
turn_V : V ;
twelveHour : Hour ;
twentyFourHour : Hour ;
twentyHour : Hour ;
twentyOneHour : Hour ;
twentyThreeHour : Hour ;
twentyTwoHour : Hour ;
twoHour : Hour ;
ugly_A : A ;
ul_Mark : Mark ;
uncertain_A : A ;
under_Prep : Prep ;
understand_V2 : V2 ;
university_N : N ;
urdu_Language : Language ;
very_AdA : AdA ;
village_N : N ;
vomit_V : V ;
wait_V2 : V2 ;
walk_V : V ;
want_VV : VV ;
war_N : N ;
warm_A : A ;
wash_V2 : V2 ;
watch_V2 : V2 ;
water_N : N ;
we_Pron : Pron ;
weather_adjCl : AP -> Cl ;
wednesday_Weekday : Weekday ;
week_Timeunit : Timeunit ;
weekdayHabitualAdv : Weekday -> Adv ;
weekdayLastAdv : Weekday -> Adv ;
weekdayN : Weekday -> N ;
weekdayNextAdv : Weekday -> Adv ;
weekdayPN : Weekday -> PN ;
weekdayPunctualAdv : Weekday -> Adv ;
wet_A : A ;
whatPl_IP : IP ;
whatSg_IP : IP ;
what_name_QCl : NP -> QCl ;
when_IAdv : IAdv ;
when_Subj : Subj ;
where_IAdv : IAdv ;
which_IQuant : IQuant ;
white_A : A ;
whoPl_IP : IP ;
whoSg_IP : IP ;
why_IAdv : IAdv ;
wide_A : A ;
wife_N : N ;
win_V2 : V2 ;
wind_N : N ;
window_N : N ;
wine_N : N ;
wing_N : N ;
wipe_V2 : V2 ;
with_Prep : Prep ;
without_Prep : Prep ;
woman_N : N ;
wonder_VQ : VQ ;
wood_N : N ;
worm_N : N ;
write_V2 : V2 ;
yearAdv : Year -> Adv ;
year_N : N ;
year_Timeunit : Timeunit ;
yellow_A : A ;
yes_Utt : Utt ;
youPl_Pron : Pron ;
youPol_Pron : Pron ;
youSg_Pron : Pron ;
young_A : A ;

View File

@@ -0,0 +1,126 @@
AAnter : Ant ;
CompIP : IP -> IComp ;
D_0 : Dig ;
D_1 : Dig ;
D_2 : Dig ;
D_3 : Dig ;
D_4 : Dig ;
D_5 : Dig ;
D_6 : Dig ;
D_7 : Dig ;
D_8 : Dig ;
D_9 : Dig ;
DefArt : Quant ;
IDig : Dig -> Digits ;
IIDig : Dig -> Digits -> Digits ;
IdRP : RP ;
NoVoc : Voc ;
NumCard : Card -> Num ;
NumDigits : Digits -> Card ;
NumNumeral : Numeral -> Card ;
NumPl : Num ;
NumSg : Num ;
PNeg : Pol ;
PPos : Pol ;
TEmpty : Text ;
TFut : Tense ;
TPres : Tense ;
TTAnt : Tense -> Ant -> Temp ;
Use2N3 : N3 -> N2 ;
Use3N3 : N3 -> N2 ;
add_V3 : V3 ;
all_Predet : Predet ;
always_AdV : AdV ;
animal_N : N ;
apple_N : N ;
bad_A : A ;
become_VA : VA ;
beer_N : N ;
big_A : A ;
bike_N : N ;
bird_N : N ;
bite_V2 : V2 ;
black_A : A ;
blood_N : N ;
blue_A : A ;
book_N : N ;
boy_N : N ;
bread_N : N ;
break_V2 : V2 ;
buy_V2 : V2 ;
can_VV : VV ;
car_N : N ;
child_N : N ;
city_N : N ;
clean_A : A ;
cloud_N : N ;
come_V : V ;
count_V2 : V2 ;
cow_N : N ;
cut_V2 : V2 ;
do_V2 : V2 ;
dog_N : N ;
drink_V2 : V2 ;
fire_N : N ;
girl_N : N ;
give_V3 : V3 ;
go_V : V ;
good_A : A ;
grammar_N : N ;
green_A : A ;
heavy_A : A ;
hope_VS : VS ;
hot_A : A ;
house_N : N ;
john_PN : PN ;
jump_V : V ;
man_N : N ;
milk_N : N ;
music_N : N ;
must_VV : VV ;
n2 : Digit ;
n3 : Digit ;
n4 : Digit ;
n5 : Digit ;
n6 : Digit ;
n7 : Digit ;
n8 : Digit ;
n9 : Digit ;
new_A : A ;
pot0 : Digit -> Sub10 ;
pot01 : Sub10 ;
pot1 : Digit -> Sub100 ;
pot110 : Sub100 ;
pot111 : Sub100 ;
pot1plus : Digit -> Sub10 -> Sub100 ;
pot2 : Sub10 -> Sub1000 ;
pot2plus : Sub10 -> Sub100 -> Sub1000 ;
pot3 : Sub1000 -> Sub1000000 ;
pot3plus : Sub1000 -> Sub1000 -> Sub1000000 ;
read_V2 : V2 ;
red_A : A ;
river_N : N ;
run_V : V ;
say_VS : VS ;
sea_N : N ;
see_V2 : V2 ;
sell_V3 : V3 ;
ship_N : N ;
sleep_V : V ;
small_A : A ;
so_AdA : AdA ;
star_N : N ;
swim_V : V ;
talk_V3 : V3 ;
teach_V2 : V2 ;
very_AdA : AdA ;
wait_V2 : V2 ;
walk_V : V ;
want_VV : VV ;
which_IQuant : IQuant ;
whoPl_IP : IP ;
whoSg_IP : IP ;
woman_N : N ;
yellow_A : A ;
young_A : A ;

View File

@@ -0,0 +1,275 @@
UseN
39378 6.3 DetQuant
38873 6.2 DetCN
29375 4.7 NoPConj
29369 4.7 NoVoc
28887 4.6 PhrUtt
27952 4.4 NumSg
22149 3.5 PPos
21526 3.4 PositA
20558 3.3 ASimul
19022 3.0 AdjCN
18560 2.9 TTAnt
18234 2.9 IndefArt
16059 2.5 PredVP
16020 2.5 UseCl
15435 2.5 DefArt
14046 2.2 UttS
12068 1.9 UttNP
11828 1.9 TPast
11690 1.9 SlashV2a
11318 1.8 PrepNP
11297 1.8 NumPl
11278 1.8 MassNP
10415 1.7 AdvVP
10084 1.6 ComplSlash
8461 1.3 UsePron
6382 1.0 TPres
5978 0.9 he_Pron
5661 0.9 UseV
5122 0.8 PossNP
4125 0.7 PossPron
4106 0.7 PlusChunk
3599 0.6 UseComp
3230 0.5 AdvNP
2624 0.4 CompoundN
2347 0.4 she_Pron
2057 0.3 OneChunk
2057 0.3 ChunkPhr
1894 0.3 ImpVP
1872 0.3 UttImpSg
1712 0.3 CompAP
1553 0.2 CompNP
1516 0.2 ComplVV
1474 0.2 i_Pron
1470 0.2 MkVPS
1274 0.2 they_Pron
1143 0.2 S_Chunk
1133 0.2 PassVPSlash
1084 0.2 NumCard
955 0.2 DetDAP
923 0.1 this_Quant
918 0.1 ConjNP
918 0.1 BaseNP
915 0.1 we_Pron
827 0.1 SubjS
804 0.1 VPS_Chunk
739 0.1 UseDAP
702 0.1 it_Pron
679 0.1 AdvAP
675 0.1 youSgFem_Pron
644 0.1 num
643 0.1 PNeg
640 0.1 pot3as4
640 0.1 pot1as2
639 0.1 pot2as3
610 0.1 NP_Acc_Chunk
594 0.1 AP_Chunk
593 0.1 pot0as1
583 0.1 PositAdvAdj
580 0.1 ReflPoss
569 0.1 AdAP
565 0.1 ReflVPSlash
560 0.1 InOrderToVP
539 0.1 GerundNP
523 0.1 NumNumeral
496 0.1 PhrUttMark
460 0.1 UseQCl
439 0.1 AdVVP
435 0.1 AdvS
430 0.1 ProgrVP
422 0.1 ApposCN
419 0.1 pot0
394 0.1 ConjAP
394 0.1 BaseAP
375 0.1 PredVPS
372 0.1 AAnter
360 0.1 PresPartAP
355 0.1 PredetNP
347 0.1 UseRCl
345 0.1 Adv_Chunk
343 0.1 UttAPMasc
334 0.1 CompAdv
325 0.1 UttQS
323 0.1 RelCN
320 0.1 IdRP
317 0.1 PositAdAAdj
307 0.0 QuestMark
294 0.0 Det_Chunk
292 0.0 UttVPS
278 0.0 ComplVS
277 0.0 IDig
269 0.0 that_Quant
268 0.0 Slash2V3
267 0.0 DetQuantOrd
265 0.0 UttAdv
260 0.0 Prep_Chunk
257 0.0 NP_Nom_Chunk
255 0.0 NumDigits
253 0.0 CN_Sg_Chunk
248 0.0 CompoundAP
247 0.0 gen_Quant
242 0.0 QuestCl
240 0.0 UseACard
232 0.0 ComplVA
231 0.0 TFut
229 0.0 n2
225 0.0 IIDig
217 0.0 UseVC
215 0.0 RelVP
215 0.0 ConjVPS
215 0.0 BaseVPS
206 0.0 no_Quant
195 0.0 many_ACard
184 0.0 ExclMark
181 0.0 every_Det
180 0.0 youSg_Pron
175 0.0 pot01
168 0.0 ExistNPAdv
162 0.0 AdvCN
161 0.0 SlashV2V
161 0.0 PassAgentVPSlash
161 0.0 Conj_Chunk
160 0.0 some_Quant
157 0.0 OrdSuperl
155 0.0 SlashVP
134 0.0 UseComparA
128 0.0 ExtAdvS
127 0.0 ConjS
127 0.0 BaseS
123 0.0 whatSg_IP
121 0.0 neg_Chunk
121 0.0 RelSlash
119 0.0 TCond
113 0.0 EmbedVP
111 0.0 UseDAPMasc
110 0.0 QS_Chunk
110 0.0 ApposNP
109 0.0 OrdNumeral
102 0.0 n3
102 0.0 CN_Pl_Chunk
98 0.0 rpar_Chunk
98 0.0 lpar_Chunk
94 0.0 GerundAdv
92 0.0 CountNP
89 0.0 SentAP
88 0.0 some_Det
88 0.0 QuestVP
88 0.0 MkVPI
86 0.0 VPI_Chunk
86 0.0 ComplN2
78 0.0 comma_Chunk
74 0.0 GenModNP
74 0.0 AdAdv
70 0.0 IAdv_Chunk
69 0.0 Phrase_Chunk
65 0.0 questmark_Chunk
58 0.0 CNNumNP
57 0.0 each_Det
57 0.0 QuestIAdv
56 0.0 quote_Chunk
55 0.0 much_ACard
54 0.0 AdjDAP
53 0.0 SelfAdvVP
53 0.0 ConjAdv
53 0.0 BaseAdv
52 0.0 fullstop_Chunk
50 0.0 whoSg_IP
50 0.0 UttCN
49 0.0 QuestIComp
46 0.0 exclmark_Chunk
46 0.0 NumMore
46 0.0 DirectComplVS
46 0.0 ConjDet
46 0.0 BaseDAP
45 0.0 another_Det
44 0.0 anySg_Det
44 0.0 CompIP
42 0.0 another_Quant
42 0.0 ExtAdvVP
41 0.0 semicolon_Chunk
41 0.0 languageNP
41 0.0 PrepIP
41 0.0 GerundCN
41 0.0 ConjCN
41 0.0 BaseCN
40 0.0 past_copula_Chunk
40 0.0 ExtAdvNP
39 0.0 UttCN_Sg
39 0.0 ImpersCl
39 0.0 ComplA2
38 0.0 n4
38 0.0 languageCN
38 0.0 VPlay
38 0.0 ExistNP
36 0.0 refl_SgP3_Chunk
36 0.0 AdvIAdv
35 0.0 IP_Chunk
34 0.0 weekdayN
34 0.0 most_Det
32 0.0 anySg_1_Det
30 0.0 AdV_Chunk
29 0.0 which_IQuant
29 0.0 NP_Gen_Chunk
29 0.0 IdetQuant
28 0.0 Predet_Chunk
27 0.0 pot110
27 0.0 PastPartAP
27 0.0 ImpPl1
26 0.0 UseAdAACard
26 0.0 SlashV2A
26 0.0 AdNum
25 0.0 IdetIP
25 0.0 ComplVQ
24 0.0 SentCN
24 0.0 RelNP
24 0.0 QuestSlash
24 0.0 BareN2
23 0.0 n6
23 0.0 intYear
23 0.0 PImperativePlurPos
23 0.0 AdvVPSlash
22 0.0 n5
22 0.0 UttVPShort
22 0.0 Subj_Chunk
OrdDigits
IdetCN
AdA_Chunk
yearAdv
copula_Chunk
ConsNP
AdjOrd
ComparA
timeunitAdv
PartNP
UttNP_Acc
that_RP
SSubjS
weather_adjCl
past_perfect_Chunk
monthN
dash_Chunk
UttImpPl
NumLess
n7
ComplSlashPartLast
AdvRVP
both_Det
TimeNP
weekdayPunctualAdv
UsePN
PImperativePolPos
whatPl_IP
perfect_Chunk
anyPl_Det
PastPartAgentAP
Numeral_Nom_Chunk
EmptyRelSlash
pot1
how8many_IDet
few_Det
copula_inf_Chunk
VocNP
UttNP_Nom
PGreetingMale
PGreetingFemale

2000
src/rukiga/test.treebank Normal file

File diff suppressed because it is too large Load Diff

1965
src/rukiga/trees.english Normal file

File diff suppressed because it is too large Load Diff

1999
src/rukiga/trees.test Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,67 @@
PhrUtt NoPConj (UttNP (AdvNP (DetCN (DetQuant DefArt NumPl) (UseN child_N)) (SubjS when_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron we_Pron) (ComplSlash (SlashV2a see_V2) (UsePron they_Pron))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt NumSg) (SentCN (UseN reason_N) (EmbedVP (UseV go_V)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a like_V2) (DetCN (DetQuant DefArt NumSg) (SentCN (UseN rule_N) (EmbedS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (UseN book_N)) (UseComp (CompAP (PositA thin_A)))))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN man_N) (UseRCl (TTAnt TPres ASimul) PPos (RelSlash IdRP (SlashVP (UsePron youSg_Pron) (SlashV2a love_V2)))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant DefArt NumSg) (RelCN (UseN book_N) (UseRCl (TTAnt TPast ASimul) PPos (RelSlash IdRP (SlashVP (UsePron youSg_Pron) (SlashV2a buy_V2)))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (AdvVP (UseV jump_V) (SubjS when_Subj (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN dog_N)) (UseV come_V)))))))) NoVoc
PhrUtt NoPConj (UttS (ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TPast ASimul) PPos (QuestVP whoSg_IP (ComplSlash (SlashV2a do_V2) (UsePron it_Pron)))))))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV must_VV (UseV go_V)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (AdvVP (UseComp (CompAP (PositA ready_A))) (SubjS when_Subj (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (UsePron he_Pron))))))))) NoVoc
PhrUtt NoPConj (UttCN (AdjCN (AdAP (PositAdAAdj clever_A) (PositA correct_A)) (UseN rule_N))) NoVoc
PhrUtt NoPConj (UttAdv (ComparAdvAdj less_CAdv probable_AS (UsePN john_PN))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a eat_V2) (MassNP (AdjCN (PositA red_A) (UseN meat_N))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePN john_PN) (UseV die_V)))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVV must_VV (UseV go_V))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres AAnter) PPos (PredVP (UsePN john_PN) (PassV2 kill_V2)))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (PassV2 kill_V2)))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (AdvCN (UseN cat_N) (PrepNP in_Prep (DetCN (DetQuant IndefArt NumSg) (UseN hat_N))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant IndefArt NumSg) (UseN cat_N))) (PrepNP with_Prep (DetCN (DetQuant (PossPron i_Pron) NumPl) (UseN eye_N))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (UseComp (CompAP (ComplA2 married_A2 (UsePron she_Pron))))))) NoVoc
PhrUtt (PConjConj and_Conj) (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron we_Pron) (UseV go_V)))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (ConjNP both7and_DConj (BaseNP (DetCN (DetQuant DefArt NumPl) (UseN boy_N)) (DetCN (DetQuant DefArt NumPl) (UseN girl_N)))) (UseComp (CompAdv here_Adv))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVS say_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV want_VV (UseV swim_V)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseComp (CompAP (SentAP (PositA uncertain_A) (EmbedS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a do_V2) (UsePron it_Pron))))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a have_V2) (DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot3 (pot1as2 (pot0as1 (pot0 n4)))))))) (UseN sheep_N)))))) NoVoc
ChunkPhr (PlusChunk (SSlash_Chunk (UseSlash (TTAnt TPast ASimul) PPos (SlashVP (UsePron i_Pron) (SlashV2a lose_V2)))) (PlusChunk (Symb_Chunk (MkSymb "$")) (PlusChunk (Symb_Chunk (MkSymb "3.2")) (OneChunk (CN_Sg_Chunk (UseN billion_N))))))
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron they_Pron) (ComplSlash (SlashV2a switch8off_V2) (DetCN (DetQuant DefArt NumSg) (UseN television_N)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAP (ConjAP and_Conj (BaseAP (PositA big_A) (PositA clever_A)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompCN (AdjCN (PositA clever_A) (UseN man_N))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAdv (PrepNP from_Prep (DetCN (DetQuant DefArt NumSg) (UseN city_N)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAP (PositA clever_A)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron it_Pron) (UseComp (CompAdv today_Adv))))) NoVoc
PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestIComp (CompIP whatSg_IP) (DetNP (DetQuant that_Quant NumSg))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron it_Pron) (UseComp (CompAdv (SubjS because_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompAP (PositA clever_A))))))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplVA become_VA (PositA clever_A))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (ProgrVP (UseV sleep_V))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (ExistNPAdv (DetCN (DetQuant IndefArt NumSg) (UseN cow_N)) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN forest_N)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredSCVP (EmbedQS (UseQCl (TTAnt TPast ASimul) PPos (QuestSlash whatSg_IP (SlashVP (UsePron she_Pron) (SlashV2a do_V2))))) (UseComp (CompAP (PositA important_A)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredSCVP (EmbedS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (UseV sleep_V)))) (AdvVP (PassV2 see_V2) (PrepNP by8agent_Prep (DetNP every_Det)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN man_N)) (UseComp (CompAdv here_Adv))))) NoVoc
PhrUtt NoPConj (UttQS (UseQCl (TTAnt TPres ASimul) PPos (QuestSlash (IdetCN (IdetQuant which_IQuant NumSg) (UseN book_N)) (SlashVP (UsePron youSg_Pron) (SlashV2a like_V2))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (PredetNP all_Predet (DetCN (DetQuant DefArt NumPl) (UseN boy_N))) (UseComp (CompAdv here_Adv))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (ComplSlash (Slash2V3 give_V3 (UsePron i_Pron)) (DetCN (DetQuant IndefArt NumSg) (UseN apple_N)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (ExistNPAdv (DetCN (DetQuant IndefArt NumSg) (UseN cat_N)) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (ComplSlash (Slash2V3 give_V3 (UsePron i_Pron)) (DetCN (DetQuant IndefArt NumSg) (UseN apple_N)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant IndefArt NumPl) (UseN boy_N)) (AdvVP (ProgrVP (UseV swim_V)) (SubjS when_Subj (UseCl (TTAnt TPast ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumPl) (UseN girl_N)) (UseV come_V)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVS say_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV want_VV (UseV swim_V)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplVV want_VV (ComplSlash (SlashV2a eat_V2) (UsePron it_Pron)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompNP (PredetNP not_Predet (DetCN (DetQuant IndefArt NumSg) (UseN doctor_N)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePN john_PN) (UseV laugh_V)))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a see_V2) (DetCN (DetQuant no_Quant NumPl) (UseN animal_N)))))) NoVoc
PhrUtt NoPConj (UttNP (DetCN (DetQuant DefArt NumSg) (PossNP (UseN house_N) (DetCN (DetQuant DefArt NumSg) (UseN doctor_N))))) NoVoc
PhrUtt NoPConj (UttImpSg PPos (ImpVP (ComplSlash (Slash2V3 send_V3 (DetCN (DetQuant DefArt NumPl) (UseN apple_N))) (DetCN (DetQuant DefArt NumPl) (UseN child_N))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN boy_N)) (has_age_VP (NumDigits (IDig D_6)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN science_N)) (SelfAdVVP (UseComp (CompAP (PositA important_A))))))) NoVoc
PhrUtt NoPConj (UttS (ExtAdvS today_Adv (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (AdvVP (UseV swim_V) (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN sea_N)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (AdvVP (ComplVV must_VV (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (UseN book_N)))) (PrepNP before_Prep (UsePN (weekdayPN monday_Weekday))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a kill_V2) (UsePron he_Pron))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron he_Pron) (AdvVP (PassV2 kill_V2) (PrepNP by8agent_Prep (UsePN john_PN)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a eat_V2) (DetCN (DetQuant IndefArt (NumCard (NumDigits (IDig D_3)))) (UseN sheep_N)))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePN john_PN) (ComplSlash (SlashV2a find_V2) (DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot1 n4))))))) (UseN cat_N)))))) NoVoc
TExclMark (PhrUtt NoPConj (UttImpSg PPos (ImpVP (AdvVP (UseV go_V) (PrepNP to_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N)))))) NoVoc) TEmpty
TFullStop (PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a love_V2) (DetCN (DetQuant IndefArt NumPl) (AdjCN (PositA red_A) (UseN apple_N))))))) NoVoc) TEmpty
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePN john_PN) (UseComp (CompNP (DetCN (DetQuant IndefArt NumSg) (AdjCN (PositA clever_A) (UseN man_N)))))))) NoVoc
PhrUtt NoPConj (UttImpSg PPos (ImpVP (AdvVP (UseV come_V) here_Adv))) (VocNP (DetCN (DetQuant IndefArt NumPl) (UseN boy_N)))
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplVS say_VS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron youSg_Pron) (ComplVV want_VV (UseV swim_V)))))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron she_Pron) (ComplSlash (SlashV2V beg_V2V (ComplSlash (SlashV2a find_V2) (DetCN (DetQuant (PossPron she_Pron) NumSg) (UseN dog_N)))) (UsePN john_PN))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2A paint_V2A (PositA red_A)) (UsePron it_Pron))))) NoVoc
PhrUtt NoPConj (UttS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (ComplVA become_VA (AdAP very_AdA (PositA beautiful_A)))))) NoVoc

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,728 @@
AdAdv
AddAdvQVP
AdnCAdv
AdvAP
AdvIAdv
AdvIP
AdvQVP
AdvS
AdvSlash
BaseAP
BaseAdV
BaseAdv
BaseCN
BaseDAP
BaseIAdv
BaseNP
BaseRS
BaseS
CAdvAP
CleftAdv
CleftNP
ComparA
ComparAdvAdj
ComparAdvAdjS
ComplA
ComplSlashIP
ConjAP
ConjAdV
ConjAdv
ConjCN
ConjDet
ConjIAdv
ConjNP
ConjRS
ConjS
ConsAP
ConsAdV
ConsAdv
ConsCN
ConsDAP
ConsIAdv
ConsNP
ConsRS
ConsS
EmbedQS
EmbedS
EmbedVP
ExistIP
ExistIPAdv
ExistNP
ExistNPAdv
ExtAdvS
ExtAdvVP
FunRP
GenericCl
IdetQuant
ImpP
ImpPl
ImpersCl
InLanguage
InflectionA
InflectionA
InflectionAdv
InflectionN
InflectionN
InflectionN
InflectionPrep
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionVA
InflectionVQ
InflectionVS
InflectionVV
MarkupAP
MarkupAdv
MarkupCN
MarkupNP
MarkupPhr
MarkupS
MarkupText
MarkupUtt
MkDefinition
MkDefinitionEx
MkDocument
MkTag
NoDefinition
PConjConj
PassV
PositAdAAdj
PositAdvAdj
PredSCVP
PrepIP
ProgrVP
QuestQVP
ReflA
ReflVP
RelS
SSubjS
SelfAdVVP
SelfAdvVP
SelfNP
SentAP
SentCN
SlashPrep
SlashV
SlashV
SlashV
SlashV
SlashV
VNP
SlashVS
SubjS
UseA
UseSlash
VPSlashPrep
VocNP
Mark
above
Prep
active
passive
afrikaans
Language
airplane
already
Adv
although
Subj
amharic
Language
answer
apartment
april
Month
arabic
Language
art
as
CAdv
ashes
ask
at
most
AdN
august
Month
Mark
back
bank
bark
beautiful
because
Subj
before
Prep
beg
belly
blow
bone
boot
boss
both
and
DConj
bottle
of
CN
breast
breathe
broad
brother
brown
bulgarian
Language
burn
butter
by
agent
Prep
by
means
Prep
camera
cap
carpet
catalan
Language
ceiling
chair
cheese
chinese
Language
church
clever
coat
correct
country
cousin
cup
of
CN
danish
Language
dayMonthAdv
dayMonthYearAdv
day
day
Timeunit
dconcat
december
Month
die
dig
digits
num
digits
numeral
dirty
dn
dn
dn
dn
dn
dn
dn
doctor
door
dry
dull
during
Prep
dust
dutch
Language
ear
earth
easy
egg
eightHour
eighteenHour
either
or
DConj
elevenHour
empty
enemy
english
Language
estonian
Language
everybody
NP
everything
NP
except
Prep
eye
factory
fall
far
Adv
fat
feather
february
Month
few
short
of
fifteenHour
fight
fingernail
finnish
Language
fiveHour
float
floor
flow
fly
fog
foot
for
Prep
forest
forget
fourHour
fourteenHour
freeze
french
Language
friday
Weekday
fridge
fruit
full
fun
AV
garden
german
Language
glass
of
CN
glove
gold
grass
greek
Language
guts
Mark
Mark
hair
hand
harbour
has
age
VP
hat
hate
have
name
Cl
head
hear
heart
hebrew
Language
here
from
Adv
here
to
Adv
hill
hindi
Language
hit
hold
horn
hour
Timeunit
how
much
IAdv
how
far
QCl
how
old
QCl
hungry
VP
hunt
husband
Mark
ice
if
Subj
if
then
Conj
ill
VP
important
industry
intMonthday
intYear
iron
is
right
VP
is
wrong
VP
italian
Language
january
Month
japanese
Language
july
Month
june
Month
king
knee
know
lake
lamp
languageCN
languageNP
language
title
Utt
latin
Language
latvian
Language
laugh
leaf
learn
leather
leave
left
Ord
leg
less
CAdv
li
Mark
lie
like
listen
liver
long
lose
louse
love
maltese
Language
march
Month
married
married
Cl
may
Month
meat
minute
Timeunit
monday
Weekday
monthAdv
monthN
monthPN
monthYearAdv
month
Timeunit
moon
more
CAdv
mother
mountain
mouth
much
Det
units
AP
units
of
NP
name
narrow
nd
nd
nd
nd
nd
near
neck
nepali
Language
newspaper
night
nineHour
nineteenHour
no
Utt
nobody
NP
norwegian
Language
nose
nothing
NP
november
Month
num
digits
number
october
Month
oil
oneHour
open
Mark
paint
paper
part
Prep
peace
pen
persian
Language
person
planet
plastic
play
policeman
polish
Language
possess
Prep
priest
probable
AS
pull
punjabi
Language
push
put
queen
question
quite
Adv
radio
rain
rain
ready
VP
reason
religion
restaurant
right
Ord
road
rock
romanian
Language
roof
root
rope
rotten
round
rub
rubber
rule
russian
Language
salt
sand
saturday
Weekday
scared
VP
school
science
scratch
second
Timeunit
seed
seek
september
Month
sevenHour
seventeenHour
sew
sharp
sheep
shirt
shoe
shop
short
silver
sindhi
Language
sing
sister
sit
sixHour
sixteenHour
skin
sky
smell
smoke
smooth
snake
snow
sock
somebody
NP
something
NP
somewhere
Adv
song
spanish
Language
speak
spit
split
squeeze
stab
stand
steel
stick
stone
stop
stove
straight
student
stupid
suck
sun
sunday
Weekday
swahili
Language
swedish
Language
swell
switch
off
switch
on
table
Mark
table
tail
td
Mark
teacher
television
tenHour
thai
Language
there
from
Adv
there
to
Adv
there
Adv
they
Pron
thick
thin
think
thirsty
VP
thirteenHour
threeHour
through
Prep
throw
thursday
Weekday
tie
timeHour
timeHourMinute
timeunitAdv
tired
VP
today
Adv
tongue
tooth
tr
Mark
tuesday
Weekday
turkish
Language
turn
twelveHour
twentyFourHour
twentyHour
twentyOneHour
twentyThreeHour
twentyTwoHour
twoHour
ugly
ul
Mark
uncertain
university
urdu
Language
village
vomit
war
wash
watch
weather
adjCl
wednesday
Weekday
week
Timeunit
weekdayHabitualAdv
weekdayLastAdv
weekdayN
weekdayNextAdv
weekdayPN
weekdayPunctualAdv
wet
what
name
QCl
when
Subj
wide
wife
win
wind
window
wing
wipe
without
Prep
wonder
VQ
wood
worm
write
yearAdv
year
year
Timeunit
yes
Utt
youPol
Pron

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,729 @@
LangCgg
AdAdv
AddAdvQVP
AdnCAdv
AdvAP
AdvIAdv
AdvIP
AdvQVP
AdvS
AdvSlash
BaseAP
BaseAdV
BaseAdv
BaseCN
BaseDAP
BaseIAdv
BaseNP
BaseRS
BaseS
CAdvAP
CleftAdv
CleftNP
ComparA
ComparAdvAdj
ComparAdvAdjS
ComplA
ComplSlashIP
ConjAP
ConjAdV
ConjAdv
ConjCN
ConjDet
ConjIAdv
ConjNP
ConjRS
ConjS
ConsAP
ConsAdV
ConsAdv
ConsCN
ConsDAP
ConsIAdv
ConsNP
ConsRS
ConsS
EmbedQS
EmbedS
EmbedVP
ExistIP
ExistIPAdv
ExistNP
ExistNPAdv
ExtAdvS
ExtAdvVP
FunRP
GenericCl
IdetQuant
ImpP
ImpPl
ImpersCl
InLanguage
InflectionA
InflectionA
InflectionAdv
InflectionN
InflectionN
InflectionN
InflectionPrep
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionV
InflectionVA
InflectionVQ
InflectionVS
InflectionVV
MarkupAP
MarkupAdv
MarkupCN
MarkupNP
MarkupPhr
MarkupS
MarkupText
MarkupUtt
MkDefinition
MkDefinitionEx
MkDocument
MkTag
NoDefinition
PConjConj
PassV
PositAdAAdj
PositAdvAdj
PredSCVP
PrepIP
ProgrVP
QuestQVP
ReflA
ReflVP
RelS
SSubjS
SelfAdVVP
SelfAdvVP
SelfNP
SentAP
SentCN
SlashPrep
SlashV
SlashV
SlashV
SlashV
SlashV
VNP
SlashVS
SubjS
UseA
UseSlash
VPSlashPrep
VocNP
Mark
above
Prep
active
passive
afrikaans
Language
airplane
already
Adv
although
Subj
amharic
Language
answer
apartment
april
Month
arabic
Language
art
as
CAdv
ashes
ask
at
most
AdN
august
Month
Mark
back
bank
bark
beautiful
because
Subj
before
Prep
beg
belly
blow
bone
boot
boss
both
and
DConj
bottle
of
CN
breast
breathe
broad
brother
brown
bulgarian
Language
burn
butter
by
agent
Prep
by
means
Prep
camera
cap
carpet
catalan
Language
ceiling
chair
cheese
chinese
Language
church
clever
coat
correct
country
cousin
cup
of
CN
danish
Language
dayMonthAdv
dayMonthYearAdv
day
day
Timeunit
dconcat
december
Month
die
dig
digits
num
digits
numeral
dirty
dn
dn
dn
dn
dn
dn
dn
doctor
door
dry
dull
during
Prep
dust
dutch
Language
ear
earth
easy
egg
eightHour
eighteenHour
either
or
DConj
elevenHour
empty
enemy
english
Language
estonian
Language
everybody
NP
everything
NP
except
Prep
eye
factory
fall
far
Adv
fat
feather
february
Month
few
short
of
fifteenHour
fight
fingernail
finnish
Language
fiveHour
float
floor
flow
fly
fog
foot
for
Prep
forest
forget
fourHour
fourteenHour
freeze
french
Language
friday
Weekday
fridge
fruit
full
fun
AV
garden
german
Language
glass
of
CN
glove
gold
grass
greek
Language
guts
Mark
Mark
hair
hand
harbour
has
age
VP
hat
hate
have
name
Cl
head
hear
heart
hebrew
Language
here
from
Adv
here
to
Adv
hill
hindi
Language
hit
hold
horn
hour
Timeunit
how
much
IAdv
how
far
QCl
how
old
QCl
hungry
VP
hunt
husband
Mark
ice
if
Subj
if
then
Conj
ill
VP
important
industry
intMonthday
intYear
iron
is
right
VP
is
wrong
VP
italian
Language
january
Month
japanese
Language
july
Month
june
Month
king
knee
know
lake
lamp
languageCN
languageNP
language
title
Utt
latin
Language
latvian
Language
laugh
leaf
learn
leather
leave
left
Ord
leg
less
CAdv
li
Mark
lie
like
listen
liver
long
lose
louse
love
maltese
Language
march
Month
married
married
Cl
may
Month
meat
minute
Timeunit
monday
Weekday
monthAdv
monthN
monthPN
monthYearAdv
month
Timeunit
moon
more
CAdv
mother
mountain
mouth
much
Det
units
AP
units
of
NP
name
narrow
nd
nd
nd
nd
nd
near
neck
nepali
Language
newspaper
night
nineHour
nineteenHour
no
Utt
nobody
NP
norwegian
Language
nose
nothing
NP
november
Month
num
digits
number
october
Month
oil
oneHour
open
Mark
paint
paper
part
Prep
peace
pen
persian
Language
person
planet
plastic
play
policeman
polish
Language
possess
Prep
priest
probable
AS
pull
punjabi
Language
push
put
queen
question
quite
Adv
radio
rain
rain
ready
VP
reason
religion
restaurant
right
Ord
road
rock
romanian
Language
roof
root
rope
rotten
round
rub
rubber
rule
russian
Language
salt
sand
saturday
Weekday
scared
VP
school
science
scratch
second
Timeunit
seed
seek
september
Month
sevenHour
seventeenHour
sew
sharp
sheep
shirt
shoe
shop
short
silver
sindhi
Language
sing
sister
sit
sixHour
sixteenHour
skin
sky
smell
smoke
smooth
snake
snow
sock
somebody
NP
something
NP
somewhere
Adv
song
spanish
Language
speak
spit
split
squeeze
stab
stand
steel
stick
stone
stop
stove
straight
student
stupid
suck
sun
sunday
Weekday
swahili
Language
swedish
Language
swell
switch
off
switch
on
table
Mark
table
tail
td
Mark
teacher
television
tenHour
thai
Language
there
from
Adv
there
to
Adv
there
Adv
they
Pron
thick
thin
think
thirsty
VP
thirteenHour
threeHour
through
Prep
throw
thursday
Weekday
tie
timeHour
timeHourMinute
timeunitAdv
tired
VP
today
Adv
tongue
tooth
tr
Mark
tuesday
Weekday
turkish
Language
turn
twelveHour
twentyFourHour
twentyHour
twentyOneHour
twentyThreeHour
twentyTwoHour
twoHour
ugly
ul
Mark
uncertain
university
urdu
Language
village
vomit
war
wash
watch
weather
adjCl
wednesday
Weekday
week
Timeunit
weekdayHabitualAdv
weekdayLastAdv
weekdayN
weekdayNextAdv
weekdayPN
weekdayPunctualAdv
wet
what
name
QCl
when
Subj
wide
wife
win
wind
window
wing
wipe
without
Prep
wonder
VQ
wood
worm
write
yearAdv
year
year
Timeunit
yes
Utt
youPol
Pron

View File

@@ -0,0 +1,75 @@
--# -path=.:../abstract:../common:../../prelude
concrete AdjectiveRus of Adjective = CatRus ** open ResRus, Prelude in {
flags coding=utf8 ;
lin
PositA a = { s = a.s!Posit ; p = a.p ; preferShort = a.preferShort};
-- Comparative forms are used with an object of comparison, as
-- adjectival phrases ("больше тебя").
ComparA bolshoj tu =
{s = \\af => bolshoj.s ! Compar ! af ++ tu.s ! (mkPronForm Gen Yes NonPoss) ;
p = True ;
preferShort = PrefShort
} ;
---- AR 17/12/2008
UseComparA bolshoj =
{s = \\af => bolshoj.s ! Compar ! af ;
p = True ;
preferShort = PrefShort
} ;
---- AR 17/12/2008
CAdvAP ad ap np = let adp = ad.s in { ---- should be ad.p
s = \\af => ad.s ++ ap.s ! af ++ adp ++ np.s ! (mkPronForm Gen Yes NonPoss) ;
p = True ; ----?
preferShort = ap.preferShort
} ;
---- AR 17/12/2008
AdjOrd a = {
s = a.s ;
p = True ; ---- ?
preferShort = PrefFull
} ;
-- $SuperlA$ belongs to determiner syntax in $Noun$.
ComplA2 vlublen tu =
{s = \\af => vlublen.s !Posit! af ++ vlublen.c2.s ++
tu.s ! (mkPronForm vlublen.c2.c No NonPoss) ;
p = True ;
preferShort = vlublen.preferShort
} ;
ReflA2 vlublen =
{s = \\af => vlublen.s !Posit! af ++ vlublen.c2.s ++ sam.s ! vlublen.c2.c;
p = True ;
preferShort = vlublen.preferShort
} ;
SentAP vlublen sent=
{s = \\af => vlublen.s ! af ++ [", "] ++ sent.s;
p = True ;
preferShort = vlublen.preferShort
} ;
AdAP ada ap = {
s = \\af => ada.s ++ ap.s ! af ;
p = True ;
preferShort = ap.preferShort
} ;
UseA2 a = {
s = \\af => a.s ! Posit ! af ;
p = True ;
preferShort = a.preferShort
} ;
}

View File

@@ -0,0 +1,24 @@
--# -path=.:../abstract:../common:../../prelude
concrete AdverbRus of Adverb = CatRus ** open ResRus, Prelude in {
flags coding=utf8 ;
lin
PositAdvAdj a = {s = a.s !Posit! AdvF} ;
ComparAdvAdj cadv a np = {
s = cadv.s ++ a.s !Posit! AdvF ++ "чем" ++ np.s ! PF Nom No NonPoss
} ;
ComparAdvAdjS cadv a s = {
s = cadv.s ++ a.s !Posit! AdvF ++ "чем" ++ s.s
} ;
PrepNP na stol = ss (na.s ++ stol.s ! PF na.c Yes NonPoss) ;
AdAdv = cc2 ;
SubjS = cc2 ;
AdnCAdv cadv = {s = cadv.s ++ "чем"} ;
}

6
src/russian/v1/AllRus.gf Normal file
View File

@@ -0,0 +1,6 @@
--# -path=.:../abstract:../common:../prelude:../api
concrete AllRus of AllRusAbs =
LangRus,
ExtraRus
** {flags coding=utf8 ;} ;

View File

@@ -0,0 +1,6 @@
--# -path=.:../abstract:../common:prelude
abstract AllRusAbs =
Lang,
ExtraRusAbs
** {} ;

100
src/russian/v1/CatRus.gf Normal file
View File

@@ -0,0 +1,100 @@
--# -path=.:../abstract:../common:../../prelude
concrete CatRus of Cat = CommonX ** open ResRus, Prelude in {
flags optimize=all_subs ; coding=utf8 ;
lincat
-- Tensed/Untensed
S = {s : Str} ;
QS = {s : QForm => Str} ;
RS = {s : GenNum => Case => Animacy => Str} ;
SSlash = {s : Str; s2: Str ; c: Case} ;
-- Sentence
-- clause (variable tense) e.g. "John walks"/"John walked"
Cl ={s : Polarity => ClForm => Str} ;
ClSlash = {s : Polarity => ClForm => Str; s2: Str; c: Case} ;
Imp = { s: Polarity => Gender => Number => Str } ;
-- Question
QCl = {s :Polarity => ClForm => QForm => Str};
IP = { s : PronForm => Str ; n : Number ; p : Person ;
g: PronGen ; anim : Animacy ; pron: Bool} ;
IComp = {s : Str} ;
IDet = Adjective ** {n: Number; g: PronGen; c: Case} ;
IQuant = {s : Number => AdjForm => Str; g: PronGen; c: Case} ; -- AR 16/6/2008
-- Relative
RCl = {s : Polarity => ClForm => GenNum => Case => Animacy => Str} ;
RP = {s : GenNum => Case => Animacy => Str} ;
-- Verb
-- Polarity =>
Comp, VP = VerbPhrase ;
VPSlash = VerbPhrase ** {sc : Str ; c : Case} ;
-- Adjective
AP = {s : AdjForm => Str ; p : IsPostfixAdj ; preferShort : ShortFormPreference} ;
-- Noun
CN = {nounpart : NForm => Str; relcl : Number => Case => Str; g : Gender; anim : Animacy} ;
NP = { s : PronForm => Str ; n : Number ; p : Person ;
g: PronGen ; anim : Animacy ; pron: Bool} ;
Pron = { s : PronForm => Str ; n : Number ; p : Person ;
g: PronGen ; pron: Bool} ;
-- Determiners (only determinative pronouns
-- (or even indefinite numerals: "много" (many)) in Russian) are inflected
-- according to the gender of nouns they determine.
-- extra parameters (Number and Case) are added for the sake of
-- the determinative pronoun "bolshinstvo" ("most");
-- Gender parameter is due to multiple determiners (Numerals in Russian)
-- like "mnogo"
-- The determined noun has the case parameter specific for the determiner
Det = {s : Case => Animacy => Gender => Str; n: Number; g: PronGen; c: Case; size: Size} ;
Predet, Quant = {s : AdjForm => Str; g: PronGen; c: Case; size: Size} ;
-- Numeral
Num = {s : Gender => Animacy => Case => Str ; n : Number ; size: Size} ;
Numeral, Card = {s : Gender => Animacy => Case => Str ; n : Number ; size: Size} ;
Digits = {s : Str ; n : Number ; size: Size} ; ----
-- Structural
-- The conjunction has an inherent number, which is used when conjoining
-- noun phrases: "Иван и Маша поют" vs. "Иван или Маша поет"; in the
-- case of "или", the result is however plural if any of the disjuncts is.
Conj = {s1,s2 : Str ; n : Number} ;
Subj = {s : Str} ;
Prep = Complement ;
-- Open lexical classes, e.g. Lexicon
V, VS, VV, VQ, VA = Verbum ; -- = {s : VerbForm => Str ; asp : Aspect } ;
V2, V2A = Verbum ** {c2 : Complement} ;
V2V, V2S, V2Q = Verbum ** {c2 : Complement} ; --- AR
V3 = Verbum ** {c2,c3 : Complement} ;
-- VV = {s : VVForm => Str ; isAux : Bool} ;
Ord = {s : AdjForm => Str} ;
A = {s : Degree => AdjForm => Str ; p : IsPostfixAdj ; preferShort : ShortFormPreference} ;
A2 = A ** {c2 : Complement} ;
-- Substantives moreover have an inherent gender.
N = {s : NForm => Str; g : Gender; anim : Animacy} ;
N2 = {s : NForm => Str; g : Gender; anim : Animacy} ** {c2 : Complement} ;
N3 = {s : NForm => Str; g : Gender; anim : Animacy} ** {c2,c3 : Complement} ;
PN = {s : Case => Str ; g : Gender ; anim : Animacy} ;
}

View File

@@ -0,0 +1,120 @@
--# -path=.:../abstract:../common:../../prelude
concrete ConjunctionRus of Conjunction =
CatRus ** open ResRus, Coordination, Prelude in {
flags optimize=all_subs ; coding=utf8 ;
lin
ConjS = conjunctDistrSS ;
ConjAdv = conjunctDistrSS ;
ConjNP c xs =
conjunctDistrTable PronForm c xs ** {n = conjNumber c.n xs.n ;
p = xs.p ; pron = xs.pron ; anim = xs.anim ;
g = xs.g } ;
ConjAP or xs =
{s = \\af => case af of {
AF c a gn => or.s1++ xs.s1 ! AF c a gn ++ or.s2 ++ xs.s2 ! AF c a gn ;
AFShort gn => case xs.preferShort of {
PrefShort => or.s1++ xs.s1 ! AFShort gn ++ or.s2 ++ xs.s2 ! AFShort gn ;
_ => or.s1++ xs.s1 ! AF Nom Inanimate gn ++ or.s2 ++ xs.s2 ! AF Nom Inanimate gn} ;
AdvF => or.s1++ xs.s1 ! AdvF ++ or.s2 ++ xs.s2 ! AdvF
} ;
p = xs.p ;
preferShort = xs.preferShort
} ;
---- AR 17/12/2008
ConjRS c xs = conjunctDistrTable3 GenNum Case Animacy c xs ** {p = xs.p} ;
-- These fun's are generated from the list cat's.
BaseS = twoSS ;
ConsS = consrSS comma ;
BaseAdv = twoSS ;
ConsAdv = consrSS comma ;
ConsNP x xs =
consTable PronForm comma xs x **
{n = conjNumber xs.n x.n ; g = conjPGender x.g xs.g ;
anim = conjAnim x.anim xs.anim ;
p = conjPerson xs.p x.p; pron = conjPron xs.pron x.pron} ;
ConsAP x xs = consTable AdjForm comma xs x ** {p = andB xs.p x.p ; preferShort = selectAPForm x.preferShort xs.preferShort} ;
BaseAP x y = twoTable AdjForm x y ** {p = andB x.p y.p ; preferShort = selectAPForm x.preferShort y.preferShort} ;
BaseNP x y = twoTable PronForm x y ** {n = conjNumber x.n y.n ;
g = conjPGender x.g y.g ; p = conjPerson x.p y.p ;
pron = conjPron x.pron y.pron ; anim = conjAnim x.anim y.anim } ;
---- AR 17/12/2008
BaseRS x y = twoTable3 GenNum Case Animacy x y ** {c = y.c} ;
ConsRS xs x = consrTable3 GenNum Case Animacy comma xs x ** {c = xs.c} ;
oper
selectAPForm : ShortFormPreference -> ShortFormPreference -> ShortFormPreference = \sfp1,sfp2 ->
case <sfp1,sfp2> of
{<PrefShort, PrefShort> => PrefShort ;
_ => PrefFull
} ;
lincat
[S] = {s1,s2 : Str} ;
[Adv] = {s1,s2 : Str} ;
-- The structure is the same as for sentences. The result is either always plural
-- or plural if any of the components is, depending on the conjunction.
[NP] = { s1,s2 : PronForm => Str ; g: PronGen ;
anim : Animacy ; n : Number ; p : Person ; pron : Bool } ;
-- The structure is the same as for sentences. The result is a prefix adjective
-- if and only if all elements are prefix.
[AP] = {s1,s2 : AdjForm => Str ; p : Bool ; preferShort : ShortFormPreference} ;
---- AR 17/12/2008
[RS] = {s1,s2 : GenNum => Case => Animacy => Str} ;
oper
-- We have to define a calculus of numbers of persons. For numbers,
-- it is like the conjunction with $Pl$ corresponding to $False$.
--
-- The following are given in $ParamX$.
--
-- conjNumber : Number -> Number -> Number = \m,n -> case <m,n> of {
-- <Sg,Sg> => Sg ;
-- _ => Pl
-- } ;
-- For persons, we let the latter argument win ("либо ты, либо я пойду"
-- but "либо я, либо ты пойдешь"). This is not quite clear.
-- conjPerson : Person -> Person -> Person = \_,p ->
-- p ;
-- For pron, we let the latter argument win - "Маша или моя мама" (Nominative case)
-- but - "моей или Машина мама" (Genetive case) both corresponds to
-- "Masha's or my mother"), which is actually not exactly correct, since
-- different cases should be used - "Машина или моя мама".
conjPron : Bool -> Bool -> Bool = \_,p ->
p ;
-- For gender in a similar manner as for person:
-- Needed for adjective predicates like:
-- "Маша или Оля - красивая", "Антон или Олег - красивый",
-- "Маша или Олег - красивый".
-- The later is not totally correct, but there is no correct way to say that.
conjGender : Gender -> Gender -> Gender = \_,m -> m ;
conjPGender : PronGen -> PronGen -> PronGen = \_,m -> m ;
conjAnim : Animacy -> Animacy -> Animacy = \_,m -> m ;
}

View File

@@ -0,0 +1,12 @@
concrete ConstructionRus of Construction = CatRus **
open SyntaxRus, ParadigmsRus, ResRus in {
lin
hungry_VP = mkVP (mkA "голодный") ;
thirsty_VP = mkVP want_VV (mkVP (regV imperfective firstE "пь" "ю" "пил" "пей" "пить")) ;
tired_VP = mkVP (mkA "уставший" Rel) ;
scared_VP = mkVP (mkV imperfective "боюсь" "боишься" "боится" "боимся" "бойтесь" "боятся" "боялся" "бойся" "бояться") ;
ill_VP = mkVP (mkA "больной") ;
ready_VP = mkVP (mkA "готовый") ;
}

135830
src/russian/v1/DictRus.gf Normal file

File diff suppressed because it is too large Load Diff

135825
src/russian/v1/DictRusAbs.gf Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,383 @@
concrete DocumentationRus of Documentation = CatRus ** open
ResRus,
HTML in {
flags coding=utf8 ;
lincat
Inflection = {t : Str; s1,s2,s3 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
lin
InflectionN,
InflectionN2,
InflectionN3 = \n -> {
t = "сущ" ;
s1= heading1 ("Существительное"++
case n.g of {
Masc => "(м.р.)" ;
Fem => "(ж.р.)" ;
Neut => "(ср.р.)"
} ++
case n.anim of {
Animate => "Одушевлённое" ;
Inanimate => "Неодушевлённое"
}
) ;
s2= frameTable (
tr (th "Падеж" ++ th "ед. ч." ++ th "мн. ч.") ++
tr (th "Им." ++ td (n.s ! (NF Sg Nom) nom) ++ td (n.s ! (NF Pl Nom nom))) ++
tr (th "Р." ++ td (n.s ! (NF Sg Gen) nom) ++ td (n.s ! (NF Pl Gen nom))) ++
tr (th "Д." ++ td (n.s ! (NF Sg Dat) nom) ++ td (n.s ! (NF Pl Dat nom))) ++
tr (th "В." ++ td (n.s ! (NF Sg Acc) nom) ++ td (n.s ! (NF Pl Acc nom))) ++
tr (th "Тв." ++ td (n.s ! (NF Sg Inst) nom) ++ td (n.s ! (NF Pl Inst nom))) ++
tr (th "Пр." ++ td (n.s ! (NF Sg (Prepos PrepOther) nom)) ++ td (n.s ! (NF Pl (Prepos PrepOther) nom)))
) ;
s3= ""
} ;
InflectionA,
InflectionA2 = \a -> {
t = "прил" ;
s1= heading1 ("Прилагательное"
) ;
s2= frameTable (
intagAttr "tr" "style=\"border-top-color:white;border-left-color:white;border-right-color:white\"" (intagAttr "th" "colspan=\"6\"" "Положительная степень сравнения") ++
tr (
intagAttr "th" "rowspan=\"2\" colspan=\"2\"" "Падеж" ++
intagAttr "th" "colspan=\"3\"" "ед. ч." ++
intagAttr "th" "rowspan=\"2\"" "мн. ч." ) ++
tr(th "муж. р." ++ th "ср. р." ++ th "жен. р.") ++
tr (intagAttr "th" "colspan=\"2\"" "Им." ++ td (a.s ! Posit ! (AF Nom Animate (GSg Masc)))
++ td (a.s ! Posit ! (AF Nom Animate (GSg Neut)))
++ td (a.s ! Posit ! (AF Nom Animate (GSg Fem)))
++ td (a.s ! Posit ! (AF Nom Animate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Р." ++ td (a.s ! Posit ! (AF Gen Animate (GSg Masc)))
++ td (a.s ! Posit ! (AF Gen Animate (GSg Neut)))
++ td (a.s ! Posit ! (AF Gen Animate (GSg Fem)))
++ td (a.s ! Posit ! (AF Gen Animate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Д." ++ td (a.s ! Posit ! (AF Dat Animate (GSg Masc)))
++ td (a.s ! Posit ! (AF Dat Animate (GSg Neut)))
++ td (a.s ! Posit ! (AF Dat Animate (GSg Fem)))
++ td (a.s ! Posit ! (AF Dat Animate GPl))) ++
tr (intagAttr "th" "rowspan=\"2\"" "В."
++ th "одуш."
++ td (a.s ! Posit ! (AF Acc Animate (GSg Masc)))
++ intagAttr "td" "rowspan=\"2\"" (a.s ! Posit ! (AF Acc Animate (GSg Neut)))
++ intagAttr "td" "rowspan=\"2\"" (a.s ! Posit ! (AF Acc Animate (GSg Fem)))
++ td (a.s ! Posit ! (AF Acc Animate GPl))) ++
tr ( th "неодуш."
++ td (a.s ! Posit ! (AF Acc Inanimate (GSg Masc)))
++ td (a.s ! Posit ! (AF Acc Inanimate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Тв." ++ td (a.s ! Posit ! (AF Inst Animate (GSg Masc)))
++ td (a.s ! Posit ! (AF Inst Animate (GSg Neut)))
++ td (a.s ! Posit ! (AF Inst Animate (GSg Fem)))
++ td (a.s ! Posit ! (AF Inst Animate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Пр." ++ td (a.s ! Posit ! (AF (Prepos PrepOther) Animate (GSg Masc)))
++ td (a.s ! Posit ! (AF (Prepos PrepOther) Animate (GSg Neut)))
++ td (a.s ! Posit ! (AF (Prepos PrepOther) Animate (GSg Fem)))
++ td (a.s ! Posit ! (AF Inst Animate GPl))) ++
intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\"" (intagAttr "th" "colspan=\"6\"" "Сравнительная степень сравнения") ++
tr (intagAttr "td" "colspan=\"6\" align=\"center\" style=\"border-top-color:black\"" (a.s ! Compar ! (AF Nom Animate (GSg Masc)))) ++
-- tr (intagAttr "th" "colspan=\"2\"" "Им."
-- ++ td (a.s ! Compar ! (AF Nom Animate (GSg Masc)))
-- ++ td (a.s ! Compar ! (AF Nom Animate (GSg Neut)))
-- ++ td (a.s ! Compar ! (AF Nom Animate (GSg Fem)))
-- ++ td (a.s ! Compar ! (AF Nom Animate GPl))) ++
-- tr (intagAttr "th" "colspan=\"2\"" "Р."
-- ++ td (a.s ! Compar ! (AF Gen Animate (GSg Masc)))
-- ++ td (a.s ! Compar ! (AF Gen Animate (GSg Neut)))
-- ++ td (a.s ! Compar ! (AF Gen Animate (GSg Fem)))
-- ++ td (a.s ! Compar ! (AF Gen Animate GPl))) ++
-- tr (intagAttr "th" "colspan=\"2\"" "Д."
-- ++ td (a.s ! Compar ! (AF Dat Animate (GSg Masc)))
-- ++ td (a.s ! Compar ! (AF Dat Animate (GSg Neut)))
-- ++ td (a.s ! Compar ! (AF Dat Animate (GSg Fem)))
-- ++ td (a.s ! Compar ! (AF Dat Animate GPl))) ++
-- tr (intagAttr "th" "colspan=\"2\"" "В."
-- ++ td (a.s ! Compar ! (AF Acc Animate (GSg Masc)))
-- ++ td (a.s ! Compar ! (AF Acc Animate (GSg Neut)))
-- ++ td (a.s ! Compar ! (AF Acc Animate (GSg Fem)))
-- ++ td (a.s ! Compar ! (AF Acc Animate GPl))) ++
-- tr (intagAttr "th" "colspan=\"2\"" "Тв."
-- ++ td (a.s ! Compar ! (AF Inst Animate (GSg Masc)))
-- ++ td (a.s ! Compar ! (AF Inst Animate (GSg Neut)))
-- ++ td (a.s ! Compar ! (AF Inst Animate (GSg Fem)))
-- ++ td (a.s ! Compar ! (AF Inst Animate GPl))) ++
-- tr (intagAttr "th" "colspan=\"2\"" "Пр."
-- ++ td (a.s ! Compar ! (AF (Prepos PrepOther) Animate (GSg Masc)))
-- ++ td (a.s ! Compar ! (AF (Prepos PrepOther) Animate (GSg Neut)))
-- ++ td (a.s ! Compar ! (AF (Prepos PrepOther) Animate (GSg Fem)))
-- ++ td (a.s ! Compar ! (AF (Prepos PrepOther) Animate GPl))) ++
intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\"" (intagAttr "th" "colspan=\"6\"" "Превосходная степень сравнения") ++
tr (intagAttr "th" "colspan=\"2\"" "Им."
++ td (a.s ! Superl ! (AF Nom Animate (GSg Masc)))
++ td (a.s ! Superl ! (AF Nom Animate (GSg Neut)))
++ td (a.s ! Superl ! (AF Nom Animate (GSg Fem)))
++ td (a.s ! Superl ! (AF Nom Animate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Р."
++ td (a.s ! Superl ! (AF Gen Animate (GSg Masc)))
++ td (a.s ! Superl ! (AF Gen Animate (GSg Neut)))
++ td (a.s ! Superl ! (AF Gen Animate (GSg Fem)))
++ td (a.s ! Superl ! (AF Gen Animate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Д."
++ td (a.s ! Superl ! (AF Dat Animate (GSg Masc)))
++ td (a.s ! Superl ! (AF Dat Animate (GSg Neut)))
++ td (a.s ! Superl ! (AF Dat Animate (GSg Fem)))
++ td (a.s ! Superl ! (AF Dat Animate GPl))) ++
tr (intagAttr "th" "rowspan=\"2\"" "В."
++ th "одуш."
++ td (a.s ! Superl ! (AF Acc Animate (GSg Masc)))
++ intagAttr "td" "rowspan=\"2\"" (a.s ! Posit ! (AF Acc Animate (GSg Neut)))
++ intagAttr "td" "rowspan=\"2\"" (a.s ! Posit ! (AF Acc Animate (GSg Fem)))
++ td (a.s ! Superl ! (AF Acc Animate GPl))) ++
tr ( th "неодуш."
++ td (a.s ! Superl ! (AF Acc Inanimate (GSg Masc)))
++ td (a.s ! Superl ! (AF Acc Inanimate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Тв." ++ td (a.s ! Superl ! (AF Inst Animate (GSg Masc)))
++ td (a.s ! Superl ! (AF Inst Animate (GSg Neut)))
++ td (a.s ! Superl ! (AF Inst Animate (GSg Fem)))
++ td (a.s ! Superl ! (AF Inst Animate GPl))) ++
tr (intagAttr "th" "colspan=\"2\"" "Пр." ++ td (a.s ! Superl ! (AF (Prepos PrepOther) Animate (GSg Masc)))
++ td (a.s ! Superl ! (AF (Prepos PrepOther) Animate (GSg Neut)))
++ td (a.s ! Superl ! (AF (Prepos PrepOther) Animate (GSg Fem)))
++ td (a.s ! Superl ! (AF (Prepos PrepOther) Animate GPl))) ++
intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\"" (intagAttr "th" "colspan=\"6\"" "Краткая форма") ++
tr (intagAttr "th" "colspan=\"2\"" "" ++ td (a.s ! Posit ! (AFShort (GSg Masc)))
++ td (a.s ! Posit ! (AFShort (GSg Neut)))
++ td (a.s ! Posit ! (AFShort (GSg Fem)))
++ td (a.s ! Posit ! (AFShort GPl)))
);
s3= ""
} ;
InflectionV = \v -> {
t = "гл" ;
s1 = heading1 ("Глагол" ++
case v.asp of {
Imperfective => "совершенный" ;
Perfective => "несовершенный"
}) ;
s2 = frameTable (
tr(
intagAttr "th" "rowspan=\"2\"" "Лицо" ++
intagAttr "th" "colspan=\"3\"" "ед. ч." ++
intagAttr "th" "rowspan=\"2\"" "мн. ч." ) ++
tr(th "муж. р." ++ th "ср. р." ++ th "жен. р.") ++
(intagAttr "tr" "style=\"border-bottom-color:white;border-top-color:white;border-left-color:white;border-right-color:white\""
(intagAttr "th" "style=\"text-align:center;padding-top:20px;\"colspan=5" "Действительный залог")) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Настоящее время")) ++
tr(th "I" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VPresent P1))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VPresent P1))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VPresent P1))) ++
td (v.s ! VFORM Act (VIND GPl (VPresent P1)))) ++
tr(th "II" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VPresent P2))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VPresent P2))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VPresent P2))) ++
td (v.s ! VFORM Act (VIND GPl (VPresent P2)))) ++
tr(th "III" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VPresent P3))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VPresent P3))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VPresent P3))) ++
td (v.s ! VFORM Act (VIND GPl (VPresent P3)))) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Прошедшее время")) ++
tr(th "" ++
td (v.s ! VFORM Act (VIND (GSg Masc) VPast)) ++
td (v.s ! VFORM Act (VIND (GSg Neut) VPast)) ++
td (v.s ! VFORM Act (VIND (GSg Fem) VPast)) ++
td (v.s ! VFORM Act (VIND GPl VPast))) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Будущее время")) ++
tr(
th "I" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VFuture P1))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VFuture P1))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VFuture P1))) ++
td (v.s ! VFORM Act (VIND GPl (VFuture P1)))) ++
tr(th "II" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VFuture P2))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VFuture P2))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VFuture P2))) ++
td (v.s ! VFORM Act (VIND GPl (VFuture P2)))) ++
tr(th "III" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VFuture P3))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VFuture P3))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VFuture P3))) ++
td (v.s ! VFORM Act (VIND GPl (VFuture P3)))) );
s3 = "" ;
} ;
InflectionV2,
InflectionVV,
InflectionVS,
InflectionVQ,
InflectionVA,
InflectionV3,
InflectionV2V,
InflectionV2S,
InflectionV2Q,
InflectionV2A = \v -> {
t = "гл" ;
s1 = heading1 ("Глагол" ++
case v.asp of {
Imperfective => "совершенный" ;
Perfective => "несовершенный"
}) ;
s2 = frameTable (
tr(
intagAttr "th" "rowspan=\"2\"" "Лицо" ++
intagAttr "th" "colspan=\"3\"" "ед. ч." ++
intagAttr "th" "rowspan=\"2\"" "мн. ч." ) ++
tr(th "муж. р." ++ th "ср. р." ++ th "жен. р.") ++
(intagAttr "tr" "style=\"border-bottom-color:white;border-top-color:white;border-left-color:white;border-right-color:white\""
(intagAttr "th" "style=\"text-align:center;padding-top:20px;\"colspan=5" "Действительный залог")) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Настоящее время")) ++
tr(th "I" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VPresent P1))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VPresent P1))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VPresent P1))) ++
td (v.s ! VFORM Act (VIND GPl (VPresent P1)))) ++
tr(th "II" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VPresent P2))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VPresent P2))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VPresent P2))) ++
td (v.s ! VFORM Act (VIND GPl (VPresent P2)))) ++
tr(th "III" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VPresent P3))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VPresent P3))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VPresent P3))) ++
td (v.s ! VFORM Act (VIND GPl (VPresent P3)))) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Прошедшее время")) ++
tr(th "" ++
td (v.s ! VFORM Act (VIND (GSg Masc) VPast)) ++
td (v.s ! VFORM Act (VIND (GSg Neut) VPast)) ++
td (v.s ! VFORM Act (VIND (GSg Fem) VPast)) ++
td (v.s ! VFORM Act (VIND GPl VPast))) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Будущее время")) ++
tr(
th "I" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VFuture P1))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VFuture P1))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VFuture P1))) ++
td (v.s ! VFORM Act (VIND GPl (VFuture P1)))) ++
tr(th "II" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VFuture P2))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VFuture P2))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VFuture P2))) ++
td (v.s ! VFORM Act (VIND GPl (VFuture P2)))) ++
tr(th "III" ++
td (v.s ! VFORM Act (VIND (GSg Masc) (VFuture P3))) ++
td (v.s ! VFORM Act (VIND (GSg Neut) (VFuture P3))) ++
td (v.s ! VFORM Act (VIND (GSg Fem) (VFuture P3))) ++
td (v.s ! VFORM Act (VIND GPl (VFuture P3)))) ++
(intagAttr "tr" "style=\"border-bottom-color:white;border-top-color:white;border-left-color:white;border-right-color:white\""
(intagAttr "th" "style=\"text-align:center;padding-top:20px;\"colspan=5" "Страдательный залог")) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Настоящее время")) ++
tr(th "I" ++
td (v.s ! VFORM Pass (VIND (GSg Masc) (VPresent P1))) ++
td (v.s ! VFORM Pass (VIND (GSg Neut) (VPresent P1))) ++
td (v.s ! VFORM Pass (VIND (GSg Fem) (VPresent P1))) ++
td (v.s ! VFORM Pass (VIND GPl (VPresent P1)))) ++
tr(th "II" ++
td (v.s ! VFORM Pass (VIND (GSg Masc) (VPresent P2))) ++
td (v.s ! VFORM Pass (VIND (GSg Neut) (VPresent P2))) ++
td (v.s ! VFORM Pass (VIND (GSg Fem) (VPresent P2))) ++
td (v.s ! VFORM Pass (VIND GPl (VPresent P2)))) ++
tr(th "III" ++
td (v.s ! VFORM Pass (VIND (GSg Masc) (VPresent P3))) ++
td (v.s ! VFORM Pass (VIND (GSg Neut) (VPresent P3))) ++
td (v.s ! VFORM Pass (VIND (GSg Fem) (VPresent P3))) ++
td (v.s ! VFORM Pass (VIND GPl (VPresent P3)))) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Прошедшее время")) ++
tr(th "" ++
td (v.s ! VFORM Pass (VIND (GSg Masc) VPast)) ++
td (v.s ! VFORM Pass (VIND (GSg Neut) VPast)) ++
td (v.s ! VFORM Pass (VIND (GSg Fem) VPast)) ++
td (v.s ! VFORM Pass (VIND GPl VPast))) ++
(intagAttr "tr" "style=\"border-left-color:white;border-right-color:white\""
(intagAttr "th" "colspan=\"5\"" "Будущее время")) ++
tr(th "Первое" ++
td (v.s ! VFORM Pass (VIND (GSg Masc) (VFuture P1))) ++
td (v.s ! VFORM Pass (VIND (GSg Neut) (VFuture P1))) ++
td (v.s ! VFORM Pass (VIND (GSg Fem) (VFuture P1))) ++
td (v.s ! VFORM Pass (VIND GPl (VFuture P1)))) ++
tr(th "Второе" ++
td (v.s ! VFORM Pass (VIND (GSg Masc) (VFuture P2))) ++
td (v.s ! VFORM Pass (VIND (GSg Neut) (VFuture P2))) ++
td (v.s ! VFORM Pass (VIND (GSg Fem) (VFuture P2))) ++
td (v.s ! VFORM Pass (VIND GPl (VFuture P2)))) ++
tr(th "Третье" ++
td (v.s ! VFORM Pass (VIND (GSg Masc) (VFuture P3))) ++
td (v.s ! VFORM Pass (VIND (GSg Neut) (VFuture P3))) ++
td (v.s ! VFORM Pass (VIND (GSg Fem) (VFuture P3))) ++
td (v.s ! VFORM Pass (VIND GPl (VFuture P3))))
) ;
s3 = "" ;
} ;
InflectionAdv = \adv -> {
t = "нар" ;
s1= heading1 ("Наречие") ;
s2= paragraph (adv.s) ;
s3= ""
} ;
InflectionPrep = \prep -> {
t = "пр" ;
s1= heading1 ("Предлог") ;
s2= paragraph (prep.s) ;
s3= ""
} ;
lin
MkDocument d i e = {s = i.s1 ++ d.s ++ i.s2 ++ i.s3 ++ e.s} ;
MkTag i = {s = i.t} ;
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Определение:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Определение:</b>"++t.s++d.s++"</p><p><b>Пример:</b>"++e.s++"</p>"};
}

View File

@@ -0,0 +1,74 @@
--# -path=.:abstract:common
concrete ExtraLexRus of ExtraLexRusAbs = CatRus **
open ParadigmsRus in {
flags
coding=utf8 ;
lin
--- bridge_N = mkN "мост" ;
--- candle_N = nSvecha "свеч" ; -- +++ MG_UR: added +++
--- citizen_N = nGrazhdanin "господ" ; -- +++ MG_UR: added +++
daughter_N =
{s = table {
NF Sg Nom => "дочь" ;
NF Sg Gen => "дочери" ;
NF Sg Dat => "дочери" ;
NF Sg Acc => "дочь" ;
NF Sg Inst => "дочерью" ;
NF Sg (Prepos _) => "дочери" ;
NF Pl Nom => "дочери" ;
NF Pl Gen => "дочерей" ;
NF Pl Dat => "дочерям" ;
NF Pl Acc => "дочерей" ;
NF Pl Inst => "дочерьми" ;
NF Pl (Prepos _) => "дочерях"
} ;
g = Fem ; anim = Animate
} ;
--- desk_N = nStol "стол" ;
--- dictionary_N = nSlovar "словар" ;
--- fellow_N = nTovarish "товарищ" ; -- +++ MG_UR: added +++
--- flag_N = nVremja "зна" ;
--- heaven_N = nNebo "неб" ; -- +++ MG_UR: added +++
--- museum_N = nMusej "музе" ; -- +++ MG_UR: added +++
-- name_N = mkN "имя" "имени" "имени" "имя" "именем" "имени" "имени" "имена" "имён" "именам" "имена" "именами" "именах" neuter inanimate ;
--- ocean_N = nMorje "мор" ; -- +++ MG_UR: added +++
son_N =
{s = table
{ NF Sg Nom => syn ;
NF Sg Gen => syn+"а" ;
NF Sg Dat => syn+"у" ;
NF Sg Acc => syn +"а";
NF Sg Inst => syn+"ом" ;
NF Sg (Prepos _) => syn+"е" ;
NF Pl Nom => syn+"ья" ;
NF Pl Gen => syn+"ьев" ;
NF Pl Dat => syn+"ьям" ;
NF Pl Acc => syn +"ьев";
NF Pl Inst => syn+"ьями" ;
NF Pl (Prepos _) => syn+"ьяах"
} ;
g = Masc ; anim = Animate
} ;
--- time_N = nVremja "вре" ; -- +++ MG_UR: added +++
--- vocationalschool_N = nUchilishe "училищ" ; -- +++ MG_UR: added +++
way_N =
{s = table
{ NF Sg Nom => put+"ь" ;
NF Sg Gen => put+"и" ;
NF Sg Dat => put+"и" ;
NF Sg Acc => put+"ь" ;
NF Sg Inst => put+"ём" ;
NF Sg (Prepos _) => put+"и" ;
NF Pl Nom => put+"и" ;
NF Pl Gen => put+"ей" ;
NF Pl Dat => put+"ям" ;
NF Pl Acc => put+"и" ;
NF Pl Inst => put+"ями" ;
NF Pl (Prepos _) => put+"ях"
} ;
g = Masc ; anim = Inanimate
} ;
--- word_N = nSlovo "слов" ; -- +++ MG_UR: added +++
}

View File

@@ -0,0 +1,16 @@
concrete ExtraRus of ExtraRusAbs = CatRus **
open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus in {
flags optimize=all ; coding=utf8 ;
lin
have_V3 = P.mkV3 (P.mkV P.imperfective "" "" "" "" "" "" "был" "будь" "есть") "" "у" Nom Gen;
have2_V3 = P.mkV3 (P.mkV P.imperfective "есть" "есть" "есть" "есть" "есть" "есть" "был" "будь" "есть") "" "у" Nom Gen;
have_not_V3 = P.mkV3 (P.mkV P.imperfective "нет" "нет" "нет" "нет" "нет" "нет" "не было" "не будь" "нет") "" "у" Gen Gen;
be_V3 = P.mkV3 (P.mkV P.imperfective "" "" "" "" "" "" "был" "будь" "") "" "" Nom Dat;
to2_Prep = { s = "в" ; c = Acc };
}

View File

@@ -0,0 +1,12 @@
abstract ExtraRusAbs = Cat ** {
fun
have_V3 : V3 ;
have2_V3 : V3 ;
have_not_V3 : V3;
be_V3 : V3 ;
to2_Prep : Prep ;
}

View File

@@ -0,0 +1,18 @@
--# -path=.:../abstract:../common:../../prelude
concrete GrammarRus of Grammar =
NounRus,
VerbRus,
AdjectiveRus,
AdverbRus,
NumeralRus,
SentenceRus,
QuestionRus,
RelativeRus,
ConjunctionRus,
PhraseRus,
TextX,
StructuralRus,
IdiomRus,
TenseX
** { flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;} ;

View File

@@ -0,0 +1,58 @@
--# -path=.:../abstract:../common:../../prelude
concrete IdiomRus of Idiom = CatRus ** open Prelude, ResRus, MorphoRus in {
flags optimize=all_subs ; coding=utf8 ;
lin
ExistNP = \bar ->
{s =\\b,clf => case b of
{Pos => verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3)
++ bar.s ! PF Nom No NonPoss;
Neg => "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen bar.g) Sg P3)
++ bar.s ! PF Nom No NonPoss
}
} ;
ExistIP Kto =
let { kto = Kto.s ! (PF Nom No NonPoss) } in
{s = \\b,clf,_ => case b of
{Pos => kto ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3) ;
Neg => kto ++ "не" ++ verbSuchestvovat.s ! (getActVerbForm clf (pgen2gen Kto.g) Sg P3)
}
} ;
CleftAdv adv sen = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
in
"это" ++ ne ++ adv.s ++ [", "]++ sen.s };
CleftNP np rs = {s= \\ b, clf =>
let
ne= case b of {Pos =>[]; Neg =>"не"};
gn = case np.n of {Pl => GPl; _=> GSg (pgen2gen np.g)}
in
"это" ++ ne ++ np.s ! (PF Nom No NonPoss) ++
rs.s ! gn !Nom!Animate };
ImpPl1 vp = {s= "давайте" ++ vp.s! (ClIndic Future Simul)! GPl ! P1};
ImpersCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
in
ne ++ vp.s! clf! (GSg Neut) ! P3 };
-- No direct correspondance in Russian. Usually expressed by infinitive:
-- "Если очень захотеть, можно в космос улететь"
-- (If one really wants one can fly into the space).
-- Note that the modal verb "can" is trasferred into adverb
-- "можно" (it is possible) in Russian
-- The closest subject is "ты" (you), which is omitted in the final sentence:
-- "Если очень захочешь, можешь в космос улететь"
GenericCl vp = {s= \\ b, clf => let ne= case b of {Pos =>[]; Neg =>"не"}
in
"ты" ++ ne ++ vp.s! clf! (GSg Masc) ! P2 };
ProgrVP vp = vp ;
}

12
src/russian/v1/LangRus.gf Normal file
View File

@@ -0,0 +1,12 @@
--# -path=.:../abstract:../common:../prelude
concrete LangRus of Lang =
GrammarRus,
LexiconRus,
ConstructionRus,
DocumentationRus
** {
flags startcat = Phr ; unlexer = text ; lexer = text ; coding=utf8 ;
} ;

View File

@@ -0,0 +1,360 @@
--# -path=.:abstract:common
concrete LexiconRus of Lexicon = CatRus **
open ParadigmsRus, Prelude, StructuralRus, MorphoRus, (E = ExtraRus) in {
flags
optimize=values ;
coding=utf8 ;
lin
add_V3 = mkV3 (regV imperfective first "складыва" "ю" "складывал" "складывай" "складывать" ) "" "в" accusative accusative;
airplane_N = mkN "самолёт" ;
already_Adv = mkAdv "уже" ;
animal_N = mkN "животное" animate;
answer_V2S = dirV2 (regV imperfective first "отвеча" "ю" "отвечал" "отвечай" "отвечать" );
apartment_N = mkN "квартира" ;
apple_N = mkN "яблоко" inanimate ;
art_N = mkN "искусство" ;
ashes_N = mkN "пепел" ;
ask_V2Q = dirV2 (regV imperfective first "спрашива" "ю" "спрашивал" "спрашивай" "спрашивать") ;
baby_N = mkN "малыш" animate;
back_N = mkN "спина" ;
bad_A = mkA "плохой" "хуже";
bank_N = mkN "банк" ;
bark_N = mkN "кора";
beautiful_A = mkA "красивый";
become_VA = regV perfective secondA "станов" "лю" "стал" "стань" "стать" ;
beer_N = mkIndeclinableNoun "пиво" neuter inanimate ;
beg_V2V = dirV2 (mkV imperfective "прошу" "просишь" "просит" "просим" "просите" "просят" "просил" "проси" "просить" );
belly_N = mkN "живот" ;
big_A = mkA "большой" "больше" ;
bike_N = mkN "велосипед" ;
bird_N = mkN "птица" animate;
bite_V2 = dirV2 (regV imperfective first "куса" "ю" "кусал" "кусай" "кусать");
black_A = mkA "чёрный";
blood_N = mkN "кровь" ;
blow_V = regV imperfective first "ду" "ю" "дул" "дуй" "дуть" ;
blue_A = mkA "голубой" ;
boat_N = mkN "лодка" ;
bone_N = mkN "кость" ;
book_N = mkN "книга" ;
boot_N = mkN "сапог" ;
boss_N = mkN "начальник" animate;
boy_N = mkN "мальчик" animate;
bread_N = mkN "хлеб" ;
break_V2 = dirV2 (regV imperfective first "прерыва" "ю" "прерывал" "прерывай" "прерывать" );
breast_N = mkN "грудь" ;
breathe_V = regV imperfective second "дыш" "у" "дышал" "дыши" "дышать" ;
broad_A = mkA "широкий" "шире";
brother_N2 = mkN2 (mkN "брат" animate) ; -- FIXME: special case
brown_A = mkA "коричневый";
burn_V = regV imperfective second "гор" "ю" "горел" "гори" "гореть" ;
butter_N = mkN "масло";
buy_V2 = dirV2 (regV imperfective first "покупа" "ю" "покупал" "покупай" "покупать" );
camera_N = mkN "фотоаппарат" ;
cap_N = mkN "чашка" ; -- vowel change
car_N = mkN "машина" ;
carpet_N = mkN "ковёр"; -- vowel change
cat_N = mkN "кошка" animate ; -- vowel change
ceiling_N = mkN "потолок" ; -- vowel change
chair_N = mkN "стул" ; -- irregular
cheese_N = mkN "сыр" ;
child_N = mkNAltPl "ребёнок" "деть" masculine animate;
-- child_N = mkN "ребёнок" "ребёнка" "ребёнку" "ребёнка" "ребёнком" "ребёнке" "ребёнке" "дети" "детей" "детям" "детей" "детьми" "детях" masculine animate ;
church_N = mkN "церковь" "церкви" "церкви" "церковь" "церковью" "церкви" "церкви" "церкви" "церквей" "церквям" "церкви" "церквями" "церквях" masculine inanimate ;
city_N = mkN "город" ;
clean_A = mkA "чистый" "чище";
clever_A = mkA "умный";
close_V2= dirV2 (regV imperfective first "закрыва" "ю" "закрывал" "закрывай" "закрывать" );
cloud_N = mkN "облако" ; -- irregular
coat_N = mkIndeclinableNoun "пальто" masculine inanimate ;
cold_A = mkA "холодный";
come_V = regV imperfective first "прихо" "жу" "приходил" "приходи" "приходить" ;
computer_N = mkN "компьютер" ;
correct_A = mkA "правильный" ;
count_V2 = dirV2 (regV imperfective first "счита" "ю" "считал" "считай" "считать" ) ;
country_N = mkN "страна" ;
cousin_N = mkN "кузен" ; -- FIXME: is this really correct? can't find it in the dictionary
cow_N = mkN "корова" animate ;
cut_V2 = dirV2 (regV imperfective first "реж" "у" "резал" "режь" "резать" ) ;
day_N = mkN "день" "дня" "дню" "день" "днём" "дне" "дне" "дни" "дней" "дням" "дни" "днями" "днях" masculine inanimate ;
die_V = regV imperfective first "умира" "ю" "умирал" "умирай" "умирать" ;
dig_V = regV imperfective first "копа" "ю" "копал" "копай" "копать" ;
dirty_A = mkA "грязный" ;
distance_N3 = mkN3 (mkN "расстояние") from_Prep to_Prep ;
do_V2 = dirV2 (regV imperfective first "дела" "ю" "делал" "делай" "делать" );
doctor_N = mkN "доктор" animate ;
dog_N = mkN "собака" animate;
door_N = mkN "дверь" ;
drink_V2 = dirV2 (regV imperfective firstE "пь" "ю" "пил" "пей" "пить" );
dry_A = mkA "сухой" "суше";
dull_A = mkA "скучный" ;
dust_N = mkN "пыль" ;
ear_N = mkN "ухо" ;
earth_N = mkN "земля" ;
easy_A2V = mkA2 (mkA "лёгкий" "легче") "для" genitive ;
eat_V2 = dirV2 (regV imperfective first "куша" "ю" "кушал" "кушай" "кушать" );
egg_N = mkN "яйцо" ;
empty_A = mkA "пустой" ;
enemy_N = mkN "враг" animate ;
eye_N = mkN "глаз" ; -- FIXME: Pl -a
factory_N = mkN "фабрика" ;
fall_V = regV imperfective first "пада" "ю" "падал" "падай" "падать" ;
far_Adv = mkAdv "далеко";
fat_N = mkN "жир" ;
father_N2 = mkN2 (mkN "отец" "отца" "отцу" "отца" "отцом" "отце" "отце" "отцы" "отцов" "отцам" "отцов" "отцами" "отцах" masculine animate);
fear_V2 =dirV2 (regV imperfective first "бо" "ю" "боял" "бой" "боять" );
fear_VS = regV imperfective second "бо" "ю" "боял" "бой" "боять" ;
feather_N = mkN "перо" "пера" "перу" "пера" "пером" "пере" "пере" "перья" "перьев" "перьям" "перьев" "перьями" "перьях" neuter inanimate ;
fight_V2 = dirV2 (regV imperfective firstE "дер" "у" "драл" "дери" "драть" ) ;
find_V2 = dirV2 (mkV imperfective "нахожу" "находишь" "находит" "находим" "находите" "находят" "находил" "находи" "находить" );
fingernail_N = mkN "ноготь" "ногтя" "ногтю" "ногтя" "ногтем" "ногте" "ногте" "ногти" "ногтей" "ногтям" "ногтей" "ногтями" "ногтях" masculine inanimate ;
fire_N = mkN "огонь" "огня" "огню" "огня" "огнём" "огне" "огне" "огни" "огней" "огням" "огней" "огнями" "огнях" masculine inanimate ;
fish_N = mkN "рыба" animate;
float_V = regV imperfective firstE "плыв" "у" "плыл" "плыви" "плыть" ;
floor_N = mkN "пол" ;
flow_V = regV imperfective firstE "тек" "у" "тёк" "теки" "течь" ;
flower_N = mkN "цветок";
fly_V = regV imperfective first "лета" "ю" "летал" "летай" "летать" ;
fog_N = mkN "туман" ;
foot_N = mkN "ступня" ;
forest_N = mkN "лес" ; -- prepos -u
forget_V2= dirV2 (regV imperfective first "забыва" "ю" "забывал" "забывай" "забывать" );
freeze_V = regV imperfective first "замерза" "ю" "замерзал" "замерзай" "замерзать" ;
fridge_N = mkN "холодильник" ;
friend_N = mkN "друг" "друга" "другу" "друга" "другом" "друге" "друге" "друзья" "друзей" "друзьям" "друзей" "дузьями" "друзьях" masculine animate ;
fruit_N = mkN "фрукт" ;
full_A = mkA "полный";
fun_AV = mkA "весёлый";
garden_N = mkN "сад" ;
girl_N = mkN "девочка" animate; -- vowel change
give_V3 = tvDirDir (regV imperfective firstE "да" "ю" "давал" "давай" "давать" ) ;
glove_N = mkN "перчатка" ; -- vowel change
go_V = mkV imperfective "хожу" "ходишь" "ходит" "ходим" "ходите" "ходят" "ходил" "ходи" "ходить" ;
gold_N = mkN "золото" ;
good_A = mkA "хороший" "лучше" ;
grammar_N = mkN "грамматика";
grass_N = mkN "трава";
green_A = mkA "зелёный" ;
guts_N = mkN "внутренность" ;
hair_N = mkN "волос" ; -- FIXME: always plural?
hand_N = mkN "рука" ;
harbour_N = mkN "порт" ; -- prepos -u
hat_N = mkN "шляпа" ;
hate_V2= dirV2 (mkV imperfective "ненавижу" "ненавидишь" "ненавидит" "ненавидим" "ненавидите" "ненавидят" "ненавидел" "ненавидь" "ненавидеть" );
head_N = mkN "голова" ;
hear_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
heart_N = mkN "сердце" "сердца" "сердцу" "сердца" "сердцем" "сердце" "сердце" "сердца" "сердец" "сердцам" "сердец" "сердцами" "сердцах" neuter inanimate ;
heavy_A = mkA "тяжёлый" ;
hill_N = mkN "холм" ;
hit_V2 = dirV2 (regV imperfective first "ударя" "ю" "ударял" "ударяй" "ударять" );
hold_V2 = dirV2 (regV imperfective second "держ" "у" "держал" "держи" "держать" );
hope_VS= regV imperfective first "наде" "ю" "надеял" "надей" "надеять" ;
horn_N = mkN "рог" ;
horse_N = mkN "лошадь" animate; -- irregular
hot_A = mkA "горячий" ;
house_N = mkN "дом" ;
hunt_V2 = dirV2 (regV imperfective second "охоч" "у" "охотил" "охоть" "охотить" ) ;
husband_N = mkN "муж" "мужа" "мужу" "мужа" "мужем" "муже" "муже" "мужья" "мужей" "мужьям" "мужей" "мужьями" "мужьях" masculine animate ;
ice_N = mkN "лёд" "льда" "льду" "льда" "льдом" "льде" "льде" "льды" "льдов" "льдам" "льдов" "льдами" "льдах" masculine inanimate ;
important_A = mkA "важный" ;
industry_N = mkN "промышленность" ;
iron_N = mkN "железо" ;
john_PN = mkPN "Иван" Masc Sg Animate ;
jump_V = regV imperfective first "прыга" "ю" "прыгал" "прыгай" "прыгать" ;
kill_V2 = dirV2 (regV imperfective first "убива" "ю" "убивал" "убивай" "убивать" ) ;
king_N = mkN "король" "короля" "королю" "короля" "королем" "короле" "короле" "короли" "королей" "королям" "королей" "королями" "королях" masculine animate ;
knee_N = mkN "колено" "колена" "колену" "колена" "коленом" "колене" "колене" "колени" "колен" "коленам" "колен" "коленями" "коленях" neuter inanimate ;
know_V2= dirV2 (regV imperfective first "зна" "ю" "знал" "знай" "знать" );
know_VS= mkVQ (regV imperfective first "зна" "ю" "знал" "знай" "знать" );
know_VQ= mkVQ (regV imperfective first "зна" "ю" "знал" "знай" "знать" );
lake_N = mkN "озеро" ; -- gen pl "озёр"
lamp_N = mkN "лампа" ;
language_N = mkN "язык" ;
laugh_V = regV imperfective firstE "сме" "ю" "смеял" "смей" "смеять" ;
leaf_N = mkN "лист" ; -- irregular pl
learn_V2= dirV2 (regV imperfective second "уч" "у" "учил" "учи" "учить" );
leather_N = mkN "кожа" ;
leave_V2= dirV2 (mkV imperfective "ухожу" "уходишь" "уходит" "уходим" "уходите" "уходят" "уходил" "уходи" "уходить" );
left_Ord = (uy_j_EndDecl "лев" ) ** {lock_A = <>};
leg_N = mkN "нога" ;
lie_V = regV imperfective firstE "лг" "у" "лгал" "лги" "лгать" ;
like_V2= dirV2 (regV imperfective second "нрав" "лю" "нравил" "нравь" "нравить" );
listen_V2= dirV2 (regV imperfective first "слуша" "ю" "слушал" "слушай" "слушать" );
live_V= regV imperfective firstE "жив" "у" "жил" "живи" "жить" ;
liver_N = mkN "печень" ;
long_A = mkA "длинный" ;
lose_V2 = dirV2 (regV imperfective first "теря" "ю" "терял" "теряй" "терять" );
louse_N = mkN "вошь" "вши" "вши" "вошь" "вошью" "вше" "вше" "вши" "вшей" "вшам" "вшей" "вшами" "вшах" feminine animate ;
love_N = mkN "любовь" ; -- vowel change
love_V2= dirV2 (regV imperfective second "люб" "лю" "любил" "люби" "любить" );
man_N = mkNAltPl "человек" "людь" masculine animate ; -- null gen pl
married_A2 = mkA2 (mkA "замужем") "за" instructive ;
meat_N = mkN "мясо" ;
milk_N = mkN "молоко" ;
moon_N = mkN "луна" ;
mother_N2 = mkN2 (mkN "мать" "матери" "матери" "мать" "матерью" "матери" "матери" "матери" "матерей" "матерям" "матерей" "матерями" "матерях" feminine animate) ;
mountain_N = mkN "гора" ;
mouth_N = mkN "рот" "рта" "рту" "рот" "ртом" "рте" "рте" "рты" "ртов" "ртам" "рты" "ртами" "ртах" masculine inanimate ;
music_N = mkN "музыка" ;
name_N = mkN "имя" ;
narrow_A = mkA "узкий" "уже" ;
near_A = mkA "близкий" "ближе";
neck_N = mkN "шея" ;
new_A = mkA "новый" ;
newspaper_N = mkN "газета" ;
night_N = mkN "ночь" ;
nose_N = mkN "нос" ;
now_Adv = mkAdv "сейчас" ;
number_N = mkN "число" ; -- gen pl "чисел"
oil_N = mkN "нефть" ;
old_A = mkA "старый" "старше" ;
open_V2= dirV2 (regV imperfective first "открыва" "ю" "открывал" "открывай" "открывать" );
--- organise_V2 = dirV2 (regV imperfective first "организу" "ю" "организовал" "организуй" "организовать" );
paint_V2A = dirV2 (regV imperfective first "рису" "ю" "рисовал" "рисуй" "рисовать" ) ;
--- palace_N = nDvorec "двор" ; -- +++ MG_UR: added +++
paper_N = mkN "бумага" ;
paris_PN = mkPN "Париж" Masc Sg Inanimate ;
peace_N = mkN "мир" ;
pen_N = mkN "ручка" ;
person_N = mkN "лицo" animate ; -- irregular
planet_N = mkN "планета" ;
plastic_N = mkN "пластмасса" ;
play_V = regV imperfective first "игра" "ю" "играл" "играй" "играть" ;
play_V2 = mkV2 (regV imperfective first "игра" "ю" "играл" "играй" "играть" ) "c" instructive;
policeman_N = mkN "милиционер" animate ;
priest_N = mkN "священник" animate;
probable_AS = mkA "возможный" ;
pull_V2 = dirV2 (regV imperfective first "тян" "у" "тянул" "тяни" "тянуть" ) ;
push_V2 = dirV2 (regV imperfective first "толка" "ю" "толкал" "толкай" "толкать" );
put_V2 = dirV2 (regV imperfective firstE "клад" "у" "клал" "клади" "класть" );
queen_N = mkN "королева" animate ;
question_N = mkN "вопрос" ;
radio_N = mkIndeclinableNoun "радио" neuter inanimate;
rain_N = mkN "дождь" ;
rain_V0 = idetDozhd verbIdti; -- No such verb in Russian!
read_V2 = dirV2 (regV imperfective first "чита" "ю" "читал" "читай" "читать" );
-- ready_A = ;
reason_N = mkN "причина";
red_A = mkA "красный" ;
religion_N = mkN "религия" ;
restaurant_N = mkN "ресторан" ;
right_Ord = (uy_j_EndDecl "прав") ** {lock_A = <>} ;
river_N = mkN "рекa" ;
road_N = mkN "дорогa" ;
rock_N = mkN "камень" ;
roof_N = mkN "крыша" ;
root_N = mkN "корень" ;
rope_N = mkN "верёвка" ;
rotten_A = mkA "гнилой";
round_A = mkA "круглый";
rub_V2 = dirV2 (regV imperfective firstE "тр" "у" "тёр" "три" "тереть" );
rubber_N = mkN "резина" ;
rule_N = mkN "правило" ;
run_V = regV imperfective first "бега" "ю" "бегал" "бегай" "бегать" ;
salt_N = mkN "соль" ;
sand_N = mkN "песок" "песка" "песку" "песок" "песком" "песке" "песке" "пески" "песков" "пескам" "песков" "песками" "песках" masculine inanimate ;
say_VS = regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ;
school_N = mkN "школа" ;
science_N = mkN "наука" ;
scratch_V2 = dirV2 (regV imperfective first "чеш" "у" "чесал" "чеши" "чесать" ) ;
sea_N = mkN "море" ;
see_V2 = dirV2 (mkV imperfective "вижу" "видишь" "видит" "видим" "видите" "видят" "видел" "видь" "видеть");
seed_N = mkN "семя";
seek_V2 = dirV2 (regV imperfective first "ищ" "у" "искал" "ищи" "искать" );
sell_V3 = tvDirDir (regV imperfective firstE "прода" "ю" "продавал" "продавай" "продавать" );
send_V3 = tvDirDir (regV imperfective first "посыла" "ю" "посылал" "посылай" "посылать" );
sew_V = regV imperfective firstE "шь" "ю" "шил" "шей" "шить" ;
sharp_A = mkA "острый";
sheep_N = mkN "овца" animate ;
ship_N = mkN "корабль" ;
shirt_N = mkN "рубашка" ;
shoe_N = mkN "туфля" "туфли" "туфле" "туфлю" "туфлей" "туфле" "туфле" "туфли" "туфель" "туфлям" "туфли" "туфлями" "туфлях" masculine inanimate ;
shop_N = mkN "магазин" ;
short_A = mkA "короткий" "короче" ;
silver_N = mkN "серебро" ;
sing_V = regV imperfective firstE "по" "ю" "пел" "пой" "петь" ;
sister_N = mkN "сестра" animate ;
sit_V = mkV imperfective "сижу" "сидишь" "сидит" "сидим" "сидите" "сидят" "сидел" "сиди" "сидеть" ;
skin_N = mkN "кожа" ;
sky_N = mkN "небо" "неба" "небу" "небо" "небом" "небе" "небе" "небеса" "небес" "небесам" "небес" "небесами" "небесах" neuter inanimate ;
sleep_V = regV imperfective second "сп" "лю" "спал" "спи" "спать" ;
small_A = mkA "маленький" "меньше" ;
smell_V = regV imperfective first "пахн" "у" "пахнул" "пахни" "пахнуть" ;
smoke_N = mkN "дым" ;
smooth_A = mkA "гладкий" "глаже";
snake_N = mkN "змея" animate ;
snow_N = mkN "снег" ;
sock_N = mkN "носок" ;
song_N = mkN "песня" ;
speak_V2 = mkV2 (regV imperfective secondA "говор" "ю" "говорил" "говори" "говорить")
"на" prepositional ;
spit_V = regV imperfective firstE "плю" "ю" "плевал" "плюй" "плевать" ;
split_V2 = dirV2 (regV imperfective first "разбива" "ю" "разбивал" "разбей" "разбивать" ) ;
squeeze_V2 = dirV2 (regV imperfective first "сжима" "ю" "сжимал" "сжимай" "сжимать" ) ;
stab_V2 = dirV2 (regV imperfective first "кол" "ю" "колол" "коли" "колоть" ) ;
stand_V = regV imperfective second "сто" "ю" "стоял" "стой" "стоять" ;
star_N = mkN "звезда" ;
steel_N = mkN "сталь" ;
stick_N = mkN "палка" ;
stone_N = mkN "камень" ;
stop_V = regV imperfective first "останавлива" "ю" "останавливал" "останавливай" "останавливать";
stove_N = mkN "печь" ;
straight_A = mkA "прямой" ;
student_N = mkN "студент" animate ;
stupid_A = mkA "тупой" "тупее" ;
suck_V2 = dirV2 (regV imperfective firstE "сос" "у" "сосал" "соси" "сосать") ;
sun_N = mkN "солнце" "солнца" "солнцу" "солнце" "солнцем" "солнце" "солнце" "солнца" "солнц" "солнцам" "солнца" "солнцами" "солнцах" neuter inanimate ;
swell_V = regV imperfective first "опуха" "ю" "опухал" "опухай" "опухать" ;
swim_V = regV imperfective first "плава" "ю" "плавал" "плавай" "плавать" ;
switch8off_V2 = dirV2 (regV imperfective first "выключа" "ю" "выключал" "выключай" "выключать") ;
switch8on_V2 = dirV2 (regV imperfective first "включа" "ю" "включал" "включай" "включать") ;
table_N = mkN "стол" ;
tail_N = mkN "хвост" ;
talk_V3 = mkV3 (regV imperfective second "говор" "ю" "говорил" "говори" "говорить" ) "с" "о" instructive prepositional;
teach_V2 = dirV2 (regV imperfective second "уч" "у" "учил" "учи" "учить" );
teacher_N = mkN "учитель" animate ;
television_N = mkN "телевидение" ; -- FIXME: televizor?
thick_A = mkA "толстый" "толще" ;
thin_A = mkA "тонкий" "тоньше" ;
think_V = regV imperfective first "дума" "ю" "думал" "думай" "думать" ;
throw_V2 = dirV2 (regV imperfective first "броса" "ю" "бросал" "бросай" "бросать" ) ;
tie_V2 = dirV2 (regV imperfective first "вяж" "у" "вязал" "вяжи" "вязать") ;
today_Adv = mkAdv "сегодня" ;
tongue_N = mkN "язык" ;
tooth_N = mkN "зуб" ;
train_N = mkN "поезд" ;
travel_V = regV imperfective first "путешеству" "ю" "путешествовал" "путешествуй" "путешествовать" ;
tree_N = mkN "дерево" ; -- irregular
turn_V = regV imperfective first "поворачива" "ю" "поворачивал" "поворачивай" "поворачивать" ;
ugly_A = mkA "некрасивый" ;
-- uncertain_A = ;
understand_V2 = dirV2 (regV imperfective first "понима" "ю" "понимал" "понимай" "понимать" );
university_N = mkN "университет" ;
village_N = mkN "деревня" ;
vomit_V = regV imperfective firstE "рв" "у" "рвал" "рви" "рвать" ;
wait_V2 = dirV2 (regV imperfective firstE "жд" "у" "ждал" "жди" "ждать" );
walk_V = regV imperfective first "гуля" "ю" "гулял" "гуляй" "гулять" ;
--- want_V2 = dirV2 (regV imperfective mixed "хо" "чу" "хотел" "хоти" "хотеть" );
war_N = mkN "война" ;
warm_A = mkA "тёплый" ;
wash_V2 = dirV2 (regV imperfective first "мо" "ю" "мыл" "мой" "мыть" ) ;
watch_V2 = dirV2 (regV imperfective second "смотр" "ю" "смотрел" "смотри" "смотреть" );
water_N = mkN "вода" ;
wet_A = mkA "мокрый" ;
white_A = mkA "белый" ;
wide_A = mkA "широкий" "шире";
wife_N = mkN "жена" animate ;
win_V2 = dirV2 (regV imperfective first "выигрыва" "ю" "выигрывал" "выигрывай" "выигрывать" );
wind_N = mkN "ветер" "ветра" "ветру" "ветер" "ветром" "ветра" "ветра" "ветров" "ветра" "ветрам" "ветров" "ветрами" "ветрах" masculine inanimate ;
window_N = mkN "окно" ; -- "окон"
wine_N = mkN "вино" ;
wing_N = mkN "крыло" ; -- pl крылья крыльев etc
wipe_V2 = dirV2 (regV imperfective first "вытира" "ю" "вытирал" "вытирай" "вытирать" );
woman_N = mkN "женщина" ;
wonder_VQ = regV imperfective first "интересу" "ю" "интересовал" "интересуй" "интересовать";
wood_N = mkN "дерево" ;
worm_N = mkN "черв" ;
write_V2 = dirV2 (regV imperfective first "пиш" "у" "писал" "пиши" "писать" );
year_N = mkNAltPl "год" "лето" masculine inanimate ;
yellow_A = mkA "жёлтый" ;
young_A = mkA "молодой" "моложе" ;
}

1517
src/russian/v1/MorphoRus.gf Normal file

File diff suppressed because it is too large Load Diff

304
src/russian/v1/NounRus.gf Normal file
View File

@@ -0,0 +1,304 @@
--# -path=.:../abstract:../common:../../prelude
concrete NounRus of Noun = CatRus ** open ResRus, Prelude, MorphoRus in {
flags optimize=all_subs ; coding=utf8 ;
lin
DetCN kazhduj okhotnik = {
s = \\c => case kazhduj.size of {
nom =>
kazhduj.s ! extCase c ! okhotnik.anim ! okhotnik.g ++
okhotnik.nounpart ! NF Sg (extCase c) nom ++ okhotnik.relcl ! kazhduj.n ! (extCase c) ;
nompl =>
kazhduj.s ! extCase c ! okhotnik.anim ! okhotnik.g ++
okhotnik.nounpart ! NF kazhduj.n (extCase c) nompl ++ okhotnik.relcl ! kazhduj.n ! (extCase c) ;
sgg =>
case c of {
PF Nom _ _ =>
kazhduj.s ! Nom ! okhotnik.anim ! okhotnik.g ++
okhotnik.nounpart ! NF Sg Gen sgg ++ okhotnik.relcl ! kazhduj.n ! (extCase c) ;
_ =>
kazhduj.s ! extCase c ! okhotnik.anim ! okhotnik.g ++
okhotnik.nounpart ! NF Pl (extCase c) sgg ++ okhotnik.relcl ! kazhduj.n ! (extCase c)} ;
plg =>
case c of {
PF Nom _ _ =>
kazhduj.s ! Nom ! okhotnik.anim ! okhotnik.g ++
okhotnik.nounpart ! NF Pl Gen plg ++ okhotnik.relcl ! kazhduj.n ! (extCase c) ;
_ =>
kazhduj.s ! extCase c ! okhotnik.anim ! okhotnik.g ++
okhotnik.nounpart ! NF Pl (extCase c) plg ++ okhotnik.relcl ! kazhduj.n ! (extCase c)}
};
n = kazhduj.n ;
p = P3 ;
pron = False;
g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
anim = okhotnik.anim
} ;
UsePN masha = {
s = \\c => masha.s ! (extCase c) ;
p = P3; g = PGen masha.g ; anim = masha.anim ;
n = Sg; nComp = Sg; pron = False} ;
UsePron p = p ** {anim = Inanimate};
PredetNP pred np = {
s = \\pf => pred.s! (AF (extCase pf) np.anim (gennum (pgen2gen np.g) np.n))++ np.s ! pf ;
n = np.n;
p = np.p;
g = np.g;
anim = np.anim;
pron = np.pron
} ;
PPartNP np v2 = {
s = \\pf => np.s ! pf ++ v2.s ! VFORM Act VINF ;
-- no participles in the Verbum type as they behave as adjectives
n = np.n;
p = np.p;
g = np.g;
anim = np.anim;
pron = np.pron
} ;
AdvNP np adv = {
s = \\pf => np.s ! pf ++ adv.s ;
n = np.n;
p = np.p;
g = np.g;
anim = np.anim;
pron = np.pron
} ;
-- 1.4 additions AR 17/6/2008
DetNP kazhduj =
let
g = Neut ; ----
anim = Inanimate ;
in {
s = \\c => kazhduj.s ! extCase c ! anim ! g ;
n = kazhduj.n ;
p = P3 ;
pron = False;
g = case kazhduj.g of { PNoGen => (PGen g); _ => kazhduj.g };
anim = anim
} ;
{-
DetArtOrd quant num ord = {
s = \\af => quant.s !af ++ num.s! (caseAF af) ! (genAF af) ++ ord.s!af ;
n = num.n ;
g = quant.g;
c = quant.c
} ;
DetArtCard quant num = {
s = \\af => quant.s !af ++ num.s! (caseAF af) ! (genAF af) ;
n = num.n ;
g = quant.g;
c = quant.c
} ;
-}
-- MassDet = {s = \\_=>[] ; c = Nom; g = PNoGen; n = Sg} ;
MassNP okhotnik = {
s = \\c => okhotnik.nounpart ! NF Sg (extCase c) nom ++ okhotnik.relcl ! Sg ! extCase c ;
n = Sg ;
p = P3 ;
pron = False;
g = PGen okhotnik.g ;
anim = okhotnik.anim
} ;
{-
DetArtSg kazhduj okhotnik = {
s = \\c => -- art case always Nom (AR 17/6/2008)
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g Sg) ++
okhotnik.s ! Sg ! (extCase c) ;
n = Sg ;
p = P3 ;
pron = False;
g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g};
anim = okhotnik.anim
} ;
DetArtPl kazhduj okhotnik = {
s = \\c => -- art case always Nom (AR 17/6/2008)
kazhduj.s ! AF (extCase c) okhotnik.anim (gennum okhotnik.g Pl) ++
okhotnik.s ! Pl ! (extCase c) ;
n = Pl ;
p = P3 ;
pron = False;
g = case kazhduj.g of { PNoGen => (PGen okhotnik.g); _ => kazhduj.g };
anim = okhotnik.anim
} ;
-}
PossPron p = {s = \\af => p.s ! mkPronForm (caseAF af) No (Poss (gennum (genAF af) (numAF af) )); c=Nom; g = PNoGen; size = nom} ;
OrdNumeral numeral = variants {} ; ---- TODO; needed to compile Constructors
OrdDigits numeral = variants {} ; ---- TODO; needed to compile Constructors
---- OrdDigits TODO
-- {s = \\ af => (uy_j_EndDecl (numeral.s ! caseAF af ! genAF af)).s!af} ;
NumNumeral n = n ;
NumDigits n = {s = \\_,_,_ => n.s ; n = n.n ; size = n.size } ;
AdNum adn num = {s = \\c,a,n => adn.s ++ num.s!c!a!n ; n = num.n ; size = num.size} ;
OrdSuperl a = {s = a.s ! Posit} ;
DefArt = {s = \\_=>[] ; c=Nom; g = PNoGen; size = nom };
IndefArt = { s = \\_=>[] ; c=Nom; g = PNoGen; size = nom };
UseN noun = {
nounpart = \\nf => noun.s ! nf ;
relcl = \\n,c => "" ;
g = noun.g ;
anim = noun.anim
} ;
UseN2 noun = {
nounpart = noun.s ;
relcl = \\n,c => "" ;
g = noun.g ;
anim = noun.anim
} ;
-- The application of a function gives, in the first place, a common noun:
-- "ключ от дома". From this, other rules of the resource grammar
-- give noun phrases, such as "ключи от дома", "ключи от дома
-- и от машины", and "ключ от дома и машины" (the
-- latter two corresponding to distributive and collective functions,
-- respectively). Semantics will eventually tell when each
-- of the readings is meaningful.
ComplN2 f x = {
nounpart = \\nf => case x.pron of {
True => x.s ! (case nf of {NF n c size => mkPronForm c No (Poss (gennum f.g n))}) ++ f.s ! nf ;
False => f.s ! nf ++ f.c2.s ++
x.s ! (case nf of {NF n c size => mkPronForm f.c2.c Yes (Poss (gennum f.g n))})
} ;
relcl = \\n,c => "" ;
g = f.g ;
anim = f.anim
} ;
-- Two-place functions add one argument place.
-- There application starts by filling the first place.
ComplN3 f x = {
s = \\nf => f.s ! nf ++ f.c2.s ++ x.s ! (PF f.c2.c Yes NonPoss) ;
g = f.g ;
anim = f.anim ;
c2 = f.c3 ;
} ;
---- AR 17/12/2008
Use2N3 f = {
s = f.s ;
g = f.g ;
anim = f.anim ;
c2 = f.c2
} ;
---- AR 17/12/2008
Use3N3 f = {
s = f.s ;
g = f.g ;
anim = f.anim ;
c2 = f.c3
} ;
-- The two main functions of adjective are in predication ("Иван - молод")
-- and in modification ("молодой человек"). Predication will be defined
-- later, in the chapter on verbs.
AdjCN ap cn = {
nounpart = \\nf => case ap.p of {
False => ap.s ! case nf of {NF Sg Gen sgg => AF Nom cn.anim GPl ;
NF n c size => AF c cn.anim (gennum cn.g n)} ++ cn.nounpart ! nf ;
True => cn.nounpart ! nf ++ ap.s ! case nf of {NF Sg Gen sgg => AF Nom cn.anim GPl ;
NF n c size => AF c cn.anim (gennum cn.g n)}
} ;
relcl = cn.relcl ;
g = cn.g ;
anim = cn.anim
} ;
-- This is a source of the "man with a telescope" ambiguity, and may produce
-- strange things, like "машины всегда".
-- Semantics will have to make finer distinctions among adverbials.
AdvCN cn adv = {
nounpart = \\nf => cn.nounpart ! nf ++ adv.s ;
relcl = cn.relcl ;
g = cn.g ;
anim = cn.anim
} ;
-- Constructions like "the idea that two is even" are formed at the
-- first place as common nouns, so that one can also have "a suggestion that...".
SentCN idea x = {
nounpart = \\nf => idea.nounpart ! nf ;
relcl = \\n,c => idea.relcl ! n ! c ++ x.s ;
g = idea.g ;
anim = idea.anim
} ;
RelCN idea x = {
nounpart = \\nf => idea.nounpart ! nf;
relcl = \\n,c => idea.relcl ! n ! c ++ x.s ! (gennum idea.g n)! c ! idea.anim ;
g = idea.g ;
anim = idea.anim
} ;
---- AR 17/12/2008
ApposCN cn s = {
nounpart = \\nf => cn.nounpart ! nf ++ s.s ! (case nf of {NF n c size => PF c No NonPoss}) ;
relcl = cn.relcl ;
g = cn.g ;
anim = cn.anim
} ;
RelNP np rel = {
s = \\c => np.s ! c ++ rel.s ! (gennum (pgen2gen np.g) np.n) ! extCase c ! np.anim ;
n = np.n ;
p = np.p ;
pron = np.pron ;
g = np.g ;
anim = np.anim ;
nComp = np.nComp
} ;
---- Liza Zimina 04/2018
-- changed to make Ord agree in number with Num
DetQuantOrd quant num ord = {
s = \\c,a,gen => quant.s ! AF c a (gennum gen num.n) ++ num.s ! gen ! a ! c ++ case num.n of {
Sg => ord.s ! AF c a (GSg gen) ;
Pl => ord.s ! AF c a GPl
} ;
n = num.n ;
g = quant.g;
c = quant.c;
size = quant.size
} ;
DetQuant quant num = {
s = \\c,a,gen => quant.s ! AF c a (gennum gen num.n) ++ num.s ! gen ! a ! c ;
n = num.n ;
g = quant.g;
c = quant.c;
size = num.size
} ;
NumCard c = c ;
NumSg = {s = \\_,_,_ => [] ; n = Sg ; size = nom} ;
NumPl = {s = \\_,_,_ => [] ; n = Pl ; size = nompl} ;
}

View File

@@ -0,0 +1,272 @@
--# -path=.:../abstract:../common:../../prelude
concrete NumeralRus of Numeral = CatRus [Numeral,Digits] ** open ResRus, Prelude in {
flags coding=utf8 ;
-- Toiska, 13/8/2000, AR with Arto Mustajoki.
-- Nikita Frolov, 2011
lincat Digit = {s : DForm => Gender => Animacy => Case => Str ; size : Size} ;
lincat Sub10 = {s : Place => DForm => Gender => Animacy => Case => Str ; size : Size} ;
lincat Sub100 = {s : Place => Gender => Animacy => Case => Str ; size : Size} ;
lincat Sub1000 = {s : Place => Gender => Animacy => Case => Str ; size : Size} ;
lincat Sub1000000 = {s : Gender => Animacy => Case => Str ; size : Size} ;
lin num x = {s = \\ g,a,c => x.s ! g ! a ! c; n = Pl ; size = x.size};
lin n3 =
{s = table {unit => tri ;
teen => nadsat "три" ;
ten => n2030 "три" ;
hund => sta tri} ;
size = sgg} ;
lin n4 =
{s = table {unit => chetyre ;
teen => nadsat "четыр" ;
ten => \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => "сорок";
<(Gen|Dat|Inst|Prepos _), _ > => "сорока" } ;
hund => sta chetyre } ;
size = sgg} ;
lin n5 =
{s = table {unit => n59 "пят" ;
teen => nadsat "пят" ;
ten => n5070 "пят" ;
hund => sot (n59 "пят")} ;
size = plg} ;
lin n6 =
{s = table {unit => n59 "шест" ;
teen => nadsat "шест" ;
ten => n5070 "шест" ;
hund => sot (n59 "шест")} ;
size = plg} ;
lin n7 =
{s = table {unit => n59 "сем" ;
teen => nadsat "сем" ;
ten => n5070 "сем" ;
hund => sot (n59 "сем") } ;
size = plg} ;
lin n8 =
{s = table {unit => vosem ;
teen => nadsat "восем" ;
ten => \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => "восемьдесят";
<(Gen|Dat|Prepos _), _ > => "восьмидесяти" ;
<Inst, _ > => "восемьюдесятью"
};
hund => sot vosem
} ;
size = plg} ;
lin n9 =
{s = table {unit => n59 "девят" ;
teen => nadsat "девят" ;
ten => \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => "девяносто";
<(Gen|Dat|Inst|Prepos _), _ > => "девяноста"
};
hund => sot (n59 "девят") } ;
size = plg} ;
oper n59 : Str -> (Gender => Animacy => Case => Str) = \ n -> \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => n + "ь";
<(Gen|Dat|Prepos _), _ > => n + "и";
<Inst, _ > => n + "ью"
};
oper n2030 : Str -> (Gender => Animacy => Case => Str) = \ n -> \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => n + "дцать";
<(Gen|Dat|Prepos _), _ > => n + "дцати" ;
<Inst, _ > => n + "дцатью"
};
oper n5070 : Str -> (Gender => Animacy => Case => Str) = \ n -> \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => n + "ьдесят";
<(Gen|Dat|Prepos _), _ > => n + "идесяти" ;
<Inst, _ > => n + "ьюдесятью"
};
oper tri : Gender => Animacy => Case => Str = \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => "три";
<(Gen|Prepos _), _ > => "трех";
<Dat, _ > => "трем";
<Inst, _ > => "тремя"
};
oper chetyre : Gender => Animacy => Case => Str = \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => "четыре";
<(Gen|Prepos _), _ > => "четырех";
<Dat, _ > => "четырем";
<Inst, _ > => "четырьмя"
};
oper vosem : Gender => Animacy => Case => Str = \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => "восемь";
<(Gen|Dat|Prepos _), _ > => "восьми";
<Inst, _ > => "восемью"
};
-- a little tribute to Burgess
oper nadsat : Str -> (Gender => Animacy => Case => Str) = \ n -> \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => n + "надцать";
<(Gen|Dat|Prepos _), _ > => n + "надцати";
<Inst, _ > => n + "надцатью"
};
oper sta : (Gender => Animacy => Case => Str) -> (Gender => Animacy => Case => Str) = \ n -> \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => n ! Fem ! Animate ! c + "ста";
<Gen, _ > => n ! Fem ! Animate ! c + "сот";
<Dat, _ > => n ! Fem ! Animate ! c + "стам";
<Inst, _ > => n ! Fem ! Animate ! c + "юстами";
<Prepos _, _ > => n ! Fem ! Animate ! c + "стах"
};
oper sot : (Gender => Animacy => Case => Str) -> (Gender => Animacy => Case => Str) = \ n -> \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => n ! Fem ! Animate ! c + "сот";
<Gen, _ > => n ! Fem ! Animate ! c + "сот";
<Dat, _ > => n ! Fem ! Animate ! c + "стам";
<Inst, _ > => n ! Fem ! Animate ! c + "юстами";
<Prepos _, _ > => n ! Fem ! Animate ! c + "ста"
};
lin pot01 =
{s = table {attr => table {hund => \\ g, a, c =>
case <g, a, c> of {
<_, _, (Nom|Acc) > => "сто";
<_, _, (Gen|Dat|Prepos _) > => "ста";
<_, _, Inst > => "сотней"
};
_ => \\ g, a, c => []} ;
_ => table {hund => \\ g, a, c =>
case <g, a, c> of {
<_, _, (Nom|Acc) > => "сто";
<_, _, (Gen|Dat|Prepos _) > => "ста";
-- TODO: case agreement with nouns
<_, _, Inst > => "сотней"
};
_ => \\ g, a, c =>
case <g, a, c> of {
<Masc, Animate, Acc> => "одного";
<Masc, Inanimate, Acc> => "один";
<Masc, _, Nom > => "один";
<Masc, _, Gen > => "одного";
<Masc, _, Dat > => "одному";
<Masc, _, Inst > => "одним";
<Masc, _, Prepos _ > => "одном";
<Fem, _, Nom > => "одна";
<Fem, _, (Gen|Dat|Inst|Prepos _) > => "одной";
<Fem, _, Acc> => "одну";
<Neut, _, (Nom|Acc) > => "одно";
<Neut, _, Gen > => "одного";
<Neut, _, Dat > => "одному";
<Neut, _, Inst > => "одним";
<Neut, _, Prepos _ > => "одном"}}} ;
size = nom} ;
lin n2 =
{s = table {unit => \\ g, a, c =>
case <c, g, a> of {
<(Nom|Acc), Fem, _ > => "две";
<(Nom|Acc), (Masc|Neut), Inanimate > => "два";
<Nom, (Masc|Neut), Animate > => "два";
<Acc , _, Animate > => "двух";
<(Gen|Prepos _), _, _ > => "двух";
<Dat, _, _ > => "двум";
<Inst, _, _ > => "двумя"
};
teen => nadsat "две" ;
ten => n2030 "два" ;
hund => \\ g, a, c =>
case <c, g> of {
<(Nom|Acc), _ > => "двести";
<Gen, _ > => "двухсот";
<Dat, _ > => "двумстам";
<Inst, _ > => "двумястами";
<Prepos _, _ > => "двухстах"} } ;
size = sgg} ;
lin pot0 d =
{s = table {_ => d.s} ; size = d.size} ;
lin pot110 =
{s = \\ p => n59 "десят" ; size = plg} ;
lin pot111 =
{s = \\ p => nadsat "один" ; size = plg} ; --- 11
lin pot1to19 d =
{s = table {_ => d.s ! teen} ; size = plg} ;
lin pot0as1 n =
{s = table {p => n.s ! p ! unit} ; size = n.size} ;
lin pot1 d =
{s = table {_ => d.s ! ten} ; size = plg} ; ---
lin pot1plus d e =
{s = table {_ => \\ g, a, c => d.s ! ten ! g ! a ! c ++ e.s ! indep ! unit ! g ! a ! c} ; size = e.size} ;
lin pot1as2 n =
{s = n.s ; size = n.size} ;
lin pot2 d =
{s = table {p => d.s ! p ! hund} ; size = plg} ;
lin pot2plus d e =
{s = \\ p, g, a, c => d.s ! p ! hund ! g ! a ! c ++ e.s ! indep ! g ! a ! c ; size = e.size} ;
lin pot2as3 n =
{s = n.s ! indep ; size = n.size} ;
lin pot3 n =
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size ; size = plg} ;
lin pot3plus n m =
{s = \\ g, a, c => n.s ! attr ! Fem ! a ! c ++ mille ! n.size ++ m.s ! indep ! g ! a ! c ; size = plg} ;
--- TODO
--- raz/odin
-- numerals as sequences of digits
lincat
Dig = TDigit ;
lin
IDig d = {s = d.s ; n = d.n ; size = d.size} ;
IIDig d i = {
s = d.s ++ BIND ++ i.s ;
n = Pl ;
size = i.size
} ;
D_0 = mk2Dig "0" plg ;
D_1 = mk4Dig "1" "1" Sg nom ; ----
D_2 = mk2Dig "2" sgg ;
D_3 = mk2Dig "3" sgg ;
D_4 = mk2Dig "4" sgg ;
D_5 = mk2Dig "5" plg ;
D_6 = mk2Dig "6" plg ;
D_7 = mk2Dig "7" plg ;
D_8 = mk2Dig "8" plg ;
D_9 = mk2Dig "9" plg ;
oper
mk3Dig : Str -> Str -> Size -> TDigit = \c,o,size -> mk4Dig c o Pl size ;
mk2Dig : Str -> Size -> TDigit = \c,size -> mk3Dig c (c + "o") size ;
mk4Dig : Str -> Str -> Number -> Size -> TDigit = \c,o,n,size -> {
s = c ; ---- gender
n = n ;
size = size
} ;
TDigit = {
n : Number ;
s : Str ;
size : Size
} ;
}

View File

@@ -0,0 +1,608 @@
--# -path=.:../abstract:../../prelude:../common
--1 Russian Lexical Paradigms
--
-- Janna Khegai 2003--2006
--
-- This is an API for the user of the resource grammar
-- for adding lexical items. It gives functions for forming
-- expressions of open categories: nouns, adjectives, verbs.
--
-- Closed categories (determiners, pronouns, conjunctions) are
-- accessed through the resource syntax API, $Structural.gf$.
--
-- The main difference with $MorphoRus.gf$ is that the types
-- referred to are compiled resource grammar types. We have moreover
-- had the design principle of always having existing forms, rather
-- than stems, as string arguments of the paradigms.
--
-- The structure of functions for each word class $C$ is the following:
-- first we give a handful of patterns that aim to cover all
-- regular cases. Then we give a worst-case function $mkC$, which serves as an
-- escape to construct the most irregular words of type $C$.
--
-- The following modules are presupposed:
resource ParadigmsRus = open
Prelude,
MorphoRus,
CatRus,
NounRus
in {
flags coding=utf8 ;
--2 Parameters
--
-- To abstract over gender names, we define the following identifiers.
oper
Gender : Type ; -- Parameter for mkN*
masculine : Gender ;
feminine : Gender ;
neuter : Gender ;
-- To abstract over case names, we define the following.
Case : Type ; -- Parameter for mkPrep, mkA2, mkV2, mkV3
nominative : Case ;
genitive : Case ;
dative : Case ;
accusative : Case ;
instructive : Case ;
prepositional : Case ;
-- In some (written in English) textbooks accusative case
-- is put on the second place. However, we follow the case order
-- standard for Russian textbooks.
-- To abstract over number names, we define the following.
Number : Type ; -- Parameter for mkPN
singular : Number ;
plural : Number ;
--2 Nouns
Animacy : Type ; -- Parameter for mkN, mkPN
animate : Animacy;
inanimate : Animacy;
-- Indeclinabe nouns: "кофе", "пальто", "ВУЗ".
mkIndeclinableNoun: Str -> Gender -> Animacy -> N ;
mkNAltPl: Str -> Str -> Gender -> Animacy -> N ;
mkN : overload {
-- The regular function captures the variants for some common noun endings.
mkN : (karta : Str) -> N ;
mkN : (tigr : Str) -> Animacy -> N ;
-- Worst case - give six singular forms:
-- Nominative, Genetive, Dative, Accusative, Instructive and Prepositional;
-- and the prepositional form after в and на, and
-- the corresponding six plural forms and the gender and animacy.
mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg, nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N -- Worst case - give six singular forms: Nominative, Genetive, Dative, Accusative, Instructive and Prepositional; and the prepositional form after в and на, and the corresponding six plural forms and the gender and animacy.
} ;
mkN2 : overload {
-- Genitive with no preposition.
mkN2 : N -> N2 ;
mkN2 : N -> Prep -> N2 ;
} ;
mkN3 : N -> Prep -> Prep -> N3 ;
-- Proper names.
mkPN : Str -> Gender -> Number -> Animacy -> PN ; -- "Иван", "Маша"
nounPN : N -> PN ;
--2 Adjectives
-- Non-comparison (only positive degree) one-place adjectives need 28 (4 by 7)
-- forms in the worst case:
-- (Masculine | Feminine | Neutral | Plural) *
-- (Nominative | Genitive | Dative | Accusative Inanimate | Accusative Animate |
-- Instructive | Prepositional)
-- Notice that 4 short forms, which exist for some adjectives are not included
-- in the current description, otherwise there would be 32 forms for
-- positive degree.
mkA : overload {
-- Regular and invariant adjectives with regular comparative.
mkA : (positive : Str) -> A ;
-- Adjectives with irregular comparative.
mkA : (positive, comparative : Str) -> A ;
} ;
-- Two-place adjectives need a preposition and a case as extra arguments.
mkA2 : A -> Str -> Case -> A2 ; -- "делим на"
-- Comparison adjectives need a positive adjective
-- (28 forms without short forms).
-- Taking only one comparative form (non-syntactic) and
-- only one superlative form (syntactic) we can produce the
-- comparison adjective with only one extra argument -
-- non-syntactic comparative form.
-- Syntactic forms are based on the positive forms.
-- mkADeg : A -> Str -> ADeg ;
-- On top level, there are adjectival phrases. The most common case is
-- just to use a one-place adjective.
-- ap : A -> IsPostfixAdj -> AP ;
--2 Adverbs
-- Adverbs are not inflected.
mkAdv : Str -> Adv ;
--2 Prepositions
mkPrep : Str -> Case -> Prep ; -- as in German
--2 Verbs
--
-- In our lexicon description ("Verbum") there are 62 forms:
-- 2 (Voice) by { 1 (infinitive) + [2(number) by 3 (person)](imperative) +
-- [ [2(Number) by 3(Person)](present) + [2(Number) by 3(Person)](future) +
-- 4(GenNum)(past) ](indicative)+ 4 (GenNum) (subjunctive) }
-- Participles (Present and Past) and Gerund forms are not included,
-- since they fuction more like Adjectives and Adverbs correspondingly
-- rather than verbs. Aspect is regarded as an inherent parameter of a verb.
-- Notice, that some forms are never used for some verbs.
Voice : Type ; -- Parameter to mkV*
active : Voice ;
passive : Voice ;
Aspect : Type ; -- Parameter to mkV*
imperfective : Aspect ;
perfective : Aspect ;
Conjugation : Type ; -- Parameter to mkV*
first : Conjugation ; -- "гуля-Ешь, гуля-Ем"
firstE : Conjugation ; -- Verbs with vowel "ё": "даёшь" (give), "пьёшь" (drink)
second : Conjugation ; -- "вид-Ишь, вид-Им"
mixed : Conjugation ; -- "хоч-Ешь - хот-Им"
dolzhen : Conjugation ; -- irregular
foreign: Conjugation; -- deprecated, not needed
Bool: Type;
true: Bool;
false: Bool;
-- Common conjugation patterns are two conjugations:
-- first - verbs ending with "-ать/-ять" and second - "-ить/-еть".
-- Instead of 6 present forms of the worst case, we only need
-- a present stem and one ending (singular, first person):
-- "я люб-лю", "я жд-у", etc. To determine where the border
-- between stem and ending lies it is sufficient to compare
-- first person from with second person form:
-- "я люб-лю", "ты люб-ишь". Stems shoud be the same.
-- So the definition for verb "любить" looks like:
-- regV Imperfective Second "люб" "лю" "любил" "люби" "любить";
regV : Aspect -> Conjugation -> (stemPresSg1,endPresSg1,pastSg1,imp,inf : Str) -> V ; -- Example for verb "любить": `regV Imperfective Second "люб" "лю" "любил" "люби" "любить"`
-- The worst case need 6 forms of the present tense in indicative mood
-- ("я бегу", "ты бежишь", "он бежит", "мы бежим", "вы бежите", "они бегут"),
-- a past form (singular, masculine: "я бежал"), an imperative form
-- (singular, second person: "беги"), an infinitive ("бежать").
-- Inherent aspect should also be specified.
-- mkVerbum : Aspect -> (presentSgP1,presentSgP2,presentSgP3,
mkV : Aspect -> (presSg1,presSg2,presSg3,presPl1,presPl2,presPl3,pastSgMasc,imp,inf: Str) -> V ; -- The worst case need 6 forms of the present tense in indicative mood ("я бегу", "ты бежишь", "он бежит", "мы бежим", "вы бежите", "они бегут"), a past form (singular, masculine: "я бежал"), an imperative form (singular, second person: "беги"), an infinitive ("бежать"). Inherent aspect should also be specified.
-- Two-place verbs, and the special case with direct object. Notice that
-- a particle can be included in a $V$.
mkV2 : V -> Str -> Case -> V2 ; -- "войти в дом"; "в", accusative
mkV3 : V -> Str -> Str -> Case -> Case -> V3 ; -- "сложить письмо в конверт"
mkVS : V -> VS ;
mkVQ : V -> VQ ;
mkV2V : V -> Str -> Case -> V2V ;
mkV2S : V -> Str -> Case -> V2S ;
mkV2Q : V -> Str -> Case -> V2Q ;
mkV2A : V -> Str -> Case -> V2A ;
dirV2 : V -> V2 ; -- "видеть", "любить"
tvDirDir : V -> V3 ;
-- The definitions should not bother the user of the API. So they are
-- hidden from the document.
--.
Gender = MorphoRus.Gender ;
Case = MorphoRus.Case ;
Number = MorphoRus.Number ;
Animacy = MorphoRus.Animacy;
Aspect = MorphoRus.Aspect;
Voice = MorphoRus.Voice ;
--Tense = Tense ;
Bool = Prelude.Bool ;
Conjugation = MorphoRus.Conjugation;
first = First ;
firstE = FirstE ;
second = Second ;
secondA = SecondA ;
mixed = Mixed ;
dolzhen = Dolzhen;
foreign = Foreign; -- deprecated. Not needed
true = True;
false = False ;
masculine = Masc ;
feminine = Fem ;
neuter = Neut ;
nominative = Nom ;
accusative = Acc ;
dative = Dat ;
genitive = Gen ;
instructive = Inst ;
prepositional = Prepos PrepOther ; -- FIXME: not correct for v and na
singular = Sg ;
plural = Pl ;
animate = Animate ;
inanimate = Inanimate ;
active = Act ;
passive = Pass ;
imperfective = Imperfective ;
perfective = Perfective ;
-- present = Present ;
--past = Past ;
Degree = Posit | Compar | Superl ;
-- Person = P1 | P2 | P3 ;
-- AfterPrep = Yes | No ;
-- Possessive = NonPoss | Poss GenNum ;
-- Noun definitions
mkN = overload {
mkN : (karta : Str) -> N = mk1N ;
mkN : (tigr : Str) -> Animacy -> N = \nom, anim -> case anim of { Animate => lin N (nAnimate (mk1N nom)) ;
Inanimate => mk1N nom } ;
mkN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N = mkWorstN
} ;
mkIndeclinableNoun = \s,g, anim ->
{
s = table { NF _ _ _ => s } ;
g = g ;
anim = anim
} ** {lock_N = <>};
mkNAltPl = \s, alt, g, anim ->
let {singular = mkN s ; plural = mkN alt} in {
s = table { NF Sg c size => singular.s ! NF Sg c size;
NF Pl c nom => singular.s ! NF Sg c nom;
NF Pl c nompl => plural.s ! NF Sg c nompl;
NF Pl c sgg => plural.s ! NF Sg c sgg;
NF Pl c plg => plural.s ! NF Pl c plg } ;
g = g ;
anim = anim
} ** {lock_N = <>};
oper mkWorstN : (nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
nomPl, genPl, datPl, accPl, instPl, preposPl : Str) -> Gender -> Animacy -> N
= \nomSg, genSg, datSg, accSg, instSg, preposSg, prepos2Sg,
nomPl, genPl, datPl, accPl, instPl, preposPl, g, anim ->
{
s = table {
NF Sg Nom _ => nomSg ;
NF Sg Gen _ => genSg ;
NF Sg Dat _ => datSg ;
NF Sg Acc _ => accSg ;
NF Sg Inst _ => instSg ;
NF Sg (Prepos PrepOther) _ => preposSg ;
NF Sg (Prepos PrepVNa) _ => prepos2Sg ;
NF Pl Nom _ => nomPl ;
NF Pl Gen _ => genPl ;
NF Pl Dat _ => datPl ;
NF Pl Acc _ => accPl ;
NF Pl Inst _ => instPl ;
NF Pl (Prepos _) _ => preposPl
} ;
g = g ;
anim = anim
} ** {lock_N = <>} ;
oper mk1N : Str -> N = \x ->
case x of {
stem+"онок" => nDecl10Hard stem ;
stem+"ёнок" => nDecl10Soft stem ;
-- stem+"aнин" => nDecl11 stem ;
stem@(_+"и")+"й" => nDecl7Masc stem;
stem@(_+"и")+"я" => nDecl7Fem stem;
stem@(_+"и")+"е" => nDecl7Neut stem;
stem+"ее" => nAdj { s = (mk1A (stem+"ий")).s!Posit } Neut;
stem+"ое" => nAdj { s = (mk1A (stem+(iAfter stem)+"й")).s!Posit } Neut;
stem+"мя" => nDecl9 stem ;
stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"й" => nDecl6Masc stem ;
stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"е" => nDecl6Neut stem ;
stem@(_+("а"|"е"|"ё"|"о"|"у"|"ы"|"э"|"ю"|"я"))+"я" => nDecl6Fem stem ;
stem@(_+("ч"|"щ"|"ш"|"ж"|"п"|"эн"|"м"|"ф"))+"ь" => nDecl8 stem ;
stem@(_+("д"|"т"|"ст"|"с"|"в"|"б"))+"ь" => nDecl8 stem ;
stem@(_+"ш"|"ж"|"ч"|"щ"|"ц")+"е" => nRegHardNeut stem;
stem+"е" => nRegSoftNeut stem ;
stem+"я" => nRegSoftFem stem ;
stem+"ь" => nRegSoftMasc stem ;
stem+"о" => nRegHardNeut stem ;
stem+"а" => nRegHardFem stem ;
stem => nRegHardMasc stem
} ** {lock_N = <>} ;
-- An individual-valued function is a common noun together with the
-- preposition prefixed to its argument ("клZ+ о' дома").
-- The situation is analogous to two-place adjectives and transitive verbs.
--
-- We allow the genitive construction to be used as a variant of
-- all function applications. It would definitely be too restrictive only
-- to allow it when the required case is genitive. We don't know if there
-- are counterexamples to the liberal choice we've made.
oper mkN2 = overload {
mkN2 : N -> N2 = \n -> mkFun n nullPrep ;
mkN2 : N -> Prep -> N2 = mkFun;
} ;
mkFun : N -> Prep -> N2 = \f,p -> f ** {c2 = p ; lock_N2 = <>} ;
nullPrep : Prep = {s = []; c= Gen; lock_Prep=<>} ;
mkN3 f p2 p3 = f ** {c2 = p2; c3 = p3; lock_N3 = <>} ;
-- mkPN = \ivan, g, n, anim ->
-- case n of {
-- Sg => case g of {
-- Masc => mkProperNameMasc ivan anim ;
-- Fem => mkProperNameFem ivan anim ;
-- _ => mkProperNameMasc ivan anim
-- } ;
-- Pl => mkProperNamePl ivan anim
-- } ** {lock_PN =<>};
mkPN ivan g n anim = nounPN (mk1N ivan);
nounPN n = {s=\\c => n.s! NF Sg c nom; anim=n.anim; g=n.g; lock_PN=<>};
-- On the top level, it is maybe $CN$ that is used rather than $N$, and
-- $NP$ rather than $PN$.
makeCN : N -> CN ;
makeNP : Str -> Gender -> Animacy -> NP ;
makeCN = UseN;
makeNP = \x,y,z -> UsePN (mkPN x y singular z) ;
mkA = overload {
mkA : (positive : Str) -> A = mk1A ;
mkA : (positive : Str) -> AdjType -> A = mk1Ab ;
mkA : (positive, shortMasc, shortFem, shortNeut, shortPl : Str) -> A = mk3A ; -- to make correct short forms (Liza Zimina 04/2018)
mkA : (positive, comparative : Str) -> A = mk2A ;
mkA : (positive : Str) -> ShortFormPreference -> A = mk4A ; -- adjectives preferring full forms in conjunction
-- (e.g. "он классический и элегантный" vs "он классический и элегантен") Liza Zimina 04/2018
mkA : (positive : Str) -> Bool -> A = mk5A ; -- postfix adjectives (e.g. "цвета кости") Liza Zimina 04/2018
} ;
mk1A : Str -> A = \positive ->
let stem = Predef.tk 2 positive in mk2A positive (stem+"ее") ;
mk2A : Str -> Str -> A = \positive, comparative ->
case positive of {
stem+"ый" => mkAdjDeg (aRegHard StemStress Qual stem) comparative ;
stem+"ой" => mkAdjDeg (aRegHard EndStress Qual stem) comparative ;
stem@(_+("г"|"к"|"х"))+"ий" => mkAdjDeg (aRegHard StemStress Qual stem) comparative;
stem@(_+("ш"|"ж"|"ч"|"щ"))+"ий" => mkAdjDeg (aRegHard StemStress Qual stem) comparative;
stem+"ий" => mkAdjDeg (aRegSoft Qual stem) comparative ;
stem => mkAdjDeg (adjInvar stem) comparative
} ;
mk1Ab : Str -> AdjType -> A = \positive, at ->
let { stem = Predef.tk 2 positive;
comparative = stem + "ее"
} in case positive of {
stem+"ый" => mkAdjDeg (aRegHard StemStress at stem) comparative ;
stem+"ой" => mkAdjDeg (aRegHard EndStress at stem) comparative ;
stem@(_+("г"|"к"|"х"))+"ий" => mkAdjDeg (aRegHard StemStress at stem) comparative;
stem@(_+("ш"|"ж"|"ч"|"щ"))+"ий" => mkAdjDeg (aRegHard StemStress at stem) comparative;
stem+"ий" => mkAdjDeg (aRegSoft at stem) comparative ;
stem => mkAdjDeg (adjInvar stem) comparative
} ;
-- khaki, mini, hindi, netto
adjInvar : Str -> Adjective = \stem -> { s = \\_ => stem } ;
oper mkAdjDeg: Adjective -> Str -> A = \adj, s ->
{s = table
{
Posit => adj.s ;
Compar => \\af => s ;
Superl => \\af => samuj.s !af ++ adj.s ! af
} ;
p = False ;
preferShort = PrefShort
} ** {lock_A = <>};
oper mkAdjDegFull: Adjective -> Str -> ShortFormPreference -> A = \adj, s,sfp ->
{s = table
{
Posit => adj.s ;
Compar => \\af => s ;
Superl => \\af => samuj.s !af ++ adj.s ! af
} ;
p = False ;
preferShort = sfp
} ** {lock_A = <>};
oper mkParticiple : Voice -> VTense -> V -> A = \voice, tense, v ->
let vstem = verbStem v in
let actpres = verbHasEnding v in
let actpast = stemHasEnding vstem in
let passpast = case hasConj v of {
(First|FirstE) => "ем" ;
(Second|SecondA) => "им" ;
_ => "ем"
} in
case <voice, tense> of {
<Act, VPresent _> => mkA (vstem + actpres + "ий") ;
<Act, VPast> => mkA (vstem + actpast + "ий") ;
<Pass, VPresent _> => mkA (vstem + "нный") ;
<Pass, VPast> => mkA (vstem + passpast + "ый") ;
_ => mkA "" -- Russian participles do not have a future tense
} ;
oper mkActPresParticiple : V -> A = mkParticiple Act (VPresent P3) ;
oper mkActPastParticiple : V -> A = mkParticiple Act (VPresent P3) ;
oper mkPassPresParticiple : V -> A = mkParticiple Pass VPast ;
oper mkPassPastParticiple : V -> A = mkParticiple Pass VPast ;
oper mkGerund : VTense -> V -> Adv = \tense, v ->
let vstem = verbStem v in
let suffix = case hasConj v of {
SecondA => "а" ;
_ => "я"
} in
case tense of {
VPresent _ => mkAdv (vstem + suffix) ;
VPast => mkAdv (vstem + "в") ;
_ => mkAdv "" -- Russian gerunds do not have a future tense
} ;
mkA2 a p c= a ** {c2 = {s=p; c=c}; lock_A2 = <>};
-- mkADeg a s = mkAdjDeg a s ** {lock_ADeg = <>}; -- defined in morpho.RusU
-- ap a p = mkAdjPhrase a p ** {lock_AP = <>}; -- defined in syntax module
mkAdv x = ss x ** {lock_Adv = <>} ;
-- Prepositions definitions
mkPrep s c = {s = s ; c = c ; lock_Prep = <>} ;
-- Verb definitions
-- mkVerbum = \asp, sgP1, sgP2, sgP3, plP1, plP2, plP3,
mkV = \asp, sgP1, sgP2, sgP3, plP1, plP2, plP3,
sgMascPast, imperSgP2, inf -> case asp of {
Perfective =>
mkVerbPerfective inf imperSgP2
(presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast)
** { lock_V=<> };
Imperfective =>
mkVerbImperfective inf imperSgP2
(presentConj sgP1 sgP2 sgP3 plP1 plP2 plP3) (pastConj sgMascPast)
** { lock_V=<> }
};
oper presentConj: (_,_,_,_,_,_: Str) -> PresentVerb =
\sgP1, sgP2, sgP3, plP1, plP2, plP3 ->
table {
PRF (GSg _) P1 => sgP1 ;
PRF (GSg _) P2 => sgP2 ;
PRF (GSg _) P3 => sgP3 ;
PRF APl P1 => plP1 ;
PRF APl P2 => plP2 ;
PRF APl P3 => plP3
};
regV a b c d e f g = verbDecl a b c d e f g ** {lock_V = <>} ;
-- defined in morpho.RusU.gf
{-
mkV a b = extVerb a b ** {lock_V = <>}; -- defined in types.RusU.gf
mkPresentV = \aller, vox ->
{ s = table {
VFin gn p => aller.s ! VFORM vox (VIND (VPresent (numGNum gn) p)) ;
VImper n p => aller.s ! VFORM vox (VIMP n p) ;
VInf => aller.s ! VFORM vox VINF ;
VSubj gn => aller.s ! VFORM vox (VSUB gn)
}; t = Present ; a = aller.asp ; w = vox ; lock_V = <>} ;
-}
mkV2 v p cas = v ** {c2 = {s=p; c=cas}; lock_V2 = <>};
dirV2 v = mkV2 v [] Acc;
tvDirDir v = mkV3 v "" "" Acc Dat;
-- *Ditransitive verbs* are verbs with three argument places.
-- We treat so far only the rule in which the ditransitive
-- verb takes both complements to form a verb phrase.
mkV3 v s1 s2 c1 c2 = v ** {c2 = {s=s1; c=c1}; c3={s=s2; c=c2}; lock_V3 = <>};
mkVS v = v ** {lock_VS = <>} ;
mkVQ v = v ** {lock_VQ = <>} ;
mkV2V v p cas = v ** {c2 = {s=p; c=cas}; lock_V2V = <>};
mkV2S v p cas = v ** {c2 = {s=p; c=cas}; lock_V2S = <>};
mkV2Q v p cas = v ** {c2 = {s=p; c=cas}; lock_V2Q = <>};
mkV2A v p cas = v ** {c2 = {s=p; c=cas}; lock_V2A = <>};
-- Liza Zimina 04/2018: to make correct short forms of adjectives
mk3A : Str -> Str -> Str -> Str -> Str -> A = \positive,shortMasc,shortFem,shortNeut,shortPl ->
let {koren = Predef.tk 2 positive ;
comparative = koren + "ее"} in
case positive of {
stem+"ый" => mkAdjDeg (aRegHardWorstCase StemStress Qual stem shortMasc shortFem shortNeut shortPl) comparative ;
stem+"ой" => mkAdjDeg (aRegHardWorstCase EndStress Qual stem shortMasc shortFem shortNeut shortPl) comparative ;
stem@(_+("г"|"к"|"х"))+"ий" => mkAdjDeg (aRegHardWorstCase StemStress Qual stem shortMasc shortFem shortNeut shortPl) comparative;
stem@(_+("ш"|"ж"|"ч"|"щ"))+"ий" => mkAdjDeg (aRegHardWorstCase StemStress Qual stem shortMasc shortFem shortNeut shortPl) comparative;
stem+"ий" => mkAdjDeg (aRegSoftWorstCase Qual stem shortMasc shortFem shortNeut shortPl) comparative ;
stem => mkAdjDeg (adjInvar stem) comparative
} ;
mk4A : Str -> ShortFormPreference -> A = \positive,prefshort ->
let {koren = Predef.tk 2 positive ;
comparative = koren + "ее"} in
case positive of {
stem+"ый" => mkAdjDegFull (aRegHardFull StemStress Qual stem) comparative prefshort ;
stem+"ой" => mkAdjDegFull (aRegHardFull EndStress Qual stem) comparative prefshort ;
stem@(_+("г"|"к"|"х"))+"ий" => mkAdjDegFull (aRegHardFull StemStress Qual stem) comparative prefshort ;
stem@(_+("ш"|"ж"|"ч"|"щ"))+"ий" => mkAdjDegFull (aRegHardFull StemStress Qual stem) comparative prefshort ;
stem+"ий" => mkAdjDegFull (aRegSoftFull Qual stem) comparative prefshort ;
stem => mkAdjDegFull (adjInvar stem) comparative prefshort
} ;
mk5A : Str -> Bool -> A = \adj,postfix ->
case postfix of {
False => mk1A adj ;
True => lin A {
s = \\d,af => adj ;
p = True ;
preferShort = PrefFull
}
} ;
} ;

View File

@@ -0,0 +1,31 @@
--# -path=.:../abstract:../common:../../prelude
concrete PhraseRus of Phrase = CatRus ** open Prelude, ResRus in {
flags coding=utf8 ;
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = s ;
UttQS qs = {s = qs.s ! QDir} ;
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc! Sg} ;
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc!Pl} ;
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! Masc! Sg} ; ---- ?? AR
UttIP ip = {s = ip.s ! PF Nom No NonPoss} ; --- Acc also
UttIAdv iadv = iadv ;
UttNP np = {s = np.s ! PF Nom No NonPoss} ; -- why was Acc instead of Nom here? (Liza Zimina 04/2018)
UttVP vp = {s = vp.s ! ClInfinit ! GSg Masc ! P3} ;
UttAdv adv = adv ;
UttCN n = {s = n.nounpart ! NF Sg Nom nom ++ n.relcl ! Sg ! Nom} ;
UttCard n = {s = n.s ! Neut ! Inanimate ! Nom} ;
UttAP ap = {s = ap.s ! AF Nom Inanimate (GSg Neut)} ; ---- gennum ? (AR)
UttInterj i = i ;
NoPConj = {s = []} ;
PConjConj conj = ss conj.s2 ;
NoVoc = {s = []} ;
VocNP np = {s = "," ++ np.s ! PF Nom No NonPoss} ;
}

View File

@@ -0,0 +1,74 @@
--# -path=.:../abstract:../common:../../prelude
concrete QuestionRus of Question = CatRus ** open ResRus, Prelude in {
flags optimize=all_subs ; coding=utf8 ;
lin
QuestCl cl = {s = \\b,cf,_ => cl.s ! b ! cf } ;
QuestVP kto spit =
{s = \\b,clf,qf => (predVerbPhrase kto spit).s!b!clf } ;
QuestSlash Kto yaGovoruO =
let { kom = Kto.s ! (mkPronForm yaGovoruO.c No NonPoss) ; o = yaGovoruO.s2 } in
{s = \\b,clf,_ => o ++ kom ++ yaGovoruO.s ! b ! clf
} ;
QuestIAdv kak tuPozhivaesh =
{s = \\b,clf,q => kak.s ++ tuPozhivaesh.s!b!clf } ;
QuestIComp kak tuPozhivaesh =
{s = \\b,clf,q => let ne = case b of {Neg => ""; Pos => []}
in
kak.s ++ ne ++tuPozhivaesh.s! PF Nom No NonPoss } ;
PrepIP p ip = {s = p.s ++ ip.s ! PF Nom No NonPoss} ;
AdvIP ip adv = {
s = \\c => ip.s ! c ++ adv.s ;
n = ip.n; p=ip.p; g=ip.g; anim=ip.anim; pron=ip.pron
} ;
IdetCN kakoj okhotnik =
{s = \\pf => case kakoj.c of {
Nom =>
kakoj.s ! AF (extCase pf) okhotnik.anim (gennum okhotnik.g kakoj.n) ++
okhotnik.nounpart ! NF kakoj.n (extCase pf) nom ++ okhotnik.relcl ! kakoj.n ! extCase pf ;
_ =>
kakoj.s ! AF (extCase pf) okhotnik.anim (gennum okhotnik.g kakoj.n) ++
okhotnik.nounpart ! NF kakoj.n kakoj.c plg } ++ okhotnik.relcl ! kakoj.n ! kakoj.c ;
n = kakoj.n ;
p = P3 ;
pron = False;
g = kakoj.g ;
anim = okhotnik.anim
} ;
-- 1.4 additions 17/6/2008 by AR
IdetIP kakoj = let anim = Inanimate in
{s = \\pf => kakoj.s ! AF (extCase pf) anim (pgNum kakoj.g kakoj.n) ;
n = kakoj.n ;
p = P3 ;
pron = False;
g = kakoj.g ;
anim = anim
} ;
IdetQuant kakoj pyat = -- okhotnik =
{s = \\af =>
kakoj.s ! pyat.n ! af ++
pyat.s ! genAF af ! animAF af ! caseAF af ;
n = pyat.n ;
g = kakoj.g ;
c = kakoj.c
} ;
AdvIAdv i a = {s = i.s ++ a.s} ;
CompIAdv a = a ;
CompIP ip = {s = ip.s ! PF Nom No NonPoss} ;
}

View File

@@ -0,0 +1,37 @@
--# -path=.:../abstract:../common:../../prelude
concrete RelativeRus of Relative = CatRus ** open ResRus, MorphoRus in {
flags optimize=all_subs ; coding=utf8 ;
lin
RelCl A = {s = \\b,clf,gn,c, anim =>
takoj.s ! AF c anim gn ++ "что" ++ A.s !b!clf};
RelVP kotoruj gulyaet =
{ s = \\b,clf,gn, c, anim => let { nu = numGenNum gn } in
kotoruj.s ! gn ! c ! anim ++ gulyaet.s2 ++ gulyaet.s ! clf ! gn !P3 ++
gulyaet.s3 ! genGNum gn ! nu
} ;
-- Preposition stranding: "that we are looking at". Pied-piping is
-- deferred to $ExtRus.gf$ ("at which we are looking").
RelSlash kotoruj yaVizhu =
{s = \\b,clf,gn, _ , anim => yaVizhu.s2 ++
kotoruj.s ! gn ! yaVizhu.c ! anim
++ yaVizhu.s!b!clf
} ;
FunRP p mama kotoruj =
{s = \\gn,c, anim => let {nu = numGenNum gn} in
mama.s ! PF c No NonPoss ++
p.s ++ kotoruj.s ! gn ! p.c ! anim
} ;
IdRP ={ s = \\gn, c, anim =>
kotorujDet.s ! (AF c anim gn )} ;
}

398
src/russian/v1/ResRus.gf Normal file
View File

@@ -0,0 +1,398 @@
--# -path=.:../abstract:../common:../../prelude
--1 Russian auxiliary operations.
-- This module contains operations that are needed to make the
-- resource syntax work. To define everything that is needed to
-- implement $Test$, it moreover contains regular lexical
-- patterns needed for $Lex$.
resource ResRus = ParamX ** open Prelude in {
flags coding=utf8 ; optimize=all ;
--2 Enumerated parameter types
--
-- These types are the ones found in school grammars.
-- Their parameter values are atomic.
-- Some parameters, such as $Number$, are inherited from $ParamX$.
param
Gender = Masc | Fem | Neut ;
Case = Nom | Gen | Dat | Acc | Inst | Prepos PrepKind ;
PrepKind = PrepOther | PrepVNa;
Animacy = Animate | Inanimate ;
Voice = Act | Pass ;
Aspect = Imperfective | Perfective ;
RusTense = Present | PastRus | Future ;
-- Degree = Pos | Comp | Super ;
AfterPrep = Yes | No ;
Possessive = NonPoss | Poss GenNum ;
-- Anteriority = Simul | Anter ;
ClForm = ClIndic RusTense Anteriority | ClCondit | ClInfinit | ClImper;
-- "naked infinitive" clauses
-- DetForm = NonNum | Few | Many ;
-- A number of Russian nouns have common gender. They can
-- denote both males and females: "умница" (a clever person), "инженер" (an engineer).
-- We overlook this phenomenon for now.
-- The AfterPrep parameter is introduced in order to describe
-- the variations of the third person personal pronoun forms
-- depending on whether they come after a preposition or not.
-- Declination forms depend on Case, Animacy , Gender:
-- "большие дома" - "больших домов" (big houses - big houses'),
-- Animacy plays role only in the Accusative case (Masc Sg and Plural forms):
-- Accusative Animate = Genetive, Accusaive Inanimate = Nominative
-- "я люблю большие дома-"я люблю больших мужчин"
-- (I love big houses - I love big men);
-- and on Number: "большой дом - "большие дома"
-- (a big house - big houses).
-- The plural never makes a gender distinction.
GenNum = GSg Gender | GPl ;
-- Coercions between the compound gen-num type and gender and number:
oper
gennum : Gender -> Number -> GenNum = \g,n ->
case n of {
Sg => GSg g ;
Pl => GPl
} ;
numGenNum : GenNum -> Number = \gn ->
case gn of {
GSg _ => Sg ;
GPl => Pl
} ;
-- The Possessive parameter is introduced in order to describe
-- the possessives of personal pronouns, which are used in the
-- Genetive constructions like "моя мама" (my mother) instead of
-- "мама моя" (the mother of mine).
--2 For $Noun$
-- Nouns decline according to number and case.
-- For the sake of shorter description these parameters are
-- combined in the type SubstForm.
param
NForm = NF Number Case Size ;
-- Real parameter types (i.e. ones on which words and phrases depend)
-- are mostly hierarchical. The alternative would be cross-products of
-- simple parameters, but this would usually overgenerate.
-- However, we use the cross-products in complex cases
-- (for example, aspect and tense parameter in the verb description)
-- where the relationship between the parameters are non-trivial
-- even though we aware that some combinations do not exist
-- (for example, present perfective does not exist, but removing
-- this combination would lead to having different descriptions
-- for perfective and imperfective verbs, which we do not want for the
-- sake of uniformity).
param PronForm = PF Case AfterPrep Possessive;
oper Pronoun = { s : PronForm => Str ; n : Number ; p : Person ;
g: PronGen ; pron: Bool} ;
-- Gender is not morphologically determined for first
-- and second person pronouns.
-- NF: but adjectives and verbs in past tense have to agree with gender of the
-- person speaking!
param PronGen = PGen Gender | PNoGen ;
-- The following coercion is useful:
oper
pgen2gen : PronGen -> Gender = \p -> case p of {
PGen g => g ;
PNoGen => Masc ---- variants {Masc ; Fem} --- the best we can do for ya, tu
} ;
oper
extCase: PronForm -> Case = \pf -> case pf of { PF c _ _ => c } ;
mkPronForm: Case -> AfterPrep -> Possessive -> PronForm =
\c,n,p -> PF c n p ;
CommNoun = {s : NForm => Str ; g : Gender ; anim : Animacy } ;
NounPhrase : Type = { s : PronForm => Str ; n : Number ;
p : Person ; g: PronGen ; anim : Animacy ; pron: Bool} ;
mkNP : Number -> CommNoun -> NounPhrase = \n,chelovek ->
{s = \\cas => chelovek.s ! NF n (extCase cas) (case n of {
Sg => nom ;
Pl => plg });
n = n ; g = PGen chelovek.g ; p = P3 ; pron =False ;
anim = chelovek.anim
} ;
det2NounPhrase : Adjective -> NounPhrase = \eto ->
{s = \\pf => eto.s ! (AF (extCase pf) Inanimate (GSg Neut)); n = Sg ; g = PGen Neut ; pron = False ; p = P3 ; anim = Inanimate } ;
pron2NounPhraseNum : Pronoun -> Animacy -> Number -> NounPhrase = \ona, anim, num ->
{s = ona.s ; n = num ; g = ona.g ;
pron = ona.pron; p = ona.p ; anim = anim } ;
-- Agreement of $NP$ is a record. We'll add $Gender$ later.
-- oper Agr = {n : Number ; p : Person} ;
----2 For $Verb$
-- Mood is the main verb classification parameter.
-- The verb mood can be infinitive, subjunctive, imperative, and indicative.
-- Note: subjunctive mood is analytical, i.e. formed from the past form of the
-- indicative mood plus the particle "ли". That is why they have the same GenNum
-- parameter. We choose to keep the "redundant" form in order to indicate
-- the presence of the subjunctive mood in Russian verbs.
-- Aspect and Voice parameters are present in every mood, so Voice is put
-- before the mood parameter in verb form description the hierachy.
-- Moreover Aspect is regarded as an inherent parameter of a verb entry.
-- The primary reason for that is that one imperfective form can have several
-- perfective forms: "ломать" - "сломать" - "поломать" (to break).
-- Besides, the perfective form could be formed from imperfective
-- by prefixation, but also by taking a completely different stem:
-- "говорить"-"сказать" (to say). In the later case it is even natural to
-- regard them as different verb entries.
-- Another reason is that looking at the Aspect as an inherent verb parameter
-- seem to be customary in other similar projects:
-- http://starling.rinet.ru/morph.htm
-- Note: Of course, the whole inflection table has many redundancies
-- in a sense that many verbs do not have all grammatically possible
-- forms. For example, passive does not exist for the verb
-- "любить" (to love), but exists for the verb "ломаться" (to break).
-- In present tense verbs do not conjugate according to Genus,
-- so parameter GenNum instead Number is used for the sake of
-- using for example as adjective in predication.
-- Depending on the tense verbs conjugate according to combinations
-- of gender, person and number of the verb objects.
-- Participles (Present and PastRus) and Gerund forms are not included in the
-- current description. This is the verb type used in the lexicon:
oper Verbum : Type = { s: VerbForm => Str ; asp : Aspect };
param
VerbForm = VFORM Voice VerbConj ;
VerbConj = VIND GenNum VTense | VIMP Number Person | VINF | VSUB GenNum ;
VTense = VPresent Person | VPast | VFuture Person ;
oper
getVTense : RusTense -> Person -> VTense= \t,p ->
case t of { Present => VPresent p ; PastRus => VPast; Future => VFuture p } ;
getTense : Tense -> RusTense= \t ->
case t of { Pres => Present
; Fut => Future --# notpresent
; _ => PastRus --# notpresent
} ;
getVoice: VerbForm -> Voice = \vf ->
case vf of {
VFORM Act _ => Act;
VFORM Pass _ => Pass
};
oper sebya : Case => Str =table {
Nom => "";
Gen => "себя";
Dat=> "себе";
Acc => "себя";
Inst => "собой";
Prep =>"себе"};
Verb : Type = {s : ClForm => GenNum => Person => Str ; asp : Aspect ; w: Voice} ;
-- Verb phrases are discontinuous: the parts of a verb phrase are
-- (s) an inflected verb, (s2) verb adverbials (not negation though), and
-- (s3) complement. This discontinuity is needed in sentence formation
-- to account for word order variations.
VerbPhrase : Type = Verb ** {s2: Str; s3 : Gender => Number => Str ;
negBefore: Bool} ;
-- This is one instance of Gazdar's *slash categories*, corresponding to his
-- $S/NP$.
-- We cannot have - nor would we want to have - a productive slash-category former.
-- Perhaps a handful more will be needed.
--
-- Notice that the slash category has the same relation to sentences as
-- transitive verbs have to verbs: it's like a *sentence taking a complement*.
SlashNounPhrase = Clause ** {c2 : Complement} ;
Clause = {s : Polarity => ClForm => Str} ;
-- This is the traditional $S -> NP VP$ rule.
predVerbPhrase : NounPhrase -> VerbPhrase -> SlashNounPhrase =
\Ya, tebyaNeVizhu -> {
s = \\b,clf => let { ya = Ya.s ! (mkPronForm Nom No NonPoss);
khorosho = tebyaNeVizhu.s2;
vizhu = tebyaNeVizhu.s ! clf !(gennum (pgen2gen Ya.g) Ya.n)! Ya.p;
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
}
in ya ++ khorosho ++ vizhu ++ tebya;
c2 = {s = ""; c = Nom}
} ;
-- Questions are either direct ("Ты счастлив?")
-- or indirect ("Потом он спросил счастлив ли ты").
param
QuestForm = DirQ | IndirQ ;
---- The order of sentence is needed already in $VP$.
--
-- Order = ODir | OQuest ;
oper
getActVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
{ ClIndic Future _ => VFORM Act (VIND (gennum g n) (VFuture p));
ClIndic PastRus _ => VFORM Act (VIND (gennum g n) VPast);
ClIndic Present _ => VFORM Act (VIND (gennum g n) (VPresent p));
ClCondit => VFORM Act (VSUB (gennum g n));
ClInfinit => VFORM Act VINF ;
ClImper => VFORM Act (VIMP n p)
};
getPassVerbForm : ClForm -> Gender -> Number -> Person -> VerbForm = \clf,g,n, p -> case clf of
{ ClIndic Future _ => VFORM Pass (VIND (gennum g n) (VFuture p));
ClIndic PastRus _ => VFORM Pass (VIND (gennum g n) VPast);
ClIndic Present _ => VFORM Pass (VIND (gennum g n) (VPresent p));
ClCondit => VFORM Pass (VSUB (gennum g n));
ClInfinit => VFORM Pass VINF ;
ClImper => VFORM Pass (VIMP n p)
};
--2 For $Adjective$
-- The short form is only inflected in gender and number.
-- Fixing this would require changing the Degree type.
param
AdjForm = AF Case Animacy GenNum | AFShort GenNum | AdvF;
ShortFormPreference = PrefShort | PrefFull ;
oper
Complement = {s : Str ; c : Case} ;
oper Refl ={s: Case => Str};
oper sam: Refl=
{s = table{
Nom => "сам";
Gen => "себя";
Dat => "себе";
Acc => "себя";
Inst => "собой";
Prepos _ => "себе"
}
};
pgNum : PronGen -> Number -> GenNum = \g,n ->
case n of
{ Sg => GSg (pgen2gen g) ; -- assuming pronoun "I" is a male
Pl => GPl
} ;
-- _ => variants {GSg Masc ; GSg Fem} } ;
-- "variants" version cause "no term variants" error during linearization
oper genGNum : GenNum -> Gender = \gn ->
case gn of { GSg Fem => Fem; GSg Masc => Masc; _ => Neut } ;
oper numAF: AdjForm -> Number = \af ->
case af of { AdvF => Sg; AFShort gn => numGenNum gn; AF _ _ gn => (numGenNum gn) } ;
oper genAF: AdjForm -> Gender = \af ->
case af of { AdvF => Neut; AFShort gn => genGNum gn; AF _ _ gn => genGNum gn } ;
oper caseAF: AdjForm -> Case = \af ->
case af of { AdvF => Nom; AFShort _ => Nom; AF c _ _ => c } ;
oper animAF: AdjForm -> Animacy = \af ->
case af of { AF _ a _ => a ; _ => Inanimate } ;
-- The Degree parameter should also be more complex, since most Russian
-- adjectives have two comparative forms:
-- attributive (syntactic (compound), declinable) -
-- "более высокий" (corresponds to "more high")
-- and predicative (indeclinable)- "выше" (higher) and more than one
-- superlative forms: "самый высокий" (corresponds to "the most high") -
-- "высочайший" (the highest).
-- Even one more parameter independent of the degree can be added,
-- since Russian adjectives in the positive degree also have two forms:
-- long (attributive and predicative) - "высокий" (high) and short (predicative) - "высок"
-- although this parameter will not be exactly orthogonal to the
-- degree parameter.
-- Short form has no case declension, so in principle
-- it can be considered as an additional case.
-- Note: although the predicative usage of the long
-- form is perfectly grammatical, it can have a slightly different meaning
-- compared to the short form.
-- For example: "он - больной" (long, predicative) vs.
-- "он - болен" (short, predicative).
--3 Adjective phrases
--
-- An adjective phrase may contain a complement, e.g. "моложе Риты".
-- Then it is used as postfix in modification, e.g. "человек, моложе Риты".
param
AdjStress = EndStress | StemStress ;
AdjType = Qual | Rel ;
oper
IsPostfixAdj = Bool ;
-- Simple adjectives are not postfix:
-- Adjective type includes both non-degree adjective classes:
-- possesive ("мамин"[mother's], "лисий" [fox'es])
-- and relative ("русский" [Russian]) adjectives.
Adjective : Type = {s : AdjForm => Str} ;
-- A special type of adjectives just having positive forms
-- (for semantic reasons) is useful, e.g. "финский".
AdjPhrase = Adjective ** {p : IsPostfixAdj} ;
mkAdjPhrase : Adjective -> IsPostfixAdj -> AdjPhrase = \novuj ,p -> novuj ** {p = p} ;
----2 For $Relative$
--
-- RAgr = RNoAg | RAg {n : Number ; p : Person} ;
-- RCase = RPrep | RC Case ;
--
--2 For $Numeral$
param DForm = unit | teen | ten | hund ;
param Place = attr | indep ;
param Size = nom | nompl | sgg | plg ;
--param Gend = masc | fem | neut ;
oper mille : Size => Str = table {
nom => "тысяча" ;
sgg => "тысячи" ;
_ => "тысяч"} ;
oper gg : Str -> Gender => Str = \s -> table {_ => s} ;
-- CardOrd = NCard | NOrd ;
}

View File

@@ -0,0 +1,139 @@
--# -path=.:../abstract:../common:../../prelude
concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in {
flags optimize=all_subs ; coding=utf8 ;
lin
PredVP Ya tebyaNeVizhu = { s = \\b,clf =>
let {
ya = Ya.s ! (case clf of {
ClInfinit => (mkPronForm Acc No NonPoss);
_ => (mkPronForm Nom No NonPoss)
});
ne = case b of {Pos=>""; Neg=>"не"};
vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
khorosho = tebyaNeVizhu.s2 ;
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
}
in
if_then_else Str tebyaNeVizhu.negBefore
(ya ++ ne ++ vizhu ++ tebya ++ khorosho)
(ya ++ vizhu ++ ne ++ tebya ++ khorosho)
} ;
PredSCVP sc vp = { s = \\b,clf =>
let {
ne = case b of {Pos=>""; Neg=>"не"};
vizhu = vp.s ! clf ! (GSg Neut)! P3;
tebya = vp.s3 ! Neut ! Sg
}
in
if_then_else Str vp.negBefore
(sc.s ++ ne ++ vizhu ++ tebya)
(sc.s ++ vizhu ++ ne ++ tebya)
} ;
---- AR 17/12/2008
SlashVP Ya tebyaNeVizhu = {
s = \\b,clf =>
let {
ya = Ya.s ! (case clf of {
ClInfinit => (mkPronForm Acc No NonPoss);
_ => (mkPronForm Nom No NonPoss)
});
ne = case b of {Pos=>""; Neg=>"не"};
vizhu = tebyaNeVizhu.s ! clf ! (pgNum Ya.g Ya.n)! Ya.p;
khorosho = tebyaNeVizhu.s2 ;
tebya = tebyaNeVizhu.s3 ! (pgen2gen Ya.g) ! Ya.n
}
in
if_then_else Str tebyaNeVizhu.negBefore
(ya ++ ne ++ vizhu ++ tebya ++ khorosho)
(ya ++ vizhu ++ ne ++ tebya ++ khorosho) ;
s2=tebyaNeVizhu.s2 ;
c=tebyaNeVizhu.c
} ;
AdvSlash slash adv = {
s = \\b,clf => slash.s ! b ! clf ++ adv.s ;
c = slash.c;
s2 = slash.s2;
} ;
SlashPrep cl p = {s=cl.s; s2=p.s; c=p.c} ;
--- AR 3/11/2007
SlashVS ivan vidit tuUlubaeshsya = {
s=\\b,clf => ivan.s ! PF Nom No NonPoss ++
vidit.s! (getActVerbForm clf (pgen2gen ivan.g) ivan.n ivan.p) ++
[", что"] ++ tuUlubaeshsya.s ;
s2=tuUlubaeshsya.s2;
c=tuUlubaeshsya.c
} ;
ImpVP inf = {s = \\pol, g,n =>
let
dont = case pol of {
Neg => "не" ;
_ => []
}
in
dont ++ inf.s ! ClImper ! gennum g n ! P2 ++
inf.s2++inf.s3!g!n
} ;
EmbedS s = {s = "что" ++ s.s} ;
-- In Russian "Whether you go" transformed in "go whether you":
EmbedQS qs = {s = qs.s ! QIndir} ;
EmbedVP vp = {s = vp.s2 ++ vp.s!ClInfinit!(GSg Masc) !P3 ++ vp.s3!Masc!Sg} ;
UseCl t p cl = {s = t.s ++ p.s ++ case t.t of {
Cond => cl.s! p.p ! ClCondit ; --# notpresent
Pres => cl.s! p.p ! ClIndic Present t.a ---- AR work-around 13/12/2007
; --# notpresent
_ => cl.s! p.p ! ClIndic (getTense t.t) t.a --# notpresent
}
};
UseQCl t p qcl= {s = case t.t of {
Cond => qcl.s! p.p ! ClCondit ; --# notpresent
Pres => qcl.s! p.p ! ClIndic Present t.a
; --# notpresent
_ => qcl.s!p.p! ClIndic (getTense t.t) t.a --# notpresent
}};
UseRCl t p rcl ={s = \\gn,c,anim => case t.t of {
Cond => [", "] ++ rcl.s! p.p ! ClCondit ! gn !c !anim ; --# notpresent
Pres => [", "] ++ rcl.s! p.p ! ClIndic Present t.a !gn !c !anim
; --# notpresent
_ => [", "] ++ rcl.s! p.p ! ClIndic (getTense t.t) t.a !gn !c !anim --# notpresent
}};
UseSlash t p cl = {
s = case t.t of {
Cond => cl.s! p.p ! ClCondit ; --# notpresent
Pres => cl.s! p.p ! ClIndic Present t.a
; --# notpresent
_ => cl.s! p.p ! ClIndic (getTense t.t) t.a --# notpresent
} ;
s2 = cl.s2 ;
c = cl.c
};
AdvS a s = {s = a.s ++ s.s} ; ---- AR 19/6/2007
ExtAdvS a s = {s = a.s ++ "," ++ s.s} ; ---- AR 1/9/2011
---- AR 17/12/2008
RelS s r = {s = s.s ++ "," ++ r.s ! gennum Neut Sg ! Nom ! Inanimate} ; ---- ?
}

View File

@@ -0,0 +1,154 @@
--# -path=.:../abstract:../common:../../prelude
concrete StructuralRus of Structural = CatRus **
open ResRus, MorphoRus, (P = ParadigmsRus), Prelude, NounRus in {
flags optimize=all ; coding=utf8 ;
lin
-- First mount the numerals.
-- UseNumeral i = i ;
-- Then an alphabetical list of structural words
above_Prep = { s = "над" ; c = Inst} ;
after_Prep = { s = "после" ; c = Gen };
-- all8mass_Det = vesDet ** {n = Sg; g = PNoGen; c = Nom} ;
all_Predet = vseDetPl ** { g = PNoGen; c = Nom; size = nom} ;
almost_AdA = {s= "почти"} ;
almost_AdN = {s= "почти"} ;
although_Subj = ss "хотя" ;
always_AdV = ss "всегда" ;
and_Conj = {s1 = [] ; s2 = "и" ; n = Pl} ;
because_Subj = ss ["потому что"] ;
before_Prep ={ s = "перед" ; c = Inst};
behind_Prep = { s = "за" ; c = Inst };
between_Prep = { s = "между" ; c = Inst};
both7and_DConj = sd2 "как" [", так и"] ** {n = Pl} ;
but_PConj = ss "но" ;
by8agent_Prep = { s = ["с помощью"] ; c = Gen};
by8means_Prep = { s = ["с помощью"] ; c = Gen};
can8know_VV = verbMoch ;
can_VV = verbMoch ;
during_Prep = { s = ["в течение"] ; c = Gen};
either7or_DConj = sd2 "либо" [", либо"] ** {n = Sg} ;
-- comma is not visible in GUI!
every_Det = {
s = \\c,a,g => kazhdujDet.s ! AF c a (gennum g Sg) ;
n = Sg ; g = PNoGen ; c = Nom ; size = nom} ;
everybody_NP = DetCN (DetQuant IndefArt NumPl) (UseN ((eEnd_Decl "вс")**{lock_N=<>})) ;
everything_NP = UsePron (pronVseInanimate ** {lock_Pron=<>}) ;
everywhere_Adv = ss "везде" ;
few_Det = {
s = \\c,a,g => nemnogoSgDet.s ! AF c a (gennum g Sg) ;
n = Sg ; g = PNoGen ; c = Nom ; size = plg} ;
--- DEPREC first_Ord = (uy_j_EndDecl "перв" ) ** {lock_A = <>}; --AStaruyj
for_Prep = { s = "для" ; c = Gen };
from_Prep = { s = "от" ; c = Gen };
he_Pron = pronOn ;
here_Adv = ss "здесь" ;
here7to_Adv = ss "сюда" ;
here7from_Adv = ss "отсюда" ;
how_IAdv = ss "как" ;
how8many_IDet = skolkoSgDet ** {n = Pl; g = (PGen Neut); c= Gen};
how8much_IAdv = ss "сколько" ;
i_Pron = pronYa Masc ;
if_Subj = ss "если" ;
in8front_Prep = { s = "перед" ; c = Inst};
in_Prep = { s = "в" ; c = Prepos PrepVNa } ;
it_Pron = pronOno ;
less_CAdv = {s="менее"; p=""} ;
many_Det = {
s = \\c,a,g => mnogoSgDet.s ! AF c a (gennum g Sg) ;
n = Sg; g = (PGen Neut); c = Gen; size = plg} ;
more_CAdv = {s="более"; p=""} ;
most_Predet = bolshinstvoSgDet ** {n = Sg; g = (PGen Neut); c= Gen; size = plg} ;
-- inanimate, Sg: "большинство телефонов безмолвству-ет"
-- most8many_Det = bolshinstvoPlDet ** {n = Pl; g = (PGen Neut); c= Gen} ;
-- animate, Pl: "большинство учащихся хорошо подготовлен-ы"
much_Det = {
s = \\c,a,g => mnogoSgDet.s ! AF c a (gennum g Sg) ;
n = Sg ; g = (PGen Neut) ; c= Gen ; size = plg} ; -- same as previous
must_VV = verbDolzhen ;
no_Utt = ss ["Нет"] ;
on_Prep = { s = "на" ; c = Prepos PrepVNa };
--- DEPREC one_Quant = odinDet ** {lock_QuantSg = <>; n= Sg; g = PNoGen; c = Nom };
--AStaruyj :
only_Predet = (uy_j_EndDecl "единственн" ) ** {lock_Predet = <>; n= Sg; g = PNoGen; c = Nom; size = nom };
or_Conj = {s1= [] ; s2 = "или" ; n = Sg} ;
otherwise_PConj = ss "иначе" ;
part_Prep = { s = "" ; c = Nom}; -- missing in Russian
please_Voc = ss "пожалуйста" ;
possess_Prep = { s = "" ; c = Gen}; --- ?? AR 19/2/2004
quite_Adv = ss "довольно" ;
she_Pron = pronOna ;
so_AdA = ss "так";
somebody_NP = UsePron (pronKtoTo** {lock_Pron = <>});
someSg_Det = {
s = \\c,a,g => nekotorujDet.s ! AF c a (gennum g Sg) ;
n = Sg ; g = PNoGen ; c= Nom ; size = nom} ;
somePl_Det = {
s = \\c,a,g => nekotorujDet.s ! AF c a (gennum g Pl) ;
n = Pl ; g = PNoGen ; c= Nom ; size = nom} ;
something_NP = UsePron (pronChtoTo** {lock_Pron=<> }) ;
somewhere_Adv = ss "где-нибудь" ;
that_Quant = totDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
there_Adv = ss "там" ;
there7to_Adv = ss "туда" ;
there7from_Adv = ss "оттуда" ;
therefore_PConj = ss "следовательно" ;
they_Pron = pronOni;
this_Quant = etotDet ** {n = Sg; g = PNoGen; c= Nom; size = nom} ;
through_Prep = { s = "через" ; c = Acc };
to_Prep = { s = "к" ; c = Dat };
too_AdA = ss "слишком" ;
under_Prep = { s = "под" ; c = Inst };
very_AdA = ss "очень" ;
want_VV = verbKhotet ;
we_Pron = pronMu Masc;
whatPl_IP = pron2NounPhraseNum pronChto Inanimate Pl;
whatSg_IP = pron2NounPhraseNum pronChto Inanimate Sg;
when_IAdv = ss "когда" ;
when_Subj = ss "когда" ;
where_IAdv = ss "где" ;
which_IQuant = {
s = \\_ => kotorujDet.s ;
g = PNoGen;
c= Nom
} ;
whoPl_IP = pron2NounPhraseNum pronKto Animate Pl;
whoSg_IP = pron2NounPhraseNum pronKto Animate Sg;
why_IAdv = ss "почему" ;
with_Prep = {s = pre {#sconsonant => "со" ; ("щ"|"Щ") => "со" ; _ => "с"} ; c = Inst} ;
without_Prep = { s = "без" ; c = Gen};
youPl_Pron = pronVu Masc;
yes_Utt = ss ["Да"] ;
youSg_Pron = pronTu Masc;
youPol_Pron = pronVu Masc;
have_V2= P.dirV2 (P.regV P.imperfective P.first "име" "ю" "имел" "имей" "иметь" );
have_V3 = P.mkV3 (P.mkV P.imperfective "есть" "есть" "есть" "есть" "есть" "есть" "был" "будь" "есть") "" "у" Nom Gen;
have_not_V3 = P.mkV3 (P.mkV P.imperfective "нет" "нет" "нет" "нет" "нет" "нет" "не было" "не будь" "нет") "" "у" Gen Gen;
--- NoDet = nikakojDet ** {n = Sg; g = PNoGen; c= Nom} ;
--- AnyDet = lubojDet ** {n = Sg; g = PNoGen; c= Nom} ;
--- AnyNumDet = mkDeterminerNum (lubojDet ** {n = Pl; g = PNoGen; c= Nom} );
--- NoNumDet = mkDeterminerNum (nikakojDet ** {n = Pl; g = PNoGen; c= Nom} );
---NobodyNP = UsePron pronNikto Animate;
---NothingNP = UsePron pronNichto Inanimate;
-- In case of "neither.. no" expression double negation is not
-- only possible, but also required in Russian.
-- There is no means of control for this however in the resource grammar.
--- NeitherNor = sd2 "ни" [", ни"] ** {n = Sg} ;
--- NowhereNP = ss "нигде" ;
--- AgentPrep = { s = "" ; c = Nom}; -- missing in Russian
lin language_title_Utt = ss "Русский" ;
oper
sconsonant : pattern Str = #(("с"|"з"|"ж"|"ш"|"л"|"ль"|"р"|"м"|"в"|"С"|"З"|"Ж"|"Ш"|"Л"|"Ль"|"Р"|"М"|"В"|"ЛЬ") +
("б" | "в" | "г" | "д" | "ж" | "з" | "й" | "к" | "л" | "м" | "н" | "п" | "р" | "с" | "т" | "ф" | "х" | "ц" | "ч" | "ш" | "щ" |
"Б" | "В" | "Г" | "Д" | "Ж" | "З" | "Й" | "К" | "Л" | "М" | "Н" | "П" | "Р" | "С" | "Т" | "Ф" | "Х" | "Ц" | "Ч" | "Ш" | "Щ")) ;
}

View File

@@ -0,0 +1,41 @@
--# -path=.:../abstract:../common:../prelude
concrete SymbolRus of Symbol = CatRus ** open Prelude, ResRus in {
flags coding=utf8;
{- TODO! -}
lin
SymbPN i = {s = table {_ => i.s} ; g = Neut; anim = Inanimate } ;
IntPN i = {s = table {_ => i.s} ; g = Neut; anim = Inanimate } ;
FloatPN i = {s = table {_ => i.s} ; g = Neut; anim = Inanimate } ;
NumPN n = {s = table {_ => n.s ! Neut ! Inanimate ! Nom} ; g = Neut; anim = Inanimate } ;
CNIntNP cn i = {s = \\cas => cn.nounpart ! NF Sg (extCase cas) nom ++ cn.relcl ! Sg ! extCase cas ++ i.s;
n = Sg ; p = P3 ;
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
CNNumNP cn n = {s = \\cas => cn.nounpart ! NF Sg (extCase cas) nom ++ cn.relcl ! Sg ! extCase cas
++ n.s ! cn.g ! cn. anim ! (extCase cas) ;
n = Sg ; p = P3 ;
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
CNSymbNP d cn ss = {s = \\cas => cn.nounpart ! NF Sg (extCase cas) nom ++ cn.relcl ! Sg ! extCase cas ;
n = Sg ; p = P3 ;
g = PGen cn.g ; anim = cn.anim ; pron = False } ;
SymbS sy = sy ;
SymbNum sy = { s = \\_,_,_=>sy.s; n=Pl ; size = plg };
SymbOrd sy = { s = \\af => sy.s } ;
lincat
Symb, [Symb] = SS ;
lin
MkSymb s = s ;
BaseSymb = infixSS "и" ;
ConsSymb = infixSS "," ;
}

431
src/russian/v1/VerbRus.gf Normal file
View File

@@ -0,0 +1,431 @@
--# -path=.:../abstract:../common:../../prelude
concrete VerbRus of Verb = CatRus ** open ResRus, Prelude in {
-- 1.4 additions by AR 17/6/2008
flags optimize=all_subs ; coding=utf8 ;
lin
CompNP masha =
{ s=\\clf,gn,p => case clf of
{
(ClIndic Present _) => masha.s ! (mkPronForm Nom No NonPoss) ;
(ClIndic PastRus _) => case gn of
{ (GSg Fem) =>"была"++masha.s ! (mkPronForm Inst No NonPoss);
(GSg Masc) =>"был" ++ masha.s!(mkPronForm Inst No NonPoss);
(GSg Neut) =>"было" ++ masha.s!(mkPronForm Inst No NonPoss);
GPl => "были" ++ masha.s ! (mkPronForm Inst No NonPoss)
};
(ClIndic Future _) => case gn of
{ GPl => case p of
{ P3 => "будут"++masha.s ! (mkPronForm Inst No NonPoss);
P2 => "будете"++masha.s !(mkPronForm Inst No NonPoss);
P1 => "будем"++masha.s ! (mkPronForm Inst No NonPoss)
};
(GSg _) => case p of
{ P3=>"будет"++masha.s!(mkPronForm Inst No NonPoss) ;
P2 => "будешь"++ masha.s ! (mkPronForm Inst No NonPoss) ;
P1=> "буду"++ masha.s ! (mkPronForm Inst No NonPoss)
} --case p
}; --case gn
ClCondit => masha.s!(mkPronForm Inst No NonPoss) ;
ClImper => case (numGenNum gn) of
{Sg => "будь" ++ masha.s ! (mkPronForm Inst No NonPoss);
Pl => "будьте" ++ masha.s ! (mkPronForm Inst No NonPoss)
};
ClInfin => "быть" ++ masha.s ! (mkPronForm Inst No NonPoss)
}; -- case clf
asp = Imperfective ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n => ""
} ;
CompAP zloj ={
s= \\clf,gn,p => case clf of {
-- person is ignored !
ClInfinit => "быть" ++ zloj.s ! AF Inst Animate (GSg Masc) ;
ClImper => case gn of
{ (GSg _) => "будь" ++ zloj.s ! AF Inst Animate (GSg Masc);
GPl => "будьте" ++ zloj.s ! AF Inst Animate GPl
};
-- infinitive does not save GenNum,
-- but indicative does for the sake of adjectival predication !
-- ClIndic Present _ => zloj.s ! AF Nom Animate gn ;
ClIndic Present _ | ClCondit => zloj.s ! AFShort gn ; ---- CLCondit AR 6/2/2013
ClIndic PastRus _ => case gn of
{ (GSg Fem) => "была" ++ zloj.s! AF Nom Animate (GSg Fem);
(GSg Masc) => "был" ++ zloj.s! AF Nom Animate (GSg Masc);
(GSg Neut) => "был" ++ zloj.s! AF Nom Animate (GSg Neut);
GPl => "были" ++ zloj.s! AF Nom Animate GPl
};
ClIndic Future _ => case gn of
{ GPl => case p of
{ P3 => "будут" ++ zloj.s! AF Nom Animate GPl;
P2 => "будете" ++ zloj.s! AF Nom Animate GPl;
P1 => "будем" ++ zloj.s! AF Nom Animate GPl
} ;
(GSg _) => case p of
{P3 => "будет" ++ zloj.s! AF Nom Animate (GSg (genGNum gn));
P2 => "будешь"++ zloj.s! AF Nom Animate (GSg (genGNum gn));
P1=> "буду" ++ zloj.s! AF Nom Animate (GSg (genGNum gn))
}
}
---- ; ClCondit => ""
} ;
asp = Imperfective ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n=> ""
} ;
-- AR 7/12/2010 --- hmmm
CompCN zloj ={
s= \\clf,gn,p =>
let num = numGenNum gn ;
zlojsg = zloj.nounpart ! NF Sg Nom nom ++ zloj.relcl ! Sg ! Nom ;
zlojpl = zloj.nounpart ! NF Pl Nom plg ++ zloj.relcl ! Pl ! Nom
in
case clf of {
-- person is ignored !
ClInfinit => "быть" ++ zloj.nounpart ! NF Sg Inst nom ++ zloj.relcl ! Sg ! Inst ;
ClImper => case gn of
{ (GSg _) => "будь" ++ zloj.nounpart ! NF Sg Inst plg ++ zloj.relcl ! Sg ! Inst ;
GPl => "будьте" ++ zloj.nounpart ! NF Pl Inst plg ++ zloj.relcl ! Pl ! Inst
};
-- infinitive does not save GenNum,
-- but indicative does for the sake of adjectival predication !
ClIndic Present _ | ClCondit => zloj.nounpart ! NF num Nom nom ++ zloj.relcl ! num ! Nom ;
ClIndic PastRus _ => case gn of
{ (GSg Fem) => "была" ++ zlojsg ;
(GSg Masc) => "был" ++ zlojsg ;
(GSg Neut) => "был" ++ zlojsg ;
GPl => "были" ++ zlojpl
};
ClIndic Future _ => case gn of
{ GPl => case p of
{ P3 => "будут" ++ zlojpl ;
P2 => "будете" ++ zlojpl ;
P1 => "будем" ++ zlojpl
} ;
(GSg _) => case p of
{P3 => "будет" ++ zlojsg ;
P2 => "будешь"++ zlojsg ;
P1=> "буду" ++ zlojsg
}
}
---- ; ClCondit => ""
} ;
asp = Imperfective ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n=> ""
} ;
-- Verb phrases can also be formed from adjectives (" молод"),
-- common nouns (" человек"), and noun phrases (" самый молодой").
-- The third rule is overgenerating: " каждый человек" has to be ruled out
-- on semantic grounds.
-- Note: we omit a dash "-" because it will cause problems with negation word order:
-- "Я не - волшебник". Alternatively, we can consider verb-based VP and
-- all the rest.
CompAdv zloj =
{ s= \\clf,gn,p => case clf of {
ClImper => case gn of
{ GSg _ => "будь" ++ zloj.s; -- person is ignored !
GPl => "будьте" ++ zloj.s
};
ClInfinit => "быть" ++ zloj.s;
ClIndic Present _ | ClCondit => zloj.s ;
ClIndic PastRus _ => case gn of
{ (GSg Fem) => "была" ++ zloj.s;
(GSg Masc) => "был" ++ zloj.s;
(GSg Neut) => "было" ++ zloj.s;
GPl => "были" ++ zloj.s
};
ClIndic Future _ => case gn of
{ (GSg _) => "будет" ++ zloj.s;
GPl => "будут" ++ zloj.s
}
---- ; ClCondit => ""
} ;
asp = Imperfective ;
w = Act;
s2 = "";
negBefore = True;
s3 = \\g,n => ""
} ;
UseComp comp = comp ;
-- CompAP ap = ap ;
-- CompNP np = {s = \\_ => np.s ! Acc} ;
-- CompAdv a = {s = \\_ => a.s} ;
-- A simple verb can be made into a verb phrase with an empty complement.
-- There are two versions, depending on if we want to negate the verb.
-- N.B. negation is *not* a function applicable to a verb phrase, since
-- double negations with "inte" are not grammatical.
UseV se =
{s=\\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ;
asp = se.asp ;
w=Act;
s2 = "";
negBefore = True;
s3 = table{_=> table{_ => ""}}
} ;
-- The rule for using transitive verbs is the complementization rule:
SlashV2a se =
{s = \\clf,gn,p => se.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ;
asp = se.asp ;
w = Act;
s2 = "";
s3 = \\g,n => "";
negBefore = True ;
sc = se.c2.s ;
c = se.c2.c
} ;
ComplSlash se tu =
{s = \\clf,gn,p => se.s ! clf ! gn ! p
++ se.sc ++ tu.s ! (mkPronForm se.c No NonPoss) ;
asp = se.asp ;
w = se.w;
s2 = se.s2;
s3 = se.s3;
negBefore = se.negBefore
} ;
Slash2V3 dat tu =
let
tebepivo = dat.c2.s ++ tu.s ! PF dat.c2.c No NonPoss ++ dat.c3.s ;
in
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ tebepivo ;
asp = dat.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n=> "" ;
sc = dat.c3.s ;
c = dat.c3.c
} ;
Slash3V3 dat pivo =
let
tebepivo = dat.c3.s ++ pivo.s ! PF dat.c3.c Yes NonPoss
in
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ tebepivo ;
asp = dat.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n=> "" ;
sc = dat.c2.s ;
c = dat.c2.c
} ;
---- AR 17/12/2008
SlashV2Q dat esliOnPridet =
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ esliOnPridet.s ! QDir ;
asp = dat.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n=> "" ;
sc = dat.c2.s ;
c = dat.c2.c
} ;
---- AR 17/12/2008
SlashV2S vidit tuUlubaeshsya =
{s = \\clf,gn,p => vidit.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p)
++ [", что"] ++ tuUlubaeshsya.s ;
asp = vidit.asp;
w = Act;
s2="";
negBefore = True;
s3 = \\g,n => "" ;
sc = vidit.c2.s ;
c = vidit.c2.c
} ;
---- AR 17/12/2008
SlashV2V putatsya bezhat =
{ s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
(numGenNum gn) p) ++ bezhat.s!ClInfinit !gn!p ;
asp = putatsya.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 =\\g,n => "" ;
sc = putatsya.c2.s ;
c = putatsya.c2.c
} ;
---- AR 17/12/2008
ReflVP vp =
{ s = \\clf,gn,p => vp.s ! clf ! gn ! p ++ vp.s2 ++ sebya ! vp.c;
asp = vp.asp ;
w = Act ;
negBefore = True;
s2 = "";
s3 = \\g,n=> ""
} ;
---- AR 17/12/2008
SlashVV putatsya bezhat =
{ s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
(numGenNum gn) p) ++ bezhat.s!ClInfinit !gn!p ;
asp = putatsya.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 =\\g,n => "" ;
sc = bezhat.s2 ;
c = bezhat.c
} ;
---- AR 17/12/2008
SlashV2VNP putatsya np bezhat =
{ s = \\clf,gn,p =>
putatsya.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++
np.s ! (mkPronForm putatsya.c2.c No NonPoss) ++ ---- ?
bezhat.s!ClInfinit !gn!p ;
asp = putatsya.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 =\\g,n => "" ;
sc = bezhat.s2 ; ---- ?
c = bezhat.c
} ;
-- To generate "сказал, что Иван гуляет" / "не сказал, что Иван гуляет":
ComplVS vidit tuUlubaeshsya =
{s = \\clf,gn,p => vidit.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p)
++ [", что"] ++ tuUlubaeshsya.s ;
asp = vidit.asp;
w = Act;
s2="";
negBefore = True;
s3 = \\g,n => ""
} ;
-- To generate "can walk"/"can't walk"; "tries to walk"/"does not try to walk":
-- The contraction of "not" is not provided, since it would require changing
-- the verb parameter type.
ComplVV putatsya bezhat =
{ s = \\clf,gn,p => putatsya.s ! (getActVerbForm clf (genGNum gn)
(numGenNum gn) p) ++ bezhat.s!ClInfinit !gn!p ++ bezhat.s2 ; ---- s2 added by AR 7/12/2012 - but where should s3 go?
asp = putatsya.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 =\\g,n => ""
} ;
ComplVQ dat esliOnPridet =
{s = \\clf,gn,p => dat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++ esliOnPridet.s ! QDir ;
asp = dat.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n=> ""
} ;
ComplVA vuglyadet molodoj =
{s = \\clf,gn,p => vuglyadet.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ;
asp = vuglyadet.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n => molodoj.s!(AF Inst Animate (gennum g n))
} ;
SlashV2A obechat molodoj =
{s = \\clf,gn,p =>
obechat.s ! (getActVerbForm clf (genGNum gn) (numGenNum gn) p) ++
molodoj.s ! AF Inst Inanimate (GSg Neut) ;
---- AR 17/6; AF Inst tu.anim (pgNum tu.g tu.n) ;
asp = obechat.asp ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n =>"" ;
sc = obechat.c2.s ;
c = obechat.c2.c
} ;
AdvVP poet khorosho =
{s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = poet.s2 ++ khorosho.s; s3 = poet.s3;
asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
AdVVP khorosho poet =
{s = \\clf,gn,p => poet.s ! clf!gn!p; s2 = khorosho.s ++ poet.s2; s3 = poet.s3;
asp = poet.asp; w = poet.w; t = poet.t ; negBefore = poet.negBefore } ;
PassV2 se =
{s=\\clf,gn,p => se.s ! (getPassVerbForm clf (genGNum gn) (numGenNum gn) p) ;
asp=se.asp; w=Pass; s2 = se.c2.s;
negBefore = True;
s3 = table{_=> table{_ => ""}}
};
VPSlashPrep vp prep = vp ** {sc = prep.s ; c = prep.c} ; ---- AR
---- AR 6/2/2013. Unfortunately there's no copula in the resources...
UseCopula =
{ s=\\clf,gn,p => case clf of
{
(ClIndic Present _) => [] ;
(ClIndic PastRus _) => case gn of
{ (GSg Fem) =>"была" ;
(GSg Masc) =>"был" ;
(GSg Neut) =>"было" ;
GPl => "были"
};
(ClIndic Future _) => case gn of
{ GPl => case p of
{ P3 => "будут" ;
P2 => "будете" ;
P1 => "будем"
};
(GSg _) => case p of
{ P3=>"будет" ;
P2 => "будешь" ;
P1=> "буду"
} --case p
}; --case gn
ClCondit => "" ;
ClImper => case (numGenNum gn) of
{Sg => "будь" ;
Pl => "будьте"
};
ClInfin => "быть"
}; -- case clf
asp = Imperfective ;
w = Act;
negBefore = True;
s2 = "";
s3 = \\g,n => ""
} ;
}