576 Commits

Author SHA1 Message Date
John J. Camilleri 5dde3189e3 Change elve to elleve in both Norwegians 2022-09-15 15:54:47 +02:00
Inari Listenmaa 2340a98507 (Fin) Add linearisation to AdjAsCN, AdjAsNP 2022-09-12 13:25:34 +02:00
Krasimir Angelov 67d5bb9714 fix compilation with the majestic compiler 2022-09-10 16:48:33 +02:00
Krasimir Angelov 96717e5785 remove duplicated definition 2022-08-24 19:56:14 +02:00
Krasimir Angelov c5606ff55d revert the change. GF_LIB_PATH needs to be checked 2022-08-24 14:32:47 +02:00
Krasimir Angelov fc1ca4b8f1 no neet to check GF_LIB_PATH. GF will do it anyway 2022-08-24 14:29:27 +02:00
Krasimir Angelov d953c0f503 fix: drop the leading space 2022-08-24 13:52:43 +02:00
Krasimir Angelov 5645134aa3 find the RGL folder by using gf --version 2022-08-24 13:29:44 +02:00
Inari Listenmaa 34300d68bb (Rus) Exclude mkAdN, avoid clash with ParadigmsRus 2022-08-15 15:05:27 +02:00
Krasimir Angelov d49405b405 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2022-08-15 06:57:06 +02:00
Krasimir Angelov c86481df61 added compoundN 2022-08-15 06:56:46 +02:00
Inari Listenmaa ff54d2e7ad Merge pull request #410 from nemoyjh/master
Added very minimally functional Tamil
2022-08-14 10:23:08 +02:00
Yap Jun Hong (Nemo) 018fe16e2b Made a round of changes as shown on https://github.com/GrammaticalFramework/gf-rgl/pull/410 2022-08-14 16:18:39 +08:00
Yap Jun Hong (Nemo) 14d090b15f Fixed Readme error with screenshot 2022-08-14 14:39:34 +08:00
Yap Jun Hong (Nemo) 04fb507c9a Edited Readme file hierarchy so that it's a screenshot. Added FileHierarchy.png also 2022-08-14 14:37:09 +08:00
Yap Jun Hong (Nemo) 1e73c0b2c7 Changed Tamil api file links from 'malay' to 'tamil', removed MissingTam, Edited Languages.csv to be in alphabetical order 2022-08-14 14:30:57 +08:00
Yap Jun Hong (Nemo) 40b28cf858 Wrote a readme guide for folder 'src' and a separate readme for tamil 2022-08-14 14:20:03 +08:00
Krasimir Angelov 9cdb7ec37b a couple of functions necessary for the Russian WordNet 2022-08-13 22:40:13 +02:00
Yap Jun Hong (Nemo) a6cfe58398 Added minimally functional Tamil 2022-08-13 23:09:59 +08:00
Krasimir Angelov 81218506d9 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2022-08-09 11:24:09 +02:00
Krasimir Angelov 3bcb34559e added DocumentationPol.gf 2022-08-09 11:23:36 +02:00
Krasimir Angelov 4beacc0f64 added linref PN 2022-08-09 11:22:57 +02:00
Inari Listenmaa 444bf51e09 (Fin) Add linearisation for UttAccNP 2022-08-03 08:01:32 +02:00
Krasimir Angelov 9cfc36fc73 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2022-08-02 16:08:01 +02:00
Krasimir Angelov 607f4d68ae make mkPN more portable across languages 2022-08-02 16:07:27 +02:00
Inari Listenmaa 7fc42192d7 (Fin) call mkPrefixA if mkA's argument ends in - 2022-07-28 15:32:09 +02:00
Inari Listenmaa 43fbf928fd Merge pull request #409 from inariksit/misc-estonian
Minor fixes/cleanup in Estonian
2022-07-26 09:28:27 +02:00
Inari Listenmaa afe76e1fe0 (Est) get rid of most lock field warnings 2022-07-25 17:38:35 +02:00
Inari Listenmaa 728bb1faf9 (Est) Remove param SType from Cl
unnecessary apram, can form question by adding string "kas" when needed
2022-07-25 16:03:36 +02:00
Aarne Ranta df93a21d79 Merge pull request #407 from rnd0101/fix-stroika-pl-gen
Fix plgen of 3*a nouns, eg stroika
2022-07-18 08:24:39 +02:00
Aarne Ranta de2989d7c6 Merge pull request #408 from hleiss/reflexiveNPs
Reflexive NPs
2022-07-18 08:23:59 +02:00
Hans Leiss 529f315c7a Merge branch 'master' into reflexiveNPs 2022-07-16 13:20:31 +02:00
Hans Leiss 1379ba6c77 (Ger) reflexive RNP in ExtraGer completed ;
improved Slash-rules in tests/german/TestLangGer
2022-07-16 12:18:13 +02:00
Inari Listenmaa d3de861e86 (Est) Add a variant of VPS constructor in ExtraEst
produces more telegraphic language+different word order from PastPartAP
2022-07-08 16:40:46 +02:00
Inari Listenmaa 1b5840c89d (Est) Minor renaming/restructuring/cleanup 2022-07-01 08:35:37 +02:00
Inari Listenmaa e4a195a777 (Est) more API-friendly overloads for mkPrep 2022-06-29 14:35:23 +02:00
Roman Suzi 865dadbc64 Fix plgen of 3*a nouns, eg stroika 2022-06-24 07:24:13 +03:00
Inari Listenmaa 4fec15272c Merge pull request #406 from LauretteM/master
More Zulu fixes
2022-06-14 15:13:42 +02:00
LauretteM ad34d3f209 Merge branch 'GrammaticalFramework:master' into master 2022-06-14 15:09:31 +02:00
Laurette Marais 41de2cc021 (zul) fix for relative agreement morpheme 2022-06-14 15:08:56 +02:00
Inari Listenmaa d43be53e18 Merge pull request #405 from rnd0101/fix-useimmat
Fix most_Predet in Finnish
2022-06-13 11:23:57 +02:00
Laurette Marais f2c1fede4f (zul) new clause type 2022-06-10 09:24:19 +02:00
Laurette Marais ef771d62fa (zul) fixes to lexicon 2022-06-10 09:22:35 +02:00
Roman Suzi 33ce949606 Fix most_Predet in Finnish 2022-06-09 19:53:47 +03:00
Laurette Marais 0502797cb0 (zul) paradigms for vowel-init nouns 2022-06-07 08:42:20 +02:00
Inari Listenmaa 9fe3ffce2b Merge pull request #397 from inariksit/estonian-interrogative-agreement
Estonian interrogative agreement
2022-06-03 14:49:28 +02:00
Inari Listenmaa 08dfe78f2f Merge pull request #402 from inariksit/estonian-misc-fixes
Minor fixes in Estonian
2022-06-03 14:46:55 +02:00
Inari Listenmaa 4a2a556162 (Est) Add all case forms to result of GerundCN/NP 2022-06-03 15:45:27 +03:00
Inari Listenmaa 8a87dc210c (Est) Add linref for VPS 2022-06-03 15:26:05 +03:00
Inari Listenmaa d48cf92359 Merge pull request #401 from inariksit/estonian-PastPartAP-fix
Minor fixes + new lins in Estonian
2022-06-02 07:54:21 +02:00
Inari Listenmaa d5e5edb02f (Est) Use correct verb form in PastPart(Agent)AP 2022-06-02 08:52:42 +03:00
Inari Listenmaa 3026b8b59a (Est) Add AdvVPSlash and VPSlashPrep 2022-06-02 08:51:44 +03:00
Inari Listenmaa c4f39c0a74 (Est) Use Extend in AllEstAbs instead of Extra 2022-06-02 08:51:28 +03:00
Laurette Marais ddf6d0d30d (zul) improvements to paradigms 2022-06-01 15:10:49 +02:00
Laurette Marais 4c03a40aef (zul) fixed demonstratives 2022-06-01 13:23:51 +02:00
Laurette Marais 8073d2a91b (zul) change to Quant lincat 2022-05-27 09:33:05 +02:00
Laurette Marais 6421fb7ee9 (zul) dem na in postdet 2022-05-19 14:40:41 +02:00
Laurette Marais 149407d19b (zul) MultiLex fixes 2022-05-19 12:27:48 +02:00
Laurette Marais 20275832ad (zul) NguniGrammar new imports 2022-05-19 12:21:27 +02:00
Laurette Marais 02d3752a26 (zul) NP conjunction 2022-05-19 12:19:49 +02:00
Inari Listenmaa bec96b267d Merge pull request #400 from Meowyam/master
Malay RGL: many changes
2022-05-19 10:46:55 +02:00
Inari Listenmaa 6f3a72aa1d Merge branch 'master' into master 2022-05-19 10:46:17 +02:00
Inari Listenmaa b7363f9219 Merge pull request #399 from LauretteM/master
(zul) changes to MultiLex adjectives
2022-05-18 10:22:31 +02:00
Meowyam 5c84ce9623 remove space for passive 2022-05-18 16:08:35 +08:00
Meowyam edcef16eb1 fix passive for token ungluing 2022-05-18 15:59:55 +08:00
LauretteM 08ac422d9a Merge branch 'GrammaticalFramework:master' into master 2022-05-17 16:45:48 +02:00
Laurette Marais a6e0875878 (zul) changes to MultiLex adjectives 2022-05-17 16:40:26 +02:00
Meowyam a9c18fc48c add John and other lexicon to Malay 2022-05-13 15:46:08 +08:00
Meowyam 85960e0416 add changes for Adv functions to Malay rgl 2022-05-13 14:46:42 +08:00
Meowyam cff79f72c5 add Malay to languages.csv 2022-05-13 14:46:42 +08:00
Meowyam c712efc8eb add functions from BareRGMay to ExtendMay 2022-05-13 14:46:42 +08:00
Meowyam 3e79ab25e1 add VPS and VPI to ExtendMay 2022-05-13 14:46:42 +08:00
Meowyam a1c85431be add john_PN to Malay lexicon 2022-05-13 14:46:42 +08:00
Meowyam 967a8fb8a1 add extra functions to get VPS to work 2022-05-13 14:46:42 +08:00
Inari Listenmaa 2418e8cfcf (Est) fix wrong forms given to mkN in full_A 2022-05-13 14:42:56 +08:00
Inari Listenmaa 5a8eda803d (Est) Test cases for comitative 2022-05-13 14:42:56 +08:00
Inari Listenmaa bcd7a09864 (Est) Make N2, CN, NP & IP discontinuous
Needed for attaching case suffix in right place
2022-05-13 14:42:56 +08:00
Inari Listenmaa 7dd63173f2 (Est) Fix plural genitive forms for mis 2022-05-13 14:42:56 +08:00
Inari Listenmaa a59ed0e0e2 (Est) Workaround for short forms of Sg pers. prons
Always use long Gen, because other cases are formed from long Gen stem
2022-05-13 14:42:56 +08:00
Inari Listenmaa e80cd82870 (Est) misc small cleanup + better comments 2022-05-13 14:42:56 +08:00
Inari Listenmaa ee5c842972 (Est) Replace all {lock_C = <>} with lin C {...} 2022-05-13 14:42:56 +08:00
Inari Listenmaa 4e204d66a8 (Est) Use genitive stem+suffix for 4 other cases 2022-05-13 14:42:56 +08:00
Inari Listenmaa 0bae53b0b9 (Est) 7 InfForms -> 2 stems + gluing suffixes 2022-05-13 14:42:56 +08:00
Inari Listenmaa b2cc67aef5 (Est) Fix negative passive
TODO: more stable solution? conneg in Imper Sg is a bit of a hack
2022-05-13 14:42:56 +08:00
Inari Listenmaa 21259015e0 (Est) Reduce inflection table in VP
Include VForms in VP, only construct VPForms when making Cl
2022-05-13 14:42:56 +08:00
Inari Listenmaa e06c3433b9 (Est) Automatic whitespace removal
in its own commit,rather than have whitespace changes in content commits
2022-05-13 14:42:56 +08:00
Inari Listenmaa 5eb333ce6a (Est) New linearisations in ExtendEst 2022-05-13 14:42:56 +08:00
Inari Listenmaa 41d4b7fabd (Est) Add DAP + funs that use/produce it 2022-05-13 14:42:56 +08:00
Inari Listenmaa 46509b93a3 (Est) Keep non-finite forms non-finite in PassV2
TODO: restructure VP so we retain non-finite passive forms
2022-05-13 14:42:56 +08:00
Inari Listenmaa cb016ea750 Merge pull request #398 from LauretteM/master
Updates to Zulu
2022-05-12 06:22:37 +02:00
Laurette Marais 58255b27bf Merge branch 'v_longform' 2022-05-12 06:14:24 +02:00
Laurette Marais ccdc04992e added lapho 2022-05-12 05:21:33 +02:00
Laurette Marais 06593c5fb9 fixed relative longform 2022-05-12 05:21:11 +02:00
Laurette Marais c9ee6f3d82 added adjectives to MultiLex 2022-05-10 11:16:53 +02:00
Laurette Marais 9f3b45bf48 added additional long forms 2022-05-10 11:16:26 +02:00
Laurette Marais 86fca40ac2 fixed imperative prefix (2) 2022-05-10 08:56:22 +02:00
Laurette Marais f58d0358cc fixed imperative prefix 2022-05-10 08:21:22 +02:00
Inari Listenmaa c80899e07e Merge pull request #393 from hleiss/infinitives-new
(Ger) reimplementation of infinitives to improve compilation
2022-05-05 13:48:04 +02:00
Inari Listenmaa f67c3ec838 (Est) New test cases 2022-05-02 21:02:57 +08:00
Inari Listenmaa f1e14bbd5f (Est) Improve interrogative agreement 2022-05-02 21:01:29 +08:00
Inari Listenmaa 263ee4319d (Est) Fix object case for see_V2 2022-05-02 16:53:01 +08:00
Inari Listenmaa 783e2f3831 Merge pull request #396 from LauretteM/master
zulu inclusion
2022-04-28 14:13:17 +02:00
Inari Listenmaa 91b0578221 Merge pull request #394 from inariksit/estonian-extend
Improvements in Estonian
2022-04-28 10:13:12 +02:00
Laurette Marais 8b05843585 zulu inclusion 2022-04-28 08:53:37 +02:00
Meowyam d14de723d0 imppol for malay 2022-04-27 11:40:04 +08:00
Inari Listenmaa bc206fcbfe (Est) Use the correct mkN paradigm for dog_N 2022-04-25 16:13:31 +08:00
Inari Listenmaa d35a709eb7 (Eng) Move VP's inflection table into Cl
* Replaces 1300 fields with 50 fields + one new 2-valued parameter
* Only construct the full table with Tense,Ant,Pol… in Cl
2022-04-22 12:24:03 +08:00
Inari Listenmaa 0245dc2d59 (Eng) minor cleanup,change date format in comments 2022-04-22 12:24:03 +08:00
bc² 7fe4fd01f5 (gf2ud) label updates (#97)
* (gf2ud) add ConsNP "," rule
- use CCONJ instead of CONJ

* (gf2ud) dobj -> obj (ud 2 -> ud 1)
- clean up whitespace

* (gf2ud) fix eng labels
- comma exists in SSubjS, not SubjS
- add local rule for comma in VocNP
- auxpass (UD1) -> aux:pass (UD2)
2022-04-22 12:24:03 +08:00
1Regina 184497284d adverbials todo: add semantic context constructors 2022-04-22 12:24:03 +08:00
1Regina 9400e0ed21 move transitive and complements from affixes to tenses 2022-04-22 12:24:03 +08:00
1Regina bf213bf77e add test for quantifier 2022-04-22 12:24:03 +08:00
1Regina 828ea2545c remove collectives in collective nouns for xie for quantifier 2022-04-22 12:24:03 +08:00
1Regina 4db945a500 remove collectives in collective nouns for xie for quantifier 2022-04-22 12:24:03 +08:00
1Regina 83fed4e812 unit test for tenses 2022-04-22 12:24:03 +08:00
1Regina 65ddced771 unit tests for relative 2022-04-22 12:24:03 +08:00
1Regina c0daf6d0ba remove predicative form in CompareA UseComparA 2022-04-22 12:24:03 +08:00
1Regina f9a633ea52 adjustment for "mustn't"
not idiomatic but compositionally correct now for mustn't
2022-04-22 12:24:03 +08:00
1Regina 5aff25b37f make all the questions by extending a "吗" at end 2022-04-22 12:24:03 +08:00
1Regina 95bc972f44 changes in conjunction and sentences
to accomodate if _ then conjuction with jiu "就"
2022-04-22 12:24:03 +08:00
1Regina bd060578d6 replace future with "就会" instead of old "在" 2022-04-22 12:24:03 +08:00
1Regina e853942d43 if then conjunctions 2022-04-22 12:24:03 +08:00
1Regina cc4aef88f9 add 25 tests for chinese pronouns -- passed 2022-04-22 12:24:03 +08:00
1Regina 27073a6c0c fix DetNP for positive case for ge 2022-04-22 12:24:03 +08:00
1Regina 8495ed2f06 add test for chinese passive tests -- passed 2022-04-22 12:24:03 +08:00
1Regina e1130eb279 add test for chinese numerals -- passed 2022-04-22 12:24:03 +08:00
1Regina 40caeea67f add AST to test for complements 2022-04-22 12:24:03 +08:00
1Regina dd5b34492a add distinction between Attributive vs Predicative (esp for colours) 2022-04-22 12:24:03 +08:00
1Regina cf9e2cdd7f attempt to edit complexAP for table selection 2022-04-22 12:24:03 +08:00
1Regina 42a6de9803 fixed SentAP and AdvAP for AdjPlace in ResChi 2022-04-22 12:24:03 +08:00
1Regina 5679eeb1fb adjectives colour 2022-04-22 12:24:03 +08:00
1Regina dd05feeac0 WIP negation for chinese 2022-04-22 12:24:03 +08:00
1Regina 916cca5d22 fix malay for these cats arent' green for negation in unittest 2022-04-22 12:24:03 +08:00
Inari Listenmaa 613a159591 (Est) fix wrong forms given to mkN in full_A 2022-04-19 15:02:34 +08:00
Inari Listenmaa 79ea965fc4 (Est) Test cases for comitative 2022-04-18 19:43:57 +08:00
Inari Listenmaa facd4727cf (Est) Make N2, CN, NP & IP discontinuous
Needed for attaching case suffix in right place
2022-04-18 19:43:38 +08:00
Inari Listenmaa 0d4b92a006 (Est) Fix plural genitive forms for mis 2022-04-15 19:12:02 +08:00
Inari Listenmaa 8b876cf74c (Est) Workaround for short forms of Sg pers. prons
Always use long Gen, because other cases are formed from long Gen stem
2022-04-15 10:37:21 +08:00
Inari Listenmaa 8b14dcf6ba (Est) misc small cleanup + better comments 2022-04-15 10:33:41 +08:00
Inari Listenmaa 4e8ff8e7fd (Est) Replace all {lock_C = <>} with lin C {...} 2022-04-15 10:09:58 +08:00
Inari Listenmaa 76f23214c1 (Est) Use genitive stem+suffix for 4 other cases 2022-04-14 19:07:03 +08:00
Inari Listenmaa e8503511ca (Est) 7 InfForms -> 2 stems + gluing suffixes 2022-04-13 17:38:17 +08:00
Inari Listenmaa b1b752673d (Est) Fix negative passive
TODO: more stable solution? conneg in Imper Sg is a bit of a hack
2022-04-13 17:27:14 +08:00
Inari Listenmaa 219de4ca9a (Est) Reduce inflection table in VP
Include VForms in VP, only construct VPForms when making Cl
2022-04-13 11:46:56 +08:00
Inari Listenmaa 31c31b3e69 (Est) Automatic whitespace removal
in its own commit,rather than have whitespace changes in content commits
2022-04-13 10:42:34 +08:00
Inari Listenmaa 983274d239 (Est) New linearisations in ExtendEst 2022-04-12 19:03:22 +08:00
Inari Listenmaa 0aaa38e051 (Est) Add DAP + funs that use/produce it 2022-04-12 19:03:01 +08:00
Inari Listenmaa 1f7e16642b (Est) Keep non-finite forms non-finite in PassV2
TODO: restructure VP so we retain non-finite passive forms
2022-04-12 19:01:08 +08:00
Hans Leiss 0e8ac21976 (Ger) small fix to make reimplementation of infinitives compile for 'present'
new SlashVP, RelSlash in tests/german/TestLangGer to control reflexives in relative clauses
2022-04-11 15:33:36 +02:00
Hans Leiss b8ddf4304b (Ger) Small fix to get 'present' installed
new SlashVP, RelSlash in tests/german/TestLangGer.gf to control reflexives in relative clauses
2022-04-11 12:27:39 +02:00
Inari Listenmaa a72600b27c Merge pull request #392 from inariksit/fewer-fields-in-VP
(Eng) Fewer fields in VP
2022-04-11 04:14:31 +02:00
bc² b3d1ccbc40 (gf2ud) label updates (#97)
* (gf2ud) add ConsNP "," rule
- use CCONJ instead of CONJ

* (gf2ud) dobj -> obj (ud 2 -> ud 1)
- clean up whitespace

* (gf2ud) fix eng labels
- comma exists in SSubjS, not SubjS
- add local rule for comma in VocNP
- auxpass (UD1) -> aux:pass (UD2)
2022-04-07 10:37:04 +02:00
Inari Listenmaa 5eafffb8fe (Eng) Move VP's inflection table into Cl
* Replaces 1300 fields with 50 fields + one new 2-valued parameter
* Only construct the full table with Tense,Ant,Pol… in Cl
2022-04-07 10:20:26 +08:00
Inari Listenmaa 61cb94443a (Eng) minor cleanup,change date format in comments 2022-04-07 10:03:14 +08:00
Hans Leiss 7778e6138c (Ger) reimplementation of infinitives to improve compilation
- removed Control and treat control verbs with VPSlash.objCtrl:Bool

- combined VP.inf and VP.infExt to VP.inf with inplace/extracted parts
  depending on Agr, to subj/obj-control reflexives in infinitival complements

- AllGer compiles from src in 250s (SlashV2VNP!), .gfo loads in 15s on x86_64
2022-04-06 12:55:48 +02:00
Meowyam ffd1f28b42 negative imperative 2022-03-30 23:32:08 +08:00
Meowyam 1d033679f2 basic imperatif 2022-03-30 22:44:53 +08:00
Meowyam bf33191c88 add kedua-dua (the two, etc.) to Det 2022-03-30 17:13:03 +08:00
Meowyam 9fa07fb22d working tests for verbal affixes and tenses, add kepada (to a person), initial groundwork for animacy, numerals 2022-03-21 17:28:45 +08:00
1Regina 4df65b593e adverbials todo: add semantic context constructors 2022-03-07 04:30:39 +01:00
1Regina 0c659deae3 move transitive and complements from affixes to tenses 2022-03-07 04:30:39 +01:00
1Regina 5e308e7aa7 add test for quantifier 2022-03-07 04:30:39 +01:00
1Regina e0b4d6940a remove collectives in collective nouns for xie for quantifier 2022-03-07 04:30:39 +01:00
1Regina 57e6f8f244 remove collectives in collective nouns for xie for quantifier 2022-03-07 04:30:39 +01:00
1Regina 5c415fc913 unit test for tenses 2022-03-07 04:30:39 +01:00
1Regina 57490c18d2 unit tests for relative 2022-03-07 04:30:39 +01:00
1Regina fe5c124602 remove predicative form in CompareA UseComparA 2022-03-07 04:30:39 +01:00
1Regina 7f58e8ec8b adjustment for "mustn't"
not idiomatic but compositionally correct now for mustn't
2022-03-07 04:30:39 +01:00
1Regina 460ec475bd make all the questions by extending a "吗" at end 2022-03-07 04:30:39 +01:00
1Regina 4e947e4ce8 changes in conjunction and sentences
to accomodate if _ then conjuction with jiu "就"
2022-03-07 04:30:39 +01:00
1Regina 0dbb5e4ee8 replace future with "就会" instead of old "在" 2022-03-07 04:30:39 +01:00
1Regina 734d000b4d if then conjunctions 2022-03-07 04:30:39 +01:00
1Regina bbf109a473 add 25 tests for chinese pronouns -- passed 2022-03-07 04:30:39 +01:00
1Regina 3aefd51280 fix DetNP for positive case for ge 2022-03-07 04:30:39 +01:00
1Regina 5f8a21dc08 add test for chinese passive tests -- passed 2022-03-07 04:30:39 +01:00
1Regina b7b4c08e8a add test for chinese numerals -- passed 2022-03-07 04:30:39 +01:00
1Regina 92bfa85a49 add AST to test for complements 2022-03-07 04:30:39 +01:00
1Regina 9a6301691d add distinction between Attributive vs Predicative (esp for colours) 2022-03-07 04:30:39 +01:00
1Regina 1b02447b44 attempt to edit complexAP for table selection 2022-03-07 04:30:39 +01:00
1Regina 565cd8fa61 fixed SentAP and AdvAP for AdjPlace in ResChi 2022-03-07 04:30:39 +01:00
1Regina b26e6e1c9f adjectives colour 2022-03-07 04:30:39 +01:00
1Regina e4e304d551 WIP negation for chinese 2022-03-07 04:30:39 +01:00
1Regina 33ffc1db48 fix malay for these cats arent' green for negation in unittest 2022-03-07 04:30:39 +01:00
Meowyam 88ae0d5093 add mkV4 to add suffix to some verbs; passive unit tests 2022-02-23 15:09:03 +08:00
Meowyam 066a9f6170 fix active verb form for love 2022-02-21 16:15:33 +08:00
Meowyam ce9618b945 add linrefs for ClSlash and RCl 2022-02-21 16:15:33 +08:00
Meowyam 336c297dc1 add relative functions, addition to lexicon, change of words for you and I 2022-02-21 16:15:33 +08:00
Yousef Almesbahi 45d47afc36 Update unittest.py 2022-02-21 16:15:33 +08:00
Inari Listenmaa d021ebd527 (Ara) Add GerundNP in ExtendAra 2022-02-21 16:15:33 +08:00
Inari Listenmaa a435b6b8dc (Ara) Add extend to AllAra 2022-02-21 16:15:33 +08:00
Inari Listenmaa 4720114c84 (Eng) Update unit tests after reverting FunRP 2022-02-21 16:15:33 +08:00
Inari Listenmaa 475d0fb860 (Eng) Undo the change in FunRP from #381 2022-02-21 16:15:33 +08:00
Inari Listenmaa c2551f5766 (Eng) Use AllEng in the English unit tests 2022-02-21 16:15:32 +08:00
Inari Listenmaa 0c52f9cbed Recognise AllXxxAbs as abstract in unittest 2022-02-21 16:15:32 +08:00
aarneranta 83a59f2757 fixed ParadigmsFre.mkA with 2 and 3 arguments, and commented out some uncompilable entries from DictFre 2022-02-21 16:15:32 +08:00
Krasimir Angelov c8862b8ed8 an optimization which would be relevant with the new compiler 2022-02-21 16:15:32 +08:00
Krasimir Angelov 0ee84ddb7d Add ExtendTur to the list of modules 2022-02-21 16:15:32 +08:00
Krasimir Angelov 7da1cc310b simplify the pattern in ia2e 2022-02-21 16:15:32 +08:00
Krasimir Angelov c81edf3fbb remove dead code 2022-02-21 16:15:32 +08:00
Meowyam 4c1ff7b3a2 added sing_V2 to AllMayAbs 2022-01-28 07:04:17 +01:00
Meowyam 8a95b3ffa9 switched kami to kita for inclusiveness 2022-01-28 07:04:17 +01:00
Meowyam 021e6e6509 fix minor fixes for Malay RGL 2022-01-28 07:04:17 +01:00
Meowyam bf0e3a58dd add slash3v3 and SlashV2A 2022-01-28 07:04:17 +01:00
Meowyam 1a3b3ef796 monosyllable prefix 2022-01-28 07:04:17 +01:00
Meowyam 0c55010376 add QuestIComp 2022-01-28 07:04:17 +01:00
Meowyam a1a5f84708 add whoSg_IP 2022-01-28 07:04:17 +01:00
Meowyam a310e38904 changed which from apa to yang mana, which is more correct 2022-01-28 07:04:17 +01:00
Meowyam 4212850c9e add see_V2 to malay lexicon 2022-01-28 07:04:17 +01:00
Meowyam a71333fc0e changed wanita to perempuan for woman 2022-01-28 07:04:17 +01:00
Meowyam bcd46433d1 why did you go 2022-01-28 07:04:17 +01:00
Meowyam 0190fe2943 fixed QuestIAdv 2022-01-28 07:04:17 +01:00
Meowyam 43a02443bb QuestIAdv 2022-01-28 07:04:17 +01:00
Meowyam 90a44af861 do you not teach the cat in malay 2022-01-28 07:04:17 +01:00
Meowyam 93c78de1f1 add test for questions in malay 2022-01-28 07:04:17 +01:00
Meowyam c4f7875d6a add do you teach the cat in Malay 2022-01-28 07:04:17 +01:00
Meowyam ba694f03e8 correct verb form for like 2022-01-28 07:04:17 +01:00
Meowyam a0d397bed4 'how many' has correct standalone form and plural noun 2022-01-28 07:04:17 +01:00
Meowyam b8a1a72cca fix word order of question 2022-01-28 07:04:17 +01:00
Meowyam 23493335bb add idetQuant and pronouns to Malay RGL 2022-01-28 07:04:17 +01:00
Meowyam be36e65343 added sing_V2 to AllMayAbs 2022-01-26 19:22:42 +08:00
Yousef Almesbahi 97553b080b Update unittest.py 2022-01-23 12:15:03 +01:00
Inari Listenmaa 6131fdb41f (Ara) Add GerundNP in ExtendAra 2022-01-23 18:28:58 +08:00
Inari Listenmaa 1e761ede38 (Ara) Add extend to AllAra 2022-01-23 18:26:35 +08:00
Meowyam 7f9a4dce2b switched kami to kita for inclusiveness 2022-01-21 15:16:50 +08:00
Meowyam 049bd8943e fix minor fixes for Malay RGL 2022-01-20 13:16:11 +08:00
Inari Listenmaa f09de4661e (Eng) Update unit tests after reverting FunRP 2022-01-19 09:35:58 +01:00
Inari Listenmaa 5a5adef0db (Eng) Undo the change in FunRP from #381 2022-01-19 09:35:58 +01:00
Inari Listenmaa eb7b74578f (Eng) Use AllEng in the English unit tests 2022-01-19 09:35:58 +01:00
Inari Listenmaa 4af32f3570 Recognise AllXxxAbs as abstract in unittest 2022-01-19 09:35:58 +01:00
Meowyam f0b5a89fd4 add slash3v3 and SlashV2A 2022-01-12 17:17:10 +08:00
Meowyam 9d56ac6fee monosyllable prefix 2022-01-12 15:20:26 +08:00
Krasimir Angelov a181ab36a4 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2022-01-11 15:16:55 +01:00
Krasimir Angelov 2f10c2d769 an optimization which would be relevant with the new compiler 2022-01-11 15:16:26 +01:00
Meowyam 664164e8c1 add QuestIComp 2022-01-05 13:26:10 +08:00
Meowyam 83a16737dc add whoSg_IP 2022-01-04 13:16:26 +08:00
Meowyam 7704f6a18c changed which from apa to yang mana, which is more correct 2022-01-03 21:39:01 +08:00
Meowyam 4a892e646c add see_V2 to malay lexicon 2022-01-03 14:08:32 +08:00
Meowyam 0abf88324e changed wanita to perempuan for woman 2022-01-03 14:07:09 +08:00
Meowyam 6459c07548 why did you go 2022-01-03 14:00:43 +08:00
Meowyam c61fe0c314 fixed QuestIAdv 2021-12-30 23:19:38 +08:00
aarneranta 93999cd21e fixed ParadigmsFre.mkA with 2 and 3 arguments, and commented out some uncompilable entries from DictFre 2021-12-28 11:20:08 +01:00
Meowyam 984c8deb34 QuestIAdv 2021-12-21 18:11:20 +08:00
Krasimir Angelov 1d32508312 Add ExtendTur to the list of modules 2021-12-20 16:27:21 +01:00
Krasimir Angelov 447926a2ec simplify the pattern in ia2e 2021-12-14 09:20:06 +01:00
Krasimir Angelov 2dd8faaea7 remove dead code 2021-12-13 14:06:29 +01:00
Meowyam 7c1de7ba23 do you not teach the cat in malay 2021-11-25 18:00:46 +08:00
Meowyam 4054fec0d0 Merge branch 'GrammaticalFramework:master' into master 2021-11-25 13:02:47 +08:00
aarneranta e552ceb71d corrected number of whatPl_IP 2021-11-19 14:59:18 +01:00
Meowyam 82a74d84be add test for questions in malay 2021-11-17 14:45:25 +08:00
Meowyam 3770caad33 add do you teach the cat in Malay 2021-11-17 11:58:42 +08:00
Inari Listenmaa f9dc1695ca (Eng) open Prelude so True/False are no longer treated as variable names 2021-11-17 11:41:27 +08:00
Meowyam b086b774bf correct verb form for like 2021-11-15 14:01:16 +08:00
Meowyam 4394c8f979 'how many' has correct standalone form and plural noun 2021-11-15 13:49:39 +08:00
Meowyam 7daf14378d fix word order of question 2021-11-15 12:19:31 +08:00
Meowyam 27925cd4ce add idetQuant and pronouns to Malay RGL 2021-11-15 10:52:02 +08:00
Inari Listenmaa 7dd56dbb53 (Eng) Add unit tests about relative constructions 2021-10-25 11:06:09 +02:00
Inari Listenmaa 0eb77f5291 (Eng) Use "whose" in FunRP instead of "of which" 2021-10-25 11:06:09 +02:00
Inari Listenmaa 32ac7b5fe3 (Eng) Propagate CN's gender to NP also in MassNP 2021-10-25 11:06:09 +02:00
aarneranta 373079cf4c fixed warnings in ParadigmsEng 2021-10-25 11:01:15 +02:00
Jordi Saludes d97b1ebbce Include 'tossir' verb (to cough) into CA Bescherelle (#380)
Fixed cough_V 'tossir', paradigm implemented as version of cosir/31.
2021-10-20 11:00:33 +02:00
Inari Listenmaa a33768ad1a (Romance) genNum2Aform instead of explicit param 2021-10-20 10:57:40 +02:00
Inari Listenmaa b352dcb1a0 (Por) Fix bug in good_A 2021-10-20 10:57:40 +02:00
Inari Listenmaa 8a66158961 (Ita) Fix bug in good_A 2021-10-20 10:57:40 +02:00
Inari Listenmaa da7309e6b5 (Cat) Fix bug in good_A 2021-10-20 10:57:40 +02:00
Inari Listenmaa 38cdfc8efe (Cat) new instance of prefA 2021-10-20 10:57:40 +02:00
Inari Listenmaa 99469eeb54 (Por) Implement AForm+related opers in DiffPor 2021-10-20 10:57:40 +02:00
Inari Listenmaa 258cd95cca (Ita) Implement AForm+related opers in DiffIta 2021-10-20 10:57:40 +02:00
Inari Listenmaa 445c4f5187 (Cat) Implement AForm+related opers in DiffCat 2021-10-20 10:57:40 +02:00
Inari Listenmaa b8acdddabd (Fre) Implement AForm+related opers in DiffFre 2021-10-20 10:57:40 +02:00
Inari Listenmaa 3c27bbd125 (Spa) Implement AForm+related opers in DiffSpa 2021-10-20 10:57:40 +02:00
Inari Listenmaa 354990319d (Romance) Move AForm from Common to Diff
Por,Ita: no attributive. Fre,Cat: only Sg M, Spa: Sg M+F
2021-10-20 10:57:40 +02:00
Inari Listenmaa ef3270ae29 (Romance) Remove traces of Degree in Extend 2021-10-20 10:57:40 +02:00
Inari Listenmaa 88d0217d10 (Fre) Fix bug in predicative adj + add unit test 2021-10-20 10:57:40 +02:00
Inari Listenmaa 5281c3ba71 (Fre) Update A,A2 to not have Degree 2021-10-20 10:57:40 +02:00
Inari Listenmaa b696b9e932 (Romance) different ComparAgr for French 2021-10-20 10:57:40 +02:00
Inari Listenmaa 9620c738c5 (Cat) Update A,A2 to not have Degree 2021-10-20 10:57:40 +02:00
Inari Listenmaa e421518a36 (Por) Update A,A2 to not have Degree 2021-10-20 10:57:40 +02:00
Inari Listenmaa 47ea6a6830 (Ita) Update A,A2 to not have Degree 2021-10-20 10:57:40 +02:00
Inari Listenmaa 57390d366c (Spa) Update A,A2 to not have Degree 2021-10-20 10:57:40 +02:00
Inari Listenmaa 862c50e936 (Romance) Remove Degree from A, new field for comp 2021-10-20 10:57:40 +02:00
Inari Listenmaa 3d703856a6 (Romance) WIP: remove comparative más,più from A 2021-10-20 10:57:40 +02:00
aarneranta 93945265b8 ExtendSwe.CardCNCard added 2021-09-14 10:59:55 +02:00
Inari Listenmaa 1cc58f5048 (Eng) More instances of mkV2Q 2021-08-31 19:26:16 +08:00
John J. Camilleri e85efec7a5 Do not copy when dest==dist in Setup.sh 2021-08-20 14:04:29 +02:00
Inari Listenmaa 62488a2980 (May) Comments and TODOs on unit tests 2021-08-19 10:17:24 +02:00
Inari Listenmaa 74b7171842 (May) Add some lexicon 2021-08-19 10:17:24 +02:00
Inari Listenmaa 6e6b7b09ad (May) AdjCN + change lincat of A* 2021-08-19 10:17:24 +02:00
Inari Listenmaa c1e12b60ab (May) Add API funs + MissingMay 2021-08-19 10:17:24 +02:00
Inari Listenmaa fdc28dfd8a (May) Unit tests about numerals 2021-08-19 10:17:24 +02:00
Inari Listenmaa e122aea3ad (May) Form Det with numerals (NumCard, NumDigits etc.) 2021-08-19 10:17:24 +02:00
Inari Listenmaa c79c113e01 (May) Add numerals and digits 2021-08-19 10:17:24 +02:00
Inari Listenmaa d3dd3d668c (May) Cleanup in quant+det types 2021-08-19 10:17:24 +02:00
Inari Listenmaa d1322ea14d (May) Add prefixV: keeps its prefix in all contexts 2021-08-19 10:17:24 +02:00
Inari Listenmaa 1c98bc22f6 (May) WIP: trying out new rules for indirect objects, TODO check 2021-08-19 10:17:24 +02:00
Inari Listenmaa 2205d5c91c (May) Define three different preposition types 2021-08-19 10:17:24 +02:00
Inari Listenmaa ec9dcb92bf (May) ImpersCl, AdvVP + tests about verbal prefixes 2021-08-19 10:17:24 +02:00
Inari Listenmaa 7f032c511f (May) Conditional + new tests 2021-08-19 10:17:24 +02:00
Inari Listenmaa 00a72f907b (May) Word order with determiners and relative clauses 2021-08-19 10:17:24 +02:00
Inari Listenmaa afc299308c (May) Tweaks in relative clauses 2021-08-19 10:17:24 +02:00
Inari Listenmaa 5b28e621b3 (May) Add dative "prep", direct object "prep" +truly empty emptyPrep 2021-08-19 10:17:24 +02:00
Inari Listenmaa 8208485f48 (May) More test, and comments on possession 2021-08-19 10:17:24 +02:00
Inari Listenmaa 014c3569eb (May) WIP: Possessive and object pronouns 2021-08-19 10:17:24 +02:00
Inari Listenmaa 20483a23b1 (May) Add future tense + tests for tenses 2021-08-19 10:17:24 +02:00
Inari Listenmaa 61ffe8e9a4 (May) Split VP negations into bukan and tidak 2021-08-19 10:17:24 +02:00
Inari Listenmaa bc0fb02f20 (May) Add VV complements 2021-08-19 10:17:24 +02:00
Inari Listenmaa 0e065d8005 (May) Add PassV2 + new tests 2021-08-19 10:17:24 +02:00
Inari Listenmaa 7927fdae85 (May) New lexicon and V3s 2021-08-19 10:17:24 +02:00
Inari Listenmaa eaf401eda7 (May) No verbal prefixes in relative clauses 2021-08-19 10:17:24 +02:00
Inari Listenmaa 6d781d3d02 (May) Add lexicon + some unit tests 2021-08-19 10:17:24 +02:00
Inari Listenmaa f2cf027f55 Add ~ to gitignore 2021-08-19 10:17:24 +02:00
Inari Listenmaa eafa5e8f7a (May) Minor cleanup 2021-08-19 10:17:24 +02:00
Inari Listenmaa 095f11abb7 (May) WIP relative clauses 2021-08-19 10:17:24 +02:00
Inari Listenmaa 53eb8ab9df (May) Add some determiners + fix word order in DetCN 2021-08-19 10:17:24 +02:00
Inari Listenmaa c98f9a84d8 (May) ComplSlash, prepositions and some V2s 2021-08-19 10:17:24 +02:00
Inari Listenmaa 6693a27d6c WIP: Malay grammar
Copied and pasted from previous RGs, very minimal at the moment.
2021-08-19 10:17:24 +02:00
Inari Listenmaa 4f821ca621 (Chi) Add ExtendChi 2021-08-04 08:49:14 +02:00
Inari Listenmaa 1853365942 (Eng) Add mkVoc in Paradigms, exclude from TryEng 2021-08-02 03:49:46 +02:00
Inari Listenmaa 848e3e5ceb Add implementation of ProDrop 2021-08-02 03:49:46 +02:00
aarneranta ee86e2390c ParadigmsFin.exceptPlGenN for special plural genitives 2021-08-01 12:38:24 +02:00
aarneranta decdfac926 fix in Fin.CardCNCard 2021-07-30 11:27:19 +02:00
aarneranta bd8550b652 Extend.CardCNCard for 5 million, 5 dozen, etc 2021-07-30 10:11:21 +02:00
aarneranta cb502488d1 some ParadigmsEng,Fin,Ger additions 2021-07-30 09:29:19 +02:00
Aarne Ranta da443a79af Merge pull request #372 from inariksit/morphodict-eng
Remove "more" + "most" from the inflection table of A*
2021-07-22 11:39:54 +02:00
aarneranta 7da28a09be ifPluralNP and forceNumberNP in ParadigmsFin 2021-07-22 10:33:44 +02:00
aarneranta 2f379bf9c6 added symb : Int -> Card instance in Symbolic 2021-07-21 16:19:01 +02:00
krangelov 45e99c5e40 Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl 2021-07-02 21:29:12 +02:00
krangelov c4d72d1bae added DocumentationAfr 2021-07-02 21:28:51 +02:00
Inari Listenmaa 969559b45b (morphodict) Remove more+most from args to mkA 2021-06-17 20:31:10 +08:00
Inari Listenmaa 70eee40ae8 (Eng) Remove more+most from inflection table of A*
A* has a parameter and the string more/most is added later if needed.
2021-06-17 20:26:55 +08:00
Inari Listenmaa 60533ef002 (Eng) Automatic whitespace removal 2021-06-17 20:14:07 +08:00
aarneranta a3701d1a48 bug fix in VerbGer: added fields of CN to CompCN 2021-06-09 18:25:06 +02:00
aarneranta b6f37abe91 ExistNPAdv in Fre and Ita 2021-06-09 18:19:24 +02:00
Aarne Ranta 0ee2377c99 Merge pull request #370 from inariksit/morphodict
Minor improvements in MkMorphodict.hs + Finnish lexicon in new format
2021-06-07 17:42:06 +02:00
aarneranta ace36f7129 added ParadigmsFin.foreignN and ParadigmsSwe.geoPN 2021-06-04 16:28:19 +02:00
Inari Listenmaa e3c6694019 (Morphodict) Update MorphoDictFin
* no duplicates
* new naming scheme (vuori_vuoren_N)
* uses 10-arg worst-case paradigms
Note: compilation time almost 1/3 of what it was with Kotus paradigms.
2021-06-04 14:17:15 +08:00
Inari Listenmaa 9275d5e720 (Morphodict) Replace space/- in identifiers with _ 2021-06-04 13:42:14 +08:00
Inari Listenmaa d2d841e949 (Morphodict) change name + document script 2021-06-04 13:41:42 +08:00
Inari Listenmaa ee34115ce4 (Fin) Fix inflection paradigm for two words 2021-06-04 13:02:38 +08:00
Inari Listenmaa e7f620fc60 (Morphodict) Improvements in Fin config + header 2021-06-04 11:07:23 +08:00
Inari Listenmaa 7c79aae07f (Morphodict) use Safe's read for better error msg 2021-06-04 11:04:22 +08:00
Inari Listenmaa 0a84fbaf5d (Morphodict) Add stack and cabal files 2021-06-04 10:35:03 +08:00
Inari Listenmaa f9ad041ac1 (Morphodict) Error handling, debug output 2021-06-04 10:33:30 +08:00
Inari Listenmaa 8af91c8836 (Morphodict) Automatic whitespace removal 2021-06-04 09:48:08 +08:00
Inari Listenmaa 27b39f3431 (Morphodict) WIP: remove sense distinctions 2021-06-04 08:53:05 +08:00
aarneranta 4f70384664 revised the description of extra categories in morphodict README 2021-05-31 09:52:12 +02:00
aarneranta 38d852a5bb updated morphodict/README.md with MkMorphodict help 2021-05-28 14:44:52 +02:00
aarneranta 7c4546f3c3 eliminated variants from IrregEng: irregular variants have each their own ident, regular variants are just left out. No ident was deprecated 2021-05-28 14:28:40 +02:00
aarneranta a0ad410692 minimized the number of disambiguating forms of function names in MkMorphodict.hs even more 2021-05-28 12:35:20 +02:00
aarneranta 7fbcb60b87 minimized the number of disambiguating forms of function names in MkMorphodict.hs 2021-05-28 12:23:38 +02:00
aarneranta 73050c74a1 using form lists for disambiguating fun names in MkMorphoDict 2021-05-28 11:48:04 +02:00
aarneranta 71d7de2577 improved MkMorphoDict.hs, still experimental 2021-05-28 11:01:47 +02:00
aarneranta 2ade51ecff category Extend.X for unclassified words, as in UD 2021-05-27 11:19:54 +02:00
aarneranta eb50c5a9e3 more in morphodict/README.md 2021-05-27 11:16:33 +02:00
aarneranta 29af125799 rewrote morphodict.README.md 2021-05-27 09:42:47 +02:00
Inari Listenmaa cc75637704 (Extend) Add RelVPS : RP -> VPS -> RS
Implemented in Swe and Eng, empty variants in ExtendFunctor.
2021-05-04 07:02:24 +02:00
Inari Listenmaa 310e143bea (Eng) Add back the s fields of Temp and Pol in mkVPS 2021-05-04 07:02:24 +02:00
Inari Listenmaa 0b63fb7a69 Remove duplicated lins 2021-05-04 07:02:24 +02:00
krangelov 0e5450e792 added UttNP & UttCN 2021-04-30 07:13:07 +02:00
krangelov 5a2b25ff25 Enable some of the phrase building functions 2021-04-30 06:28:20 +02:00
krangelov 7396ed93f7 enable smart paradigms 2021-04-28 09:19:48 +02:00
krangelov bfa64d477d added AllSwa and make the language compilable 2021-04-28 08:42:05 +02:00
krangelov 9d657a6f24 move UseDAP, UseDAPMasc, UseDAPFem to the RGL and implement it for several new languages 2021-04-27 18:00:54 +02:00
krangelov 156e193d47 generalize DAP 2021-04-27 13:23:27 +02:00
krangelov adb1cffb75 generalize infVP to support negative VP in Romance 2021-04-27 13:18:27 +02:00
krangelov 617cb25f1e generalize infinitive_form 2021-04-27 10:06:12 +02:00
krangelov 85282418a7 added linrefs for A and A2 2021-04-27 10:03:42 +02:00
krangelov 632d4e2ff1 Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl 2021-04-27 08:43:35 +02:00
krangelov b3cc234c14 simplify the code and allow for non-standard pronouns 2021-04-27 08:42:57 +02:00
aarneranta af36eaf077 Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl 2021-04-26 09:46:09 +02:00
aarneranta 4d3f5be892 restored subject case of ExtendFin.VPS following ExtraFin 2021-04-26 09:45:53 +02:00
John J. Camilleri 431ff47824 Setup.sh: don't build Symbol if Try is false
This was uncovered by recent changes to Somali in 1131058b,
which built with Setup.hs but failed with Setup.sh
2021-04-26 08:54:58 +02:00
aarneranta ce08eaf14b VPS,VPI in ExtendGer 2021-04-26 08:20:03 +02:00
aarneranta 1ddfe0ac26 restored dropped words in MorphoDictSwe ; quality control TODO 2021-04-25 18:26:35 +02:00
aarneranta 8bbdfecb26 reran MkMorphoDict on Swe to fix erroneous verb definitions 2021-04-23 16:06:27 +02:00
Aarne Ranta 069804581b Merge pull request #367 from inariksit/new-VPS2-extend
(Extend) New constructions: N2/A2 -> VPSlash, Eng linearisation of QuestVPS
2021-04-23 11:39:50 +02:00
krangelov 6bf2555a4a helper functions to make it possible to import Polish morphology 2021-04-23 11:19:54 +02:00
Inari Listenmaa cb8cc63528 Add linref to VPS and VPS2 2021-04-23 14:54:53 +08:00
Inari Listenmaa 8acb3331d1 Merge remote-tracking branch 'origin/master' into new-VPS2-extend 2021-04-23 13:56:16 +08:00
Inari Listenmaa 868ea0fc0c Add constructions for N2 and A2 to VPSlash
To generalise transitive predicates, along with V2 -> VPSlash.
2021-04-23 13:50:11 +08:00
krangelov 1131058b68 make Somali installable 2021-04-22 07:31:18 +02:00
krangelov 6bbb0e2487 AdvAP in Dutch and Estonian 2021-04-07 00:35:05 +02:00
krangelov ac8322f907 AdvS and ExtAdvS in Slovenian 2021-04-07 00:10:07 +02:00
krangelov e2746d8b81 move the VPS rules from ExtraDut to ExtendDut 2021-04-06 23:55:29 +02:00
krangelov 0adc3845e3 make sure that ExtendEst is compiled as well 2021-04-06 23:52:25 +02:00
krangelov 6e95fbbbb9 add AdvNP in Slovenian 2021-04-06 21:22:56 +02:00
aarneranta 1dc1530b20 fixes in Fin: mkPrep with three arguments, pieni_A in MorphoDict 2021-03-29 13:05:05 +02:00
aarneranta 89b38c13d4 added keywords to MorphoDictGer(Abs) for uniformity 2021-03-25 09:36:10 +01:00
krangelov 6d1d9d17d1 Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl 2021-03-19 20:41:32 +01:00
krangelov de405c7929 fix ReflRNP for V2A verbs 2021-03-19 20:39:44 +01:00
aarneranta fe28bea8ec added ParadigmsFin.invarA, not shown in the API 2021-03-19 17:34:27 +01:00
krangelov 4e39ada69b fix word order in AdvAP 2021-03-13 20:13:21 +01:00
krangelov 88b3974bee extend the documentation API 2021-03-12 22:24:40 +01:00
krangelov 9d75eebcc0 move the exension to the RNP API from WordNet to the RGL 2021-03-12 20:42:09 +01:00
krangelov 9d0555f8b8 move verb specific extensions from WordNet to the RGL 2021-03-12 18:52:47 +01:00
Inari Listenmaa fe45b7ed5c (Eng) Add lin for QuestVPS and SQuestVPS + new lincats for VPS*
Now VPS and VPS2 need to potentially become QS, so we keep them
discontinuous. Works great with lists too, e.g.

  {fin="wouldn't" ; inf="have seen and waited for (obj)"}

NB. copula disappears, if it's a part of a diverse list of questions:

  Statements:
    you sleep or are small -- ok
    you are small or sleep -- ok

  Questions:
    ?are you small or sleep -- for "are you small or do you sleep", need to implement [QS]
    *do you sleep or small -- infinitive "be small" not retrievable from VPS currently

In a list of only predicates, this addition is rather redundant.
You can already say "are you big or small" with AP coordination.
But no other RGL construction allows "do you sleep or drink beer".
2021-03-04 15:53:22 +08:00
Inari Listenmaa f55f5b2d3c (Eng) Reorder, remove dupls and exclude new funs from ExtendFunctor 2021-03-04 15:44:22 +08:00
Inari Listenmaa 891bd2f3b1 (Extend) Add ReflVPS2 function 2021-03-03 15:05:57 +08:00
Inari Listenmaa 8696b27bee Add constructions for N2 and A2 to VPSlash
To generalise transitive predicates, along with V2 -> VPSlash.
2021-03-03 14:16:38 +08:00
krangelov 4b171129a1 fix paradigm mkV188 2021-03-01 13:04:28 +01:00
Meng Weng Wong ee2bfe6014 mkdir -p $GF_LIB_PATH if it doesn't already exist (#366)
* mkdir -p $GF_LIB_PATH if it doesn't already exist

* enquote the install
2021-02-26 08:52:15 +01:00
krangelov 2bb3630f00 allow plural PN 2021-02-17 09:42:40 +01:00
aarneranta 24bc84627b mkDet(Str) in MakeStructuralEng 2021-01-27 14:26:45 +01:00
aarneranta da1767b18a including Markup in LangGer,Ita which was missing 2021-01-20 08:32:59 +01:00
aarneranta 94341f57f9 removed the rest of variants from german/ except from LexiconGer 2021-01-19 17:48:14 +01:00
aarneranta f59a706d45 commented out variants in StructuralGer: they do not belong to the RGL but to extensions 2021-01-18 14:16:38 +01:00
Aarne Ranta 349e537104 forcing compilation of MakeStructuralFin in TryFin 2021-01-17 07:59:15 +01:00
Inari Listenmaa 2b46848d3f Update path to where the Predef opers are defined
../src/GF/Grammar/AppPredefined.hs no longer exists, change to gf-core/src/compiler/GF/Compile/Compute/Predef.hs.
2021-01-16 01:41:47 +01:00
Aarne Ranta 3836bc2df5 fix in MorphoDictGer ; many more expected, so this is not final 2021-01-13 20:35:01 +01:00
Aarne Ranta c55592cea6 Added ExtendGer as almost dummy to start with 2021-01-13 16:01:50 +01:00
Aarne Ranta ec159d05d4 started MorphoDictGer by copying german/DictGer and fixing some inflections 2021-01-13 14:43:51 +01:00
aarneranta 8768dd92f1 MorphoDicsSwe added 2021-01-10 19:54:25 +01:00
krangelov 14338be99a spelling variants in mkN055 and mkN056 2020-12-18 08:16:41 +01:00
krangelov f6b44aa57e move VPI from ExtraBul to ExtendBul 2020-12-14 18:50:32 +01:00
Paula e7fcae8680 Pl reflpron (#363)
* Pol: Add it_ReflPron.

* Pol: Correct pronRefl.

* Pol: Remove pronoun without abstract.

* Pol: Add back reflexive poss. pronoun.

* Revert "Pol: Add back reflexive poss. pronoun."

This reverts commit d24a648405.
2020-12-03 13:59:00 +01:00
John J. Camilleri 6740b37cfc Remove build status badge from README
The GitHub interface now provides much richer information about build status.
2020-11-30 22:03:56 +01:00
John J. Camilleri 4c330b7d62 Merge branch 'master' of github.com:GrammaticalFramework/gf-rgl 2020-11-30 20:58:05 +01:00
aarneranta eb6a4da33c restructuring and commenting get_dict.py 2020-11-30 17:28:55 +01:00
aarneranta 0b1149d509 some fixes in ParadigmsIta to help extract from FreeLing 2020-11-30 13:16:14 +01:00
aarneranta 24b94cdeac a Python script for extracting FreeLing data, tested with Italian 2020-11-30 13:15:40 +01:00
Inari Listenmaa df4ba9eb96 (Hun) optimise Quant 2020-11-28 19:35:00 +01:00
Inari Listenmaa 8dc5daf664 Comment out Windows build
Windows build hasn't work for some time now, and no test isn't worse than always failing test.
2020-11-27 16:35:39 +01:00
aarneranta feac50919b it_Pron in Cze and Slo: the neuter 3rd Sg personal pronoun 2020-11-27 10:58:07 +01:00
aarneranta 6fee9d712a Extend.ReflPossPron added and implemented for Swe, Cze, Slo 2020-11-27 10:02:31 +01:00
John J. Camilleri 2f3146441b Makefile now works with: global runghc, stack-only runghc, and falls back to shell script. 2020-11-27 00:47:09 +01:00
Inari Listenmaa 9594ee9cf2 (Eng) Fix verbalN so that it includes particle (switching *on*) 2020-11-26 19:45:00 +01:00
John J. Camilleri eeec3d998e Merge branch 'build-action' 2020-11-14 17:20:44 +01:00
John J. Camilleri 519a31e88a Change build workflow to take care of creating entire release 2020-11-14 17:19:00 +01:00
John J. Camilleri 0c65539e0c Merge pull request #361 from GrammaticalFramework/build-action
Add workflow for building entire RGL
2020-11-12 08:08:16 +01:00
John J. Camilleri aa3b6648f3 Get SHA from github context, not environment 2020-11-11 22:11:16 +01:00
John J. Camilleri 2d102d2549 Don't archive files first, give a name to artifact 2020-11-11 22:08:15 +01:00
John J. Camilleri 7505813fa5 Must make dest directory before copying to it 2020-11-11 21:58:45 +01:00
John J. Camilleri 6cedca7f4f dest cannot be same as dist 2020-11-11 21:50:16 +01:00
John J. Camilleri dd102142f5 Specify --gf flag properly. Compress and upload artifact. 2020-11-11 21:43:46 +01:00
John J. Camilleri aa8840b61b Add sudo to dpkg command 2020-11-11 21:38:27 +01:00
John J. Camilleri 33d7b7173e Add build workflow 2020-11-11 21:37:12 +01:00
Inari Listenmaa ae7e895b14 Merge pull request #360 from bamutra/master
Request for Merge
2020-10-27 10:44:42 +01:00
Inari Listenmaa ad76508743 Merge branch 'master' into master 2020-10-27 10:32:25 +01:00
Inari Listenmaa 43e39af33a (Cgg) Remove the extra -path line
Removed --# -path=.:../abstract:../../prelude:../common
2020-10-27 10:24:12 +01:00
Inari Listenmaa 0875fde0e7 Add comments to Coordination.gf 2020-10-27 10:18:49 +01:00
Inari Listenmaa c4bffc32f1 Merge languages.csv to the latest 2020-10-27 10:10:24 +01:00
David Bamutura fc7bede563 modified the fun UttVP in PhraseCgg.gf to allow formation of Verb Phrase Utterances with various complements e.g to sleep == kugwenjegyera 2020-10-27 01:35:41 +03:00
David Bamutura e14cdf99e3 modifeid mkThis in ResCgg to remove unnecessary bind 2020-10-27 01:17:53 +03:00
David Bamutura 2ef7fed0d2 =there is a bug with CompNP because we cannot fix Number agreement for the Noun. A hack can be to include the Noun info into the nounphrase 2020-10-27 00:20:51 +03:00
David Bamutura 0c5d685d8a =corrections to languages.csv made. However, my files do not have Korean 2020-10-26 23:37:18 +03:00
David Bamutura 02d92f6cc9 =Modified UseComp to correctly apply Adverbs, Adjectives and Nouns as proper complements when forming a VP based on the verb to be. However in Rukiga, sometimes the verb ba or ri are used. I have left the application of the right form to post-processing 2020-10-26 23:34:59 +03:00
David Bamutura 24d3d2abaa =Implemented the abstract function VocNP and PConjConj in PhraseCgg.gf 2020-10-26 16:41:58 +03:00
David Bamutura 9ba407f051 =Implemented the abstract function fun 2020-10-26 16:21:20 +03:00
David Bamutura aad7b002aa =made changes to Verb Phrase and VPSlash that check if the complements actually exists 2020-10-26 16:00:34 +03:00
David Bamutura b776f47c6b =edited languages.csv 2020-10-26 10:11:41 +03:00
David Bamutura c96156116e =added rukigaa to languages.csv 2020-10-26 09:23:35 +03:00
David Bamutura b2e2631269 All structural words and most of the linearization functions for LexiconCgg have been provided 2020-10-24 03:05:05 +03:00
David Bamutura 6ca4907c11 =Added linearisations for several lexical items. The linearization type for adjectives was modified to cater for certain adjectives that are negatives of others. An example is certain and uncertain 2020-10-22 00:02:51 +03:00
David Bamutura d4aba3bded made sure error is reproducable by uncommenting
answer_V2S and ask_V2Q.
However, there are other errors due to N2 types in lexicon
2020-10-12 23:23:54 +03:00
David Bamutura 5dc5433068 Made sutitable changes that were wanrranted due to
changes in linearization types for Verbs to include information
about particles and checks on source of complements i.e.
Verb : Type = {
                      s : Str;
                      pres:Str;
                      perf:Str;
                      --morphs: VFormMini => VerbMorphPos=> Str;
                      isPresBlank : Bool;
                      isPerfBlank : Bool;
                      isRegular: Bool
                    };
changed to:
Verb : Type = {
                      s : Str;
                      pres:Str;
                      perf:Str;
                      --morphs: VFormMini => VerbMorphPos=> Str;
                      isPresBlank : Bool;
                      isPerfBlank : Bool;
                      isRegular: Bool;
                      p : Str;  -- some verbs have particles such as prepositions and adverbial that give the verb a meaning different from what would be automatically deduced
                      isRefl : Bool
                    };
2020-10-12 23:18:27 +03:00
David Bamutura 7c997ea280 1. Created Linearization types for V2V as Res.Verb ** {comp,c3 : Str ; typ : Res.VVType} ; but however I have eerors with mkV2 overload methods and lock_C fields. I cannot seem to find out the reason for the error. 2020-10-12 17:31:40 +03:00
aarneranta 5c9885d0a2 Slovak possessives (some forms to be checked) 2020-10-12 13:24:20 +02:00
Inari Listenmaa e48097f8a5 Merge pull request #305 from inariksit/polish
(Pol) Start implementing smart paradigms for nouns
2020-10-12 12:24:12 +02:00
aarneranta 7368d1a80c added PossPron and completed pronouns for Czech 2020-10-12 12:08:21 +02:00
Inari Listenmaa 622f0da641 Merge pull request #4 from ppski/polish-inari-update
More smart paradigms
2020-10-12 08:09:24 +02:00
Inari Listenmaa 2f83cadc2e Merge branch 'polish' into polish-inari-update 2020-10-12 08:07:38 +02:00
Paula Pawlowski 2406c9bfd9 (Pol) Add 2-argument smart paradigm to Inari's work. Add more cases to GuessGender. 2020-10-11 23:41:50 +02:00
Inari Listenmaa b3b1f4ebd8 Merge pull request #358 from ppski/pl-formal-pronoun
Pol pronoun: Change formal possessive pronoun.
2020-10-06 19:59:51 +02:00
Paula Pawlowski 479136bfc5 Pol pronoun: Change formal possessive pronoun. 2020-10-06 19:57:19 +02:00
krangelov 272484b1fd added link to the WordNet browser 2020-10-01 11:00:01 +02:00
Inari Listenmaa 895ee33a95 Merge pull request #353 from rnd0101/new-rus-rg
New Russian Resource Grammar
2020-09-29 09:39:40 +02:00
aarneranta bf3609c083 ParadigmsEng.verbalN for default verbal nouns adding -ing to verbs 2020-09-25 15:00:53 +02:00
aarneranta 08896eb34b added ParadigmsFin.compoundA, totally different from prefixA (as now documented) 2020-09-24 09:04:24 +02:00
Roman Suzi 244b6c2447 More tests 2020-09-23 22:51:21 +03:00
Inari Listenmaa 42fb9fd465 Cleanup 2020-09-23 22:47:44 +03:00
Inari Listenmaa 6661bdff95 Guess that Nom+Acc become Gen in negative, remove neggen field
This removes around 70k concrete categories (in PGFs compiled with
--optimize-pgf.)
Unsure if that is actually useful -- the number of concrete functions
only went down by a couple hundred.
2020-09-23 22:47:40 +03:00
Inari Listenmaa a793daaf11 Merge Reflexivity and Transitivity (untested) 2020-09-23 22:47:35 +03:00
Roman Suzi 58cfa9e8dc Merge branch 'master' into new-rus-rg 2020-09-23 22:31:22 +03:00
Inari Listenmaa c759a3f5f4 Merge pull request #357 from inariksit/fin-CN
CN in Finnish
2020-09-18 16:25:41 +02:00
Inari Listenmaa d4ee4addc5 (Fin) Update all functions that use CN to use postmod field 2020-09-17 21:04:36 +02:00
Inari Listenmaa dd813bc7cc (Fin) Fix typo 2020-09-17 20:48:31 +02:00
aarneranta 39b9918060 added verbal nouns to MorphoDictFin 2020-09-17 08:13:55 +02:00
aarneranta 9d9349a17a ParadigmsFin.verbalN for building nouns of type 'tekeminen' 2020-09-17 06:51:44 +02:00
Roman Suzi 7f05718d5c Fixed full form of uvidennyi_A 2020-09-12 10:51:10 +03:00
Roman Suzi cae8e43d21 Also test results 2020-09-12 10:49:13 +03:00
Roman Suzi f072f56f3f Fixed past passive participles full forms by adding its own stem to the verb 2020-09-12 10:47:54 +03:00
Roman Suzi eb08304c10 Merge branch 'master' into new-rus-rg 2020-09-12 09:59:49 +03:00
John J. Camilleri b422417d4b Normalise some whitespace
Can you believe some joker actually mixed tabs and spaces?
2020-09-11 16:09:03 +02:00
Inari Listenmaa 2ef1e7d8b6 Merge pull request #355 from inariksit/rgl-publications
Update RGL status doc + publications
2020-09-08 11:04:55 +02:00
Inari Listenmaa adcc4c4c81 Merge pull request #356 from bamutra/master
Request to merge
2020-09-08 09:18:56 +02:00
Inari Listenmaa fe50ca3fa6 (doc) Somali + Latin pubs + formatting 2020-09-07 21:21:24 +02:00
Inari Listenmaa 0f4f1f78c1 (doc) Update RGL status document 2020-09-07 21:03:13 +02:00
Inari Listenmaa 6bd9193b7e (doc) Add Czech, Slovak and Slovenian 2020-09-07 20:22:26 +02:00
Inari Listenmaa 44e1f6fab0 (doc) Update RGL publications document 2020-09-07 19:15:29 +02:00
Roman Suzi 6ff11a2458 Fixed notpresent 2020-09-06 16:32:28 +03:00
Roman Suzi db8f3ebf72 Test with refl suffix 2020-09-06 16:27:34 +03:00
Roman Suzi 1c92a0826b Some fixes and adjustments to the past pass participles 2020-09-06 16:18:01 +03:00
Roman Suzi 454164a521 Fixed reflexive preffix at the end of participles 2020-09-06 09:42:08 +03:00
Roman Suzi e679629d70 Prints to facilitate all form checks; Participles - first draft 2020-09-06 09:31:44 +03:00
Roman Suzi 6b874440db Small lexicon fixes and additions, tests 2020-08-29 10:05:15 +03:00
Inari Listenmaa a06732a064 Merge pull request #354 from inariksit/rusRG-intermediate
(Rus) Put old version in src/russian/v1
2020-08-28 12:55:11 +02:00
Inari Listenmaa 36dffcb152 (Rus) Remove old IrregRus, never had actual content 2020-08-28 12:50:01 +02:00
Inari Listenmaa a233e33bf8 (Rus) Put old version in src/russian/v1 2020-08-28 12:44:47 +02:00
Roman Suzi 70540a7e19 Rechecked todo 2020-08-26 19:22:51 +03:00
Roman Suzi f7f784aeb1 Many additions; more numerals; tests; 2020-08-26 18:10:35 +03:00
Roman Suzi 0e363f02dd Merge branch 'master' into mew-rus-rg 2020-08-23 21:24:17 +03:00
Inari Listenmaa 93876d6f1c Merge pull request #351 from inariksit/finnish-postmodifiers
Finnish postmodifiers
2020-08-23 16:24:41 +02:00
Inari Listenmaa c34b05d9df (Fin) Update README about known issues 2020-08-23 16:13:17 +02:00
Inari Listenmaa 0ca88f2caf (Fin) Add postmodifier also to N2, needed due to ComplN3 2020-08-23 15:53:17 +02:00
Inari Listenmaa 32606cfa59 (Fin) Fix order of postmodifiers and possessive suffixes
"lasinsa viiniä", not "lasi viiniänsa"
2020-08-23 11:03:15 +02:00
Roman Suzi 5a3f5e430a more verbs; moved negation after adv because adv can have not_AdA 2020-08-21 23:43:09 +03:00
Roman Suzi ecb032770e Lexicon extended 2020-08-19 23:22:11 +03:00
Roman Suzi 7a100120af Adverbs added 2020-08-16 19:34:50 +03:00
Roman Suzi 1665b277a0 Renamed to inflection module 2020-08-16 18:54:53 +03:00
Roman Suzi e0380cfa62 One CAdv added 2020-08-16 18:00:25 +03:00
Roman Suzi 36b0fb1e69 Fixes and lexicon additions 2020-08-16 17:31:42 +03:00
Roman Suzi 5132f66809 One more mixed conjugation verb - last one 2020-08-16 09:44:33 +03:00
Roman Suzi 1d726ed956 compound 2020-08-16 09:34:36 +03:00
Roman Suzi 4abec966a9 Some additions to lexicon 2020-08-16 09:03:46 +03:00
Inari Listenmaa eb6244bc85 Merge pull request #349 from inariksit/korean
(Kor) Fix typo in a conjunction
2020-08-15 11:01:55 +02:00
Inari Listenmaa bfcae3bbbb (Kor) Fix typo in a conjunction 2020-08-15 08:09:10 +02:00
Roman Suzi 98f65975ae Some fixes/changes, new extend functions 2020-08-14 21:00:25 +03:00
Roman Suzi bf4b4b2d22 Removed SlashV2VNP 2020-08-11 23:16:37 +03:00
Roman Suzi bcadbaaf32 After checkign with tests, identified problems, fixed some - eg more fine-grained animNumSizeNum 2020-08-10 00:03:05 +03:00
Roman Suzi 84361d473d fix ComparAdvAdj 2020-08-09 17:50:29 +03:00
Roman Suzi 13ee63e25d Fixed direct object negation cases 2020-08-09 17:20:03 +03:00
Roman Suzi f9467bffd3 Fixed DetCN 2020-08-08 21:12:50 +03:00
Roman Suzi c0734bdfbb Oridnal numerals added ; many fixes 2020-08-08 20:30:28 +03:00
Inari Listenmaa 68290c590e Merge pull request #348 from inariksit/korean
(Kor) Remove null characters that were accidentally copypasted
2020-08-08 18:20:56 +02:00
Inari Listenmaa a17f4fd401 (Kor) Remove null characters that were accidentally copypasted 2020-08-08 18:06:33 +02:00
David Bamutura 7a07513f8e =about 1261 nouns added in the extended lexicon 2020-08-07 19:43:45 +03:00
Roman Suzi bbbe9bbb03 Introduced transgressive as an adverb... 2020-08-05 20:31:17 +03:00
Aarne Ranta b07a19d8c1 started MorphoDictFin from Kotus dict 2020-08-05 12:15:53 +02:00
David Bamutura 1be01b549e =959 verbs added in the extended lexicon 2020-08-05 08:50:25 +03:00
Roman Suzi d47d2ce52f Documentation 2020-08-05 07:09:34 +03:00
Roman Suzi 8e824083a2 Extend connected at last 2020-08-04 07:34:11 +03:00
Roman Suzi 8b5e28b948 Update to Readme 2020-08-02 22:31:07 +03:00
Roman Suzi 6ad61614b8 Some refactorings 2020-08-02 22:27:22 +03:00
Roman Suzi e4f9b85f53 Improvements to Number; started doc 2020-08-02 19:24:28 +03:00
Roman Suzi a6fc60e2d3 Fixed ear; fixed ComplSlash complement 2020-08-01 10:25:11 +03:00
Roman Suzi 49d97eeef9 fixed one have_name_Cl case 2020-08-01 09:12:15 +03:00
Roman Suzi 979808415b fix for article 2020-08-01 08:54:01 +03:00
Roman Suzi 71868cc361 Removed unused type 2020-07-31 23:30:42 +03:00
Roman Suzi 642beb9169 Added tests, fixes, etc 2020-07-31 22:58:24 +03:00
Roman Suzi f9437f01a9 More to constructors, using maybe now; fixes to RCl 2020-07-31 18:44:25 +03:00
Roman Suzi f22f5d4abf Fixing issues 2020-07-30 00:02:54 +03:00
Roman Suzi 14f183a577 Some fixes 2020-07-29 00:15:53 +03:00
Roman Suzi a76a017064 fixed RelSlash; sta 2020-07-27 23:22:00 +03:00
Roman Suzi 9918e391b3 fix 400 2020-07-27 20:27:38 +03:00
Roman Suzi 1f1dec615b Solved some problems from todo 2020-07-27 18:58:09 +03:00
Roman Suzi 118240d38d dict changes; articles 2020-07-25 23:38:47 +03:00
Roman Suzi 3fc6efec77 Fixes to num size and other fixes 2020-07-25 19:32:57 +03:00
Roman Suzi 74485ab138 More backwards compatibility changes 2020-07-24 21:32:52 +03:00
Roman Suzi f719268045 Some fixes and backwards compatibility 2020-07-24 19:41:11 +03:00
Roman Suzi ea7f9aba0f Extras added to see if phrasebook will start to work 2020-07-24 16:09:49 +03:00
Roman Suzi 662b731dd0 Some tweaks 2020-07-24 13:45:01 +03:00
Roman Suzi 1f9e6aeaad REPLACED old Russian RG completely 2020-07-24 12:59:02 +03:00
David Bamutura 88b8e84cab =Final changes to mergerd branch. Lexicon files left to process 2020-06-29 16:29:02 +03:00
David Bamutura e53684c2f2 Merge branch 'latest_July'
This adds implementation for Tenses.
2020-06-29 16:13:57 +03:00
David Bamutura 0fbe5a14cd =Changes to make additional Tenses work 2020-06-29 16:04:22 +03:00
David Bamutura 78146df910 =Made additions to the lexicon 2020-06-29 15:31:15 +03:00
Inari Listenmaa 4d3e106148 Merge pull request #346 from inariksit/hungarian
Hungarian: vowel harmony + handle multiwords
2020-06-28 14:14:43 +02:00
Inari Listenmaa 7f2a5bf18f (Hun) Handle dashes separately from multiwords 2020-06-28 14:10:37 +02:00
Inari Listenmaa 9922d750db (Hun) Handle back harmony words that end in i
Also use multiword split just in case some grammar uses these opers directly.
2020-06-28 12:36:11 +02:00
Inari Listenmaa 2cf9c2ff1e (Hun) Handle multiword splitting already in Paradigms. 2020-06-28 12:35:05 +02:00
Inari Listenmaa 267e457cc2 (Hun) Switch: only ik is unreliable, treat other pl suffixes as reliable 2020-06-28 10:35:44 +02:00
Inari Listenmaa 2aaccfface (Hun) Fix harmony of something_NP 2020-06-28 09:47:33 +02:00
Inari Listenmaa d1f0e4ab0d Merge pull request #345 from inariksit/hungarian
(Hun) mkN with 3-9 args: use more reliable forms to infer vowel harmony
2020-06-27 20:27:58 +02:00
Inari Listenmaa b33a65bbb5 (Hun) mkN with 3-9 args: use more reliable forms to infer vowel harmony 2020-06-27 19:51:26 +02:00
David Bamutura 7403f44eda =I have made changes to my structure for addition of the full Tense Structure for Rukiga 2020-06-26 17:34:33 +03:00
David Bamutura 203ea9c061 =made changes to UseCl by correcting tense linearization. Added some extras. Peparing to extend GF 2020-06-25 17:11:47 +03:00
Inari Listenmaa d1d481b6e8 Merge pull request #344 from inariksit/hungarian-postmod
Hungarian postmod
2020-06-22 08:01:35 +02:00
Inari Listenmaa 7ba3842ced (Hun) For multiwords, get harmony of the last word. 2020-06-22 07:38:41 +02:00
Inari Listenmaa 49fbbffacc (Hun) Add postmod field to CN and NP, to better control word order. 2020-06-21 21:06:06 +02:00
Inari Listenmaa 270067291a (Hun) Expose ablative 2020-06-21 20:59:46 +02:00
John J. Camilleri e199fbbb0c (Bul) Change encodings from CP1251 to UTF8 (#343) 2020-06-17 09:17:56 +02:00
Inari Listenmaa 71782b8e04 Merge pull request #342 from inariksit/japanese
Fixes in Jpn adjectives
2020-06-12 15:40:59 +02:00
Inari Listenmaa 27f7d5397a (Jpn) Make VerbalA work for other verbs than iru 2020-06-12 14:00:18 +02:00
Inari Listenmaa c686004c4a Moved src/experimental and src/parametric to a branch 'experimental' 2020-06-05 22:02:44 +02:00
Inari Listenmaa 7528e87dcd (Pol) Add 1-argument smart paradigm for ambiguous cases 2020-03-06 17:32:44 +01:00
Inari Listenmaa 334038fee2 Merge branch 'master' of https://github.com/GrammaticalFramework/gf-rgl into polish 2020-03-06 17:14:54 +01:00
Inari Listenmaa 962a94cb24 (Pol) Start implementing smart paradigms for nouns 2020-02-24 17:23:46 +01:00
690 changed files with 1009694 additions and 473225 deletions
+61
View File
@@ -0,0 +1,61 @@
name: Create RGL release
on:
workflow_dispatch:
inputs:
tag:
description: Release tag (should be YYYYMMDD format)
jobs:
build:
runs-on: ubuntu-18.04
env:
GF_VERSION: 3.10-1
DEST: gf-rgl-${{ github.event.inputs.tag }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Install GF
run: |
curl -s https://www.grammaticalframework.org/download/gf_${GF_VERSION}_amd64.deb -o gf.deb
sudo dpkg -i gf.deb
- name: Build RGL
run: |
mkdir -p ${DEST}
bash Setup.sh --dest=${DEST} --gf=gf --verbose
- name: Create archive
run: |
zip asset.zip -r ${{ env.DEST }}
# - name: Upload artifact
# uses: actions/upload-artifact@v2
# with:
# name: gf-rgl-${{ github.sha }}
# path: ${{ env.DEST }}
# if-no-files-found: error
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.event.inputs.tag }}
release_name: Release ${{ github.event.inputs.tag }}
draft: false
prerelease: false
- name: Upload release asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: asset.zip
asset_name: gf-rgl-${{ github.event.inputs.tag }}.zip
asset_content_type: application/zip
+1
View File
@@ -4,3 +4,4 @@ dist/
*.o
*.pgf
*.tmp
*~
+1 -1
View File
@@ -4,7 +4,7 @@ language: c
os:
- linux
- osx
- windows
# - windows
addons:
apt:
+25 -5
View File
@@ -1,16 +1,32 @@
# A simple wrapper over the Haskell-based RGL build script
# A wrapper over the Haskell and Bash build scripts
# Will try and fallback in order:
# - runghc Setup.hs
# - stack runghc Setup.hs
# - ./Setup.sh
RUNMAKE=runghc Setup.hs
ifneq (, $(shell which runghc))
RUNGHC=runghc Setup.hs
else ifneq (, $(shell which stack))
RUNGHC=stack runghc Setup.hs
else
RUNGHC=
endif
.PHONY: build copy install doc clean
default: build copy
build: src/*/*.gf
$(RUNMAKE) build
ifneq (, $(RUNGHC))
$(RUNGHC) build
else
./Setup.sh
endif
copy:
$(RUNMAKE) copy
ifneq (, $(RUNGHC))
$(RUNGHC) copy
endif
install: build copy
@@ -18,4 +34,8 @@ doc: build
make -C doc GF_LIB_PATH=../dist
clean:
$(RUNMAKE) clean
ifneq (, $(RUNGHC))
$(RUNGHC) clean
else
rm -r dist
endif
+9 -10
View File
@@ -2,8 +2,6 @@
# GF Resource Grammar Library (RGL)
[![Build Status](https://travis-ci.org/GrammaticalFramework/gf-rgl.svg?branch=master)](https://travis-ci.org/GrammaticalFramework/gf-rgl)
The GF Resource Grammar Library is the standard library for Grammatical Framework. It covers the morphology and basic syntax of over 30 languages.
For more about the RGL, see the [synopsis page](http://www.grammaticalframework.org/lib/doc/synopsis/).
@@ -47,12 +45,7 @@ This file should be kept up-to-date and all build methods should read this confi
If default is `y` then anything other than `n`, including the empty string, is treated as true (and vice versa when default is `n`).
## Haskell script: `Setup.hs`
This build method gives you most options.
You will need Haskell installed on your system.
### Basic
## Using Make
If you have `Make` installed and don't care about advanced settings,
you can compile the RGL and install it to the default location with:
@@ -64,9 +57,15 @@ make install
This is the same as `make build` followed by `make copy`.
There is also `make clean` available.
### Advanced
The Makefile will try to use the Haskell install script,
falling back to the shell script if you do not have Haskell installed.
For more fine-grained control over the build process, you can run the build script directly:
## Haskell script: `Setup.hs`
This build method gives you most options.
You will need Haskell installed on your system.
Run the build script with:
```
runghc Setup.hs ...
+10
View File
@@ -0,0 +1,10 @@
# RGL releases
The RGL does not use semantic versioning.
Releases are instead made periodically, as snapshots of the current state of the library.
Releases are Git tagged `YYYYMMDD`, and for each release a binary package (as `.gfo` files) is made available as a GitHub release.
## Creating a new release
1. Run the "Create release" workflow through the GitHub actions interface
(instructions [here](https://docs.github.com/en/free-pro-team@latest/actions/managing-workflow-runs/manually-running-a-workflow)).
-14
View File
@@ -37,20 +37,6 @@ if "%dest%"=="" (
)
:BreakLibPath
set DATA_DIR=..\gf-core\DATA_DIR
if "%dest%"=="" (
REM Look in already compiled GF folder
if exist %DATA_DIR% (
for /f "delims=" %%x in (%DATA_DIR%) do (
if not "%%x"=="" (
set dest=%%x\lib
goto BreakDataDir
)
)
)
)
:BreakDataDir
if "%dest%"=="" (
echo Unable to determine where to install the RGL. Please do one of the following:
echo - Pass the --dest=... flag to this script
+12 -5
View File
@@ -8,8 +8,8 @@ import System.IO (hPutStrLn,stderr)
import System.IO.Error (catchIOError)
import System.Exit (ExitCode(..),exitFailure)
import System.Environment (getArgs,lookupEnv)
import System.Process (rawSystem)
import System.FilePath ((</>),splitSearchPath) -- ,takeFileName,addExtension,dropExtension)
import System.Process (rawSystem,readProcess)
import System.FilePath ((</>),splitSearchPath)
import System.Directory (createDirectoryIfMissing,copyFile,getDirectoryContents,removeDirectoryRecursive,findFile)
#if __GLASGOW_HASKELL__>=800
import System.Directory (getModificationTime,setModificationTime)
@@ -61,7 +61,7 @@ errLocation = unlines $
[ "Unable to determine where to install the RGL. Please do one of the following:"
, " - Pass the " ++ destination_flag ++ "... flag to this script"
, " - Set the GF_LIB_PATH environment variable"
, " - Compile & install GF from the gf-core repository (must be in same directory as gf-rgl)"
, " - Compile & install GF from the gf-core repository"
]
-- | Copy single file between directories
@@ -116,10 +116,11 @@ data Info = Info
mkInfo :: IO Info
mkInfo = do
args <- getArgs
let gf = maybe default_gf id (getFlag gf_flag args)
-- Look for install location in a few different places
let mflag = getFlag destination_flag args
mbuilt <- catchIOError (readFile "../gf-core/DATA_DIR" >>= \d -> return (Just (d </> "lib"))) (\e -> return Nothing)
menvar <- lookupEnv "GF_LIB_PATH" >>= return . fmap (head . splitSearchPath)
mbuilt <- catchIOError (readProcess gf ["--version"] "" >>= return . getPath) (\e -> return Nothing)
let
inst_dir =
case catMaybes [mflag,menvar,mbuilt] of
@@ -129,12 +130,18 @@ mkInfo = do
return $ Info
{ infoBuildDir = "dist"
, infoInstallDir = inst_dir
, infoGFPath = maybe default_gf id (getFlag gf_flag args)
, infoGFPath = gf
, infoVerbose = verbose
}
where
default_gf = "gf"
getPath s =
let l = last (lines s)
in if take 14 l == "Shared folder:"
then Just (drop 15 l </> "lib")
else Nothing
getRGLBuildDir :: Info -> Mode -> FilePath
getRGLBuildDir info mode = infoBuildDir info </> getRGLBuildSubDir mode
+7 -4
View File
@@ -38,15 +38,15 @@ done
if [ -z "$dest" ]; then
dest=$(echo "$GF_LIB_PATH" | sed 's/:.*$//')
fi
if [ -z "$dest" ] && [ -f "../gf-core/DATA_DIR" ]; then
dest=$(cat ../gf-core/DATA_DIR)
if [ -z "$dest" ] && [ "$(gf --version | tail -1 | cut -c -14)" == "Shared folder:" ]; then
dest=$(gf --version | tail -1 | cut -c 16-)
if [ -n "$dest" ]; then dest="${dest}/lib"; fi
fi
if [ -z "$dest" ]; then
echo "Unable to determine where to install the RGL. Please do one of the following:"
echo " - Pass the --dest=... flag to this script"
echo " - Set the GF_LIB_PATH environment variable"
echo " - Compile & install GF from the gf-core repository (must be in same directory as gf-rgl)"
echo " - Compile & install GF from the gf-core repository"
exit 1
fi
@@ -72,6 +72,7 @@ for lang in $langs; do
for mod in $modules_langs $modules_api; do
if [ $mod == "Compatibility" ] && [[ "$langs_compat" != *"$lang"* ]]; then continue; fi
if [ $mod == "Try" ] && [[ "$langs_try" != *"$lang"* ]]; then continue; fi
if [ $mod == "Symbol" ] && [[ "$langs_try" != *"$lang"* ]]; then continue; fi
if [ $mod == "Symbolic" ] && [[ "$langs_symbolic" != *"$lang"* ]]; then continue; fi
for file in "${src}"/*/"${mod}${lang}".gf; do
if [ ! -f "$file" ]; then continue; fi
@@ -96,5 +97,7 @@ for module in $modules_alltenses; do
done
# Copy
if [ $dest == $dist ]; then exit 0; fi
echo "Copying to ${dest}"
cp -R -p "${dist}"/* "${dest}"
mkdir -p "${dest}"
cp -R "${dist}"/* "${dest}"
+83 -11
View File
@@ -67,6 +67,16 @@ http://acl.ldc.upenn.edu/W/W07/W07-08.pdf
//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===
@@ -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
===Czech===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/czech (Aarne Ranta, Michal Měchura)
===Danish===
@@ -155,8 +169,13 @@ The GF Resource Grammar Library.
- **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===
@@ -256,6 +275,9 @@ In The 3rd Workshop
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===
@@ -281,8 +303,6 @@ Bjarki Traustason, MSc thesis, Chalmers
%- **Publications**
===Japanese===
- **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
===Korean===
- **Source**: https://github.com/GrammaticalFramework/gf-rgl/tree/master/src/korean (Inari Listenmaa)
===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===
@@ -397,6 +434,15 @@ Slide presentation, TYPES 2010, Warsaw,
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===
@@ -438,7 +484,7 @@ LNCS 6008,
===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**
@@ -475,6 +521,21 @@ MSc Thesis, Chalmers University of Technology,
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===
- **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===
- **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**
@@ -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
===Thai===
- **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.
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.//
+59 -50
View File
@@ -11,60 +11,63 @@ For another view, see the
[The Resource Grammar Library coverage map http://www.postcrashgames.com/gf_world/] .
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
|| ISO | Language | Git | Mini | Parad | Lex | Lang | API | Symb | Irreg | Dict | Trans | tested | publ | authors ||
| Afr | Afrikaans | + | - | ++ | + | + | + | - | - | - | - | - | - | *LP,LM
| Amh | Amharic | + | + | ++ | + | + | - | - | - | - | - | - | + | *MK
| Ara | Arabic | + | + | + | + | + | + | + | - | - | - | + | + | AD,*IL
| Bul | Bulgarian | + | + | + | + | + | + | + | + | + | + | ++ | + | *KA
| Cat | Catalan | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL
| Chi | Chinese | + | - | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH
| Dan | Danish | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR
| Dut | Dutch | + | + | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ
| Eng | English | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA
| Est | Estonian | + | - | ++ | + | + | + | - | - | + | + | + | + | *KK,*IL
| Eus | Basque | + | - | ++ | + | + | + | - | - | - | - | - | + | *IL
| Fin | Finnish | + | + | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL
| Fre | French | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,RE
| Ger | German | + | + | ++ | + | + | + | + | + | + | + | ++ | - | *AR,HH,EG
| Gre | Greek(mod) | + | - | ++ | + | + | + | - | - | - | - | - | + | *IP
| Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | - | - | + | *HLe
| Heb | Hebrew | + | - | - | - | - | - | - | - | - | - | - | + | *DD
| Hin | Hindi | + | + | ++ | + | + | + | + | - | - | + | + | + | *SV,*KP,MH,AR,PK
| Ice | Icelandic | + | - | ++ | + | + | + | - | - | - | - | - | + | *BT
| Ina | Interlingua | + | + | ++ | + | + | - | - | - | - | - | - | - | JB
| Ita | Italian | + | + | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP
| Jpn | Japanese | + | - | ++ | + | + | + | - | - | - | + | + | + | *LZ
| Lat | Latin | + | - | - | - | - | - | - | - | + | - | - | - | *AR,*HLa
| Lav | Latvian | + | - | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP
| Mlt | Maltese | + | + | ++ | + | + | + | + | - | - | - | - | + | *JC
| Mon | Mongolian | + | - | ++ | + | + | + | - | - | + | - | - | + | *NE
| Nep | Nepali | + | + | ++ | + | + | - | - | - | - | - | - | + | *DS
| Nno | Norwegian(n) | + | + | ++ | + | + | + | + | + | - | - | - | - | *SRE
| Nor | Norwegian(b) | + | + | ++ | + | + | + | + | + | - | - | + | - | *AR
| Pes | Persian | + | - | + | + | + | + | - | - | - | - | + | + | SV,EA,SM,*IL
| Pnb | Punjabi | + | + | + | + | + | + | + | - | - | - | - | + | *SV,MH
| Pol | Polish | + | + | + | + | + | + | + | - | - | - | + | + | IN,*AS
| Por | Portuguese | + | + | ++ | + | + | + | + | + | - | + | + | - | *BC
| Ron | Romanian | + | + | ++ | + | + | + | + | - | - | - | + | + | *RE
| Rus | Russian | + | + | ++ | + | + | + | - | - | + | + | - | + | JK,*NF
| Snd | Sindhi | + | + | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD
| Spa | Spanish | + | + | ++ | + | + | + | + | + | - | + | ++ | - | *AR,IA,TS,*IL
| Swa | Swahili | + | - | - | - | - | - | - | - | - | - | - | + | *WN,JM
| Swe | Swedish | + | + | ++ | + | + | + | + | + | + | + | ++ | + | *MA,*AR,MF
| Tha | Thai | + | - | ++ | + | + | + | + | - | - | + | + | - | *AR,CK
| Tsn | Tswana | - | - | - | - | - | - | - | - | - | - | - | - | *LP,AB
| Tur | Turkish | + | - | ++ | + | - | - | - | - | + | - | - | - | *SC,KA
| Urd | Urdu | + | + | ++ | + | + | + | + | - | - | - | + | + | *SV,MH
|| ISO | Language | Parad | Lex | Lang | API | Symb | Irreg | Dict | WN | tested | publ | authors ||
| Afr | Afrikaans | ++ | + | + | + | - | - | - | - | - | - | *LP,LM |
| Amh | Amharic | ++ | + | + | - | - | - | - | - | - | + | *MK |
| Ara | Arabic | + | + | + | + | + | - | - | - | + | + | AD,*IL |
| Bul | Bulgarian | + | + | + | + | + | + | + | + | ++ | + | *KA |
| Cat | Catalan | ++ | + | + | + | + | + | - | + | ++ | - | *JS,*IL |
| Chi | Chinese | ++ | + | + | + | - | - | + | + | - | + | ZL,*AR,*CP,QH |
| Cze | Czech | + | + | + | + | - | - | - | - | + | - | *AR,*MM |
| Dan | Danish | ++ | + | + | + | + | + | - | - | + | - | *AR |
| Dut | Dutch | ++ | + | + | + | + | + | - | + | + | - | *AR,FJ |
| Eng | English | ++ | + | + | + | + | + | + | + | ++ | + | *AR,BB,KA |
| Est | Estonian | ++ | + | + | + | - | - | + | + | + | + | *KK,*IL |
| Eus | Basque | ++ | + | + | + | - | - | - | - | - | + | *IL |
| Fin | Finnish | ++ | + | + | + | + | - | + | + | ++ | + | *AR,*IL |
| Fre | French | ++ | + | + | + | + | + | + | - | ++ | - | *AR,RE |
| Ger | German | ++ | + | + | + | + | + | + | - | ++ | - | *AR,HH,EG |
| Gre | Greek(mod) | ++ | + | + | + | - | - | - | - | - | + | *IP |
| Grc | Greek(anc) | - | - | - | - | - | - | - | - | - | + | *HLe |
| Heb | Hebrew | - | - | - | - | - | - | - | - | - | + | *DD |
| Hin | Hindi | ++ | + | + | + | + | - | - | - | + | + | *SV,*KP,MH,AR,PK |
| Hun | Hungarian | ++ | + | + | + | + | - | - | - | + | - | *IL,*JJ |
| Ice | Icelandic | ++ | + | + | + | - | - | - | - | - | + | *BT |
| Ina | Interlingua | ++ | + | + | - | - | - | - | - | - | - | JB |
| Ita | Italian | ++ | + | + | + | + | - | - | + | ++ | - | *AR,*RE,GP |
| Jpn | Japanese | ++ | + | + | + | - | - | - | - | + | + | *LZ |
| Kor | Korean | ++ | + | + | + | + | - | - | - | + | - | *IL |
| Lat | Latin | - | - | - | - | - | - | + | - | - | - | *AR,*HLa |
| Lav | Latvian | ++ | + | + | + | - | - | - | - | + | + | *NG,*PP |
| Mlt | Maltese | ++ | + | + | + | + | - | - | - | - | + | *JC |
| Mon | Mongolian | ++ | + | + | + | - | - | + | - | - | + | *NE |
| Nep | Nepali | ++ | + | + | - | - | - | - | - | - | + | *DS |
| Nno | Norwegian(n) | ++ | + | + | + | + | + | - | - | - | - | *SRE |
| Nor | Norwegian(b) | ++ | + | + | + | + | + | - | - | + | - | *AR |
| Pes | Persian | + | + | + | + | - | - | - | - | + | + | SV,EA,SM,*IL |
| Pnb | Punjabi | + | + | + | + | + | - | - | - | - | + | *SV,MH |
| Pol | Polish | + | + | + | + | + | - | - | - | + | + | IN,*AS |
| Por | Portuguese | ++ | + | + | + | + | + | + | + | + | + | *BC |
| Ron | Romanian | ++ | + | + | + | + | - | - | - | + | + | *RE |
| Rus | Russian | ++ | + | + | + | - | - | + | - | - | + | JK,NF,*RS |
| Slk | Slovak | + | + | + | + | - | - | - | - | + | - | *AR,*MM,SČ |
| Slv | Slovene | ++ | + | + | + | - | - | - | + | + | - | *KA,AE |
| Snd | Sindhi | ++ | + | + | + | + | - | - | - | - | + | *SV,*JD |
| Som | Somali | + | - | - | - | - | - | - | - | - | - | *IL |
| 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
(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
Lex = the resource ``Lexicon`` (nearly) complete
@@ -73,13 +76,13 @@ Lang = the resource ``Syntax`` (nearly) complete
API = the ``Syntax`` compiles
Symb = the ``Symbolic`` API compiles
Symb = the ``Symbolic`` API complete
Irreg = the ``Irreg`` module with irregular verbs exists
Dict = the ``Dict`` module, large-scale morphological lexicon, exists
Trans = large-scale translation module and dictionary exists
WN = [WordNet https://cloud.grammaticalframework.org/wordnet] lexicon exists
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,
AD Ali El Dada,
AE Anna Ehrlemark,
AR Aarne Ranta,
AS Adam Slaski,
BB Björn Bringert,
BC Bruno Cuconato,
BK Benson Kituku,
BT Bjarki Traustason,
CK Chotiros Kairoje,
CP Chen Peng,
@@ -116,6 +121,7 @@ IP Ioanna Papadopoulou,
JB Jean-Philippe Bernardy,
JC John J. Camilleri,
JD Jherna Devi,
JJ Julia Jansson,
JK Janna Khegai,
JM Juliet Mutahi,
JS Jordi Saludes,
@@ -129,13 +135,16 @@ MA Malin Ahlberg,
MF Markus Forsberg,
MK Markos Kassa Gobena,
MH Muhammad Humayoun,
MM Michal Měchura,
NE Nyamsuren Erdenebadrakh,
NF Nick Frolov,
NG Normunds Gruzitis,
QH Qiao Haiyan,
RE Ramona Enache,
RS Roman Suzi,
PP Peteris Paikens,
SC Server Cimen,
SČ Slavomír Čéplö,
SM Sofy Moradi,
SRE Stian Rødven Eide,
SV Shafqat Virk,
@@ -147,7 +156,7 @@ ZL Zhuo Lin Qiqige
==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
active authors of it.
+5 -1
View File
@@ -4,6 +4,7 @@ Amh,Amharic,amharic,,,,,n,n,,n
Ara,Arabic,arabic,,,,,,y,,y
Bul,Bulgarian,bulgarian,,,y,,,,,y
Cat,Catalan,catalan,Romance,,y,,,,y,y
Cgg,Rukiga,rukiga,,,y,y,n,n,y,y
Chi,Chinese (simplified),chinese,,,,,,,,y
Cze,Czech,czech,,,,,,n,,y
Dan,Danish,danish,Scand,,y,,,,,y
@@ -26,6 +27,7 @@ Jpn,Japanese,japanese,,,,,,,,y
Kor,Korean,korean,,,n,y,y,y,n,n
Lat,Latin,latin,,,,,y,y,n,y
Lav,Latvian,latvian,,,,,,,y,y
May,Malay,malay,,,y,,,,n,y
Mlt,Maltese,maltese,,,,,,,,y
Mon,Mongolian,mongolian,,,,,,n,,y
Nep,Nepali,nepali,,,,,,n,,y
@@ -41,9 +43,11 @@ Slo,Slovak,slovak,,,,,,n,,y
Slv,Slovenian,slovenian,,,,,n,n,,n
Snd,Sindhi,sindhi,,,,,,,,y
Spa,Spanish,spanish,Romance,,y,,,,y,y
Swa,Swahili,swahili,Bantu,,,n,n,n,n,n
Swa,Swahili,swahili,Bantu,,,y,n,n,n,n
Swe,Swedish,swedish,Scand,,y,,,,y,y
Tam,Tamil,tamil,n,n,n,n,n,n,n,n
Tel,Telugu,telugu,,,y,n,n,n,,n
Tha,Thai,thai,,to_thai,,,,,,y
Tur,Turkish,turkish,,,y,,,n,,n
Urd,Urdu,urdu,Hindustani,,,,,,,y
Som,Somali,somali,,,,,n,n,,n
1 Code Name Directory Functor Unlexer Present All Try Symbolic Compatibility Synopsis
4 Ara Arabic arabic y y
5 Bul Bulgarian bulgarian y y
6 Cat Catalan catalan Romance y y y
7 Cgg Rukiga rukiga y y n n y y
8 Chi Chinese (simplified) chinese y
9 Cze Czech czech n y
10 Dan Danish danish Scand y y
27 Kor Korean korean n y y y n n
28 Lat Latin latin y y n y
29 Lav Latvian latvian y y
30 May Malay malay y n y
31 Mlt Maltese maltese y
32 Mon Mongolian mongolian n y
33 Nep Nepali nepali n y
43 Slv Slovenian slovenian n n n
44 Snd Sindhi sindhi y
45 Spa Spanish spanish Romance y y y
46 Swa Swahili swahili Bantu n y n n n n
47 Swe Swedish swedish Scand y y y
48 Tam Tamil tamil n n n n n n n n
49 Tel Telugu telugu y n n n n
50 Tha Thai thai to_thai y
51 Tur Turkish turkish y n n
52 Urd Urdu urdu Hindustani y
53 Som Somali somali n n n
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

+132 -136
View File
@@ -1,157 +1,157 @@
PredVP nsubj head
PredVPS nsubj head
DirectComplVQ empty nsubj head ccomp -- Temp argument can only be empty in English
DirectComplVS empty nsubj head ccomp -- Temp argument can only be empty in English
SlashVP nsubj head
SlashVS nsubj head ccomp
FocusObjS nsubj head -- again might be wrong; more correct to call it dobj
QuestIAdv advmod head -- "where does John sleep" cf. AdvVP
QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head?
QuestQVP nsubj head
QuestSlash obj head
QuestVP nsubj head
PredVP nsubj head
PredVPS nsubj head
DirectComplVQ empty nsubj head ccomp -- Temp argument can only be empty in English
DirectComplVS empty nsubj head ccomp -- Temp argument can only be empty in English
SlashVP nsubj head
SlashVS nsubj head ccomp
FocusObjS nsubj head -- again might be wrong; more correct to call it obj
QuestIAdv advmod head -- "where does John sleep" cf. AdvVP
QuestIComp head nsubj -- "where is John": John is clearly nsubj, but is where the head?
QuestQVP nsubj head
QuestSlash obj head
QuestVP nsubj head
IdetCN det head
PredSCVP csubj head
PredSCVP csubj head
ComplSlash head obj
ComplSlashIP head obj
Slash3V3 head obj
SlashV2VNP head obj xcomp
PastPartAgentAP head obj
AdvQVP head obj
ComplSlash head obj
ComplSlashIP head obj
Slash3V3 head obj
SlashV2VNP head obj xcomp
PastPartAgentAP head obj
AdvQVP head obj
Slash2V3 head iobj
Slash2V3 head iobj
ComplVS head ccomp
ComplVQ head ccomp
SlashV2S head ccomp
SlashV2Q head ccomp
CleftAdv head advcl -- not sure
ComplVS head ccomp
ComplVQ head ccomp
SlashV2S head ccomp
SlashV2Q head ccomp
CleftAdv head advcl -- not sure
ComplVA head xcomp
ComplVV head xcomp
SlashVV head acl
SlashV2A head xcomp
SlashV2V head xcomp
ComplVA head xcomp
ComplVV head xcomp
SlashVV head acl
SlashV2A head xcomp
SlashV2V head xcomp
AdvNP head nmod -- not sure
ExtAdvNP head nmod -- not sure
PassAgentVPSlash head nmod -- not sure
CleftNP head acl -- this cannot be nmod, not with type RS
AdvNP head nmod -- not sure
ExtAdvNP head nmod -- not sure
PassAgentVPSlash head nmod -- not sure
CleftNP head acl -- this cannot be nmod, not with type RS
SSubjS head mark advcl
RelS head advcl
SSubjS head mark advcl
RelS head advcl
AdNum advmod head
AdAP advmod head
AdvAP head advmod
ComparAdvAdj advmod amod head
ComparAdvAdjS advmod amod head
AdvIAdv advmod head
AdVVP advmod head
AdvVP head advmod
ExtAdvVP head advmod
AddAdvQVP head advmod
AdVVPSlash advmod head
AdvVPSlash head advmod
AdvSlash head advmod
ExistIPAdv head advmod
AdvS advmod head
ExtAdvS advmod head
AdNum advmod head
AdAP advmod head
AdvAP head advmod
ComparAdvAdj advmod amod head
ComparAdvAdjS advmod amod head
AdvIAdv advmod head
AdVVP advmod head
AdvVP head advmod
ExtAdvVP head advmod
AddAdvQVP head advmod
AdVVPSlash advmod head
AdvVPSlash head advmod
AdvSlash head advmod
ExistIPAdv head advmod
AdvS advmod head
ExtAdvS advmod head
SubjS mark head
RelVP mark head
RelSlash mark head
SubjS mark head
RelVP mark head
RelSlash mark head
ComplN2 head nmod
ComplN3 nmod head
AdvCN head nmod
PossNP head nmod
PartNP head nmod
ExistNPAdv head nmod
ComplN2 head nmod
ComplN3 nmod head
AdvCN head nmod
PossNP head nmod
PartNP head nmod
ExistNPAdv head nmod
OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function
DetQuant head nummod -- quite wrong; I think the head lies outside the scope of the function
CNNumNP head nummod
OrdNumeralSuperl nummod head -- quite wrong; cannot find relevant details in the documentation; but most probably head lies outside the score of this function
DetQuant head nummod -- quite wrong; I think the head lies outside the scope of the function
CNNumNP head nummod
ApposCN head appos
ApposNP head appos
ApposCN head appos
ApposNP head appos
RelNP head acl
RelCN head acl
SentCN head acl
SentAP head acl
RelNP head acl
RelCN head acl
SentCN head acl
SentAP head acl
DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function
DetCN det head
IdetCN det head
DetQuantOrd head nummod amod -- quite wrong; again for same reason as DetQuant function
DetCN det head
IdetCN det head
IdetQuant head nummod
CountNP det head
PredetNP det head
CountNP det head
PredetNP det head
PPartNP head amod -- only in core RGL
AdjCN amod head
AdjDAP head amod
CAdvAP case amod head
ComparA amod head
ComplA2 amod head
CompoundAP head amod
AdAdV amod head
AdAdv amod head
AdjCN amod head
AdjDAP head amod
CAdvAP case amod head
ComparA amod head
ComplA2 amod head
CompoundAP head amod
AdAdV amod head
AdAdv amod head
CompoundN compound head
CompoundN compound head
IIDig head goeswith
IIDig head goeswith
PrepNP case head
PrepIP case head
SlashPrep head case
VPSlashPrep head case
PrepNP case head
PrepIP case head
SlashPrep head case
VPSlashPrep head case
UttImpPl empty head
UttImpPol empty head
UttImpSg empty head
UttImpPl empty head
UttImpPol empty head
UttImpSg empty head
MkVPS empty empty head
MkVPS empty empty head
UseCl empty empty head
UseQCl empty empty head
UseRCl empty empty head
UseSlash empty empty head
UseVC empty empty head
UseCl empty empty head
UseQCl empty empty head
UseRCl empty empty head
UseSlash empty empty head
UseVC empty empty head
BaseAP head conj
BaseAdV head conj
BaseAdv head conj
BaseCN head conj
BaseDAP head conj
BaseIAdv head conj
BaseNP head conj
BaseRS head conj
BaseS head conj
ConsAP head conj
ConsAdV head conj
ConsAdv head conj
ConsCN head conj
ConsDAP head conj
ConsIAdv head conj
ConsNP head conj
ConsRS head conj
ConsS head conj
ConjAP cc head
ConjAdV cc head
ConjAdv cc head
ConjCN cc head
ConjDet cc head
ConjIAdv cc head
ConjNP cc head
ConjRS cc head
ConjS cc head
PhrUtt cc head discourse
BaseAP head conj
BaseAdV head conj
BaseAdv head conj
BaseCN head conj
BaseDAP head conj
BaseIAdv head conj
BaseNP head conj
BaseRS head conj
BaseS head conj
ConsAP head conj
ConsAdV head conj
ConsAdv head conj
ConsCN head conj
ConsDAP head conj
ConsIAdv head conj
ConsNP head conj
ConsRS head conj
ConsS head conj
ConjAP cc head
ConjAdV cc head
ConjAdv cc head
ConjCN cc head
ConjDet cc head
ConjIAdv cc head
ConjNP cc head
ConjRS cc head
ConjS cc head
PhrUtt cc head discourse
PlusChunk head dep
TTAnt empty empty head
PlusChunk head dep
TTAnt empty empty head
TExclMark head dep -- punctuation in the middle in these three
TFullStop head dep
@@ -159,13 +159,13 @@ TQuestMark head dep
ComplV2 head obj -- shortcuts in App
ComplV2V head obj xcomp
ComplV3 head iobj obj ---- could be dobj dobj
ComplV3 head iobj obj ---- could be obj obj
PassAgentV2 head ncomp -- not sure
RelV2 mark nsubj head
QuestV2 obj nsubj head
ModCN amod head -- in ResourceDemo
RSubjS mark advcl head
RSubjS mark advcl head
SlashV2 nsubj head
RAdvCN head case nmod
SubjCl head mark advcl
@@ -181,7 +181,7 @@ AdV ADV
Adv ADV
CAdv ADV
Card NUM
Conj CONJ
Conj CCONJ
Det DET
Digits NUM
IAdv ADV
@@ -194,7 +194,7 @@ N2 NOUN
N3 NOUN
Numeral NUM
Ord NUM
PConj CONJ
PConj CCONJ
PN PROPN
Predet DET
Prep ADP
@@ -214,7 +214,3 @@ VA VERB
VQ VERB
VS VERB
VV VERB
+78
View File
@@ -0,0 +1,78 @@
# Introduction
## Intended audience of this Readme
This Readme is designed for new developers who wish to either extend/improve on a resource grammar or create a new one. It provides an overview of the relationships between files and a simple working pipeline for developers to get started.
Note that while files in this folder are meant to be named with 3 letter suffixes representing the language, e.g. "ResBul" for the Bulgarian resource file, this Readme will use a 4 letter suffix "Lang" to represent a language in general, e.g. "ResLang".
## Author(s) of this Readme
This Readme was written by Nemo and edited by Inari on 14th August 2022.
# Creating a new resource grammar
If you are working on an RGL for a new language, you will need to run "Clone.hs" in the "src" folder so that you can clone a project from another language to your language to give you a basis to start with.
As per the instructions, the syntax is "Clone fromdir todir fromlang tolang", e.g. "runghc Clone swedish danish Swe Dan". You may want to add the option --comment-body after the word "Clone" to comment out every line in the body of the files to start fresh.
This is especially useful if your new language has very little in common with the language you are copying from because they come from different language families.
# File hierarchy
The number of files may be overwhelming, but they are related together following the graphic under "Module dependencies" under the rgl-tutorial. In the graphic, an example is that GrammarIta and ResIta are dependent on Prelude as they have arrows pointing towards the Prelude ellipse.
http://www.grammaticalframework.org/lib/doc/rgl-tutorial/index.html
The below graphic is an alternative graphic explaining the relations, taken from private correspondence with Inari.
![File Hierarchy](FileHierarchy.png)
CatLang defines the categories, and the modules AdjectiveLang, NounLang, SentenceLang, PhraseLang, and so on, all extend Cat. The Grammar is defined as a collection of all those AdjectiveLang, NounLang, SentenceLang, and so on modules. LangLang is defined as the collection GrammarLang and LexiconLang and is where you will be checking your program. You may ignore:
- AllLangAbs, AllLang, ExtendLang, ExtraLangAbs, ExtraLang, ConstructionLang, DocumentationLang, MarkupLang, BackwardLang
If the language you cloned from has any of these resource modules, you can remove them completely:
- IrregLang (unless you want to populate it with irregular verbs of your own language), MissingLang (see how to generate your own if you need it later: https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#generating-missingxxx)
# Relationships between functions in files
There may be several ways the functions within the files are organised relative to one another. In other words, there may be several schemas depending on the author. More recent RGLs might implement one schema detailed by this blog post by Inari.
https://inariksit.github.io/gf/2018/08/28/gf-gotchas.html#my-naming-scheme-for-lincats-and-opers
# Main goal
You may think of your long-term goal as eventually implementing all the abstract functions found in the "abstract" folder. In other words, you are somewhat constrained by the available categories in Cat.gf and functions in relevant e.g. Noun.gf, Verb.gf etc. files.
In the future, if you find that the available functions do not apply to your language, you may search in the Extend.gf file for more optional functions, or in Extra.gf. if it doesn't exist, create your own ExtraLangAbs.gf with the concrete ExtraLang.gf, all in the same directory gf-rgl/src/lang. This blog post contains more information.
https://inariksit.github.io/gf/2021/02/15/rgl-api-core-extensions.html#language-specific-extra-modules
There is a prioritised list of RGL functions for new resource grammars written by contributor heatherleaf. You can start by implementing the "+++" functions.
https://github.com/GrammaticalFramework/gf-rgl/issues/238
# Working pipeline example
For a pipeline, You might wish to start with implementing functions that create Noun Phrase like DetCN: Det -> CN -> NP; a function that takes a Determiner and a Common Noun and gives a Noun Phrase. In this case, the workflow is done by editing:
1. ResLang: Contains the relevant Operations (Opers) for e.g. "Noun", "mkN", "Determiner" and "Quant".
2. ParamLang: Contains the language paramters used in ResLang.
3. CatLang: CatLang will be defined in terms of Opers found in ResLang. This means that instead of Defining NP in CatLang as, say, {s: Str}, you will define NP as ResLang.NounPhrase, which points to a NounPhrase Oper in ResLang. Then you need to implement the word syntax in NounLang.
4. NounLang: Contains the relevant lins in defining sentence structure.
5. LexiconLang: Contains the lins that define the Noun words.
As you will have to define a determiner that is created from a Quant, you will have to look at the following files too.
6. StructuralLang: Contains the lins that define the Quant/Determiner words.
Note that you will have to use mkQuant instead of creating Det by mkDet directly.
# Testing your work
When you are done with your implementation, you may test that everything works by starting up LangLang and, in this case, writing something like:
```DetCN (DetQuant xxxx_Quant NumSg) (UseN xxxx_N)```
Where you replace 'xxxx' with the word in Lang.
+4
View File
@@ -13,6 +13,7 @@ fun
InflectionN : N -> Inflection ;
InflectionN2 : N2 -> Inflection ;
InflectionN3 : N3 -> Inflection ;
InflectionPN : PN -> Inflection ;
InflectionA : A -> Inflection ;
InflectionA2 : A2 -> Inflection ;
InflectionV : V -> Inflection ;
@@ -27,6 +28,9 @@ fun
InflectionV2Q : V2Q -> Inflection ;
InflectionV2A : V2A -> Inflection ;
InflectionAdv : Adv -> Inflection ;
InflectionAdV : AdV -> Inflection ;
InflectionAdA : AdA -> Inflection ;
InflectionAdN : AdN -> Inflection ;
InflectionPrep : Prep -> Inflection ;
fun
+42 -1
View File
@@ -47,6 +47,7 @@ abstract Extend = Cat ** {
PredVPS : NP -> VPS -> S ; -- she [has walked and won't sleep]
SQuestVPS : NP -> VPS -> QS ; -- has she walked
QuestVPS : IP -> VPS -> QS ; -- who has walked
RelVPS : RP -> VPS -> RS ; -- which won't sleep
-- existentials that work in the absence of Cl
ExistS : Temp -> Pol -> NP -> S ; -- there was a party
@@ -69,11 +70,20 @@ abstract Extend = Cat ** {
MkVPS2 : Temp -> Pol -> VPSlash -> VPS2 ; -- has loved
ConjVPS2 : Conj -> [VPS2] -> VPS2 ; -- has loved and now hates
ComplVPS2 : VPS2 -> NP -> VPS ; -- has loved and now hates that person
ReflVPS2 : VPS2 -> RNP -> VPS ; -- have loved and now hate myself and my car
MkVPI2 : VPSlash -> VPI2 ; -- to love
ConjVPI2 : Conj -> [VPI2] -> VPI2 ; -- to love and hate
ComplVPI2 : VPI2 -> NP -> VPI ; -- to love and hate that person
-- Conjunction of copula complements
cat [Comp]{2} ;
fun ConjComp : Conj -> ListComp -> Comp ;
-- Conjunction of imperatives
cat [Imp] {2} ;
fun ConjImp : Conj -> ListImp -> Imp ;
fun
ProDrop : Pron -> Pron ; -- unstressed subject pronoun becomes empty: "am tired"
@@ -116,6 +126,11 @@ abstract Extend = Cat ** {
ProgrVPSlash : VPSlash -> VPSlash;
-- construct VPSlash from A2 and N2
A2VPSlash : A2 -> VPSlash ; -- is married to (that person)
N2VPSlash : N2 -> VPSlash ; -- is a mother of (that person)
-- existential for mathematics
ExistsNP : NP -> Cl ; -- there exists a number / there exist numbers
@@ -126,7 +141,7 @@ abstract Extend = Cat ** {
ExistMassCN : CN -> Cl ; -- there is beer / there is no beer
ExistPluralCN : CN -> Cl ; -- there are trees / there are no trees
-- generalisation of existential, with adverb as a parameter
-- generalisation of existential, with adverb as an argument
AdvIsNP : Adv -> NP -> Cl ; -- here is the tree / here are the trees
AdvIsNPAP : Adv -> NP -> AP -> Cl ; -- here are the instructions documented
@@ -184,6 +199,15 @@ abstract Extend = Cat ** {
PredetRNP : Predet -> RNP -> RNP ; -- all my brothers
AdvRNP : NP -> Prep -> RNP -> RNP ; -- a dispute with his wife
AdvRVP : VP -> Prep -> RNP -> VP ; -- lectured about her travels
AdvRAP : AP -> Prep -> RNP -> AP ; -- adamant in his refusal
ReflA2RNP : A2 -> RNP -> AP ; -- indifferent to their surroundings
-- NOTE: generalizes ReflA2
PossPronRNP : Pron -> Num -> CN -> RNP -> NP ; -- his abandonment of his wife and children
ConjRNP : Conj -> RNPList -> RNP ; -- my family, John and myself
Base_rr_RNP : RNP -> RNP -> RNPList ; -- my family, myself
@@ -193,6 +217,9 @@ abstract Extend = Cat ** {
Cons_nr_RNP : NP -> RNPList -> RNPList ; -- John, my family, myself
---- Cons_rn_RNP : RNP -> ListNP -> RNPList ; -- myself, John, Mary
-- reflexive possessive on its own right, like in Swedish, Czech, Slovak
ReflPossPron : Quant ; -- Swe sin,sitt,sina
--- from Extensions
@@ -251,4 +278,18 @@ abstract Extend = Cat ** {
UttDatIP : IP -> Utt ; -- whom (dative)
-- UseDAP replaces DetNP from the RGL which is more limited.
-- Instead of (DetNP d) use (UseDAP (DetDAP d)). The advantage
-- is that now we can also have an adjective inserted, i.e.
-- (UseDAP (AdjDAP (DetDAP d) a). There are also versions of
-- UseDAP for different genders.
fun UseDAP : DAP -> NP ;
UseDAPMasc : DAP -> NP ;
UseDAPFem : DAP -> NP ;
cat X ; -- for words that are difficult to classify, mainly for MorphoDict
fun
CardCNCard : Card -> CN -> Card ; -- three million, four lakh, six dozen etc
}
+1
View File
@@ -40,6 +40,7 @@ abstract Sentence = Cat ** {
-- To fix these parameters, see [Phrase Phrase.html].
ImpVP : VP -> Imp ; -- love yourselves
AdvImp : Adv -> Imp -> Imp ; -- please love yourselves
--2 Embedded sentences
+153
View File
@@ -0,0 +1,153 @@
--# -path=.:../abstract:../common
concrete DocumentationAfr of Documentation = CatAfr ** open
ResAfr,
Prelude,
HTML
in {
lincat
Inflection = {t : Str; s1,s2 : Str} ;
Definition = {s : Str} ;
Document = {s : Str} ;
Tag = {s : Str} ;
lin
InflectionN, InflectionN2, InflectionN3 = \noun -> {
t = "s" ;
s1 = heading1 "Selfstandige Naamwoord" ;
s2 = frameTable (
tr (th "Enkelvoud" ++ th "Meervoud" ) ++
tr (td (noun.s ! NF Sg Nom) ++ td (noun.s ! NF Pl Nom)))
} ;
InflectionPN = \pn -> {
t = "pn" ;
s1 = heading1 "Naam" ;
s2 = paragraph (pn.s ! NPNom)
} ;
InflectionA, InflectionA2 = \adj ->
let
gforms : AForm -> Str = \a ->
td (adj.s ! Posit ! a) ++
td (adj.s ! Compar ! a) ++
case a of {
AGen => td "-" ; -- superlative partitive not used
_ => td (adj.s ! Superl ! a)
} ;
dtable : Str =
frameTable (
tr (th [] ++ th "Stellend" ++ th "Vergrotend" ++
th "Oortreffend") ++
tr (th "Predikatief" ++ gforms APred) ++
tr (th "Attributief" ++ gforms AAttr) ++
tr (th "Partitief" ++ gforms AGen)
)
in { t = "bv" ;
s1 = heading1 "Byvoeglike naamwoord" ;
s2 = dtable
} ;
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
t = "bw" ;
s1 = heading1 "Bywoord" ;
s2 = paragraph adv.s
} ;
InflectionPrep p = {
t = "prep" ;
s1 = heading1 "Voorsetsel" ;
s2 = paragraph p.s
} ;
InflectionV v = {
t = "w" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionV2 v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionV3 v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionV2V v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionV2S v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionV2Q v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionV2A v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionVV v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionVS v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionVQ v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
InflectionVA v = {
t = "v" ;
s1 = heading1 "Werkwoord" ;
s2 = inflVerb v
} ;
lin
NoDefinition t = {s=t.s};
MkDefinition t d = {s="<p><b>Definisie:</b>"++t.s++d.s++"</p>"};
MkDefinitionEx t d e = {s="<p><b>Definisie:</b>"++t.s++d.s++"</p><p><b>Voorbeeld:</b>"++e.s++"</p>"};
MkDocument d i e = ss (i.s1 ++ d.s ++ i.s2 ++ paragraph e.s) ; -- explanation appended in a new paragraph
MkTag i = ss i.t ;
oper
inflVerb : VVerb -> Str = \verb ->
let
vfin : VForm -> Str = \f ->
verb.s ! f ++ verb.prefix ;
gforms : VForm -> Str = \f ->
td (vfin f) ;
in frameTable (
tr (th "Infinitief" ++ td (verb.s ! VInf)) ++
tr (th "Teenwoordige Tyd" ++ td (verb.s ! VPres)) ++
tr (th "Verlede Tyd" ++ td (verb.s ! VPast)) ++
tr (th "Perfectief" ++ td (verb.s ! VPerf))
) ;
}
+3 -1
View File
@@ -2,4 +2,6 @@
concrete LangAfr of Lang =
GrammarAfr,
LexiconAfr ;
LexiconAfr
,DocumentationAfr --# notpresent
;
+8
View File
@@ -0,0 +1,8 @@
--# -path=.:alltenses:prelude
resource CombinatorsMay = Combinators - [ appCN, appCNc ] with
(Cat = CatMay),
(Structural = StructuralMay),
(Noun = NounMay),
(Constructors = ConstructorsMay) **
{}
+9
View File
@@ -0,0 +1,9 @@
--# -path=.:alltenses:prelude
resource CombinatorsTam = Combinators - [ appCN, appCNc ] with
(Cat = CatTam),
(Structural = StructuralTam),
(Noun = NounTam),
(Constructors = ConstructorsTam) **
{}
}
+4
View File
@@ -0,0 +1,4 @@
--# -path=.:alltenses:prelude:../malay
resource ConstructorsMay = Constructors with (Grammar = GrammarMay) **
open MissingMay in {} ;
+5
View File
@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude:../tamil
resource ConstructorsTam = Constructors with (Grammar = GrammarTam) **
open MissingTam in {} ;
}
+4 -1
View File
@@ -6,8 +6,9 @@ incomplete resource Symbolic = open Symbol, Grammar, PredefCnc in {
symb : overload {
symb : Symb -> NP ; -- x
symb : Str -> NP ; -- x
symb : Int -> NP ; -- 23
symb : Int -> NP ; -- 23 (is prime)
symb : Float -> NP ; -- 0.99
symb : Int -> Card ; -- 23 (houses)
symb : N -> Digits -> NP ; -- level 4
symb : N -> Card -> NP ; -- level at least four
symb : CN -> Card -> NP ; -- advanced level at least four
@@ -45,6 +46,8 @@ incomplete resource Symbolic = open Symbol, Grammar, PredefCnc in {
= \i -> UsePN (IntPN i) ;
symb : Float -> NP
= \i -> UsePN (FloatPN i) ;
symb : Int -> Card
= \s -> SymbNum (mkSymb s.s) ;
symb : N -> Digits -> NP
= \c,i -> CNNumNP (UseN c) (NumDigits i) ;
symb : N -> Card -> NP
+5
View File
@@ -0,0 +1,5 @@
--# -path=.:../malay:../common:../abstract:../prelude
resource SymbolicMay = Symbolic with
(Symbol = SymbolMay),
(Grammar = GrammarMay) ** open MissingMay in {} ;
+6
View File
@@ -0,0 +1,6 @@
--# -path=.:../tamil:../common:../abstract:../prelude
resource SymbolicTam = Symbolic with
(Symbol = SymbolTam),
(Grammar = GrammarTam) ** open MissingTam in {} ;
}
+5
View File
@@ -0,0 +1,5 @@
--# -path=.:alltenses:prelude
instance SyntaxMay of Syntax =
ConstructorsMay, CatMay, StructuralMay, CombinatorsMay ;
+6
View File
@@ -0,0 +1,6 @@
--# -path=.:alltenses:prelude
instance SyntaxTam of Syntax =
ConstructorsTam, CatTam, StructuralTam, CombinatorsTam ;
}
+1 -1
View File
@@ -1,6 +1,6 @@
--# -path=.:../english:../common:../abstract:../prelude
resource TryEng = SyntaxEng-[mkAdN], LexiconEng, ParadigmsEng - [mkAdv,mkAdN,mkOrd,mkQuant] **
resource TryEng = SyntaxEng-[mkAdN], LexiconEng, ParadigmsEng - [mkAdv,mkAdN,mkOrd,mkQuant,mkVoc] **
open (P = ParadigmsEng) in {
oper
+6 -1
View File
@@ -1,3 +1,8 @@
--# -path=.:../finnish:../common:../abstract:../prelude
resource TryFin = SyntaxFin, LexiconFin-[mkOrd], ParadigmsFin - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj] ;
resource TryFin =
SyntaxFin,
LexiconFin-[mkOrd],
ParadigmsFin - [mkAdv,mkAdN,mkDet,mkQuant,mkPConj],
MakeStructuralFin - [mkDet,mkIDet,mkConj,mkSubj]
;
+3
View File
@@ -0,0 +1,3 @@
--# -path=.:../malay:../common:../abstract:../prelude
resource TryMay = SyntaxMay, LexiconMay, ParadigmsMay - [mkAdv,mkAdN,mkOrd,mkNum] ;
+1 -1
View File
@@ -1,3 +1,3 @@
--# -path=.:../russian:../common:../abstract:../prelude
resource TryRus = SyntaxRus, LexiconRus, ParadigmsRus - [mkAdv] ;
resource TryRus = SyntaxRus, LexiconRus, ParadigmsRus - [mkAdv,mkIAdv,mkOrd,mkAdN] ;
+4
View File
@@ -0,0 +1,4 @@
--# -path=.:../tamil :../common:../abstract:../prelude
resource TryTam = SyntaxTam, LexiconTam, ParadigmsTam - [mkAdv,mkAdN,mkOrd,mkNum] ;
}
+1 -1
View File
@@ -1,3 +1,3 @@
--# -path=.:../abstract:../common:../api:../prelude
concrete AllAra of AllAraAbs = LangAra ;
concrete AllAra of AllAraAbs = LangAra, ExtendAra ;
+1 -1
View File
@@ -1,3 +1,3 @@
--# -path=.:../abstract:../common:prelude
abstract AllAraAbs = Lang ;
abstract AllAraAbs = Lang, Extend ;
+7 -2
View File
@@ -6,7 +6,7 @@ concrete ExtendAra of Extend =
EmptyRelSlash, PredAPVP,
ComplDirectVS, ComplDirectVQ, -- because of Utt
VPS, MkVPS, PredVPS, BaseVPS, ConsVPS, ConjVPS,
EmbedSSlash, AdjAsNP
EmbedSSlash, AdjAsNP, GerundNP
]
with (Grammar=GrammarAra)
** open
@@ -44,7 +44,7 @@ lin
DetNPFem det = emptyNP ** {s = det.s ! NoHum ! Fem} ;
-- : AP -> NP
AdjAsNP ap =
AdjAsNP ap =
let adjAsN : Noun = {
s = ap.s ! NoHum ! Masc ;
s2 = emptyNTable ;
@@ -59,6 +59,11 @@ lin
-- : SSlash -> SC
EmbedSSlash = Grammar.EmbedS ;
-- : VP -> NP
GerundNP vp = emptyNP ** {
s = \\_ => uttVP VPGer vp ! Masc ; -- NB. NP should inflect in case, but there are no cases for masdar in the inflection table of VP. If desired, can add here with BIND. /IL
} ; -- The Gender param here doesn't make a difference, because the VPGer in VP's inflection table doesn't have gender to start with. So we could equally well choose Fem too.
lincat
VPS = {s : PerGenNum => Str} ; -- finite VP's with tense and polarity
[VPS] = {s1,s2 : PerGenNum => Str} ;
+11 -14
View File
@@ -1,31 +1,28 @@
incomplete concrete PhraseBantu of Phrase =
CatBantu ** open CommonBantu, ResBantu, Prelude in { }
{-}
flags optimize = all_subs ;
CatBantu ** open CommonBantu, ResBantu, Prelude in {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ utt.s ++ voc.s} ;
UttS s = {s = s.s ! Indic} ;
UttS s = {s = s.s} ;
UttQS qs = {s = qs.s ! QDir} ;
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False ! Fem} ;
{- UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg False ! Fem} ;
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Pl False ! Fem} ;
UttImpPol pol imp = {s = pol.s ++ imp.s ! pol.p ! ImpF Sg True ! Fem} ;
UttIP ip = {s = ip.s ! Nom} ; --- Acc also
UttIP ip = {s = ip.s ! Nom} ; --- Acc also -}
UttIAdv iadv = iadv ;
UttNP np = {s = (np.s ! Nom).ton} ;
UttVP vp = {s = infVP vp (agrP3 Fem Sg)} ; --- Agr
UttNP np = {s = np.s ! npNom} ;
{- UttVP vp = {s = infVP vp (agrP3 Fem Sg)} ; --- Agr -}
UttAdv adv = adv ;
UttCN n = {s = n.s ! Sg} ;
UttAP ap = {s = ap.s ! AF Masc Sg} ;
UttCard n = {s = n.s ! Masc} ;
UttCN n = {s = n.s ! Sg ! Nom} ;
{- UttAP ap = {s = ap.s ! AF Masc Sg} ;
UttCard n = {s = n.s ! Masc} ;-}
UttInterj i = i ;
NoPConj = {s = []} ;
PConjConj conj = {s = conj.s2} ;
NoVoc = {s = []} ;
VocNP np = {s = "," ++ (np.s ! Nom).ton} ;
-}
{- VocNP np = {s = "," ++ (np.s ! Nom).ton} ; -}
}
+5 -5
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
flags coding=cp1251 ;
flags coding=utf8 ;
lin
PositA a = {
@@ -9,11 +9,11 @@ concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
} ;
ComparA a np = {
s = \\aform,_ => "ïî" ++ hyphen ++ a.s ! aform ++ "îò" ++ np.s ! RObj CPrep ;
s = \\aform,_ => "по" ++ hyphen ++ a.s ! aform ++ "от" ++ np.s ! RObj CPrep ;
isPre = True
} ;
UseComparA a = {
s = \\aform,_ => "ïî" ++ hyphen ++ a.s ! aform ;
s = \\aform,_ => "по" ++ hyphen ++ a.s ! aform ;
isPre = True
} ;
@@ -35,7 +35,7 @@ concrete AdjectiveBul of Adjective = CatBul ** open ResBul, Prelude in {
} ;
ReflA2 a = {
s = \\aform,_ => a.s ! aform ++ linPrep a.c2 ++ ["ñåáå ñè"] ;
s = \\aform,_ => a.s ! aform ++ linPrep a.c2 ++ ["себе си"] ;
isPre = False
} ;
+3 -3
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete AdverbBul of Adverb = CatBul ** open ResBul, Prelude in {
flags coding=cp1251 ;
flags coding=utf8 ;
lin
PositAdvAdj a = {s = a.adv} ;
@@ -8,7 +8,7 @@ concrete AdverbBul of Adverb = CatBul ** open ResBul, Prelude in {
s = cadv.s ++ a.s ! ASg Neut Indef ++ cadv.p ++ np.s ! RObj CPrep
} ;
ComparAdvAdjS cadv a s = {
s = cadv.s ++ a.s ! ASg Neut Indef ++ cadv.p ++ "êîëêîòî" ++ s.s
s = cadv.s ++ a.s ! ASg Neut Indef ++ cadv.p ++ "колкото" ++ s.s
} ;
PrepNP prep np = {s = prep.s ++ np.s ! RObj prep.c} ;
+1 -1
View File
@@ -86,7 +86,7 @@ concrete CatBul of Cat = CommonX - [IAdv,AdV] ** open ResBul, Prelude, Predef, (
N = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ;
N2 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2 : Preposition} ;
N3 = {s : NForm => Str; rel : AForm => Str; relType : NRelType; g : AGender} ** {c2,c3 : Preposition} ;
PN = {s : Str; g : Gender} ;
PN = {s : Str; gn : GenNum} ;
lindef
SSlash = \s -> {s = \\_ => s; c2 = {s=""; c=Acc}};
+10 -10
View File
@@ -4,21 +4,21 @@ concrete CompatibilityBul of Compatibility = CatBul ** open Prelude, ResBul in {
-- from Noun 19/4/2008
flags
coding = cp1251 ;
coding = utf8 ;
lin
NumInt n = {s = \\_ => n.s; n = Pl; nonEmpty = True} ;
OrdInt n = {s = \\aform => n.s ++ "-" ++
case aform of {
ASg Masc Indef => "òè" ;
ASg Fem Indef => "òà" ;
ASg Neut Indef => "òî" ;
ASg Masc Def => "òèÿ" ;
ASg Fem Def => "òàòà" ;
ASg Neut Def => "òîòî" ;
ASgMascDefNom => "òèÿò" ;
APl Indef => "òè" ;
APl Def => "òèòå"
ASg Masc Indef => "ти" ;
ASg Fem Indef => "та" ;
ASg Neut Indef => "то" ;
ASg Masc Def => "тия" ;
ASg Fem Def => "тата" ;
ASg Neut Def => "тото" ;
ASgMascDefNom => "тият" ;
APl Indef => "ти" ;
APl Def => "тите"
}
} ;
+2 -2
View File
@@ -1,7 +1,7 @@
--# -coding=cp1251
--# -coding=utf8
concrete ConjunctionBul of Conjunction =
CatBul ** open ResBul, Coordination, Prelude, Predef in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all_subs ;
+14 -1
View File
@@ -79,6 +79,19 @@ lin
s3 = ""
} ;
InflectionPN = \pn -> {
t = "същ.с." ;
s1= heading1 ("Съществително Собствено"++
case pn.gn of {
GSg Masc => "(м.р.)" ;
GSg Fem => "(ж.р.)" ;
GSg Neut => "(ср.р.)" ;
GPl => "(мн.ч.)"
}) ;
s2 = pn.s ;
s3 = ""
} ;
InflectionA, InflectionA2 = \a -> {
t = "пр" ;
s1= heading1 ("Прилагателно") ;
@@ -104,7 +117,7 @@ lin
s3= ""
} ;
InflectionAdv = \adv -> {
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
t = "нар" ;
s1= heading1 ("Наречие") ;
s2= paragraph (adv.s) ;
+84
View File
@@ -1,5 +1,7 @@
--# -path=.:../abstract:../common:prelude
concrete ExtendBul of Extend = CatBul ** open Prelude, Predef, ResBul, GrammarBul, MorphoFunsBul in {
flags
coding=utf8;
lin
GenModNP num np cn = DetCN (DetQuant DefArt num) (AdvCN cn (PrepNP (mkPrep "на") np)) ;
@@ -94,6 +96,10 @@ lin
lin
PassVPSlash vp = insertObj (\\a => vp.ad.s ++ vp.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc)) ++
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe) ;
ProgrVPSlash vp = vp ** {
s = \\_ => vp.s ! Imperf ;
isSimple = False
} ;
PassAgentVPSlash vp np =
insertObj (\\_ => "от" ++ np.s ! RObj CPrep) Pos
@@ -117,6 +123,21 @@ lin
vp.compl ! agr
} ;
lincat
VPI = {s : Agr => Str} ;
[VPI] = {s : Agr => Ints 4 => Str} ;
lin
BaseVPI x y = {s = \\a=>table {4 => y.s!a; _ => x.s!a}} ;
ConsVPI x xs = {s = \\a=>table {4 => xs.s!a!4; t => x.s!a++linCoord bindComma!t++xs.s!a!t}};
MkVPI vp = {s = daComplex Simul Pos vp ! Perf} ;
ConjVPI conj vpi = {
s = \\a => linCoord []!conj.sep ++ vpi.s!a!conj.sep ++ conj.s ++ vpi.s!a!4
} ;
ComplVPIVV vv vpi =
insertObj (\\a => vpi.s ! a) Pos (predV vv) ;
lincat
VPS = {s : Agr => Str} ;
[VPS] = {s : Agr => Ints 4 => Str} ;
@@ -138,6 +159,25 @@ lin
s = \\a => linCoord []!conj.sep ++ vps.s!a!conj.sep ++ conj.s ++ vps.s!a!4
} ;
lincat [Comp] = {s : Agr => Ints 4 => Str} ;
lin BaseComp x y =
{s = \\agr=>table {4 => y.s!agr; _ => x.s!agr}} ;
ConsComp x xs =
{s = \\agr=>table {4 => xs.s!agr!4; t => x.s!agr++linCoord bindComma!t++xs.s!agr!t}} ;
ConjComp conj ss = {
s = \\agr => linCoord [] ! conj.sep ++ ss.s!agr!conj.sep ++ conj.s ++ ss.s!agr!4 ;
p = Pos
} ;
lincat ListImp = {s : Polarity => GenNum => Ints 4 => Str} ;
lin BaseImp x y =
{s = \\p,gn=>table {4 => y.s!p!gn; _ => x.s!p!gn}} ;
ConsImp x xs =
{s = \\p,gn=>table {4 => xs.s!p!gn!4; t => x.s!p!gn++linCoord bindComma!t++xs.s!p!gn!t}} ;
ConjImp conj ss = {
s = \\p,gn => linCoord [] ! conj.sep ++ ss.s!p!gn!conj.sep ++ conj.s ++ ss.s!p!gn!4
} ;
lin
ComplBareVS = ComplVS ;
ComplSlashPartLast = ComplSlash ;
@@ -187,6 +227,20 @@ lin
gn = rnp.gn
} ;
AdvRNP np prep rnp = {s = \\role => np.s ! role ++ prep.s ++ rnp.s ! RObj prep.c; gn = np.gn; p = np.p} ;
AdvRVP vp prep rnp = insertObj (\\a => prep.s ++ rnp.s ! RObj prep.c) Pos vp ;
AdvRAP ap prep rnp = {
s = \\aform,p => ap.s ! aform ! p ++ prep.s ++ rnp.s ! RObj prep.c ;
isPre = False
} ;
ReflA2RNP a rnp = {
s = \\aform,_ => a.s ! aform ++ a.c2.s ++ rnp.s ! RObj a.c2.c ;
isPre = False
} ;
PossPronRNP pron num cn rnp = DetCN (DetQuant (PossPron pron) num) (PossNP cn (lin NP {s = rnp.s; gn = rnp.gn; p=NounP3 Pos})) ;
lin
ApposNP np1 np2 = {s = \\role => case role of {
RObj c => linCase c (personPol np1.p) ++ np1.s ! RObj CPrep ;
@@ -216,5 +270,35 @@ lin
p = NounP3 det.p
} ;
lin UseDAP dap = {
s = \\role => let s = dap.s ! False ! ANeut ! role
in case role of {
RObj c => linCase c dap.p ++ s;
_ => s
} ;
gn = gennum ANeut (numnnum dap.nn);
p = NounP3 dap.p
} ;
UseDAPMasc dap = {
s = \\role => let s = dap.s ! False ! (AMasc Human) ! role
in case role of {
RObj c => linCase c dap.p ++ s;
_ => s
} ;
gn = gennum (AMasc Human) (numnnum dap.nn);
p = NounP3 dap.p
} ;
UseDAPFem dap = {
s = \\role => let s = dap.s ! False ! AFem ! role
in case role of {
RObj c => linCase c dap.p ++ s;
_ => s
} ;
gn = gennum AFem (numnnum dap.nn);
p = NounP3 dap.p
} ;
}
+14 -29
View File
@@ -1,7 +1,7 @@
--# -coding=cp1251
--# -coding=utf8
concrete ExtraBul of ExtraBulAbs = CatBul **
open ResBul, MorphoFunsBul, Coordination, Prelude, Predef in {
flags coding=cp1251 ;
flags coding=utf8 ;
lin
@@ -30,21 +30,21 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
s = \\t,a,p,agr => slash.c2.s ++ whichRP ! agr.gn ++ slash.s ! agr ! t ! a ! p ! Main
} ;
i8fem_Pron = mkPron "àç" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Fem) PronP1 ;
i8neut_Pron = mkPron "àç" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Neut) PronP1 ;
i8fem_Pron = mkPron "аз" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Fem) PronP1 ;
i8neut_Pron = mkPron "аз" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Neut) PronP1 ;
whatSg8fem_IP = mkIP "êàêâà" "êàêâà" (GSg Fem) ;
whatSg8neut_IP = mkIP "êàêâî" "êàêâî" (GSg Neut) ;
whatSg8fem_IP = mkIP "каква" "каква" (GSg Fem) ;
whatSg8neut_IP = mkIP "какво" "какво" (GSg Neut) ;
whoSg8fem_IP = mkIP "êîÿ" "êîãî" (GSg Fem) ;
whoSg8neut_IP = mkIP "êîå" "êîãî" (GSg Neut) ;
whoSg8fem_IP = mkIP "коя" "кого" (GSg Fem) ;
whoSg8neut_IP = mkIP "кое" "кого" (GSg Neut) ;
youSg8fem_Pron = mkPron "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Fem) PronP2 ;
youSg8neut_Pron = mkPron "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Neut) PronP2 ;
youSg8fem_Pron = mkPron "ти" "твой" "твоя" "твоят" "твоя" "твоята" "твое" "твоето" "твои" "твоите" (GSg Fem) PronP2 ;
youSg8neut_Pron = mkPron "ти" "твой" "твоя" "твоят" "твоя" "твоята" "твое" "твоето" "твои" "твоите" (GSg Neut) PronP2 ;
onePl_Num = {s = table {
CFMasc Indef _ | CFFem Indef | CFNeut Indef => "åäíè" ;
CFMasc Def _ | CFMascDefNom _ | CFFem Def | CFNeut Def => "åäíèòå"
CFMasc Indef _ | CFFem Indef | CFNeut Indef => "едни" ;
CFMasc Def _ | CFMascDefNom _ | CFFem Def | CFNeut Def => "едните"
} ;
nn = NCountable;
nonEmpty = True
@@ -53,22 +53,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
UttImpSg8fem pol imp = {s = pol.s ++ imp.s ! pol.p ! GSg Fem} ;
UttImpSg8neut pol imp = {s = pol.s ++ imp.s ! pol.p ! GSg Fem} ;
IAdvAdv adv = {s = \\qf => (mkIAdv "êîëêî").s ! qf ++ adv.s} ;
lincat
VPI = {s : Agr => Str} ;
[VPI] = {s : Agr => Ints 4 => Str} ;
lin
BaseVPI x y = {s = \\a=>table {4 => y.s!a; _ => x.s!a}} ;
ConsVPI x xs = {s = \\a=>table {4 => xs.s!a!4; t => x.s!a++linCoord bindComma!t++xs.s!a!t}};
MkVPI vp = {s = daComplex Simul Pos vp ! Perf} ;
ConjVPI conj vpi = {
s = \\a => linCoord []!conj.sep ++ vpi.s!a!conj.sep ++ conj.s ++ vpi.s!a!4
} ;
ComplVPIVV vv vpi =
insertObj (\\a => vpi.s ! a) Pos (predV vv) ;
IAdvAdv adv = {s = \\qf => (mkIAdv "колко").s ! qf ++ adv.s} ;
lincat
VPS = {s : Agr => Str} ;
@@ -95,7 +80,7 @@ concrete ExtraBul of ExtraBulAbs = CatBul **
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe) ;
PassAgentVPSlash vp np =
insertObj (\\_ => "îò" ++ np.s ! RObj CPrep) Pos
insertObj (\\_ => "от" ++ np.s ! RObj CPrep) Pos
(insertObj (\\a => vp.ad.s ++ vp.s ! Perf ! VPassive (aform a.gn Indef (RObj Acc)) ++
vp.compl1 ! a ++ vp.compl2 ! a) Pos (predV verbBe)) ;
+2 -2
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
abstract ExtraBulAbs = Extra ** {
flags coding=cp1251 ;
flags coding=utf8 ;
fun
+2 -2
View File
@@ -1,5 +1,5 @@
--# -path=.:../abstract:../common:prelude
--# -coding=cp1251
--# -coding=utf8
concrete GrammarBul of Grammar =
NounBul,
@@ -17,7 +17,7 @@ concrete GrammarBul of Grammar =
IdiomBul,
TenseX - [CAdv,IAdv,AdV,SC]
** {
flags coding=cp1251 ;
flags coding=utf8 ;
flags startcat = Phr ; unlexer = text ; lexer = text ;
+11 -11
View File
@@ -1,19 +1,19 @@
--# -coding=cp1251
--# -coding=utf8
concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all_subs ;
lin
ImpersCl vp = mkClause [] (GSg Neut) (NounP3 Pos) vp ;
GenericCl vp = mkClause "íÿêîé" (GSg Neut) (NounP3 Pos) vp ;
GenericCl vp = mkClause "някой" (GSg Neut) (NounP3 Pos) vp ;
CleftNP np rs =
mkClause (np.s ! RSubj)
(GSg Neut) np.p
(insertObj (\\_ => thisRP ! np.gn ++ rs.s ! personAgr np.gn np.p) (personPol np.p) (predV verbBe)) ;
CleftAdv ad s = {s = \\t,a,p,o => case p of {Pos=>[]; Neg=>"íå"} ++ ad.s ++ s.s } ;
CleftAdv ad s = {s = \\t,a,p,o => case p of {Pos=>[]; Neg=>"не"} ++ ad.s ++ s.s } ;
ExistNP np = ExistNPAdv np (lin Adv {s = ""}) ;
ExistIP ip = ExistIPAdv ip (lin Adv {s = ""}) ;
@@ -21,8 +21,8 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
ExistNPAdv np adv =
{ s = \\t,a,p,o =>
let verb = case orPol p (personPol np.p) of {
Pos => mkV186 "èìàì" ;
Neg => mkV186 "íÿìàì"
Pos => mkV186 "имам" ;
Neg => mkV186 "нямам"
} ;
agr=agrP3 (GSg Neut);
@@ -42,21 +42,21 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
<Pres,Anter> => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent
<Past,Simul> => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent
<Past,Anter> => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent
<Fut, Simul> => {aux1="ùå"; aux2=[]; main=present} ; --# notpresent
<Fut, Anter> => {aux1="ùå"++auxPres; aux2=[]; main=perfect} ; --# notpresent
<Fut, Simul> => {aux1="ще"; aux2=[]; main=present} ; --# notpresent
<Fut, Anter> => {aux1="ще"++auxPres; aux2=[]; main=perfect} ; --# notpresent
<Cond,_> => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent
} ;
in case o of {
Main => v.aux1 ++ v.main ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s ;
Inv => np.s ! RObj Acc ++ v.aux1 ++ v.main ++ v.aux2 ++ adv.s ;
Quest => v.aux1 ++ v.main ++ "ëè" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
Quest => v.aux1 ++ v.main ++ "ли" ++ v.aux2 ++ np.s ! RObj Acc ++ adv.s
}
} ;
ExistIPAdv ip adv =
mkQuestion {s = ip.s ! RSubj}
(mkClause "òóê" ip.gn (NounP3 Pos) (insertObj (\\_ => adv.s) Pos (predV verbBe))) ;
(mkClause "тук" ip.gn (NounP3 Pos) (insertObj (\\_ => adv.s) Pos (predV verbBe))) ;
ProgrVP vp = {
s = \\_ => vp.s ! Imperf ;
@@ -68,6 +68,6 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in {
isSimple = False
} ;
ImpPl1 vp = {s = "íåêà" ++ daComplex Simul Pos vp ! Perf ! {gn = GPl ; p = P1}} ;
ImpPl1 vp = {s = "нека" ++ daComplex Simul Pos vp ! Perf ! {gn = GPl ; p = P1}} ;
}
+358 -358
View File
@@ -1,383 +1,383 @@
--# -path=.:prelude
--# -coding=cp1251
--# -coding=utf8
concrete LexiconBul of Lexicon = CatBul **
open ParadigmsBul, ResBul, Prelude in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags
optimize=values ;
lin
airplane_N = mkN007 "ñàìîëåò" ;
answer_V2S = mkV2S (actionV (mkV187 "îòãîâàðÿì") (mkV173 "îòãîâîðÿ")) naP noPrep ;
apartment_N = mkN007 "àïàðòàìåíò" ;
apple_N = mkN041 "ÿáúëêà" ;
art_N = mkN054 "èçêóñòâî" ;
ask_V2Q = mkV2Q (stateV (mkV186 "ïèòàì")) noPrep noPrep ;
baby_N = mkN065 "áåáå" ;
bad_A = mkA076 "ëîø" ;
bank_N = mkN041 "áàíêà" ;
beautiful_A = mkA076 "êðàñèâ" ;
become_VA = mkVA (actionV (mkV186 "ñòàâàì") (mkV152 "ñòàíà")) ;
beer_N = mkN041 "áèðà" ;
beg_V2V = mkV2V (stateV (mkV173 "ìîëÿ")) noPrep zaP ;
big_A = mkA081 "ãîëÿì" ;
bike_N = mkN061 "êîëåëî" ;
bird_N = mkN041 "ïòèöà" ;
black_A = mkA079 "÷åðåí" ;
blue_A = mkA086 "ñèí" ;
boat_N = mkN007 "êîðàá" ;
book_N = mkN041 "êíèãà" ;
boot_N = mkN041 "îáóâêà" ;
boss_N = mkN001 "øåô" ;
boy_N = mkN065 "ìîì÷å" ;
bread_N = mkN001 "õëÿá" ;
break_V2 = dirV2 (actionV (mkV173 "÷óïÿ") (mkV173 "ñ÷óïÿ")) ;
broad_A = mkA079 "îáøèðåí" ;
brother_N2 = prepN2 (mkN025 "áðàò") naP ;
brown_A = mkA076 "êàôÿâ" ;
butter_N = mkN054 "ìàñëî" ;
buy_V2 = dirV2 (actionV (mkV186 "êóïóâàì") (mkV173 "êóïÿ")) ;
camera_N = mkN041 "êàìåðà" ;
cap_N = mkN041 "øàïêà" ;
car_N = mkN041 "êîëà" ;
carpet_N = mkN007 "êèëèì" ;
cat_N = mkN041 "êîòêà" ;
ceiling_N = mkN007 "òàâàí" ;
chair_N = mkN001 "ñòîë" ;
cheese_N = mkN066 "ñèðåíå" ;
child_N = mkN067 "äåòå" ;
church_N = mkN041 "öúðêâà" ;
city_N = mkN001 "ãðàä" ;
clean_A = mkA076 "÷èñò" ;
clever_A = mkA079 "óìåí" ;
close_V2 = dirV2 (actionV (mkV187 "çàòâàðÿì") (mkV173 "çàòâîðÿ")) ;
coat_N = mkN054 "ïàëòî" ;
cold_A = mkA076 "ñòóäåí" ;
come_V = actionV (mkV186 "èäâàì") (table { -- special case "äîéäè", "äîéäåòå" are archaic
VImperative Sg => "åëà";
VImperative Pl => "åëàòå";
vform => mkV146a "äîéäà" ! vform}) ;
computer_N = mkN009 "êîìïþòúð" ;
country_N = mkN041 "äúðæàâà" ;
cousin_N = mkN007a "áðàòîâ÷åä" ;
cow_N = mkN041 "êðàâà" ;
die_V = actionV (mkV186 "óìèðàì") (mkV150a "óìðà") ;
dirty_A = mkA079 "ìðúñåí" ;
distance_N3 = prepN3 (mkN072 "ðàçñòîÿíèå") otP doP ;
doctor_N = mkN007a "äîêòîð" ;
dog_N = mkN065 "êó÷å" ;
door_N = mkN041 "âðàòà" ;
drink_V2 = dirV2 (stateV (mkV163 "ïèÿ")) ;
easy_A2V = mkA2V (mkA079 "ëåñåí") zaP ;
eat_V2 = dirV2 (stateV (mkV169 "ÿì")) ;
empty_A = mkA079 "ïðàçåí" ;
enemy_N = mkN001 "âðàã" ;
factory_N = mkN041 "ôàáðèêà" ;
father_N2 = prepN2 (mkN038 "áàùà") naP ;
fear_VS = mkVS (stateV (mkV186 "ñòðàõóâàì")) ;
find_V2 = dirV2 (actionV (mkV186 "íàìèðàì") (mkV173 "íàìåðÿ")) ;
fish_N = mkN041 "ðèáà" ;
floor_N = mkN007 "åòàæ" ;
fridge_N = mkN007 "ôðèçåð" ;
friend_N = mkN031a "ïðèÿòåë" ;
fruit_N = mkN001 "ïëîä" ;
fun_AV = mkA079 "çàáàâåí" ;
forget_V2 = dirV2 (actionV (mkV187 "çàáðàâÿì") (mkV173 "çàáðàâÿ")) ;
garden_N = mkN041 "ãðàäèíà" ;
girl_N = mkN065 "ìîìè÷å" ;
glove_N = mkN041 "ðúêàâèöà" ;
gold_N = mkN054 "çëàòî" ;
good_A = adjAdv (mkA080 "äîáúð") "äîáðå" ;
go_V = actionV (mkV186 "îòèâàì") (mkV146 "îòèäà") ;
green_A = mkA076 "çåëåí" ;
harbour_N = mkN066 "ïðèñòàíèùå" ;
hate_V2 = dirV2 (stateV (mkV173 "ìðàçÿ")) ;
hat_N = mkN041 "øàïêà" ;
hear_V2 = dirV2 (actionV (mkV186 "÷óâàì") (mkV163 "÷óÿ")) ;
hill_N = mkN001 "õúëì" ;
hope_VS = mkVS (medialV (stateV (mkV186 "íàäÿâàì")) Acc) ;
horse_N = mkN035 "êîí" ;
hot_A = mkA076 "ãîðåù" ;
house_N = mkN041 "êúùà" ;
important_A = mkA079 "âàæåí" ;
industry_N = mkN047 "èíäóñòðèÿ" ;
iron_N = mkN057 "æåëÿçî" ;
king_N = mkN035a "öàð" ;
airplane_N = mkN007 "самолет" ;
answer_V2S = mkV2S (actionV (mkV187 "отговарям") (mkV173 "отговоря")) naP noPrep ;
apartment_N = mkN007 "апартамент" ;
apple_N = mkN041 "ябълка" ;
art_N = mkN054 "изкуство" ;
ask_V2Q = mkV2Q (stateV (mkV186 "питам")) noPrep noPrep ;
baby_N = mkN065 "бебе" ;
bad_A = mkA076 "лош" ;
bank_N = mkN041 "банка" ;
beautiful_A = mkA076 "красив" ;
become_VA = mkVA (actionV (mkV186 "ставам") (mkV152 "стана")) ;
beer_N = mkN041 "бира" ;
beg_V2V = mkV2V (stateV (mkV173 "моля")) noPrep zaP ;
big_A = mkA081 "голям" ;
bike_N = mkN061 "колело" ;
bird_N = mkN041 "птица" ;
black_A = mkA079 "черен" ;
blue_A = mkA086 "син" ;
boat_N = mkN007 "кораб" ;
book_N = mkN041 "книга" ;
boot_N = mkN041 "обувка" ;
boss_N = mkN001 "шеф" ;
boy_N = mkN065 "момче" ;
bread_N = mkN001 "хляб" ;
break_V2 = dirV2 (actionV (mkV173 "чупя") (mkV173 "счупя")) ;
broad_A = mkA079 "обширен" ;
brother_N2 = prepN2 (mkN025 "брат") naP ;
brown_A = mkA076 "кафяв" ;
butter_N = mkN054 "масло" ;
buy_V2 = dirV2 (actionV (mkV186 "купувам") (mkV173 "купя")) ;
camera_N = mkN041 "камера" ;
cap_N = mkN041 "шапка" ;
car_N = mkN041 "кола" ;
carpet_N = mkN007 "килим" ;
cat_N = mkN041 "котка" ;
ceiling_N = mkN007 "таван" ;
chair_N = mkN001 "стол" ;
cheese_N = mkN066 "сирене" ;
child_N = mkN067 "дете" ;
church_N = mkN041 "църква" ;
city_N = mkN001 "град" ;
clean_A = mkA076 "чист" ;
clever_A = mkA079 "умен" ;
close_V2 = dirV2 (actionV (mkV187 "затварям") (mkV173 "затворя")) ;
coat_N = mkN054 "палто" ;
cold_A = mkA076 "студен" ;
come_V = actionV (mkV186 "идвам") (table { -- special case "дойди", "дойдете" are archaic
VImperative Sg => "ела";
VImperative Pl => "елате";
vform => mkV146a "дойда" ! vform}) ;
computer_N = mkN009 "компютър" ;
country_N = mkN041 "държава" ;
cousin_N = mkN007a "братовчед" ;
cow_N = mkN041 "крава" ;
die_V = actionV (mkV186 "умирам") (mkV150a "умра") ;
dirty_A = mkA079 "мръсен" ;
distance_N3 = prepN3 (mkN072 "разстояние") otP doP ;
doctor_N = mkN007a "доктор" ;
dog_N = mkN065 "куче" ;
door_N = mkN041 "врата" ;
drink_V2 = dirV2 (stateV (mkV163 "пия")) ;
easy_A2V = mkA2V (mkA079 "лесен") zaP ;
eat_V2 = dirV2 (stateV (mkV169 "ям")) ;
empty_A = mkA079 "празен" ;
enemy_N = mkN001 "враг" ;
factory_N = mkN041 "фабрика" ;
father_N2 = prepN2 (mkN038 "баща") naP ;
fear_VS = mkVS (stateV (mkV186 "страхувам")) ;
find_V2 = dirV2 (actionV (mkV186 "намирам") (mkV173 "намеря")) ;
fish_N = mkN041 "риба" ;
floor_N = mkN007 "етаж" ;
fridge_N = mkN007 "фризер" ;
friend_N = mkN031a "приятел" ;
fruit_N = mkN001 "плод" ;
fun_AV = mkA079 "забавен" ;
forget_V2 = dirV2 (actionV (mkV187 "забравям") (mkV173 "забравя")) ;
garden_N = mkN041 "градина" ;
girl_N = mkN065 "момиче" ;
glove_N = mkN041 "ръкавица" ;
gold_N = mkN054 "злато" ;
good_A = adjAdv (mkA080 "добър") "добре" ;
go_V = actionV (mkV186 "отивам") (mkV146 "отида") ;
green_A = mkA076 "зелен" ;
harbour_N = mkN066 "пристанище" ;
hate_V2 = dirV2 (stateV (mkV173 "мразя")) ;
hat_N = mkN041 "шапка" ;
hear_V2 = dirV2 (actionV (mkV186 "чувам") (mkV163 "чуя")) ;
hill_N = mkN001 "хълм" ;
hope_VS = mkVS (medialV (stateV (mkV186 "надявам")) Acc) ;
horse_N = mkN035 "кон" ;
hot_A = mkA076 "горещ" ;
house_N = mkN041 "къща" ;
important_A = mkA079 "важен" ;
industry_N = mkN047 "индустрия" ;
iron_N = mkN057 "желязо" ;
king_N = mkN035a "цар" ;
know_V2 = dirV2 {
s = \\_,vform => case vform of {
VPassive aform => (mkA079 "èçâåñòåí").s ! aform ;
_ => mkV162 "çíàÿ" ! vform
VPassive aform => (mkA079 "известен").s ! aform ;
_ => mkV162 "зная" ! vform
} ;
vtype = VNormal ;
lock_V = <>
} ;
know_VQ = mkVQ (actionV (mkV188 "çíàì") (mkV162 "çíàÿ")) ;
know_VS = mkVS (actionV (mkV188 "çíàì") (mkV162 "çíàÿ")) ;
lake_N = mkN054 "åçåðî" ;
lamp_N = mkN041 "ëàìïà" ;
learn_V2 = dirV2 (actionV (mkV176 "ó÷à") (mkV176 "íàó÷à")) ;
leather_N = mkN041 "êîæà" ;
leave_V2 = dirV2 (actionV (mkV187 "îñòàâÿì") (mkV173 "îñòàâÿ")) ;
like_V2 = dirV2 (actionV (mkV186 "õàðåñâàì") (mkV186 "õàðåñàì")) ;
listen_V2 = dirV2 (stateV (mkV186 "ñëóøàì")) ;
live_V = stateV (mkV160 "æèâåÿ") ;
long_A = mkA080 "äúëúã" ;
lose_V2 = dirV2 (actionV (mkV173 "ãóáÿ") (mkV173 "çàãóáÿ")) ;
love_N = mkN049 "ëþáîâ" ;
love_V2 = dirV2 (stateV (mkV186 "îáè÷àì")) ;
man_N = mkN024 "ìúæ" ;
married_A2 = mkA2 (mkA076 "æåíåí") zaP ;
meat_N = mkN054 "ìåñî" ;
milk_N = mkN057 "ìëÿêî" ;
moon_N = mkN041 "ëóíà" ;
mother_N2 = prepN2 (mkN041a "ìàéêà") naP ;
mountain_N = mkN041 "ïëàíèíà" ;
music_N = mkN041 "ìóçèêà" ;
narrow_A = mkA084 "òåñåí" ;
new_A = mkA076 "íîâ" ;
newspaper_N = mkN014 "âåñòíèê" ;
oil_N = mkN065 "îëèî" ;
old_A = mkA076 "ñòàð" ;
open_V2 = dirV2 (actionV (mkV187 "îòâàðÿì") (mkV173 "îòâîðÿ")) ;
paint_V2A = mkV2A (actionV (mkV186 "ðèñóâàì") (mkV186 "íàðèñóâàì")) noPrep ;
paper_N = mkN047 "õàðòèÿ" ;
paris_PN = mkPN "Ïàðèæ" Masc ;
peace_N = mkN040a "ìèð" ;
pen_N = mkN041 "ïèñàëêà" ;
planet_N = mkN041 "ïëàíåòà" ;
plastic_N = mkN041 "ïëàñòìàñà" ;
play_V2 = dirV2 (stateV (mkV161 "èãðàÿ")) ;
policeman_N = mkN032a "ïîëèöàé" ;
priest_N = mkN014 "ñâåùåíèê" ;
probable_AS = mkA079 "âåðîÿòåí" ;
queen_N = mkN041 "êðàëèöà" ;
radio_N = mkN054 "ðàäèî" ;
rain_V0 = mkV0 (stateV (mkV174 "âàëè")) ;
read_V2 = dirV2 (stateV (mkV145 "÷åòà")) ;
red_A = mkA076 "÷åðâåí" ;
religion_N = mkN047 "ðåëèãèÿ" ;
restaurant_N = mkN007 "ðåñòîðàíò" ;
river_N = mkN041 "ðåêà" ;
rock_N = mkN041 "ñêàëà" ;
roof_N = mkN007 "ïîêðèâ" ;
rubber_N = mkN041 "ãóìà" ;
run_V = stateV (mkV186 "áÿãàì") ;
say_VS = mkVS (actionV (mkV186 "êàçâàì") (mkV156 "êàæà")) ;
school_N = mkN066 "ó÷èëèùå" ;
science_N = mkN041 "íàóêà" ;
sea_N = mkN065 "ìîðå" ;
seek_V2 = dirV2 (stateV (mkV173 "òúðñÿ")) ;
see_V2 = dirV2 (actionV (mkV186 "âèæäàì") (mkV181 "âèäÿ")) ;
sell_V3 = dirV3 (stateV (mkV186 "ïðîäàâàì")) naP ;
send_V3 = dirV3 (actionV (mkV186 "ïðàùàì") (mkV173 "ïðàòÿ")) doP ;
sheep_N = mkN044 "îâöà" ;
ship_N = mkN007 "êîðàá" ;
shirt_N = mkN041 "ðèçà" ;
shoe_N = mkN041 "îáóâêà" ;
shop_N = mkN007 "ìàãàçèí" ;
short_A = mkA076 "êúñ" ;
silver_N = mkN054 "ñðåáðî" ;
sister_N = mkN041a "ñåñòðà" ;
sleep_V = stateV (mkV182 "ñïÿ") ;
small_A = mkA080 "ìàëúê" ;
snake_N = mkN047 "çìèÿ" ;
sock_N = mkN007 "÷îðàï" ;
speak_V2 = dirV2 (stateV (mkV173 "ãîâîðÿ")) ;
star_N = mkN041 "çâåçäà" ;
steel_N = mkN041 "ñòîìàíà" ;
stone_N = mkN017 "êàìúê" ;
stove_N = mkN041 "ïå÷êà" ;
student_N = mkN007a "ñòóäåíò" ;
stupid_A = mkA076 "ãëóïàâ" ;
sun_N = mkN066 "ñëúíöå" ;
switch8off_V2 = dirV2 (actionV (mkV186 "èçêëþ÷âàì") (mkV176 "èçêëþ÷à")) ;
switch8on_V2 = dirV2 (actionV (mkV186 "âêëþ÷âàì") (mkV176 "âêëþ÷à")) ;
table_N = mkN041 "ìàñà" ;
talk_V3 = mkV3 (stateV (mkV173 "ãîâîðÿ")) naP zaP ;
teacher_N = mkN031a "ó÷èòåë" ;
teach_V2 = dirV2 (actionV (mkV186 "ïðåïîäàâàì") (mkV168 "ïðåïîäàì")) ;
television_N = mkN047 "òåëåâèçèÿ" ;
thick_A = mkA076 "äåáåë" ;
thin_A = mkA080 "òúíúê" ;
train_N = mkN001 "âëàê" ;
travel_V = stateV (mkV186 "ïúòóâàì") ;
tree_N = mkN061 "äúðâî" ;
ugly_A = mkA076 "ãëóïàâ" ;
understand_V2 = dirV2 (actionV (mkV186 "ðàçáèðàì") (mkV170 "ðàçáåðà")) ;
university_N = mkN007 "óíèâåðñèòåò" ;
village_N = mkN054 "ñåëî" ;
wait_V2 = prepV2 (stateV (mkV186 "÷àêàì")) zaP ;
walk_V = stateV (mkV173 "õîäÿ") ;
warm_A = mkA080 "òîïúë" ;
war_N = mkN041 "âîéíà" ;
watch_V2 = dirV2 (stateV (mkV186 "ãëåäàì")) ;
water_N = mkN041 "âîäà" ;
white_A = mkA081 "áÿë" ;
window_N = mkN008 "ïðîçîðåö" ;
wine_N = mkN054 "âèíî" ;
win_V2 = dirV2 (actionV (mkV186 "ïîáåæäàâàì") (mkV174 "ïîáåäÿ")) ;
woman_N = mkN041a "æåíà" ;
wonder_VQ = mkVQ (medialV (actionV (mkV186 "ó÷óäâàì") (mkV173 "÷óäÿ")) Acc) ;
wood_N = mkN041 "äúðâåñèíà" ;
write_V2 = dirV2 (stateV (mkV159 "ïèøà")) ;
yellow_A = mkA076 "æúëò" ;
young_A = mkA076 "ìëàä" ;
do_V2 = dirV2 (actionV (mkV173 "ïðàâÿ") (mkV173 "íàïðàâÿ")) ;
now_Adv = mkAdv "ñåãà" ;
already_Adv = mkAdv "âå÷å" ;
song_N = mkN050 "ïåñåí" ;
add_V3 = dirV3 (actionV (mkV186 "ñúáèðàì") (mkV170 "ñúáåðà")) sP ;
number_N = mkN054 "÷èñëî" ;
put_V2 = prepV2 (actionV (mkV186 "ñëàãàì") (mkV176 "ñëîæà")) noPrep ;
stop_V = actionV (mkV186 "ñïèðàì") (mkV150 "ñïðà") ;
jump_V = actionV (mkV186 "ñêà÷àì") (mkV176 "ñêî÷à") ;
left_Ord = mkA081 "ëÿâ" ** {nonEmpty=True} ;
right_Ord = mkA084 "äåñåí" ** {nonEmpty=True} ;
far_Adv = mkAdv "äàëå÷å" ;
correct_A = mkA079 "ïðàâèëåí" ;
dry_A = mkA076 "ñóõ" ;
dull_A = mkA076 "òúï" ;
full_A = mkA079 "ïúëåí" ;
heavy_A = mkA080 "òåæúê" ;
near_A = mkA080 "áëèçúê" ;
rotten_A = mkA076 "ïðîãíèë" ;
round_A = mkA080 "êðúãúë" ;
sharp_A = mkA080 "îñòúð" ;
smooth_A = mkA080 "ãëàäúê" ;
straight_A = mkA081 "ïðÿê" ;
wet_A = mkA080 "ìîêúð" ; ----
wide_A = mkA076 "øèðîê" ;
animal_N = mkN062 "æèâîòíî" ;
ashes_N = mkN049 "ïåïeë" ;
back_N = mkN003 "ãðúá" ;
bark_N = mkN028 "ëàé" ;
belly_N = mkN007 "êîðåì" ;
blood_N = mkN053 "êðúâ" ;
bone_N = mkN049 "êîñò" ;
breast_N = mkN041 "ãúðäà" ;
cloud_N = mkN014 "îáëàê" ;
day_N = mkN033 "äåí" ;
dust_N = mkN001 "ïðàõ" ;
ear_N = mkN064 "óõî" ;
earth_N = mkN047 "çåìÿ" ;
egg_N = mkN066 "ÿéöå" ;
eye_N = mkN063 "îêî" ;
fat_N = mkN041 "ìàçíèíà" ;
feather_N = mkN054 "ïåðî" ;
fingernail_N = mkN034 "íîêúò" ;
fire_N = mkN030 "îãúí" ;
flower_N = mkN068 "öâåòå" ;
fog_N = mkN041 "ìúãëà" ;
foot_N = mkN041 "ñòúïêà" ;
forest_N = mkN041 "ãîðà" ;
grass_N = mkN041 "òðåâà" ;
guts_N = mkN054 "÷åðâî" ;
hair_N = mkN041 "êîñà" ;
hand_N = mkN045 "ðúêà" ;
head_N = mkN041 "ãëàâà" ;
heart_N = mkN066 "ñúðöå" ;
horn_N = mkN001 "ðîã" ;
husband_N = mkN015 "ñúïðóã" ; -- personal
ice_N = mkN001 "ëåä" ;
knee_N = mkN058 "êîëÿíî" ;
leaf_N = mkN054 "ëèñòî" ;
leg_N = mkN022 "êðàê" ;
liver_N = mkN001 "äðîá" ;
louse_N = mkN041 "âúøêà" ;
mouth_N = mkN042 "óñòà" ;
name_N = mkN069 "èìå" ;
neck_N = mkN003 "ãðúá" ;
night_N = mkN049 "íîù" ;
nose_N = mkN001 "íîñ" ;
person_N = mkN014 "÷îâåê" ;
rain_N = mkN001 "äúæä" ;
road_N = mkN037 "ïúò" ;
root_N = mkN007 "êîðåí" ;
rope_N = mkN065 "âúæå" ;
salt_N = mkN049 "ñîë" ;
sand_N = mkN014 "ïÿñúê" ;
seed_N = mkN069 "ñåìå" ;
skin_N = mkN041 "êîæà" ;
sky_N = mkN070 "íåáå" ;
smoke_N = mkN014 "ïóøåê" ;
snow_N = mkN002 "ñíÿã" ;
stick_N = mkN041 "ïðú÷êà" ;
tail_N = mkN041 "îïàøêà" ;
tongue_N = mkN014 "åçèê" ;
tooth_N = mkN007 "çúá" ;
wife_N = mkN041 "ñúïðóãà" ;
wind_N = mkN004 "âÿòúð" ;
wing_N = mkN056 "êðèëî" ;
worm_N = mkN032 "÷åðâåé" ;
year_N = mkN041 "ãîäèíà" ;
blow_V = stateV (mkV186 "äóõàì") ;
breathe_V = dirV2 (stateV (mkV186 "äèøàì")) ;
burn_V = actionV (mkV187 "èçãàðÿì") (mkV177 "èçãîðÿ") ;
dig_V = stateV (mkV161 "êîïàÿ") ;
fall_V = actionV (mkV186 "ïàäàì") (mkV152 "ïàäíà") ;
float_V = stateV (mkV186 "ïëàâàì") ;
flow_V = stateV (mkV148 "òåêà") ;
fly_V = stateV (mkV177 "ëåòÿ") ;
freeze_V = stateV (mkV186 "çàìðúçâàì") ;
give_V3 = dirV3 (actionV (mkV186 "äàâàì") (mkV186 "äàì")) naP ;
laugh_V = medialV (stateV (mkV160 "ñìåÿ")) Acc ;
lie_V = stateV (mkV178 "ëåæà") ;
play_V = stateV (mkV161 "èãðàÿ") ;
sew_V = stateV (mkV163 "øèÿ") ;
sing_V = stateV (mkV164 "ïåÿ") ;
sit_V = stateV (mkV177 "ñåäÿ") ;
smell_V = stateV (mkV159 "ìèðèøà") ;
spit_V = stateV (mkV163 "ïëþÿ") ;
stand_V = stateV (mkV180 "ñòîÿ") ;
swell_V = actionV (mkV186 "íàäóâàì") (mkV163 "íàäóÿ") ;
swim_V = stateV (mkV186 "ïëóâàì") ;
think_V = stateV (mkV173 "ìèñëÿ") ;
turn_V = actionV (mkV186 "îáðúùàì") (mkV152 "îáúðíà") ;
vomit_V = actionV (mkV186 "ïîâðúùàì") (mkV152 "ïîâúðíà") ;
know_VQ = mkVQ (actionV (mkV188 "знам") (mkV162 "зная")) ;
know_VS = mkVS (actionV (mkV188 "знам") (mkV162 "зная")) ;
lake_N = mkN054 "езеро" ;
lamp_N = mkN041 "лампа" ;
learn_V2 = dirV2 (actionV (mkV176 "уча") (mkV176 "науча")) ;
leather_N = mkN041 "кожа" ;
leave_V2 = dirV2 (actionV (mkV187 "оставям") (mkV173 "оставя")) ;
like_V2 = dirV2 (actionV (mkV186 "харесвам") (mkV186 "харесам")) ;
listen_V2 = dirV2 (stateV (mkV186 "слушам")) ;
live_V = stateV (mkV160 "живея") ;
long_A = mkA080 "дълъг" ;
lose_V2 = dirV2 (actionV (mkV173 "губя") (mkV173 "загубя")) ;
love_N = mkN049 "любов" ;
love_V2 = dirV2 (stateV (mkV186 "обичам")) ;
man_N = mkN024 "мъж" ;
married_A2 = mkA2 (mkA076 "женен") zaP ;
meat_N = mkN054 "месо" ;
milk_N = mkN057 "мляко" ;
moon_N = mkN041 "луна" ;
mother_N2 = prepN2 (mkN041a "майка") naP ;
mountain_N = mkN041 "планина" ;
music_N = mkN041 "музика" ;
narrow_A = mkA084 "тесен" ;
new_A = mkA076 "нов" ;
newspaper_N = mkN014 "вестник" ;
oil_N = mkN065 "олио" ;
old_A = mkA076 "стар" ;
open_V2 = dirV2 (actionV (mkV187 "отварям") (mkV173 "отворя")) ;
paint_V2A = mkV2A (actionV (mkV186 "рисувам") (mkV186 "нарисувам")) noPrep ;
paper_N = mkN047 "хартия" ;
paris_PN = mkPN "Париж" Masc ;
peace_N = mkN040a "мир" ;
pen_N = mkN041 "писалка" ;
planet_N = mkN041 "планета" ;
plastic_N = mkN041 "пластмаса" ;
play_V2 = dirV2 (stateV (mkV161 "играя")) ;
policeman_N = mkN032a "полицай" ;
priest_N = mkN014 "свещеник" ;
probable_AS = mkA079 "вероятен" ;
queen_N = mkN041 "кралица" ;
radio_N = mkN054 "радио" ;
rain_V0 = mkV0 (stateV (mkV174 "вали")) ;
read_V2 = dirV2 (stateV (mkV145 "чета")) ;
red_A = mkA076 "червен" ;
religion_N = mkN047 "религия" ;
restaurant_N = mkN007 "ресторант" ;
river_N = mkN041 "река" ;
rock_N = mkN041 "скала" ;
roof_N = mkN007 "покрив" ;
rubber_N = mkN041 "гума" ;
run_V = stateV (mkV186 "бягам") ;
say_VS = mkVS (actionV (mkV186 "казвам") (mkV156 "кажа")) ;
school_N = mkN066 "училище" ;
science_N = mkN041 "наука" ;
sea_N = mkN065 "море" ;
seek_V2 = dirV2 (stateV (mkV173 "търся")) ;
see_V2 = dirV2 (actionV (mkV186 "виждам") (mkV181 "видя")) ;
sell_V3 = dirV3 (stateV (mkV186 "продавам")) naP ;
send_V3 = dirV3 (actionV (mkV186 "пращам") (mkV173 "пратя")) doP ;
sheep_N = mkN044 "овца" ;
ship_N = mkN007 "кораб" ;
shirt_N = mkN041 "риза" ;
shoe_N = mkN041 "обувка" ;
shop_N = mkN007 "магазин" ;
short_A = mkA076 "къс" ;
silver_N = mkN054 "сребро" ;
sister_N = mkN041a "сестра" ;
sleep_V = stateV (mkV182 "спя") ;
small_A = mkA080 "малък" ;
snake_N = mkN047 "змия" ;
sock_N = mkN007 "чорап" ;
speak_V2 = dirV2 (stateV (mkV173 "говоря")) ;
star_N = mkN041 "звезда" ;
steel_N = mkN041 "стомана" ;
stone_N = mkN017 "камък" ;
stove_N = mkN041 "печка" ;
student_N = mkN007a "студент" ;
stupid_A = mkA076 "глупав" ;
sun_N = mkN066 "слънце" ;
switch8off_V2 = dirV2 (actionV (mkV186 "изключвам") (mkV176 "изключа")) ;
switch8on_V2 = dirV2 (actionV (mkV186 "включвам") (mkV176 "включа")) ;
table_N = mkN041 "маса" ;
talk_V3 = mkV3 (stateV (mkV173 "говоря")) naP zaP ;
teacher_N = mkN031a "учител" ;
teach_V2 = dirV2 (actionV (mkV186 "преподавам") (mkV168 "преподам")) ;
television_N = mkN047 "телевизия" ;
thick_A = mkA076 "дебел" ;
thin_A = mkA080 "тънък" ;
train_N = mkN001 "влак" ;
travel_V = stateV (mkV186 "пътувам") ;
tree_N = mkN061 "дърво" ;
ugly_A = mkA076 "глупав" ;
understand_V2 = dirV2 (actionV (mkV186 "разбирам") (mkV170 "разбера")) ;
university_N = mkN007 "университет" ;
village_N = mkN054 "село" ;
wait_V2 = prepV2 (stateV (mkV186 "чакам")) zaP ;
walk_V = stateV (mkV173 "ходя") ;
warm_A = mkA080 "топъл" ;
war_N = mkN041 "война" ;
watch_V2 = dirV2 (stateV (mkV186 "гледам")) ;
water_N = mkN041 "вода" ;
white_A = mkA081 "бял" ;
window_N = mkN008 "прозорец" ;
wine_N = mkN054 "вино" ;
win_V2 = dirV2 (actionV (mkV186 "побеждавам") (mkV174 "победя")) ;
woman_N = mkN041a "жена" ;
wonder_VQ = mkVQ (medialV (actionV (mkV186 "учудвам") (mkV173 "чудя")) Acc) ;
wood_N = mkN041 "дървесина" ;
write_V2 = dirV2 (stateV (mkV159 "пиша")) ;
yellow_A = mkA076 "жълт" ;
young_A = mkA076 "млад" ;
do_V2 = dirV2 (actionV (mkV173 "правя") (mkV173 "направя")) ;
now_Adv = mkAdv "сега" ;
already_Adv = mkAdv "вече" ;
song_N = mkN050 "песен" ;
add_V3 = dirV3 (actionV (mkV186 "събирам") (mkV170 "събера")) sP ;
number_N = mkN054 "число" ;
put_V2 = prepV2 (actionV (mkV186 "слагам") (mkV176 "сложа")) noPrep ;
stop_V = actionV (mkV186 "спирам") (mkV150 "спра") ;
jump_V = actionV (mkV186 "скачам") (mkV176 "скоча") ;
left_Ord = mkA081 "ляв" ** {nonEmpty=True} ;
right_Ord = mkA084 "десен" ** {nonEmpty=True} ;
far_Adv = mkAdv "далече" ;
correct_A = mkA079 "правилен" ;
dry_A = mkA076 "сух" ;
dull_A = mkA076 "тъп" ;
full_A = mkA079 "пълен" ;
heavy_A = mkA080 "тежък" ;
near_A = mkA080 "близък" ;
rotten_A = mkA076 "прогнил" ;
round_A = mkA080 "кръгъл" ;
sharp_A = mkA080 "остър" ;
smooth_A = mkA080 "гладък" ;
straight_A = mkA081 "пряк" ;
wet_A = mkA080 "мокър" ; ----
wide_A = mkA076 "широк" ;
animal_N = mkN062 "животно" ;
ashes_N = mkN049 "пепeл" ;
back_N = mkN003 "гръб" ;
bark_N = mkN028 "лай" ;
belly_N = mkN007 "корем" ;
blood_N = mkN053 "кръв" ;
bone_N = mkN049 "кост" ;
breast_N = mkN041 "гърда" ;
cloud_N = mkN014 "облак" ;
day_N = mkN033 "ден" ;
dust_N = mkN001 "прах" ;
ear_N = mkN064 "ухо" ;
earth_N = mkN047 "земя" ;
egg_N = mkN066 "яйце" ;
eye_N = mkN063 "око" ;
fat_N = mkN041 "мазнина" ;
feather_N = mkN054 "перо" ;
fingernail_N = mkN034 "нокът" ;
fire_N = mkN030 "огън" ;
flower_N = mkN068 "цвете" ;
fog_N = mkN041 "мъгла" ;
foot_N = mkN041 "стъпка" ;
forest_N = mkN041 "гора" ;
grass_N = mkN041 "трева" ;
guts_N = mkN054 "черво" ;
hair_N = mkN041 "коса" ;
hand_N = mkN045 "ръка" ;
head_N = mkN041 "глава" ;
heart_N = mkN066 "сърце" ;
horn_N = mkN001 "рог" ;
husband_N = mkN015 "съпруг" ; -- personal
ice_N = mkN001 "лед" ;
knee_N = mkN058 "коляно" ;
leaf_N = mkN054 "листо" ;
leg_N = mkN022 "крак" ;
liver_N = mkN001 "дроб" ;
louse_N = mkN041 "въшка" ;
mouth_N = mkN042 "уста" ;
name_N = mkN069 "име" ;
neck_N = mkN003 "гръб" ;
night_N = mkN049 "нощ" ;
nose_N = mkN001 "нос" ;
person_N = mkN014 "човек" ;
rain_N = mkN001 "дъжд" ;
road_N = mkN037 "път" ;
root_N = mkN007 "корен" ;
rope_N = mkN065 "въже" ;
salt_N = mkN049 "сол" ;
sand_N = mkN014 "пясък" ;
seed_N = mkN069 "семе" ;
skin_N = mkN041 "кожа" ;
sky_N = mkN070 "небе" ;
smoke_N = mkN014 "пушек" ;
snow_N = mkN002 "сняг" ;
stick_N = mkN041 "пръчка" ;
tail_N = mkN041 "опашка" ;
tongue_N = mkN014 "език" ;
tooth_N = mkN007 "зъб" ;
wife_N = mkN041 "съпруга" ;
wind_N = mkN004 "вятър" ;
wing_N = mkN056 "крило" ;
worm_N = mkN032 "червей" ;
year_N = mkN041 "година" ;
blow_V = stateV (mkV186 "духам") ;
breathe_V = dirV2 (stateV (mkV186 "дишам")) ;
burn_V = actionV (mkV187 "изгарям") (mkV177 "изгоря") ;
dig_V = stateV (mkV161 "копая") ;
fall_V = actionV (mkV186 "падам") (mkV152 "падна") ;
float_V = stateV (mkV186 "плавам") ;
flow_V = stateV (mkV148 "тека") ;
fly_V = stateV (mkV177 "летя") ;
freeze_V = stateV (mkV186 "замръзвам") ;
give_V3 = dirV3 (actionV (mkV186 "давам") (mkV186 "дам")) naP ;
laugh_V = medialV (stateV (mkV160 "смея")) Acc ;
lie_V = stateV (mkV178 "лежа") ;
play_V = stateV (mkV161 "играя") ;
sew_V = stateV (mkV163 "шия") ;
sing_V = stateV (mkV164 "пея") ;
sit_V = stateV (mkV177 "седя") ;
smell_V = stateV (mkV159 "мириша") ;
spit_V = stateV (mkV163 "плюя") ;
stand_V = stateV (mkV180 "стоя") ;
swell_V = actionV (mkV186 "надувам") (mkV163 "надуя") ;
swim_V = stateV (mkV186 "плувам") ;
think_V = stateV (mkV173 "мисля") ;
turn_V = actionV (mkV186 "обръщам") (mkV152 "обърна") ;
vomit_V = actionV (mkV186 "повръщам") (mkV152 "повърна") ;
bite_V2 = dirV2 (stateV (mkV154 "õàïÿ")) ;
count_V2 = dirV2 (stateV (mkV175 "áðîÿ")) ;
cut_V2 = dirV2 (stateV (mkV157 "ðåæà")) ;
fear_V2 = prepV2 (medialV (stateV (mkV186 "ñòðàõóâàì")) Acc) otP;
fight_V2 = prepV2 (medialV (stateV (mkV173 "áîðÿ")) Acc) sP;
hit_V2 = dirV2 (actionV (mkV187 "óäðÿì") (mkV173 "óäàðÿ")) ;
hold_V2 = dirV2 (stateV (mkV179 "äúðæà")) ;
hunt_V2 = dirV2 (stateV (mkV174 "ëîâÿ")) ;
kill_V2 = dirV2 (actionV (mkV186 "óáèâàì") (mkV163 "óáèÿ")) ;
pull_V2 = dirV2 (stateV (mkV186 "äúðïàì")) ;
push_V2 = dirV2 (stateV (mkV186 "áóòàì")) ;
rub_V2 = dirV2 (stateV (mkV163 "òðèÿ")) ;
scratch_V2 = dirV2 (actionV (mkV186 "äðàñêàì") (mkV152 "äðàñíà")) ;
split_V2 = dirV2 (actionV (mkV187 "ðàçäåëÿì") (mkV174 "ðàçäåëÿ")) ;
squeeze_V2 = dirV2 (actionV (mkV186 "ñòèñêàì") (mkV152 "ñòèñíà")) ;
stab_V2 = dirV2 (actionV (mkV186 "ïðîìóøâàì") (mkV176 "ïðîìóøà")) ;
suck_V2 = dirV2 (stateV (mkV155 "ñó÷à")) ;
throw_V2 = dirV2 (actionV (mkV187 "õâúðëÿì") (mkV173 "õâúðëÿ")) ;
tie_V2 = dirV2 (actionV (mkV186 "âðúçâàì") (mkV156 "âúðæà")) ;
wash_V2 = dirV2 (stateV (mkV163 "ìèÿ")) ;
wipe_V2 = dirV2 (stateV (mkV159 "áúðøà")) ;
bite_V2 = dirV2 (stateV (mkV154 "хапя")) ;
count_V2 = dirV2 (stateV (mkV175 "броя")) ;
cut_V2 = dirV2 (stateV (mkV157 "режа")) ;
fear_V2 = prepV2 (medialV (stateV (mkV186 "страхувам")) Acc) otP;
fight_V2 = prepV2 (medialV (stateV (mkV173 "боря")) Acc) sP;
hit_V2 = dirV2 (actionV (mkV187 "удрям") (mkV173 "ударя")) ;
hold_V2 = dirV2 (stateV (mkV179 "държа")) ;
hunt_V2 = dirV2 (stateV (mkV174 "ловя")) ;
kill_V2 = dirV2 (actionV (mkV186 "убивам") (mkV163 "убия")) ;
pull_V2 = dirV2 (stateV (mkV186 "дърпам")) ;
push_V2 = dirV2 (stateV (mkV186 "бутам")) ;
rub_V2 = dirV2 (stateV (mkV163 "трия")) ;
scratch_V2 = dirV2 (actionV (mkV186 "драскам") (mkV152 "драсна")) ;
split_V2 = dirV2 (actionV (mkV187 "разделям") (mkV174 "разделя")) ;
squeeze_V2 = dirV2 (actionV (mkV186 "стискам") (mkV152 "стисна")) ;
stab_V2 = dirV2 (actionV (mkV186 "промушвам") (mkV176 "промуша")) ;
suck_V2 = dirV2 (stateV (mkV155 "суча")) ;
throw_V2 = dirV2 (actionV (mkV187 "хвърлям") (mkV173 "хвърля")) ;
tie_V2 = dirV2 (actionV (mkV186 "връзвам") (mkV156 "вържа")) ;
wash_V2 = dirV2 (stateV (mkV163 "мия")) ;
wipe_V2 = dirV2 (stateV (mkV159 "бърша")) ;
grammar_N = mkN041 "ãðàìàòèêà" ;
language_N = mkN014 "åçèê" ;
rule_N = mkN054 "ïðàâèëî" ;
grammar_N = mkN041 "граматика" ;
language_N = mkN014 "език" ;
rule_N = mkN054 "правило" ;
john_PN = mkPN "Äæîí" Masc ;
question_N = mkN007 "âúïðîñ" ;
ready_A = mkA076 "ãîòîâ" ;
reason_N = mkN041 "ïðè÷èíà" ;
today_Adv = mkAdv "äíåñ" ;
uncertain_A = mkA079 "íåÿñåí" ;
john_PN = mkPN "Джон" Masc ;
question_N = mkN007 "въпрос" ;
ready_A = mkA076 "готов" ;
reason_N = mkN041 "причина" ;
today_Adv = mkAdv "днес" ;
uncertain_A = mkA079 "неясен" ;
oper
zaP = mkPrep "çà" Acc ;
zaP = mkPrep "за" Acc ;
naP = mkPrep [] Dat ;
otP = mkPrep "îò" Acc ;
doP = mkPrep "äî" Acc ;
sP = mkPrep (pre { "ñ" ;
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
otP = mkPrep "от" Acc ;
doP = mkPrep "до" Acc ;
sP = mkPrep (pre { "с" ;
"със" / strs {"с" ; "з" ; "С" ; "З"}
}) Acc ;
} ;
+75 -83
View File
@@ -1,20 +1,12 @@
--# -path=.:../../prelude
--# -coding=cp1251
--1 A Simple English Resource Morphology
--
-- Aarne Ranta 2002 -- 2005
--
-- This resource morphology contains definitions needed in the resource
-- syntax. To build a lexicon, it is better to use $ParadigmsEng$, which
-- gives a higher-level access to this module.
--# -coding=utf8
resource MorphoBul = ResBul ** open
Predef,
Prelude,
CatBul
in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all ;
@@ -95,73 +87,73 @@ oper
\cheta,chete,chetoh,chetqh,chel,chetql,cheten,chetqst,cheti,chetene ->
table {
VPres Sg P1 => cheta;
VPres Sg P2 => chete + "ø";
VPres Sg P2 => chete + "ш";
VPres Sg P3 => chete;
VPres Pl P1 => case chete of {
_ + ("à"|"ÿ") => chete + "ìå";
_ => chete + "ì"
_ + ("а"|"я") => chete + "ме";
_ => chete + "м"
};
VPres Pl P2 => chete + "òå";
VPres Pl P2 => chete + "те";
VPres Pl P3 => case cheta of {
vika + "ì" => case chete of {
zn + "àå" => zn + "àÿò";
dad + "å" => dad + "àò";
vika => vika + "ò"
vika + "м" => case chete of {
zn + "ае" => zn + "аят";
dad + "е" => dad + "ат";
vika => vika + "т"
};
_ => cheta + "ò"
_ => cheta + "т"
};
VAorist Sg P1 => chetoh;
VAorist Sg _ => case chetoh of {
chet+"îõ" => chete;
zova+ "õ" => zova
chet+"ох" => chete;
zova+ "х" => zova
};
VAorist Pl P1 => chetoh + "ìå";
VAorist Pl P2 => chetoh + "òå";
VAorist Pl P3 => chetoh + "à";
VAorist Pl P1 => chetoh + "ме";
VAorist Pl P2 => chetoh + "те";
VAorist Pl P3 => chetoh + "а";
VImperfect Sg P1 => chetqh;
VImperfect Sg _ => case chete of {
rabot + "è" => rabot + "eøå";
_ => chete + "øå"
rabot + "и" => rabot + "eше";
_ => chete + "ше"
};
VImperfect Pl P1 => chetqh + "ìå";
VImperfect Pl P2 => chetqh + "òå";
VImperfect Pl P3 => chetqh + "à";
VImperfect Pl P1 => chetqh + "ме";
VImperfect Pl P2 => chetqh + "те";
VImperfect Pl P3 => chetqh + "а";
VPerfect aform =>let chel1 : Str =
case chel of {
pas+"úë" => pas+"ë";
pas+"ъл" => pas+"л";
_ => chel
} ;
chel2 : Str =
case chel of {
w+"ëÿçúë" => w+"ëåçë";
w+"лязъл" => w+"лезл";
_ => chel
}
in (mkAdjective chel
(chel2+"èÿ")
(chel2+"èÿò")
(chel2+"ия")
(chel2+"ият")
(chel1+"a")
(chel1+"àòà")
(chel1+"î")
(chel1+"îòî")
(ia2e chel1+"è")
(ia2e chel1+"èòå")).s ! aform ;
(chel1+"ата")
(chel1+"о")
(chel1+"ото")
(ia2e chel1+"и")
(ia2e chel1+"ите")).s ! aform ;
VPluPerfect aform => regAdjective chetql ! aform ;
VPassive aform => regAdjective cheten ! aform ;
VPresPart aform => regAdjective chetqst ! aform ;
VImperative Sg => cheti;
VImperative Pl => case cheti of {
chet + "è" => chet + "åòå";
ela => ela + "òå"
chet + "и" => chet + "ете";
ela => ela + "те"
};
VNoun nform => let v0 = init chetene
in (mkNoun (v0+"å")
(v0+"èÿ")
(v0+"èÿ")
(v0+"å")
in (mkNoun (v0+"е")
(v0+"ия")
(v0+"ия")
(v0+"е")
ANeut) ! nform;
VGerund => case chete of {
rabot + "è" => rabot + "åéêè";
_ => chete + "éêè"
rabot + "и" => rabot + "ейки";
_ => chete + "йки"
}
} ;
@@ -172,51 +164,51 @@ oper
table {
NF Sg Indef => sg ;
NF Sg Def => case sg of {
_+"à"=>sg+"òà" ;
_+"ÿ"=>sg+"òà" ;
_+"î"=>sg+"òî" ;
_+"ó"=>sg+"òî" ;
_+"å"=>sg+"òî" ;
_+"è"=>sg+"òî" ;
s+"é"=>s +"ÿ" ;
_+("úð")
=>sg +"à" ;
_+("òåë"|"àð"|"ÿð"|"äåí"
|"ïúò"|"îãúí"|"ñúí"
|"êîí"|"êðàë"|"öàð"
|"çåò"|"ëàêúò"|"íîêúò")
=>sg +"ÿ" ;
_+"а"=>sg+"та" ;
_+"я"=>sg+"та" ;
_+"о"=>sg+"то" ;
_+"у"=>sg+"то" ;
_+"е"=>sg+"то" ;
_+"и"=>sg+"то" ;
s+"й"=>s +"я" ;
_+("ър")
=>sg +"а" ;
_+("тел"|"ар"|"яр"|"ден"
|"път"|"огън"|"сън"
|"кон"|"крал"|"цар"
|"зет"|"лакът"|"нокът")
=>sg +"я" ;
_ =>case g of {
AFem => sg+"òà" ;
_ => sg+"à"
AFem => sg+"та" ;
_ => sg+"а"
}
} ;
NF Pl Indef => pl ;
NF Pl Def => case pl of {
_+"à"=>pl+"òà" ;
_+"å"=>pl+"òå" ;
_+"è"=>pl+"òå" ;
_+"ÿ"=>pl+"òà" ;
_ =>pl+"òå"
_+"а"=>pl+"та" ;
_+"е"=>pl+"те" ;
_+"и"=>pl+"те" ;
_+"я"=>pl+"та" ;
_ =>pl+"те"
} ;
NFSgDefNom => case sg of {
_+"à"=>sg+"òà" ;
_+"ÿ"=>sg+"òà" ;
_+"î"=>sg+"òî" ;
_+"ó"=>sg+"òî" ;
_+"å"=>sg+"òî" ;
_+"è"=>sg+"òî" ;
s+"é"=>s +"ÿò" ;
_+("úð")
=>sg +"úò" ;
_+("òåë"|"àð"|"ÿð"|"äåí"
|"ïúò"|"îãúí"|"ñúí"
|"êîí"|"êðàë"|"öàð"
|"çåò"|"ëàêúò"|"íîêúò")
=>sg+"ÿò" ;
_+"а"=>sg+"та" ;
_+"я"=>sg+"та" ;
_+"о"=>sg+"то" ;
_+"у"=>sg+"то" ;
_+"е"=>sg+"то" ;
_+"и"=>sg+"то" ;
s+"й"=>s +"ят" ;
_+("ър")
=>sg +"ът" ;
_+("тел"|"ар"|"яр"|"ден"
|"път"|"огън"|"сън"
|"кон"|"крал"|"цар"
|"зет"|"лакът"|"нокът")
=>sg+"ят" ;
_ =>case g of {
AFem => sg+"òà" ;
_ => sg+"úò"
AFem => sg+"та" ;
_ => sg+"ът"
}
} ;
NFPlCount => count ;
+16 -18
View File
@@ -1,12 +1,12 @@
--# -coding=cp1251
--# -coding=utf8
--# -path=.:../abstract:../../prelude:../common
resource MorphoFunsBul = open
Prelude,
CatBul,
MorphoBul
in {
flags coding=cp1251 ;
in {
flags coding=utf8 ;
oper
@@ -57,12 +57,6 @@ oper
dualV : VTable -> VTable -> V ;
dualV imperf perf = {
s = table {Imperf=>imperf; Perf=>perf};
n = let v0 = init (imperf ! (VImperfect Sg P1)) + "í"
in (mkNoun (v0+"å")
(v0+"èÿ")
(v0+"èÿ")
(v0+"å")
ANeut).s;
vtype = VNormal;
lock_V=<>
} ;
@@ -72,12 +66,6 @@ oper
singleV : VTable -> V ;
singleV vtable = {
s = \\_=>vtable;
n = let v0 = init (vtable ! (VImperfect Sg P1)) + "í"
in (mkNoun (v0+"å")
(v0+"èÿ")
(v0+"èÿ")
(v0+"å")
ANeut).s;
vtype = VNormal;
lock_V=<>
} ;
@@ -278,13 +266,23 @@ oper
--2 Proper Names
--
mkPN : Str -> Gender -> PN ;
mkPN s g = {s = s; g = g ; lock_PN = <>} ;
masculine : Gender = Masc ;
feminine : Gender = Fem ;
neutr : Gender = Neut ;
mkPN = overload {
mkPN : Str -> PN = \s -> {s = s; gn = GSg Masc ; lock_PN = <>} ;
mkPN : Str -> Gender -> PN =
\s,g -> {s = s; gn = GSg g ; lock_PN = <>} ;
mkPN : Str -> GenNum -> PN =
\s,gn -> {s = s; gn = gn ; lock_PN = <>} ;
} ;
--2 IAdv
--
mkIAdv : Str -> IAdv ;
mkIAdv s = {s = table {QDir=>s;QIndir=>s+"òî"}; lock_IAdv = <>} ;
mkIAdv s = {s = table {QDir=>s;QIndir=>s+"то"}; lock_IAdv = <>} ;
}
+16 -16
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
flags optimize=all_subs ; coding=cp1251 ;
flags optimize=all_subs ; coding=utf8 ;
lin
DetCN det cn =
@@ -42,7 +42,7 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
RObj c => linCase c Pos ++ pn.s;
_ => pn.s
} ;
gn = GSg pn.g ;
gn = pn.gn ;
p = NounP3 Pos
} ;
UsePron p = p ;
@@ -123,17 +123,17 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
AdNum adn num = {s = \\gspec => adn.s ++ num.s ! gspec; nn = num.nn} ;
OrdSuperl a = {s = \\aform => "íàé" ++ hyphen ++ a.s ! aform} ;
OrdSuperl a = {s = \\aform => "най" ++ hyphen ++ a.s ! aform} ;
DefArt = {
s = table {
True => \\_ => [] ;
False => table {
ASg Masc _ => "òîé" ;
ASgMascDefNom => "òîé" ;
ASg Fem _ => "òÿ" ;
ASg Neut _ => "òî" ;
APl _ => "òå"
ASg Masc _ => "той" ;
ASgMascDefNom => "той" ;
ASg Fem _ => "тя" ;
ASg Neut _ => "то" ;
APl _ => "те"
}
} ;
nonEmpty = False ;
@@ -145,11 +145,11 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
s = table {
True => \\_ => [] ;
False => table {
ASg Masc _ => "åäèí" ;
ASgMascDefNom => "åäèí" ;
ASg Fem _ => "åäíà" ;
ASg Neut _ => "åäíî" ;
APl _ => "åäíè"
ASg Masc _ => "един" ;
ASgMascDefNom => "един" ;
ASg Fem _ => "една" ;
ASg Neut _ => "едно" ;
APl _ => "едни"
}
} ;
nonEmpty = False ;
@@ -197,9 +197,9 @@ concrete NounBul of Noun = CatBul ** open ResBul, Prelude in {
ApposCN cn np = {s = \\nf => cn.s ! nf ++ np.s ! RSubj; g=cn.g} ;
PossNP cn np = {s = \\nf => cn.s ! nf ++ "íà" ++ np.s ! (RObj CPrep); g = cn.g} ;
PossNP cn np = {s = \\nf => cn.s ! nf ++ "на" ++ np.s ! (RObj CPrep); g = cn.g} ;
PartNP cn np = {s = \\nf => cn.s ! nf ++ "îò" ++ np.s ! (RObj CPrep); g = cn.g} ;
PartNP cn np = {s = \\nf => cn.s ! nf ++ "от" ++ np.s ! (RObj CPrep); g = cn.g} ;
CountNP det np = {
s = \\role => let g = case np.gn of { -- this is lossy
+45 -45
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete NumeralBul of Numeral = CatBul [Numeral,Digits] ** open Prelude, ResBul in {
flags coding=cp1251 ;
flags coding=utf8 ;
lincat
@@ -11,43 +11,43 @@ lincat
Sub1000000 = {s : CardOrd => NumF => Str; n : Number} ;
lin num x = {s = \\c => x.s ! c ! Formal; n=x.n} ;
lin n2 = mkDigit "äâà" "äâàìà" "äâå" "âòîðè" "äâàéñåò" "äâåñòà" "äâåñòàòà" ;
lin n3 = mkDigit "òðè" "òðèìà" "òðè" "òðåòè" "òðèéñåò" "òðèñòà" "òðèñòàòà" ;
lin n4 = mkDigit "÷åòèðè" "÷åòèðèìà" "÷åòèðè" "÷åòâúðòè" "÷åòèðèéñåò" "÷åòèðèñòîòèí" "÷åòèðèñòîòèíòå" ;
lin n5 = mkDigit "ïåò" "ïåòèìà" "ïåò" "ïåòè" "ïåòäåñåò" "ïåòñòîòèí" "ïåòñòîòèíòå" ;
lin n6 = mkDigit "øåñò" "øåñòèìà" "øåñò" "øåñòè" "øåéñåò" "øåñòñòîòèí" "øåñòñòîòèíòå" ;
lin n7 = mkDigit "ñåäåì" "ñåäìèíà" "ñåäåì" "ñåäìè" "ñåäåìäåñåò" "ñåäåìñòîòèí" "ñåäåìñòîòèíòå" ;
lin n8 = mkDigit "îñåì" "îñìèíà" "îñåì" "îñìè" "îñåìäåñåò" "îñåìñòîòèí" "îñåìñòîòèíòå" ;
lin n9 = mkDigit "äåâåò" "äåâåòèìà" "äåâåò" "äåâåòè" "äåâåòäåñåò" "äåâåòñòîòèí" "äåâåòñòîòèíòå" ;
lin n2 = mkDigit "два" "двама" "две" "втори" "двайсет" "двеста" "двестата" ;
lin n3 = mkDigit "три" "трима" "три" "трети" "трийсет" "триста" "тристата" ;
lin n4 = mkDigit "четири" "четирима" "четири" "четвърти" "четирийсет" "четиристотин" "четиристотинте" ;
lin n5 = mkDigit "пет" "петима" "пет" "пети" "петдесет" "петстотин" "петстотинте" ;
lin n6 = mkDigit "шест" "шестима" "шест" "шести" "шейсет" "шестстотин" "шестстотинте" ;
lin n7 = mkDigit "седем" "седмина" "седем" "седми" "седемдесет" "седемстотин" "седемстотинте" ;
lin n8 = mkDigit "осем" "осмина" "осем" "осми" "осемдесет" "осемстотин" "осемстотинте" ;
lin n9 = mkDigit "девет" "деветима" "девет" "девети" "деветдесет" "деветстотин" "деветстотинте" ;
lin pot01 =
{s = table {
unit => table {
NCard (CFMasc Indef _) => "åäèí" ;
NCard (CFMasc Def _) => "åäèíèÿ" ;
NCard (CFMascDefNom _) => "åäèíèÿò" ;
NCard (CFFem Indef) => "åäíà" ;
NCard (CFFem Def) => "åäíàòà" ;
NCard (CFNeut Indef) => "åäíî" ;
NCard (CFNeut Def) => "åäíîòî" ;
NCard (CFMasc Indef _) => "един" ;
NCard (CFMasc Def _) => "единия" ;
NCard (CFMascDefNom _) => "единият" ;
NCard (CFFem Indef) => "една" ;
NCard (CFFem Def) => "едната" ;
NCard (CFNeut Indef) => "едно" ;
NCard (CFNeut Def) => "едното" ;
NOrd aform => case aform of {
ASg Masc Indef => "ïúðâè" ;
ASg Masc Def => "ïúðâèÿ" ;
ASgMascDefNom => "ïúðâèÿò" ;
ASg Fem Indef => "ïúðâà" ;
ASg Fem Def => "ïúðâàòà" ;
ASg Neut Indef => "ïúðâî" ;
ASg Neut Def => "ïúðâîòî" ;
APl Indef => "ïúðâè" ;
APl Def => "ïúðâèòå"
ASg Masc Indef => "първи" ;
ASg Masc Def => "първия" ;
ASgMascDefNom => "първият" ;
ASg Fem Indef => "първа" ;
ASg Fem Def => "първата" ;
ASg Neut Indef => "първо" ;
ASg Neut Def => "първото" ;
APl Indef => "първи" ;
APl Def => "първите"
}
} ;
teen nf => case nf of {
Formal => mkCardOrd "åäèíàäåñåò" "åäèíàäåñåòèìà" "åäèíàäåñåò" "åäèíàäåñåòè" ;
Informal => mkCardOrd "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñåò" "åäèíàéñòè"
Formal => mkCardOrd "единадесет" "единадесетима" "единадесет" "единадесети" ;
Informal => mkCardOrd "единайсет" "единайсет" "единайсет" "единайсти"
} ;
ten nf => mkCardOrd "äåñåò" "äåñåòèìà" "äåñåò" "äåñåòè" ;
hundred => mkCardOrd100 "ñòî" "ñòîòå" "ñòîòåí"
ten nf => mkCardOrd "десет" "десетима" "десет" "десети" ;
hundred => mkCardOrd100 "сто" "стоте" "стотен"
}
;n = Sg
} ;
@@ -59,12 +59,12 @@ lin pot1to19 d = {s = \\c,nf => d.s ! teen nf ! c; n = Pl; i = True} ;
lin pot0as1 n = {s = \\c,nf => n.s ! unit ! c; n = n.n; i = True} ;
lin pot1 d = {s = \\c,nf => d.s ! ten nf ! c; n = Pl; i = True} ;
lin pot1plus d e = {
s = \\c,nf => d.s ! ten nf ! NCard (CFMasc Indef NonHuman) ++ "è" ++ e.s ! unit ! c ; n = Pl; i = False} ;
s = \\c,nf => d.s ! ten nf ! NCard (CFMasc Indef NonHuman) ++ "и" ++ e.s ! unit ! c ; n = Pl; i = False} ;
lin pot1as2 n = n ;
lin pot2 n = {s = \\c,nf => n.s ! hundred ! c; n = Pl; i = True} ;
lin pot2plus d e = {
s = \\c,nf => d.s ! hundred ! NCard (CFMasc Indef NonHuman) ++ case e.i of {False => []; True => "è"} ++ e.s ! c ! nf ;
s = \\c,nf => d.s ! hundred ! NCard (CFMasc Indef NonHuman) ++ case e.i of {False => []; True => "и"} ++ e.s ! c ! nf ;
n = Pl ;
i = False
} ;
@@ -72,17 +72,17 @@ lin pot2plus d e = {
lin pot2as3 n = n ;
lin pot3 n = {
s = \\c,nf => case n.n of {
Sg => mkCardOrd100 "õèëÿäà" "õèëÿäàòà" "õèëÿäåí" ! c ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäèòå" "õèëÿäåí" ! c
Sg => mkCardOrd100 "хиляда" "хилядата" "хиляден" ! c ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "хиляди" "хилядите" "хиляден" ! c
} ;
n = Pl
} ;
lin pot3plus n m = {
s = \\c,nf => case n.n of {
Sg => mkCardOrd100 "õèëÿäà" "õèëÿäàòà" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman) ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "õèëÿäè" "õèëÿäèòå" "õèëÿäåí" ! NCard (CFMasc Indef NonHuman)
Sg => mkCardOrd100 "хиляда" "хилядата" "хиляден" ! NCard (CFMasc Indef NonHuman) ;
Pl => n.s ! NCard (CFFem Indef) ! nf ++ mkCardOrd100 "хиляди" "хилядите" "хиляден" ! NCard (CFMasc Indef NonHuman)
}
++ case m.i of {False => []; True => "è"} ++ m.s ! c ! nf ;
++ case m.i of {False => []; True => "и"} ++ m.s ! c ! nf ;
n = Pl
} ;
@@ -101,16 +101,16 @@ lin pot3plus n m = {
tail = inc i.tail
} ;
D_0 = mk3Dig "0" "0" "0åâ" Pl ;
D_1 = mk3Dig "1" "1" "1âè" Sg ;
D_2 = mk2Dig "2" "2ðè" ;
D_0 = mk3Dig "0" "0" "0ев" Pl ;
D_1 = mk3Dig "1" "1" "1ви" Sg ;
D_2 = mk2Dig "2" "2ри" ;
D_3 = mkDig "3" ;
D_4 = mkDig "4" ;
D_5 = mkDig "5" ;
D_6 = mkDig "6" ;
D_7 = mk3Dig "7" "7íà" "7ìè" Pl ;
D_8 = mk3Dig "8" "8íà" "8ìè" Pl ;
D_9 = mk3Dig "9" "9èìà" "9òè" Pl ;
D_7 = mk3Dig "7" "7на" "7ми" Pl ;
D_8 = mk3Dig "8" "8на" "8ми" Pl ;
D_9 = mk3Dig "9" "9има" "9ти" Pl ;
oper
spaceIf : DTail -> Str = \t -> case t of {
@@ -124,8 +124,8 @@ lin pot3plus n m = {
T3 => T1
} ;
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c (c+"ìà") o Pl ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "òè") ;
mk2Dig : Str -> Str -> TDigit = \c,o -> mk3Dig c (c+"ма") o Pl ;
mkDig : Str -> TDigit = \c -> mk2Dig c (c + "ти") ;
mk3Dig : Str -> Str -> Str -> Number -> TDigit = \c1,c2,o,n -> {
s = mkCardOrd c1 c2 c1 o ;
+1057 -1043
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete PhraseBul of Phrase = CatBul ** open Prelude, ResBul in {
flags coding=cp1251 ;
flags coding=utf8 ;
lin
+5 -5
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all_subs ;
@@ -12,7 +12,7 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
let cls = cl.s ! t ! a ! p
in table {
QDir => cls ! Quest ;
QIndir => "àêî" ++ cls ! Main
QIndir => "ако" ++ cls ! Main
} ---- "whether" in ExtEng
} ;
@@ -22,7 +22,7 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
} ;
QuestSlash ip slash =
mkQuestion {s = \\qform => slash.c2.s ++ case slash.c2.c of {Dat=>"íà";_=>[]} ++ ip.s ! (RObj slash.c2.c) ! qform}
mkQuestion {s = \\qform => slash.c2.s ++ case slash.c2.c of {Dat=>"на";_=>[]} ++ ip.s ! (RObj slash.c2.c) ! qform}
{s = slash.s ! (agrP3 ip.gn) } ;
QuestIAdv iadv cl = mkQuestion iadv cl ;
@@ -30,7 +30,7 @@ concrete QuestionBul of Question = CatBul ** open ResBul, Prelude in {
QuestIComp icomp np =
mkQuestion icomp (mkClause (np.s ! RSubj) np.gn np.p (predV verbBe)) ;
PrepIP p ip = {s = \\qform => p.s ++ case p.c of {Dat=>"íà";_=>[]} ++ ip.s ! RSubj ! qform} ;
PrepIP p ip = {s = \\qform => p.s ++ case p.c of {Dat=>"на";_=>[]} ++ ip.s ! RSubj ! qform} ;
AdvIP ip adv = {
s = \\role,qform => ip.s ! role ! qform ++ adv.s ;
+3 -3
View File
@@ -1,13 +1,13 @@
--# -coding=cp1251
--# -coding=utf8
concrete RelativeBul of Relative = CatBul ** open ResBul in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all_subs ;
lin
RelCl cl = {
s = \\t,a,p,agr => suchRP ! agr.gn ++ "֌" ++ cl.s ! t ! a ! p ! Main
s = \\t,a,p,agr => suchRP ! agr.gn ++ "че" ++ cl.s ! t ! a ! p ! Main
} ;
RelVP rp vp = {
+172 -172
View File
@@ -1,5 +1,5 @@
--# -path=.:../abstract:../common:../../prelude
--# -coding=cp1251
--# -coding=utf8
--1 Bulgarian auxiliary operations.
@@ -11,7 +11,7 @@
resource ResBul = ParamX ** open Prelude, Predef in {
flags
coding=cp1251 ; optimize=all ;
coding=utf8 ; optimize=all ;
-- Some parameters, such as $Number$, are inherited from $ParamX$.
@@ -328,149 +328,149 @@ resource ResBul = ParamX ** open Prelude, Predef in {
auxBe : VTable =
table {
VPres Sg P1 => "ñúì" ;
VPres Sg P2 => "ñè" ;
VPres Sg P3 => "å" ;
VPres Pl P1 => "ñìå" ;
VPres Pl P2 => "ñòå" ;
VPres Pl P3 => "ñà" ;
VAorist Sg P1 => "áÿõ" ;
VAorist Sg _ => "áåøå" ;
VAorist Pl P1 => "áÿõìå" ;
VAorist Pl P2 => "áÿõòå" ;
VAorist Pl P3 => "áÿõà" ;
VImperfect Sg P1 => "áÿõ" ;
VImperfect Sg _ => "áåøå" ;
VImperfect Pl P1 => "áÿõìå" ;
VImperfect Pl P2 => "áÿõòå" ;
VImperfect Pl P3 => "áÿõà" ;
VPerfect aform => regAdjective "áèë" ! aform ;
VPluPerfect aform => regAdjective "áèë" ! aform ;
VPassive aform => regAdjective "áúäåí" ! aform ;
VPresPart aform => regAdjective "áúäåù" ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VNoun _ => "áúäåíå";
VGerund => "áèäåéêè"
VPres Sg P1 => "съм" ;
VPres Sg P2 => "си" ;
VPres Sg P3 => "е" ;
VPres Pl P1 => "сме" ;
VPres Pl P2 => "сте" ;
VPres Pl P3 => "са" ;
VAorist Sg P1 => "бях" ;
VAorist Sg _ => "беше" ;
VAorist Pl P1 => "бяхме" ;
VAorist Pl P2 => "бяхте" ;
VAorist Pl P3 => "бяха" ;
VImperfect Sg P1 => "бях" ;
VImperfect Sg _ => "беше" ;
VImperfect Pl P1 => "бяхме" ;
VImperfect Pl P2 => "бяхте" ;
VImperfect Pl P3 => "бяха" ;
VPerfect aform => regAdjective "бил" ! aform ;
VPluPerfect aform => regAdjective "бил" ! aform ;
VPassive aform => regAdjective "бъден" ! aform ;
VPresPart aform => regAdjective "бъдещ" ! aform ;
VImperative Sg => "бъди" ;
VImperative Pl => "бъдете" ;
VNoun _ => "бъдене";
VGerund => "бидейки"
} ;
auxWould : VTable =
table {
VPres Sg P1 => "áúäà" ;
VPres Sg P2 => "áúäåø" ;
VPres Sg P3 => "áúäå" ;
VPres Pl P1 => "áúäåì" ;
VPres Pl P2 => "áúäåòå" ;
VPres Pl P3 => "áúäàò" ;
VAorist Sg P1 => "áÿõ" ;
VAorist Sg _ => "áåøå" ;
VAorist Pl P1 => "áÿõìå" ;
VAorist Pl P2 => "áÿõòå" ;
VAorist Pl P3 => "áÿõà" ;
VImperfect Sg P1 => "áúäåõ" ;
VImperfect Sg _ => "áúäåøå" ;
VImperfect Pl P1 => "áúäåõìå" ;
VImperfect Pl P2 => "áúäåõòå" ;
VImperfect Pl P3 => "áúäåõà" ;
VPerfect aform => regAdjective "áèë" ! aform ;
VPluPerfect aform => regAdjective "áúäåë" ! aform ;
VPassive aform => regAdjective "áúäåí" ! aform ;
VPresPart aform => regAdjective "áúäåù" ! aform ;
VImperative Sg => "áúäè" ;
VImperative Pl => "áúäåòå" ;
VNoun _ => "áúäåíå";
VGerund => "áúäåéêè"
VPres Sg P1 => "бъда" ;
VPres Sg P2 => "бъдеш" ;
VPres Sg P3 => "бъде" ;
VPres Pl P1 => "бъдем" ;
VPres Pl P2 => "бъдете" ;
VPres Pl P3 => "бъдат" ;
VAorist Sg P1 => "бях" ;
VAorist Sg _ => "беше" ;
VAorist Pl P1 => "бяхме" ;
VAorist Pl P2 => "бяхте" ;
VAorist Pl P3 => "бяха" ;
VImperfect Sg P1 => "бъдех" ;
VImperfect Sg _ => "бъдеше" ;
VImperfect Pl P1 => "бъдехме" ;
VImperfect Pl P2 => "бъдехте" ;
VImperfect Pl P3 => "бъдеха" ;
VPerfect aform => regAdjective "бил" ! aform ;
VPluPerfect aform => regAdjective "бъдел" ! aform ;
VPassive aform => regAdjective "бъден" ! aform ;
VPresPart aform => regAdjective "бъдещ" ! aform ;
VImperative Sg => "бъди" ;
VImperative Pl => "бъдете" ;
VNoun _ => "бъдене";
VGerund => "бъдейки"
} ;
auxCond : Number => Person => Str =
table {
Sg => table {
P1 => "áèõ" ;
_ => "áè"
P1 => "бих" ;
_ => "би"
} ;
Pl => table {
P1 => "áèõìå" ;
P2 => "áèõòå" ;
P3 => "áèõà"
P1 => "бихме" ;
P2 => "бихте" ;
P3 => "биха"
}
} ;
verbBe : Verb = {s=table Aspect [auxBe; auxWould] ; vtype=VNormal} ;
reflClitics : Case => Str = table {Acc => "ñå"; Dat => "ñè"; WithPrep => with_Word ++ "ñåáå ñè"; CPrep => "ñåáå ñè"} ;
reflClitics : Case => Str = table {Acc => "се"; Dat => "си"; WithPrep => with_Word ++ "себе си"; CPrep => "себе си"} ;
personalClitics : Agr -> Case => Str = \agr ->
table {
Acc => case agr.gn of {
GSg g => case agr.p of {
P1 => "ìå" ;
P2 => "òå" ;
P1 => "ме" ;
P2 => "те" ;
P3 => case g of {
Masc => "ãî" ;
Fem => "ÿ" ;
Neut => "ãî"
Masc => "го" ;
Fem => "я" ;
Neut => "го"
}
} ;
GPl => case agr.p of {
P1 => "íè" ;
P2 => "âè" ;
P3 => "ãè"
P1 => "ни" ;
P2 => "ви" ;
P3 => "ги"
}
} ;
Dat => case agr.gn of {
GSg g => case agr.p of {
P1 => "ìè" ;
P2 => "òè" ;
P1 => "ми" ;
P2 => "ти" ;
P3 => case g of {
Masc => "ìó" ;
Fem => "é" ;
Neut => "ìó"
Masc => "му" ;
Fem => "й" ;
Neut => "му"
}
} ;
GPl => case agr.p of {
P1 => "íè" ;
P2 => "âè" ;
P3 => "èì"
P1 => "ни" ;
P2 => "ви" ;
P3 => "им"
}
} ;
WithPrep => case agr.gn of {
GSg g => case agr.p of {
P1 => with_Word ++ "ìåí" ;
P2 => with_Word ++ "òåá" ;
P1 => with_Word ++ "мен" ;
P2 => with_Word ++ "теб" ;
P3 => case g of {
Masc => with_Word ++ "íåãî" ;
Fem => with_Word ++ "íåÿ" ;
Neut => with_Word ++ "íåãî"
Masc => with_Word ++ "него" ;
Fem => with_Word ++ "нея" ;
Neut => with_Word ++ "него"
}
} ;
GPl => case agr.p of {
P1 => with_Word ++ "íàñ" ;
P2 => with_Word ++ "âàñ" ;
P3 => with_Word ++ "òÿõ"
P1 => with_Word ++ "нас" ;
P2 => with_Word ++ "вас" ;
P3 => with_Word ++ "тях"
}
} ;
CPrep => case agr.gn of {
GSg g => case agr.p of {
P1 => "ìåí" ;
P2 => "òåá" ;
P1 => "мен" ;
P2 => "теб" ;
P3 => case g of {
Masc => "íåãî" ;
Fem => "íåÿ" ;
Neut => "íåãî"
Masc => "него" ;
Fem => "нея" ;
Neut => "него"
}
} ;
GPl => case agr.p of {
P1 => "íàñ" ;
P2 => "âàñ" ;
P3 => "òÿõ"
P1 => "нас" ;
P2 => "вас" ;
P3 => "тях"
}
}
} ;
ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "à","ú","î" or "ó"
ia2e : Str -> Str = -- to be used when the next syllable has vowel different from "а","ъ","о" or "у"
\s -> case s of {
x@(_*+_) + "ÿ" + y@(("á"|"â"|"ã"|"ä"|"æ"|"ç"|"ê"|"ë"|"ì"|"í"|"ï"|"ð"|"ñ"|"ò"|"ô"|"õ"|"ö"|"÷"|"ø")*)
=> x+"å"+y;
x + "я" + y@(["бвгджзклмнпрстфхцчш"]*)
=> x+"е"+y;
_ => s
};
@@ -478,19 +478,19 @@ resource ResBul = ParamX ** open Prelude, Predef in {
\base ->
let base0 : Str
= case base of {
x+"è" => x;
x+"и" => x;
x => x
}
in table {
ASg Masc Indef => base ;
ASg Masc Def => (base0+"èÿ") ;
ASgMascDefNom => (base0+"èÿò") ;
ASg Fem Indef => (base0+"à") ;
ASg Fem Def => (base0+"àòà") ;
ASg Neut Indef => (base0+"î") ;
ASg Neut Def => (base0+"îòî") ;
APl Indef => (ia2e base0+"è") ;
APl Def => (ia2e base0+"èòå")
ASg Masc Def => (base0+"ия") ;
ASgMascDefNom => (base0+"ият") ;
ASg Fem Indef => (base0+"а") ;
ASg Fem Def => (base0+"ата") ;
ASg Neut Indef => (base0+"о") ;
ASg Neut Def => (base0+"ото") ;
APl Indef => (ia2e base0+"и") ;
APl Def => (ia2e base0+"ите")
};
-- For $Sentence$.
@@ -545,37 +545,37 @@ resource ResBul = ParamX ** open Prelude, Predef in {
_ => auxPres++s++clitic.s
} ;
li0 = case <verb.ad.isEmpty,q0> of {<False,True> => "ëè"; _ => []} ;
li0 = case <verb.ad.isEmpty,q0> of {<False,True> => "ли"; _ => []} ;
q = case verb.ad.isEmpty of {True => q0; False => False} ;
li = case q of {True => "ëè"; _ => []} ;
li = case q of {True => "ли"; _ => []} ;
vf1 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case q of {True => {s1=[]; s2="ëè"++apc []};
Pos => case q of {True => {s1=[]; s2="ли"++apc []};
False => {s1=apc []; s2=[]}} ;
Neg => {s1="íå"++apc li; s2=[]}
Neg => {s1="не"++apc li; s2=[]}
} ;
vf2 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => case q of {True => {s1=[]; s2="ëè"++s};
Pos => case q of {True => {s1=[]; s2="ли"++s};
False => {s1=s; s2=[]}} ;
Neg => case verb.vtype of
{VNormal => {s1="íå"++s; s2=li} ;
_ => {s1="íå"++s++li; s2=[]}}
{VNormal => {s1="не"++s; s2=li} ;
_ => {s1="не"++s++li; s2=[]}}
} ;
vf3 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => {s1="ùå"++s; s2=li} ;
Neg => {s1="íÿìà"++li++"äà"++s; s2=[]}
Pos => {s1="ще"++s; s2=li} ;
Neg => {s1="няма"++li++"да"++s; s2=[]}
} ;
vf4 : Str -> {s1 : Str; s2 : Str} = \s ->
case p of {
Pos => {s1= s++li++clitic.s; s2=[]} ;
Neg => {s1="íå"++s++li++clitic.s; s2=[]}
Neg => {s1="не"++s++li++clitic.s; s2=[]}
} ;
verbs : {aux:{s1:Str; s2:Str}; main:Str} =
@@ -600,8 +600,8 @@ resource ResBul = ParamX ** open Prelude, Predef in {
VPhrasal Dat => {s=personalClitics agr ! Dat++vp.clitics; agr={gn=GSg Neut; p=P3}} ;
VPhrasal c => {s=vp.clitics++personalClitics agr ! c; agr={gn=GSg Neut; p=P3}}
} ;
pol = case p of {Pos => ""; Neg => "íå"}
in vp.ad.s ++ "äà" ++ pol ++ clitic.s ++
pol = case p of {Pos => ""; Neg => "не"}
in vp.ad.s ++ "да" ++ pol ++ clitic.s ++
case a of {
Simul => vp.s ! asp ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ;
Anter => auxBe ! VPres (numGenNum clitic.agr.gn) clitic.agr.p ++
@@ -629,10 +629,10 @@ resource ResBul = ParamX ** open Prelude, Predef in {
linCase : Case -> Polarity -> Str =
\c,p -> case c of {
Acc => "" ;
Dat => "íà" ;
Dat => "на" ;
WithPrep => case p of {
Pos => with_Word ;
Neg => "áåç"
Neg => "без"
} ;
CPrep => ""
} ;
@@ -656,17 +656,17 @@ resource ResBul = ParamX ** open Prelude, Predef in {
{s = table {
unit => mkCardOrd dva dvama dve vtori ;
teen nf => case nf of {
Formal => mkCardOrd (dva+"íàäåñåò") (dva+"íàäåñåòèìà") (dva+"íàäåñåò") (dva+"íàäåñåòè") ;
Informal => mkCardOrd (dva+"íàéñåò") (dva+"íàéñåò") (dva+"íàéñåò") (dva+"íàéñòè")
Formal => mkCardOrd (dva+"надесет") (dva+"надесетима") (dva+"надесет") (dva+"надесети") ;
Informal => mkCardOrd (dva+"найсет") (dva+"найсет") (dva+"найсет") (dva+"найсти")
} ;
ten nf => case nf of {
Formal => mkCardOrd (dva+"äåñåò") (dva+"äåñåòèìà") (dva+"äåñåò") (dva+"äåñåòè") ;
Informal => mkCardOrd dvaiset dvaiset dvaiset (dvaiset+"è")
Formal => mkCardOrd (dva+"десет") (dva+"десетима") (dva+"десет") (dva+"десети") ;
Informal => mkCardOrd dvaiset dvaiset dvaiset (dvaiset+"и")
} ;
hundred => let dvesten : Str
= case dvesta of {
dvest+"à" => dvest+"åí" ;
chetiristot+"èí" => chetiristot+"åí"
dvest+"а" => dvest+"ен" ;
chetiristot+"ин" => chetiristot+"ен"
}
in mkCardOrd100 dvesta dvestata dvesten
}
@@ -676,19 +676,19 @@ resource ResBul = ParamX ** open Prelude, Predef in {
\dva, dvama, dve, vtori ->
table {
NCard dg => digitGenderSpecies dva dvama dve ! dg ;
NOrd aform => let vtora : Str = case vtori of {_+"â" => vtori; _ => init vtori} + "à" ;
vtoro : Str = case vtori of {_+"â" => vtori; _ => init vtori} + "î";
i : Str = case vtori of {_+"â" => "è"; _ => ""}
NOrd aform => let vtora : Str = case vtori of {_+"в" => vtori; _ => init vtori} + "а" ;
vtoro : Str = case vtori of {_+"в" => vtori; _ => init vtori} + "о";
i : Str = case vtori of {_+"в" => "и"; _ => ""}
in case aform of {
ASg Masc Indef => vtori ;
ASg Masc Def => vtori+i+"ÿ" ;
ASgMascDefNom => vtori+i+"ÿò" ;
ASg Masc Def => vtori+i+"я" ;
ASgMascDefNom => vtori+i+"ят" ;
ASg Fem Indef => vtora ;
ASg Fem Def => vtora+"òà" ;
ASg Fem Def => vtora+"та" ;
ASg Neut Indef => vtoro ;
ASg Neut Def => vtoro+"òî" ;
ASg Neut Def => vtoro+"то" ;
APl Indef => vtori+i ;
APl Def => vtori+i+"òå"
APl Def => vtori+i+"те"
}
} ;
@@ -705,14 +705,14 @@ resource ResBul = ParamX ** open Prelude, Predef in {
NOrd aform => let stotn = init (init stoten) + last stoten ;
in case aform of {
ASg Masc Indef => stoten ;
ASg Masc Def => stotn+"èÿ" ;
ASgMascDefNom => stotn+"èÿò" ;
ASg Fem Indef => stotn+"à" ;
ASg Fem Def => stotn+"àòà" ;
ASg Neut Indef => stotn+"î" ;
ASg Neut Def => stotn+"îòî" ;
APl Indef => stotn+"è" ;
APl Def => stotn+"èòå"
ASg Masc Def => stotn+"ия" ;
ASgMascDefNom => stotn+"ият" ;
ASg Fem Indef => stotn+"а" ;
ASg Fem Def => stotn+"ата" ;
ASg Neut Indef => stotn+"о" ;
ASg Neut Def => stotn+"ото" ;
APl Indef => stotn+"и" ;
APl Def => stotn+"ите"
}
} ;
@@ -720,12 +720,12 @@ resource ResBul = ParamX ** open Prelude, Predef in {
\dva, dvama, dve
-> let addDef : Str -> Gender -> Str =
\s,g -> case s of {
dves+"òà" => dves+"òàòå" ;
dv+"à" => dv+"àòà" ;
"0" => s+"òà" ;
"1" => s+case g of {Masc => "ÿò"; Fem => "òà"; Neut => "òî"} ;
"2" => s+case g of {Masc => "òà"; _ => "òå"} ;
x => x+"òå"
dves+"та" => dves+"тате" ;
dv+"а" => dv+"ата" ;
"0" => s+"та" ;
"1" => s+case g of {Masc => "ят"; Fem => "та"; Neut => "то"} ;
"2" => s+case g of {Masc => "та"; _ => "те"} ;
x => x+"те"
}
in table {
CFMasc Indef NonHuman => dva ;
@@ -743,19 +743,19 @@ resource ResBul = ParamX ** open Prelude, Predef in {
mkIP : Str -> Str -> GenNum -> {s : Role => QForm => Str ; gn : GenNum} =
\koi,kogo,gn -> {
s = table {
RSubj => table QForm [koi; koi+"òî"] ;
RObj Acc => table QForm [kogo; kogo+"òî"] ;
RObj Dat => table QForm ["íà" ++ kogo; "íà" ++ kogo+"òî"] ;
RObj WithPrep => table QForm [with_Word ++ kogo; with_Word ++ kogo+"òî"] ;
RObj CPrep => table QForm [kogo; kogo+"òî"] ;
RVoc => table QForm [koi; koi+"òî"]
RSubj => table QForm [koi; koi+"то"] ;
RObj Acc => table QForm [kogo; kogo+"то"] ;
RObj Dat => table QForm ["на" ++ kogo; "на" ++ kogo+"то"] ;
RObj WithPrep => table QForm [with_Word ++ kogo; with_Word ++ kogo+"то"] ;
RObj CPrep => table QForm [kogo; kogo+"то"] ;
RVoc => table QForm [koi; koi+"то"]
} ;
gn = gn
} ;
with_Word : Str
= pre { "ñ" ;
"ñúñ" / strs {"ñ" ; "ç" ; "Ñ" ; "Ç"}
= pre { "с" ;
"със" / strs {"с" ; "з" ; "С" ; "З"}
} ;
mkPron : (az,moj,moia,moiat,moia_,moiata,moe,moeto,moi,moite : Str) ->
@@ -812,43 +812,43 @@ resource ResBul = ParamX ** open Prelude, Predef in {
whichRP : GenNum => Str
= table {
GSg Masc => "êîéòî" ;
GSg Fem => "êîÿòî" ;
GSg Neut => "êîåòî" ;
GPl => "êîèòî"
GSg Masc => "който" ;
GSg Fem => "която" ;
GSg Neut => "което" ;
GPl => "които"
} ;
suchRP : GenNum => Str
= table {
GSg Masc => "òàêúâ" ;
GSg Fem => "òàêàâà" ;
GSg Neut => "òàêîâà" ;
GPl => "òàêèâà"
GSg Masc => "такъв" ;
GSg Fem => "такава" ;
GSg Neut => "такова" ;
GPl => "такива"
} ;
thisRP : GenNum => Str
= table {
GSg Masc => "òîçè" ;
GSg Fem => "òaçè" ;
GSg Neut => "òîâà" ;
GPl => "òåçè"
GSg Masc => "този" ;
GSg Fem => "тaзи" ;
GSg Neut => "това" ;
GPl => "тези"
} ;
linCoord : Str -> Ints 4 => Str ;
linCoord comma = table {0 => "è"; 1=>"èëè"; 2=>"íèòî"; 3=>comma; 4=>[]} ;
linCoord comma = table {0 => "и"; 1=>"или"; 2=>"нито"; 3=>comma; 4=>[]} ;
hyphen : Str = SOFT_BIND ++ "-" ++ SOFT_BIND ;
reflPron : AForm => Str =
table {
ASg Masc Indef => "ñâîé" ;
ASg Masc Def => "ñâîÿ" ;
ASgMascDefNom => "ñâîÿò" ;
ASg Fem Indef => "ñâîÿ" ;
ASg Fem Def => "ñâîÿòà" ;
ASg Neut Indef => "ñâîå" ;
ASg Neut Def => "ñâîåòî" ;
APl Indef => "ñâîè" ;
APl Def => "ñâîèòå"
ASg Masc Indef => "свой" ;
ASg Masc Def => "своя" ;
ASgMascDefNom => "своят" ;
ASg Fem Indef => "своя" ;
ASg Fem Def => "своята" ;
ASg Neut Indef => "свое" ;
ASg Neut Def => "своето" ;
APl Indef => "свои" ;
APl Def => "своите"
} ;
}
+9 -5
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all_subs ;
@@ -27,10 +27,14 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
}
in case orPol p vp.p of {
Pos => vp.ad.s ++ verb Perf ++ clitic ;
Neg => "íå" ++ vp.ad.s ++ clitic ++ verb Imperf
Neg => "не" ++ vp.ad.s ++ clitic ++ verb Imperf
} ++ compl ;
} ;
AdvImp adv imp = {
s = \\pol,gennum => adv.s ++ imp.s ! pol ! gennum
} ;
SlashVP np slash = {
s = \\agr => (mkClause (np.s ! RSubj) np.gn np.p {s = slash.s ;
ad = slash.ad ;
@@ -51,11 +55,11 @@ concrete SentenceBul of Sentence = CatBul ** open Prelude, ResBul in {
SlashVS np vs slash = {
s = \\agr => (mkClause (np.s ! RSubj) np.gn np.p
(insertObj (\\_ => "֌" ++ slash.s ! agr) Pos (predV vs))).s ;
(insertObj (\\_ => "че" ++ slash.s ! agr) Pos (predV vs))).s ;
c2 = slash.c2
} ;
EmbedS s = {s = "֌" ++ s.s} ;
EmbedS s = {s = "че" ++ s.s} ;
EmbedQS qs = {s = qs.s ! QIndir} ;
EmbedVP vp = {s = daComplex Simul vp.p vp ! Perf ! agrP3 (GSg Masc)} ;
+107 -107
View File
@@ -1,132 +1,132 @@
--# -coding=cp1251
--# -coding=utf8
concrete StructuralBul of Structural = CatBul **
open MorphoBul, ParadigmsBul, Prelude, (X = ConstructX) in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all ;
lin
above_Prep = mkPrep "íàä" ;
after_Prep = mkPrep "ñëåä" ;
all_Predet = {s = table GenNum ["âñè÷êèÿ";"âñè÷êàòà";"âñè÷êîòî";"âñè÷êèòå"]} ;
almost_AdA, almost_AdN = ss "ïî÷òè" ;
at_least_AdN, at_most_AdN = ss "ïî÷òè" ; ---- AR
although_Subj = ss ["âúïðåêè ÷å"] ;
always_AdV = mkAdV "âèíàãè" ;
and_Conj = mkConj "è" Pl ;
because_Subj = ss "çàùîòî" ;
before_Prep = mkPrep "ïðåäè" ;
behind_Prep = mkPrep "çàä" ;
between_Prep = mkPrep "ìåæäó" ;
both7and_DConj = mkConj "è" Pl ** {sep=0} ;
but_PConj = ss "íî" ;
by8agent_Prep = mkPrep "÷ðåç" ;
by8means_Prep = mkPrep "÷ðåç" ;
can8know_VV, can_VV = mkVV (stateV (mkV166 "ìîãà")) ;
during_Prep = mkPrep ["ïî âðåìå íà"] ;
either7or_DConj = mkConj "èëè" Sg ** {sep=1} ;
everybody_NP = mkNP "âñåêè" (GSg Masc) (NounP3 Pos);
every_Det = mkDeterminerSg "âñåêè" "âñÿêà" "âñÿêî";
everything_NP = mkNP "âñè÷êî" (GSg Neut) (NounP3 Pos);
everywhere_Adv = ss "íàâñÿêúäå" ;
few_Det = {s = \\_,_,_ => "íÿêîëêî"; nn = NCountable; spec = Indef; p = Pos} ;
above_Prep = mkPrep "над" ;
after_Prep = mkPrep "след" ;
all_Predet = {s = table GenNum ["всичкия";"всичката";"всичкото";"всичките"]} ;
almost_AdA, almost_AdN = ss "почти" ;
at_least_AdN, at_most_AdN = ss "почти" ; ---- AR
although_Subj = ss ["въпреки че"] ;
always_AdV = mkAdV "винаги" ;
and_Conj = mkConj "и" Pl ;
because_Subj = ss "защото" ;
before_Prep = mkPrep "преди" ;
behind_Prep = mkPrep "зад" ;
between_Prep = mkPrep "между" ;
both7and_DConj = mkConj "и" Pl ** {sep=0} ;
but_PConj = ss "но" ;
by8agent_Prep = mkPrep "чрез" ;
by8means_Prep = mkPrep "чрез" ;
can8know_VV, can_VV = mkVV (stateV (mkV166 "мога")) ;
during_Prep = mkPrep ["по време на"] ;
either7or_DConj = mkConj "или" Sg ** {sep=1} ;
everybody_NP = mkNP "всеки" (GSg Masc) (NounP3 Pos);
every_Det = mkDeterminerSg "всеки" "всяка" "всяко";
everything_NP = mkNP "всичко" (GSg Neut) (NounP3 Pos);
everywhere_Adv = ss "навсякъде" ;
few_Det = {s = \\_,_,_ => "няколко"; nn = NCountable; spec = Indef; p = Pos} ;
--- first_Ord = ss "first" ; DEPRECATED
for_Prep = mkPrep "çà" ;
from_Prep = mkPrep "îò" ;
he_Pron = mkPron "òîé" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Masc) PronP3 ;
here_Adv = ss "òóê" ;
here7to_Adv = ss ["äî òóê"] ;
here7from_Adv = ss ["îò òóê"] ;
how_IAdv = mkIAdv "êàê" ;
how8much_IAdv = mkIAdv "êîëêî" ;
how8many_IDet = {s = \\_ => table QForm ["êîëêî";"êîëêîòî"]; n = Pl; nonEmpty = False} ;
if_Subj = ss "àêî" ;
in8front_Prep = mkPrep "ïðåä" ;
i_Pron = mkPron "àç" "ìîé" "ìîÿ" "ìîÿò" "ìîÿ" "ìîÿòà" "ìîå" "ìîåòî" "ìîè" "ìîèòå" (GSg Masc) PronP1 ;
in_Prep = mkPrep (pre { "â" ;
"âúâ" / strs {"â" ; "ô" ; "Â" ; "Ô"}
for_Prep = mkPrep "за" ;
from_Prep = mkPrep "от" ;
he_Pron = mkPron "той" "негов" "неговия" "неговият" "негова" "неговата" "негово" "неговото" "негови" "неговите" (GSg Masc) PronP3 ;
here_Adv = ss "тук" ;
here7to_Adv = ss ["до тук"] ;
here7from_Adv = ss ["от тук"] ;
how_IAdv = mkIAdv "как" ;
how8much_IAdv = mkIAdv "колко" ;
how8many_IDet = {s = \\_ => table QForm ["колко";"колкото"]; n = Pl; nonEmpty = False} ;
if_Subj = ss "ако" ;
in8front_Prep = mkPrep "пред" ;
i_Pron = mkPron "аз" "мой" "моя" "моят" "моя" "моята" "мое" "моето" "мои" "моите" (GSg Masc) PronP1 ;
in_Prep = mkPrep (pre { "в" ;
"във" / strs {"в" ; "ф" ; "В" ; "Ф"}
}) ;
it_Pron = mkPron "òî" "íåãîâ" "íåãîâèÿ" "íåãîâèÿò" "íåãîâà" "íåãîâàòà" "íåãîâî" "íåãîâîòî" "íåãîâè" "íåãîâèòå" (GSg Neut) PronP3 ;
less_CAdv = X.mkCAdv "ïî-ìàëêî" "îò" ;
many_Det = mkDeterminerPl "ìíîãî" ;
more_CAdv = X.mkCAdv "ïîâå÷å" "îò" ;
most_Predet = {s = \\_ => "ïîâå÷åòî"} ;
much_Det = mkDeterminerSg "ìíîãî" "ìíîãî" "ìíîãî";
it_Pron = mkPron "то" "негов" "неговия" "неговият" "негова" "неговата" "негово" "неговото" "негови" "неговите" (GSg Neut) PronP3 ;
less_CAdv = X.mkCAdv "по-малко" "от" ;
many_Det = mkDeterminerPl "много" ;
more_CAdv = X.mkCAdv "повече" "от" ;
most_Predet = {s = \\_ => "повечето"} ;
much_Det = mkDeterminerSg "много" "много" "много";
must_VV =
mkVV {
s = \\_=>table {
VPres _ _ => "òðÿáâà" ;
VAorist _ _ => "òðÿáâàøå" ;
VImperfect _ _ => "òðÿáâàëî" ;
VPerfect _ => "òðÿáâàëî" ;
VPluPerfect _ => "òðÿáâàëî" ;
VPassive _ => "òðÿáâàëî" ;
VPresPart _ => "òðÿáâàëî" ;
VImperative Sg => "òðÿáâàé" ;
VImperative Pl => "òðÿáâàéòå" ;
VNoun _ => "òðÿáâàíå" ;
VGerund => "òðÿáâàéêè"
VPres _ _ => "трябва" ;
VAorist _ _ => "трябваше" ;
VImperfect _ _ => "трябвало" ;
VPerfect _ => "трябвало" ;
VPluPerfect _ => "трябвало" ;
VPassive _ => "трябвало" ;
VPresPart _ => "трябвало" ;
VImperative Sg => "трябвай" ;
VImperative Pl => "трябвайте" ;
VNoun _ => "трябване" ;
VGerund => "трябвайки"
} ;
vtype=VNormal ;
lock_V=<>
} ;
no_Utt = ss "íå" ;
on_Prep = mkPrep "íà" ;
no_Utt = ss "не" ;
on_Prep = mkPrep "на" ;
---- one_Quant = mkDeterminer Sg "one" ; -- DEPRECATED
only_Predet = {s = \\_ => "ñàìî"} ;
or_Conj = mkConj "èëè" Sg ;
otherwise_PConj = ss "èíà÷å" ;
part_Prep = mkPrep "îò" ;
please_Voc = ss "ìîëÿ" ;
only_Predet = {s = \\_ => "само"} ;
or_Conj = mkConj "или" Sg ;
otherwise_PConj = ss "иначе" ;
part_Prep = mkPrep "от" ;
please_Voc = ss "моля" ;
possess_Prep = mkPrep [] Dat ;
quite_Adv = ss "äîñòà" ;
she_Pron = mkPron "òÿ" "íåèí" "íåéíèÿ" "íåéíèÿò" "íåéíà" "íåéíàòà" "íåéíî" "íåéíîòî" "íåéíè" "íåéíèòå" (GSg Fem) PronP3 ;
so_AdA = ss "òîëêîâà" ;
somebody_NP = mkNP "íÿêîé" (GSg Masc) (NounP3 Pos);
someSg_Det = mkDeterminerSg "íÿêîé" "íÿêîÿ" "íÿêîå" ;
somePl_Det = mkDeterminerPl "íÿêîè" ;
something_NP = mkNP "íåùî" (GSg Neut) (NounP3 Pos);
somewhere_Adv = ss "íÿêúäå" ;
that_Quant = mkQuant "îíçè" "îíàçè" "îíîâà" "îíåçè" ;
that_Subj = ss "֌" ;
there_Adv = ss "òàì" ;
there7to_Adv = ss ["äî òàì"] ;
there7from_Adv = ss ["îò òàì"] ;
therefore_PConj = ss ["òàêà ÷å"] ;
they_Pron = mkPron "òå" "òåõåí" "òåõíèÿ" "òåõíèÿò" "òÿõíà" "òÿõíàòà" "òÿõíî" "òÿõíîòî" "òåõíè" "òåõíèòå" GPl PronP3 ;
this_Quant = mkQuant "òîçè" "òàçè" "òîâà" "òåçè" ;
through_Prep = mkPrep "ïðåç" ;
too_AdA = ss "ïðåêàëåíî" ;
to_Prep = mkPrep "äî" ;
under_Prep = mkPrep "ïîä" ;
very_AdA = ss "ìíîãî" ;
want_VV = mkVV (stateV (mkV186 "èñêàì")) ;
we_Pron = mkPron "íèå" "íàø" "íàøèÿ" "íàøèÿò" "íàøà" "íàøàòà" "íàøå" "íàøåòî" "íàøè" "íàøèòå" GPl PronP1 ;
whatPl_IP = mkIP "êàêâè" "êàêâè" GPl ;
whatSg_IP = mkIP "êàêúâ" "êàêúâ" (GSg Masc) ;
when_IAdv = mkIAdv "êîãà" ;
when_Subj = ss "êîãàòî" ;
where_IAdv = mkIAdv "êúäå" ;
which_IQuant = {s = table GenNum [table QForm ["êîé";"êîéòî"];
table QForm ["êîÿ";"êîÿòî"];
table QForm ["êîå";"êîåòî"];
table QForm ["êîè";"êîèòî"]]} ;
whoSg_IP = mkIP "êîé" "êîãî" (GSg Masc) ;
whoPl_IP = mkIP "êîè" "êîè" GPl ;
why_IAdv = mkIAdv "çàùî" ;
without_Prep = mkPrep "áåç" ;
quite_Adv = ss "доста" ;
she_Pron = mkPron "тя" "неин" "нейния" "нейният" "нейна" "нейната" "нейно" "нейното" "нейни" "нейните" (GSg Fem) PronP3 ;
so_AdA = ss "толкова" ;
somebody_NP = mkNP "някой" (GSg Masc) (NounP3 Pos);
someSg_Det = mkDeterminerSg "някой" "някоя" "някое" ;
somePl_Det = mkDeterminerPl "някои" ;
something_NP = mkNP "нещо" (GSg Neut) (NounP3 Pos);
somewhere_Adv = ss "някъде" ;
that_Quant = mkQuant "онзи" "онази" "онова" "онези" ;
that_Subj = ss "че" ;
there_Adv = ss "там" ;
there7to_Adv = ss ["до там"] ;
there7from_Adv = ss ["от там"] ;
therefore_PConj = ss ["така че"] ;
they_Pron = mkPron "те" "техен" "техния" "техният" "тяхна" "тяхната" "тяхно" "тяхното" "техни" "техните" GPl PronP3 ;
this_Quant = mkQuant "този" "тази" "това" "тези" ;
through_Prep = mkPrep "през" ;
too_AdA = ss "прекалено" ;
to_Prep = mkPrep "до" ;
under_Prep = mkPrep "под" ;
very_AdA = ss "много" ;
want_VV = mkVV (stateV (mkV186 "искам")) ;
we_Pron = mkPron "ние" "наш" "нашия" "нашият" "наша" "нашата" "наше" "нашето" "наши" "нашите" GPl PronP1 ;
whatPl_IP = mkIP "какви" "какви" GPl ;
whatSg_IP = mkIP "какъв" "какъв" (GSg Masc) ;
when_IAdv = mkIAdv "кога" ;
when_Subj = ss "когато" ;
where_IAdv = mkIAdv "къде" ;
which_IQuant = {s = table GenNum [table QForm ["кой";"който"];
table QForm ["коя";"която"];
table QForm ["кое";"което"];
table QForm ["кои";"които"]]} ;
whoSg_IP = mkIP "кой" "кого" (GSg Masc) ;
whoPl_IP = mkIP "кои" "кои" GPl ;
why_IAdv = mkIAdv "защо" ;
without_Prep = mkPrep "без" ;
with_Prep = mkPrep "" WithPrep ;
yes_Utt = ss "äà" ;
youSg_Pron = mkPron "òè" "òâîé" "òâîÿ" "òâîÿò" "òâîÿ" "òâîÿòà" "òâîå" "òâîåòî" "òâîè" "òâîèòå" (GSg Masc) PronP2 ;
youPl_Pron = mkPron "âèå" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl PronP2 ;
youPol_Pron = mkPron "âèå" "âàø" "âàøèÿ" "âàøèÿò" "âàøà" "âàøàòà" "âàøå" "âàøåòî" "âàøè" "âàøèòå" GPl PronP2 ;
yes_Utt = ss "да" ;
youSg_Pron = mkPron "ти" "твой" "твоя" "твоят" "твоя" "твоята" "твое" "твоето" "твои" "твоите" (GSg Masc) PronP2 ;
youPl_Pron = mkPron "вие" "ваш" "вашия" "вашият" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" GPl PronP2 ;
youPol_Pron = mkPron "вие" "ваш" "вашия" "вашият" "ваша" "вашата" "ваше" "вашето" "ваши" "вашите" GPl PronP2 ;
as_CAdv = X.mkCAdv [] "êîëêîòî" ;
as_CAdv = X.mkCAdv [] "колкото" ;
have_V2 = dirV2 (stateV (mkV186 "èìàì")) ;
have_V2 = dirV2 (stateV (mkV186 "имам")) ;
lin language_title_Utt = ss "Áúëãàðñêè" ;
lin language_title_Utt = ss "Български" ;
}
+16 -16
View File
@@ -1,16 +1,16 @@
--# -path=.:../abstract:../common:../prelude
--# -coding=cp1251
--# -coding=utf8
concrete SymbolBul of Symbol = CatBul ** open Prelude, ResBul in {
flags
coding = cp1251 ;
coding = utf8 ;
lin
SymbPN i = {s = i.s ; g = Neut} ;
IntPN i = {s = i.s ; g = Neut} ;
FloatPN i = {s = i.s ; g = Neut} ;
NumPN i = {s = i.s ! CFNeut Indef ; g = Neut} ;
SymbPN i = {s = i.s ; gn = GSg Neut} ;
IntPN i = {s = i.s ; gn = GSg Neut} ;
FloatPN i = {s = i.s ; gn = GSg Neut} ;
NumPN i = {s = i.s ! CFNeut Indef ; gn = GSg Neut} ;
CNIntNP cn i = {
s = \\c => cn.s ! NF Sg Indef ++ i.s ;
gn = gennum cn.g Sg ;
@@ -32,15 +32,15 @@ lin
SymbNum sy = {s = \\_ => sy.s; nn = NNum Pl} ;
SymbOrd sy = {s = \\aform => sy.s ++ "-" ++
case aform of {
ASg Masc Indef => "òè" ;
ASg Fem Indef => "òà" ;
ASg Neut Indef => "òî" ;
ASg Masc Def => "òèÿ" ;
ASg Fem Def => "òàòà" ;
ASg Neut Def => "òîòî" ;
ASgMascDefNom => "òèÿò" ;
APl Indef => "òè" ;
APl Def => "òèòå"
ASg Masc Indef => "ти" ;
ASg Fem Indef => "та" ;
ASg Neut Indef => "то" ;
ASg Masc Def => "тия" ;
ASg Fem Def => "тата" ;
ASg Neut Def => "тото" ;
ASgMascDefNom => "тият" ;
APl Indef => "ти" ;
APl Def => "тите"
}
} ;
@@ -52,7 +52,7 @@ lin
MkSymb s = s ;
BaseSymb = infixSS "è" ;
BaseSymb = infixSS "и" ;
ConsSymb = infixSS bindComma ;
}
+2 -2
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete TextBul of Text = CatBul ** open Prelude in {
flags coding=cp1251 ;
flags coding=utf8 ;
-- This will work for almost all languages except Spanish.
+4 -4
View File
@@ -1,6 +1,6 @@
--# -coding=cp1251
--# -coding=utf8
concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
flags coding=cp1251 ;
flags coding=utf8 ;
flags optimize=all_subs ;
@@ -39,7 +39,7 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
}) vp.p
(predV vv) ;
ComplVS v s = insertObj (\\_ => bindComma ++ "֌" ++ s.s) Pos (predV v) ;
ComplVS v s = insertObj (\\_ => bindComma ++ "че" ++ s.s) Pos (predV v) ;
ComplVQ v q = insertObj (\\_ => q.s ! QDir) Pos (predV v) ;
ComplVA v ap =
@@ -50,7 +50,7 @@ concrete VerbBul of Verb = CatBul ** open Prelude, ResBul, ParadigmsBul in {
insertSlashObj2 (\\a => v.c3.s ++ ap.s ! aform a.gn Indef (RObj Acc) ! a.p) Pos (slashV v v.c2 v.subjCtrl) ;
-- test: I saw a boy to whom she said that they are here
SlashV2S v s = insertSlashObj2 (\\_ => bindComma ++ "֌" ++ s.s) Pos (slashV v v.c2 False) ;
SlashV2S v s = insertSlashObj2 (\\_ => bindComma ++ "че" ++ s.s) Pos (slashV v v.c2 False) ;
-- test: I saw a boy whom she asked who is here
SlashV2Q v q = insertSlashObj2 (\\_ => q.s ! QDir) Pos (slashV v v.c2 False) ;
+65 -1
View File
@@ -1741,6 +1741,71 @@ VP (Imp Sg P1) => nonExist
}
} ;
oper tossir_31b : Str -> Verbum = \tossir ->
let t_ = Predef.tk 5 tossir in
{s = table {
VI Infn => t_ + "ossir" ;
VI Ger => t_ + "ossint" ;
VP (Pres Ind Pl P1) => t_ + "ossim" ;
VP (Pres Ind Sg P1) => t_ + "usso" ;
VP (Pres Ind Pl P2) => t_ + "ossiu" ;
VP (Pres Ind Sg P2) => t_ + "usses" ;
VP (Pres Ind Pl P3) => t_ + "ussen" ;
VP (Pres Ind Sg P3) => t_ + "us" ;
VP (Pres Sub Pl P1) => t_ + "ossim" ;
VP (Pres Sub Sg P1) => t_ + "ussi" ;
VP (Pres Sub Pl P2) => t_ + "ossiu" ;
VP (Pres Sub Sg P2) => t_ + "ussis" ;
VP (Pres Sub Pl P3) => t_ + "ussin" ;
VP (Pres Sub Sg P3) => t_ + "ussi" ;
VP (Impf Ind Pl P1) => t_ + "ossíem" ;--# notpresent
VP (Impf Ind Sg P1) => t_ + "ossia" ;--# notpresent
VP (Impf Ind Pl P2) => t_ + "ossíeu" ;--# notpresent
VP (Impf Ind Sg P2) => t_ + "ossies" ;--# notpresent
VP (Impf Ind Pl P3) => t_ + "ossien" ;--# notpresent
VP (Impf Ind Sg P3) => t_ + "ossia" ;--# notpresent
VP (Impf Sub Pl P1) => t_ + "ossíssim" ;--# notpresent
VP (ImpfSubPlE P1) => t_ + "ossíssem" ;--# notpresent
VP (Impf Sub Sg P1) => t_ + "ossís" ;--# notpresent
VP (Impf Sub Pl P2) => t_ + "ossíssiu" ;--# notpresent
VP (ImpfSubPlE P2) => t_ + "ossísseu" ;--# notpresent
VP (Impf Sub Sg P2) => t_ + "ossissis" ;--# notpresent
VP ImpfSubSgE => t_ + "ossisses" ;--# notpresent
VP (Impf Sub Pl P3) => t_ + "ossissin" ;--# notpresent
VP (ImpfSubPlE P3) => t_ + "ossissen" ;--# notpresent
VP (Impf Sub Sg P3) => t_ + "ossís" ;--# notpresent
VP (Fut Pl P1) => t_ + "ossirem" ;--# notpresent
VP (Fut Sg P1) => t_ + "ossiré" ;--# notpresent
VP (Fut Pl P2) => t_ + "ossireu" ;--# notpresent
VP (Fut Sg P2) => t_ + "ossiràs" ;--# notpresent
VP (Fut Pl P3) => t_ + "ossiran" ;--# notpresent
VP (Fut Sg P3) => t_ + "ossirà" ;--# notpresent
VP (Pret Pl P1) => t_ + "ossírem" ;--# notpresent
VP (Pret Sg P1) => t_ + "ossí" ;--# notpresent
VP (Pret Pl P2) => t_ + "ossíreu" ;--# notpresent
VP (Pret Sg P2) => t_ + "ossires" ;--# notpresent
VP (Pret Pl P3) => t_ + "ossiren" ;--# notpresent
VP (Pret Sg P3) => t_ + "ossí" ;--# notpresent
VP (Cond Pl P1) => t_ + "ossiríem" ;--# notpresent
VP (Cond Sg P1) => t_ + "ossiria" ;--# notpresent
VP (Cond Pl P2) => t_ + "ossiríeu" ;--# notpresent
VP (Cond Sg P2) => t_ + "ossiries" ;--# notpresent
VP (Cond Pl P3) => t_ + "ossirien" ;--# notpresent
VP (Cond Sg P3) => t_ + "ossiria" ;--# notpresent
VP (Imp Pl P1) => t_ + "ossim" ;
VP (Imp Pl P2) => t_ + "ossiu" ;
VP (Imp Sg P2) => t_ + "us" ;
VP (Imp Pl P3) => t_ + "ussin" ;
VP (Imp Sg P3) => t_ + "ussi" ;
VP (Pass Pl Fem) => t_ + "ossides" ;
VP (Pass Sg Fem) => t_ + "ossida" ;
VP (Pass Pl Masc) => t_ + "ossits" ;
VP (Pass Sg Masc) => t_ + "ossit" ;
VP (Imp Sg P1) => nonExist
}
} ;
oper coure_32 : Str -> Verbum = \coure ->
let c_ = Predef.tk 4 coure in
{s = table {
@@ -5595,7 +5660,6 @@ let t_ = Predef.tk 5 tòrcer in
VP (Imp Sg P1) => nonExist
}
} ;
--- tossir-- is not in the used source .
oper trencar_112 : Str -> Verbum = \trencar ->
let tren_ = Predef.tk 3 trencar in
+19 -4
View File
@@ -1,5 +1,5 @@
--# -path=.:../romance:../abstract:../common:prelude
instance DiffCat of DiffRomance - [partAgr,stare_V,vpAgrSubj,vpAgrClits] = open CommonRomance, PhonoCat, BeschCat, Prelude in {
instance DiffCat of DiffRomance - [partAgr,stare_V,vpAgrSubj,vpAgrClits,AFormSimple] = open CommonRomance, PhonoCat, BeschCat, Prelude in {
flags optimize=noexpand ;
coding=utf8 ;
@@ -64,7 +64,22 @@ oper
}
} ;
-- AForm and comparatives
param
AFormComplex = AF Gender Number | AAttrMasc | AA ;
oper
AForm = AFormComplex ;
aform2aagr : AForm -> AAgr = \a -> case a of {
DiffCat.AF g n => aagr g n ;
_ => aagr Masc Sg -- "le plus lentement"
} ;
genNum2Aform : Gender -> Number -> AForm = DiffCat.AF ;
genNumPos2Aform : Gender -> Number -> Bool -> AForm = \g,n,isPre ->
case <g,n,isPre> of {
<Masc,Sg,True> => AAttrMasc ;
_ => genNum2Aform g n
} ;
piuComp = "més" ;
possCase = \_,_,c -> prepCase c ;
@@ -112,7 +127,7 @@ oper
\\pol,g,n => case pol of {
RPos => neg.p1 ++ imper ++ bindIf refl.isRefl ++ refl.pron
++ bindIf hasClit ++ clit ++ compl ;
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ compl ++ subj
RNeg _ => neg.p1 ++ refl.pron ++ clit ++ compl ++ subj
} where {
pe = case isPol of {True => P3 ; _ => p} ;
refl = case vp.s.vtyp of {
@@ -127,7 +142,7 @@ oper
agr = {g = g ; n = n ; p = pe} ;
compl = neg.p2 ++ vp.comp ! agr ++ vp.ext ! pol
} ;
CopulaType = Bool ;
selectCopula = \isEstar -> case isEstar of {True => estar_V ; False => copula} ;
serCopula = False ;
+3 -3
View File
@@ -45,12 +45,12 @@ lin
s1 = heading1 (nounHeading adjective_Category).s ;
s2 = frameTable (
tr (th "" ++ th (heading singular_Parameter) ++ th (heading plural_Parameter)) ++
tr (th (heading masculine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Masc Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Masc Pl))) ++
tr (th (heading feminine_Parameter) ++ td (adj.s ! Posit ! (genNum2Aform Fem Sg)) ++ td (adj.s ! Posit ! (genNum2Aform Fem Pl)))
tr (th (heading masculine_Parameter) ++ td (adj.s ! genNum2Aform Masc Sg) ++ td (adj.s ! genNum2Aform Masc Pl)) ++
tr (th (heading feminine_Parameter) ++ td (adj.s ! genNum2Aform Fem Sg) ++ td (adj.s ! genNum2Aform Fem Pl))
)
} ;
InflectionAdv adv = {
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
t = "adv" ;
s1 = heading1 "Adverbi" ;
s2 = paragraph adv.s
+2 -1
View File
@@ -20,6 +20,7 @@ lin escopir_V = verbV (escopir_49 "escopir") ;
lin fondre_V = verbV (fondre_57 "fendre") ;
lin jeure_V = verbV (jeure_62 "jeure" (True|False)) ;
lin omplir_V = verbV (omplir_80 "omplir") ;
lin tossir_V = verbV (tossir_31b "tossir") ;
lin venir_V = verbV (venir_117 "venir" (True|False)) ;
}
}
+1
View File
@@ -1102,5 +1102,6 @@ fun escopir_V : V ;
fun fondre_V : V ;
fun jeure_V : V ;
fun omplir_V : V ;
fun tossir_V : V ;
fun venir_V : V ;
}
+13 -13
View File
@@ -31,8 +31,8 @@ lin
big_A = mkA "gros" "grossa" ;
bike_N = regFN "bicicleta" ;
bird_N = regMN "ocell" ;
black_A = compADeg (mkA "negre" "negra" "negres" "negres" "negrament") ;
blue_A = compADeg (mkA "blau" "blava" "blaus" "blaves" "blavament") ;
black_A = mkA "negre" "negra" "negres" "negres" "negrament" ;
blue_A = mkA "blau" "blava" "blaus" "blaves" "blavament" ;
boat_N = regFN "barca" ;
book_N = regMN "llibre" ;
boot_N = regFN "bota" ;
@@ -42,7 +42,7 @@ lin
break_V2 = dirV2 (verbV (trencar_112 "trencar")) ;
broad_A = regADeg "ample" ; -- put it in MorphoCat?: like black_A
brother_N2 = deN2 (regMN "germà") ;
brown_A = compADeg (mkA "marró" "marrona" "marrons" "marrones" "marronament") ;
brown_A = mkA "marró" "marrona" "marrons" "marrones" "marronament" ;
butter_N = regFN "mantega" ;
buy_V2 = dirV2 (mkV "comprar") ;
camera_N = regFN "càmara" ;
@@ -75,7 +75,7 @@ lin
drink_V2 = dirV2 (verbV (beure_11 "beure")) ;
easy_A2V = mkA2V (regA "fácil") dative genitive ;
eat_V2 = dirV2 (verbV (envejar_48 "menjar")) ;
empty_A = compADeg (mkA "buit" "buida" "buits" "buides" "buidament") ;
empty_A = mkA "buit" "buida" "buits" "buides" "buidament" ;
enemy_N = regMN "enemic" ; -- enemiga
factory_N = regFN "fàbrica" ;
father_N2 = deN2 (regMN "pare") ;
@@ -92,7 +92,7 @@ lin
girl_N = regFN "noia" ;
glove_N = regMN "guant" ;
gold_N = regMN "or" ;
good_A = mkA (prefA "bo" "bon") (mkA "millor") ;
good_A = mkA (prefA "bo" "bon" "bé") (mkA "millor") ;
go_V = (verbV (anar_4 "anar" 0)) ;
green_A = regADeg "verd" ;
harbour_N = regMN "port" ;
@@ -132,7 +132,7 @@ lin
mountain_N = regFN "muntanya" ;
music_N = regFN "música" ;
narrow_A = regADeg "estret" ;
new_A = prefixA (compADeg (mkA "nou" "nova" "nous" "noves" "novament")) ;
new_A = prefixA (mkA "nou" "nova" "nous" "noves" "novament") ;
newspaper_N = regMN "diari" ; -- periòdic
oil_N = regMN "oli" ;
old_A = regADeg "vell" ;
@@ -195,23 +195,23 @@ lin
teacher_N = regMN "mestre" ; -- mestra
teach_V2 = dirV2 (mkV "ensenyar") ;
television_N = mkN "televisió" "televisions" feminine ; -- televisor masc
thick_A = compADeg (mkA "gruixut" "gruixuda" "gruixuts" "gruixudes" "gruixudament") ;
thin_A = compADeg (mkA "fi" "fina" "fins" "fines" "finament") ;
thick_A = mkA "gruixut" "gruixuda" "gruixuts" "gruixudes" "gruixudament" ;
thin_A = mkA "fi" "fina" "fins" "fines" "finament" ;
train_N = regMN "tren" ;
travel_V = verbV (envejar_48 "viatjar") ;
tree_N = regMN "arbre" ;
--- trousers_N = regN "pantalón" ; -- masc
ugly_A = compADeg (mkA "lleig" "lletja" "lletjos" "lletges" "lletjament") ;
ugly_A = mkA "lleig" "lletja" "lletjos" "lletges" "lletjament" ;
understand_V2 = dirV2 (verbV (atendre_8 "entendre")) ;
university_N = regFN "universitat" ;
village_N = regMN "poble" ;
wait_V2 = mkV2 (mkV "esperar") dative ;
walk_V = mkV "caminar" ;
warm_A = compADeg (mkA "tebi" "tèbia" "tebis" "tèbies" "tèbiament") ;
warm_A = mkA "tebi" "tèbia" "tebis" "tèbies" "tèbiament" ;
war_N = regFN "guerra" ;
watch_V2 = dirV2 (mkV "mirar") ;
water_N = mkN "aigua" ; -- aigües
white_A = compADeg (mkA "blanc" "blanca" "blancs" "blanques" "blancament") ;
white_A = mkA "blanc" "blanca" "blancs" "blanques" "blancament" ;
window_N = regFN "finestra" ;
wine_N = regMN "vi" ;
win_V2 = dirV2 (mkV "guanyar") ;
@@ -219,8 +219,8 @@ lin
wonder_VQ = mkVQ (reflV (mkV "preguntar")) ;
wood_N = regFN "fusta" ;
write_V2 = dirV2 (verbV (escriure_50 "escriure" True)) ;
yellow_A = compADeg (mkA "groc" "groga" "grocs" "grogues" "grogament") ;
young_A = compADeg (mkA "jove" "jove" "joves" "joves" "jovement") ;
yellow_A = mkA "groc" "groga" "grocs" "grogues" "grogament" ;
young_A = mkA "jove" "jove" "joves" "joves" "jovement" ;
do_V2 = dirV2 (verbV (fer_56 "fer")) ;
now_Adv = mkAdv "ara" ;
already_Adv = mkAdv "ja" ;
+7 -7
View File
@@ -96,11 +96,11 @@ oper
mkAdjFull : (x1,_,_,_,_,x6 : Str) -> Adj = \bon,bo,prima,prims,primes,primament ->
{s = table {
ASg Masc AAttr => bon ;
ASg Masc APred => bo ;
ASg Fem _ => prima ;
APl Masc => prims ;
APl Fem => primes ;
AAttrMasc => bon ;
AF Masc Sg => bo ;
AF Fem Sg => prima ;
AF Masc Pl => prims ;
AF Fem Pl => primes ;
AA => primament
}
} ;
@@ -121,8 +121,8 @@ oper
let fond = Predef.tk 1 fondo
in adjBlau fondo (fond + "a") ;
adjBo : (bo,bon : Str) -> Adj = \bo,bon ->
mkAdjFull bon bo (bon + "a") (bon + "s") (bon + "es") (bon + "ament") ;
adjBo : (bo,bon,be : Str) -> Adj = \bo,bon,be ->
mkAdjFull bon bo (bon + "a") (bon + "s") (bon + "es") be ;
adjFidel : Str -> Adj = \fidel ->
let fidels : Str = case (last fidel) of {
+20 -14
View File
@@ -334,25 +334,31 @@ oper
makeNP x g n = {s = (pn2np (mk2PN x g)).s; a = agrP3 g n ; hasClit = False ; isPol = False ; isNeg = False} ** {lock_NP = <>} ;
mk5A a b c d e =
compADeg {s = \\_ => (mkAdj a b c d e).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
mk2A a b = compADeg {s = \\_ => (mkAdj2Reg a b).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
regA a = compADeg {s = \\_ => (mkAdjReg a).s ; isPre = False ; copTyp = serCopula ; lock_A = <>} ;
mk5A a b c d e = compADeg (mkAdj a b c d e) ;
mk2A a b = compADeg (mkAdj2Reg a b) ;
regA a = compADeg (mkAdjReg a) ;
prefA = overload {
prefA : A -> A = \a -> a ** {isPre = True} ;
prefA : Str -> Str -> A = \bo,bon ->
compADeg (lin A {s = \\_ => (adjBo bo bon).s ; isPre = True ; copTyp = serCopula}) ;
let adj : A = compADeg (adjBo bo bon (bon+"ament")) ; -- not sure if there is any actual adjective that behaves like this /IL
in adj ** {isPre = True} ;
prefA : (bo,bon,be : Str) -> A = \bo,bon,be ->
let adj : A = compADeg (adjBo bo bon be) ;
in adj ** {isPre = True} ;
} ;
mkA2 a p = a ** {c2 = p ; lock_A2 = <>} ;
mkADeg a b =
{s = table {Posit => a.s ! Posit ; _ => b.s ! Posit} ;
isPre = a.isPre ; copTyp = serCopula ; lock_A = <>} ;
compADeg a =
{s = table {Posit => a.s ! Posit ; _ => \\f => "més" ++ a.s ! Posit ! f} ;
isPre = a.isPre ; copTyp = a.copTyp ;
lock_A = <>} ;
mkADeg a b = a ** {
compar = \\num => b.s ! AF Masc num ; -- millor, millors
isDeg = True } ;
compADeg a = lin A
{s = a.s ;
compar = \\_ => nonExist ;
isPre = False ; -- default values
copTyp = serCopula ;
isDeg = False
} ;
regADeg a = compADeg (regA a) ;
mkAdv x = ss x ** {lock_Adv = <>} ;
@@ -440,7 +446,7 @@ oper
special_ppV ve pa = {
s = table {
VPart g n => (regA pa).s ! Posit ! genNum2Aform g n ;
VPart g n => (regA pa).s ! genNum2Aform g n ;
p => ve.s ! p
} ;
lock_V = <> ;
@@ -518,7 +524,7 @@ oper
mk2A : (lleig,lletja : Str) -> A ;
regA : Str -> A ;
mkADeg : A -> A -> A ;
compADeg : A -> A ;
compADeg : Adj -> A ;
regADeg : Str -> A ;
prefA : overload {
prefA : A -> A ; -- gran
+44 -12
View File
@@ -4,26 +4,58 @@ concrete AdjectiveChi of Adjective = CatChi ** open ResChi, Prelude in {
PositA a = a ** {hasAdA = False} ;
--ComparA a np = complexAP (a.s ++ than_s ++ np.s) ;
ComparA a np = complexAP (than_s ++ np.s ++ a.s) ;
ComparA a np = a ** {
s = table {_=> than_s ++ np.s ++ a.s!Attr};
hasAdA = False
UseComparA a = complexAP (geng_s ++ a.s) ;
};
AdjOrd ord = complexAP ord.s ;
UseComparA a = a ** {
s = table { _=> geng_s ++ a.s!Attr};
hasAdA = False
};
-- CAdvAP ad ap np = complexAP (ap.s ++ ad.s ++ ad.p ++ np.s) ;
CAdvAP ad ap np = complexAP (ad.s++ np.s++ad.p++ap.s ) ; --modified by ChenPeng 11.24
AdjOrd ord = ord ** {
s = table {
adjPlace => ord.s
-- Attr => ord.s; --"first is he" ;
-- Pred => ord.s --"he is first"
} ;
hasAdA = False;
monoSyl = True -- to do and figure out in relation to Ord = {s : Str}
};
ComplA2 a np = complexAP (appPrep a.c2 np.s ++ a.s) ;
CAdvAP ad ap np = ap ** {
s = table {adjPlace => ad.s ++ np.s ++ ad.p ++ ap.s!adjPlace}
};
ReflA2 a = complexAP (a.s ++ appPrep a.c2 reflPron) ;
ComplA2 a np = a ** {
s= table { adjPlace => appPrep a.c2 np.s ++ a.s!adjPlace};
hasAdA = False
};
SentAP ap sc = complexAP (ap.s ++ sc.s) ;
AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ;
ReflA2 a = a ** {
s = table {adjPlace => a.s!adjPlace ++ appPrep a.c2 reflPron};
hasAdA = False
};
SentAP ap sc = ap ** {
s = table { adjPlace => ap.s ! adjPlace ++ sc.s }
} ;
-- AdAP ada ap = {s = ada.s ++ ap.s ; monoSyl = False ; hasAdA = True} ;
AdAP ada ap = ap ** {
s = table { adjPlace => ada.s ++ ap.s ! adjPlace };
monoSyl = False;
hasAdA = True
};
UseA2 a = a ** {hasAdA = False} ;
AdvAP ap adv = complexAP (adv.s ++ ap.s) ; ----
AdvAP ap adv = ap ** {
s = table { adjPlace => adv.s ++ ap.s ! adjPlace }
};
}
+7 -7
View File
@@ -1,21 +1,21 @@
concrete AdverbChi of Adverb = CatChi **
concrete AdverbChi of Adverb = CatChi **
open ResChi, Prelude in {
lin
PositAdvAdj a = {s = a.s ++ "地" ; advType = ATManner ; hasDe = False} ; ---- for all adjs?
PositAdvAdj a = {s = a.s!Attr ++ "地" ; advType = ATManner ; hasDe = False} ; ---- for all adjs?
PrepNP prep np = ss (appPrep prep np.s) ** {advType = prep.advType ; hasDe = prep.hasDe} ; --- should depend on np too ?
PrepNP prep np = ss (appPrep prep np.s) ** {advType = prep.advType ; hasDe = prep.hasDe} ; --- should depend on np too ?
ComparAdvAdj cadv a np = ss (a.s ++ cadv.s ++ cadv.p ++ np.s) ** {advType = ATManner ; hasDe = False} ;
ComparAdvAdj cadv a np = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ np.s) ** {advType = ATManner ; hasDe = False} ;
ComparAdvAdjS cadv a s = ss (a.s ++ cadv.s ++ cadv.p ++ s.s) ** {advType = ATManner ; hasDe = False} ;
ComparAdvAdjS cadv a s = ss (a.s!Attr ++ cadv.s ++ cadv.p ++ linS s) ** {advType = ATManner ; hasDe = False} ;
AdAdv ad adv = adv ** {s = ad.s ++ adv.s} ;
SubjS subj s = ss (subj.prePart ++ s.s ++ subj.sufPart) ** {advType = ATTime ; hasDe = False} ;
SubjS subj s = ss (subj.prePart ++ linS s ++ subj.sufPart) ** {advType = ATTime ; hasDe = False} ;
AdnCAdv cadv = ss (cadv.s ++ conjThat) ** {advType = ATManner ; hasDe = False} ; -----
PositAdAAdj a = {s = a.s} ; ----
PositAdAAdj a = {s = a.s!Attr} ; ----
}
+12 -7
View File
@@ -4,14 +4,14 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
-- Tensed/Untensed
S = {s : Str} ;
S = Sentence ;
QS = {s : Bool => Str} ; -- True = direct question (with ma for sentential questions)
RS = {s : Str} ;
SSlash = {s : Str ; c2 : Preposition} ;
SSlash = {s : Str ; c2 : Preposition} ;
-- Sentence
Cl = Clause ; -- {s : Polarity => Aspect => Str ; np: Str ; vp: Polarity => Aspect => Str} ;
Cl = Clause ; -- {s : Polarity => Aspect => Str ; np: Str ; vp: Polarity => Aspect => Str} ;
ClSlash = Clause ** {c2 : Preposition} ;
@@ -21,7 +21,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
QCl = {s : Bool => Polarity => Aspect => Str} ; -- True = direct question
IP = {s : Str} ;
IComp = {s : Str} ;
IComp = {s : Str} ;
IDet = {s : Str ; detType : DetType} ;
IQuant = {s : Str} ;
@@ -32,7 +32,7 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
-- Verb
VP = ResChi.VP ;
VP = ResChi.VP ;
Comp = ResChi.VP ;
VPSlash = ResChi.VP ** {c2 : Preposition ; isPre : Bool} ; -- whether the missing arg is before verb
@@ -59,13 +59,16 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
-- Structural
Conj = {s : ConjForm => {s1,s2 : Str}} ;
Conj = {
s : ConjForm => {s1,s2 : Str} ; -- different form whether it's used for S, A, N, ...
conjType : ConjType -- different placement whether it's and,or,... or if-then
} ;
Subj = {prePart : Str ; sufPart : Str} ;
Prep = Preposition ;
-- Open lexical classes, e.g. Lexicon
V, VS, VQ, VA = Verb ;
V, VS, VQ, VA = Verb ;
V2, V2Q, V2S = Verb ** {c2 : Preposition ; hasPrep : Bool ; part : Str} ;
V3, V2A, V2V = Verb ** {c2, c3 : Preposition ; hasPrep : Bool ; part : Str} ;
VV = Verb ;
@@ -84,4 +87,6 @@ concrete CatChi of Cat = CommonX - [Tense, Temp, Ant, Adv] ** open ResChi, Prelu
Tense = {s : Str ; t : Aspect} ;
Ant = {s : Str ; t : Aspect} ;
linref
S = linS ;
}
+23 -9
View File
@@ -2,33 +2,47 @@ concrete ConjunctionChi of Conjunction = CatChi ** open ResChi, Prelude, Coordin
lin
ConjS c = conjunctDistrSS (c.s ! CSent) ;
ConjS c ss =
let conj = c.s ! CSent
in case c.conjType of {
Jiu => {preJiu = conj.s1 ++ ss.s1 ++ comma ++ ss.preJiu ;
postJiu = conj.s2 ++ ss.postJiu} ;
NotJiu => {preJiu = conj.s1 ++ ss.s1 ++ conj.s2 ++ ss.preJiu ;
postJiu = ss.postJiu}
} ;
ConjAdv c as = conjunctDistrSS (c.s ! CSent) as ** {advType = as.advType ; hasDe = as.hasDe} ; ---- ??
ConjNP c = conjunctDistrSS (c.s ! CPhr CNPhrase) ;
ConjAP c as = conjunctDistrSS (c.s ! CPhr CAPhrase) as ** {monoSyl = notB as.monoSyl ; hasAdA = True} ; ---- add de iff as doesn't
ConjAP c as = conjunctDistrTable AdjPlace (c.s ! CPhr CAPhrase) as ** {monoSyl = notB as.monoSyl ; hasAdA = True} ; ---- add de iff as doesn't
ConjRS c = conjunctDistrSS (c.s ! CSent) ;
ConjCN c ns = conjunctDistrSS (c.s ! CPhr CNPhrase) ns ** {c = ns.c} ;
ConjCN c ns = conjunctDistrSS (c.s ! CPhr CNPhrase) ns ** {c = ns.c} ;
-- These fun's are generated from the list cat's.
BaseS = twoSS ;
ConsS = consrSS duncomma ;
BaseS s t = t ** {
s1 = linS s
} ;
ConsS s ss = -- here we do the same thing actually, the crucial split has happened in BaseS
ss ** {s1 = linS s ++ comma ++ ss.s1};
BaseAdv x y = twoSS x y ** {advType = x.advType ; hasDe = y.hasDe} ; ---- ??
ConsAdv x xs = consrSS duncomma x xs ** {advType = x.advType ; hasDe = xs.hasDe} ; ---- ??
BaseNP = twoSS ;
ConsNP = consrSS duncomma ;
BaseAP x y = twoSS x y ** {monoSyl = y.monoSyl} ;
ConsAP x xs = consrSS duncomma x xs ** {monoSyl = xs.monoSyl} ;
BaseAP x y = twoTable AdjPlace x y ** {monoSyl = y.monoSyl} ;
ConsAP x xs = consrTable AdjPlace duncomma x xs ** {monoSyl = xs.monoSyl} ;
BaseRS = twoSS ;
ConsRS = consrSS duncomma ;
BaseCN x y = twoSS x y ** {c = x.c} ; --- classified comes from first part ; should it rather be ge?
ConsCN x xs = consrSS duncomma x xs ** {c = x.c} ;
lincat
[S] = {s1,s2 : Str} ;
--[S] = ConjType => {s1,s2 : Str} ;
[S] = {s1,preJiu,postJiu : Str} ;
[Adv] = {s1,s2 : Str ; advType : AdvType ; hasDe : Bool} ;
[NP] = {s1,s2 : Str} ;
[AP] = {s1,s2 : Str ; monoSyl : Bool} ;
[AP] = {s1,s2 : AdjPlace => Str ; monoSyl : Bool} ;
[RS] = {s1,s2 : Str} ;
[CN] = {s1,s2 : Str ; c : Str} ;
+4 -4
View File
@@ -1,6 +1,6 @@
concrete DocumentationChi of Documentation = CatChi ** open
ResChi,
HTML
HTML
in {
lincat
@@ -19,10 +19,10 @@ lin
InflectionA, InflectionA2 = \adj -> {
t = "a" ;
s1 = heading1 "Adjective" ;
s2 = adj.s
s2 = adj.s!Attr
} ;
InflectionAdv adv = {
InflectionAdv, InflectionAdV, InflectionAdA, InflectionAdN = \adv -> {
t = "adv" ;
s1 = heading1 "Adverb" ;
s2 = paragraph adv.s
+19
View File
@@ -0,0 +1,19 @@
--# -path=alltenses:../common:../abstract
concrete ExtendChi of Extend = CatChi **
ExtendFunctor - [ProDrop,ComplDirectVS, ComplDirectVQ]
with (Grammar=GrammarChi) ** open Prelude, ResChi in {
lin
ProDrop pron = pron ** {s = []} ;
ComplDirectVS vs utt =
AdvVP (UseV <lin V vs : V>)
(mkAdv (":" ++ quoted utt.s)) ; -- DEFAULT complement added as Adv in quotes
ComplDirectVQ vq utt =
AdvVP (UseV <lin V vq : V>)
(mkAdv (":" ++ quoted utt.s)) ; -- DEFAULT complement added as Adv in quotes
oper
mkAdv : Str -> Adv ;
mkAdv str = lin Adv {s = str ; advType = ATManner ; hasDe = False} ;
};
+11 -10
View File
@@ -1,9 +1,9 @@
concrete ExtraChi of ExtraChiAbs = CatChi **
concrete ExtraChi of ExtraChiAbs = CatChi **
open ResChi, Coordination, (S = StructuralChi), Prelude in {
flags coding = utf8 ;
lincat
lincat
VPS = {s : Str} ;
[VPS] = {s1,s2 : Str} ;
VPI = {s : Str} ; --- ???
@@ -18,7 +18,7 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
BaseVPS = twoSS ;
ConsVPS = consrSS duncomma ;
PredVPS np vps = {s = np.s ++ vps.s} ;
PredVPS np vps = {preJiu = np.s ; postJiu = vps.s} ;
MkVPI vp = {s = (mkClause [] vp).s ! Pos ! APlain} ; --- ?? almost just a copy of VPS
ConjVPI c = conjunctDistrSS (c.s ! CSent) ;
@@ -37,19 +37,20 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
Aspect = {s : Str ; a : ResChi.Aspect} ;
lin
CompBareAP ap = case ap.hasAdA of {
True => insertObj (mkNP ap.s) (predV nocopula []) ;
False => insertObj (mkNP ap.s) (predV hen_copula [])
} ;
True => insertObj (mkNP (ap.s!Pred)) (predV nocopula []) ;
False => insertObj (mkNP (ap.s!Pred)) (predV hen_copula [])
} ;
QuestRepV cl = {
s = \\_,p,a => ---- also for indirect questions?
let
v = cl.vp.verb ;
v = cl.vp.verb ;
verb = case a of {
APlain => v.s ++ v.neg ++ v.sn ;
APlain => v.s ++ v.neg ++ v.sn ;
APerf => v.s ++ "不" ++ v.sn ++ v.pp ;
ADurStat => v.s ++ "不" ++ v.sn ;
ADurProg => v.s ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu
AExper => v.s ++ v.neg ++ v.sn ++ v.ep
AExper => v.s ++ v.neg ++ v.sn ++ v.ep ;
AFut => jiu_s ++ v.s ++ v.neg ++ v.sn ++ v.ep -- TODO check placement of jiang
}
in
cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl
@@ -57,4 +58,4 @@ concrete ExtraChi of ExtraChiAbs = CatChi **
TopicAdvVP vp adv = insertTopic adv vp ;
}
}
+1 -1
View File
@@ -12,7 +12,7 @@ concrete IdiomChi of Idiom = CatChi ** open Prelude, ResChi in {
---- it is John who did it
CleftNP np rs = mkClause rs.s copula np.s ; -- did it + de + is I
CleftAdv ad s = mkClause (s.s ++ possessive_s) copula ad.s ; -- she sleeps + de + is here
CleftAdv ad s = mkClause (linS s ++ possessive_s) copula ad.s ; -- she sleeps + de + is here
ExistNP np = mkClause [] (regVerb you_s) np.s ; ---- infl of you
+32 -34
View File
@@ -1,7 +1,7 @@
concrete LexiconChi of Lexicon = CatChi **
concrete LexiconChi of Lexicon = CatChi **
open ParadigmsChi, ResChi, Prelude in {
flags
flags
coding = utf8 ;
lin
@@ -14,13 +14,13 @@ lin
tree_N = mkN "树" "棵"; -- "shu" "ke"
big_A = mkA "大" ; -- "da"
small_A = mkA "小" ; -- "xiao"
green_A = mkA "绿" ; -- "lv"
green_A = colourA "绿" ; -- "lv"
walk_V = mkV "走" ; -- "zou"
sleep_V = mkV "睡觉" ; -- "shui"
love_V2 = mkV2 "爱" ; -- "ai"
watch_V2 = mkV2 "看" ; -- "kan"
know_VS = mkV "知道" ; -- "zhidao"
wonder_VQ = mkV "好奇" ; -- "haoqi"
wonder_VQ = mkV "好奇" ; -- "haoqi"
john_PN = mkPN "约翰" ; -- "yuehan"
@@ -63,7 +63,7 @@ horn_N = mkN "角" "根";
tail_N = mkN "尾巴" "条"; -- [mark] "尾" -> "尾巴" , "尾" is often treated as morpheme, or if stands alone, it is a classifier itself
feather_N = mkN "羽毛" "根";
hair_N = mkN "头发" "根"; -- [mark] several classifiers , "根"(single hair), "把"(several hairs)
head_N = mkN "头" "颗";
head_N = mkN "头" "颗";
ear_N = mkN "耳朵" "只";
eye_N = mkN "眼睛" "只";
nose_N = mkN "鼻子" ;
@@ -79,7 +79,7 @@ wing_N = mkN "翅膀" "只"; -- [mark] "翼" -> "翅膀", "翅膀" is the common
belly_N = mkN "肚子" ;
guts_N = mkN "肠子" "根";
neck_N = mkN "脖子" ;
back_N = mkN "背" ;
back_N = mkN "背" ;
breast_N = mkN "胸" ;
heart_N = mkN "心脏" "颗";
liver_N = mkN "肝" ;
@@ -101,7 +101,7 @@ live_V = mkV "活" ;
die_V = mkV "死" ;
kill_V2 = mkV2 "杀" ;
fight_V2 = mkV2 "打架" ; -- [mark] "吵架" -> "打架", "吵架" = quarrel, argue
hunt_V2 = mkV2 "打猎" ; -- [mark] "打猎" is iv, can't think of proper translation in v2 form for hunt
hunt_V2 = mkV2 "打猎" ; -- [mark] "打猎" is iv, can't think of proper translation in v2 form for hunt
hit_V2 = mkV2 "打" ;
cut_V2 = mkV2 "割" ;
split_V2 = mkV2 "劈开" ;
@@ -159,10 +159,10 @@ ashes_N = mkN "灰" [];
burn_V = mkV "烧" ;
road_N = mkN "路" "条";
mountain_N = mkN "山" "座";
red_A = mkA "红" ;
yellow_A = mkA "黄" ;
white_A = mkA "白" ;
black_A = mkA "黑" ;
red_A = colourA "红" ;
yellow_A = colourA "黄" ;
white_A = colourA "白" ;
black_A = colourA "黑" ;
night_N = mkN "夜晚" ; -- [mark] "夜晚" 's classifier is "个"
day_N = mkN "白天" []; -- [mark] "白天" -> "天", "天" itself is classifier
year_N = mkN "年" [] ; -- [mark] "年" itself is classifier
@@ -343,7 +343,7 @@ shirt_N = mkN "衬衫" "件" ;
silver_N = mkN "银子" "块"; -- [mark] "银" --> "银子"
sister_N = mkN "妹妹" ;
sock_N = mkN "袜子" "只";
steel_N = mkN "钢" "块";
steel_N = mkN "钢" "块";
stove_N = mkN "炉子" ;
village_N = mkN "村庄" "座";
war_N = mkN "战争" "场" ; -- [mark] rewritten
@@ -353,29 +353,27 @@ wood_N = mkN "木头" "块" ; -- [mark] "木" --> "木头"
-- from scratch, by Jolene
lin
alas_Interj = ssword "唉" ;
alas_Interj = ssword "唉" ;
beg_V2V = mkV2V (mkV "乞求") ; -- beg him to do something
break_V2 = mkV2 "打破" ;
broad_A = mkA "宽" ;
brown_A = mkA "棕" ;
clever_A = mkA "聪明" ;
close_V2 = mkV2 "关闭" ;
easy_A2V = mkA2 "简单" ;
empty_A = mkA "空" ;
fun_AV = mkA "有趣" ;
hate_V2 = mkV2 "讨厌" ;
married_A2 = mkA2 "结婚" ;
paris_PN = mkPN "巴黎" ;
probable_AS = mkA "可能" ;
break_V2 = mkV2 "打破" ;
broad_A = mkA "宽" ;
brown_A = colourA "棕" ;
clever_A = mkA "聪明" ;
close_V2 = mkV2 "关闭" ;
easy_A2V = mkA2 "简单" ;
empty_A = mkA "空" ;
fun_AV = mkA "有趣" ;
hate_V2 = mkV2 "讨厌" ;
married_A2 = mkA2 "结婚" ;
paris_PN = mkPN "巴黎" ;
probable_AS = mkA "可能" ;
ready_A = mkA "准备好" ; -- [mark] "准备好": 准备(v) + 好(adj,complement)
seek_V2 = mkV2 "寻求" ;
stop_V = mkV "停止" ;
stupid_A = mkA "笨" ;
switch8off_V2 = mkV2 "关" ;
switch8on_V2 = mkV2 "开" ;
ugly_A = mkA "丑" ;
seek_V2 = mkV2 "寻求" ;
stop_V = mkV "停止" ;
stupid_A = mkA "笨" ;
switch8off_V2 = mkV2 "关" ;
switch8on_V2 = mkV2 "开" ;
ugly_A = mkA "丑" ;
uncertain_A = mkA "不确定" ; -- [mark] "不确定": 不("un-") + 确定("certain")
}
}
+6 -5
View File
@@ -12,6 +12,7 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in {
DetNP det = {s = case det.detType of {
DTFull Pl => det.s ++ xie_s ;
DTPoss => det.s ;
_ => det.s ++ ge_s
} ;
} ; ----
@@ -28,7 +29,7 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in {
NTFull => quant.pl ++ num.s ; -- to avoid yi in indef
NTVoid Pl => quant.pl ++ num.s ;
_ => quant.s ++ num.s
} ;
} ;
detType = case num.numType of {
NTFull => DTNum ; -- five
NTVoid n => case quant.detType of {
@@ -63,8 +64,8 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in {
AdNum adn num = {s = adn.s ++ num.s ; hasC = True} ;
OrdSuperl a = {s = superlative_s ++ a.s} ;
OrdNumeralSuperl n a = {s = ordinal_s ++ n.s ++ superlative_s ++ a.s} ; ---- to check AR 24/8/2014
OrdSuperl a = {s = superlative_s ++ a.s ! Attr} ;
OrdNumeralSuperl n a = {s = ordinal_s ++ n.s ++ superlative_s ++ a.s ! Attr} ; ---- to check AR 24/8/2014
DefArt = mkQuant [] [] DTPoss ; -- use that_Quant if you want the_s
IndefArt = mkQuant yi_s [] DTNum ; -- (DTFull Sg) ; -- empty in the plural
@@ -80,8 +81,8 @@ concrete NounChi of Noun = CatChi ** open ResChi, Prelude in {
ComplN3 f x = {s = appPrep f.c2 x.s ++ f.s ; c = f.c ; c2 = f.c3} ;
AdjCN ap cn = case ap.monoSyl of {
True => {s = ap.s ++ cn.s ; c = cn.c} ;
False => {s = ap.s ++ possessive_s ++ cn.s ; c = cn.c}
True => {s = ap.s ! Attr ++ cn.s ; c = cn.c} ;
False => {s = ap.s ! Attr ++ possessive_s ++ cn.s ; c = cn.c}
} ;
RelCN cn rs = {s = rs.s ++ cn.s ; c = cn.c} ;
+57 -54
View File
@@ -5,11 +5,11 @@ flags coding = utf8 ;
flags coding=utf8;
oper
mkN = overload {
mkN : (man : Str) -> N
= \n -> lin N (regNoun n ge_s) ;
mkN : (man : Str) -> Str -> N
mkN : (man : Str) -> N
= \n -> lin N (regNoun n ge_s) ;
mkN : (man : Str) -> Str -> N
= \n,c -> lin N (regNoun n c)
} ;
} ;
mkN2 = overload {
mkN2 : Str -> N2
@@ -21,7 +21,7 @@ oper
mkN3 : N -> Prep -> Prep -> N3
= \n,p,q -> lin N3 (n ** {c2 = p ; c3 = q}) ;
mkPN : (john : Str) -> PN
= \s -> lin PN {s = word s} ; -- normal name, in Chinese characters
@@ -29,11 +29,14 @@ oper
= \s -> lin PN {s = s} ; -- foreign name, in Latin or other non-Chinese characters
mkA = overload {
mkA : (small : Str) -> A
mkA : (small : Str) -> A
= \a -> lin A (simpleAdj a) ;
mkA : (small : Str) -> Bool -> A
mkA : (small : Str) -> Bool -> A
= \a,b -> lin A (mkAdj a b) ;
} ;
} ;
colourA : Str -> A ; -- colour Adjectives have a "色" when used as predicative
colourA colour = lin A (colourAdj colour);
mkA2 = overload {
mkA2 : Str -> A2
@@ -43,32 +46,32 @@ oper
mkA2 : A -> Prep -> A2
= \a,p -> lin A2 (a ** {c2 = p}) ;
} ;
mkV = overload {
mkV : (walk : Str) -> V
mkV = overload {
mkV : (walk : Str) -> V
= \walk -> case walk of {
v + "+" + p => lin V (regVerb (v + p)) ;
_ => lin V (regVerb walk)
} ;
mkV : (walk,out : Str) -> V
mkV : (walk,out : Str) -> V
= \v,p -> lin V (regVerb (v + p)) ; ----
mkV : (arrive : Str) -> Str -> Str -> Str -> Str -> V
= \arrive,pp,ds,dp,ep -> lin V (mkVerb arrive pp ds dp ep neg_s) ;
mkV : (arrive : Str) -> Str -> Str -> Str -> Str -> Str -> V
= \arrive,pp,ds,dp,ep,neg -> lin V (mkVerb arrive pp ds dp ep neg) ;
} ;
} ;
mkV2 = overload {
mkV2 : Str -> V2
mkV2 : Str -> V2
= \s -> case s of {
v + "+" + p => lin V2 (regVerb v ** {c2 = emptyPrep ; hasPrep = False ; part = word p}) ;
v + "*" + p => lin V2 (regVerb v **
v + "*" + p => lin V2 (regVerb v **
{c2 = ResChi.mkPreposition p [] (getAdvType p) ; hasPrep = True ; part = []}) ;
_ => lin V2 (regVerb s ** {c2 = emptyPrep ; hasPrep = False ; part = []})
} ;
mkV2 : V -> V2
mkV2 : V -> V2
= \v -> lin V2 (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
mkV2 : V -> Prep -> V2
mkV2 : V -> Prep -> V2
= \v,p -> lin V2 (v ** {c2 = p ; hasPrep = True ; part = []}) ;
} ;
@@ -110,47 +113,47 @@ oper
mkV2Q = overload {
mkV2Q : V -> V2Q =
\v -> lin V2Q (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
\v -> lin V2Q (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
mkV2Q : Str -> V2Q =
\v -> lin V2Q (regVerb v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
\v -> lin V2Q (regVerb v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
} ;
mkV2V= overload {
mkV2V : Str -> V2V =
\s -> lin V2V (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
mkV2V : Str -> V2V =
\s -> lin V2V (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
mkV2V : V -> V2V =
\v -> lin V2V (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
\v -> lin V2V (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
---- mkV2V : V -> Str -> Str -> V2V =
---- \v,p,q -> lin V2V (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ;
---- \v,p,q -> lin V2V (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ;
} ;
mkV2S = overload {
mkV2S : Str -> V2S =
\s -> lin V2S (regVerb s ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
\s -> lin V2S (regVerb s ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
mkV2S : V -> V2S =
\v -> lin V2S (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
\v -> lin V2S (v ** {c2 = emptyPrep ; hasPrep = False ; part = []}) ;
---- mkV2S : V -> Str -> V2S =
---- \v,p -> lin V2S (v ** {c2 = mkPrep p}) ;
---- \v,p -> lin V2S (v ** {c2 = mkPrep p}) ;
} ;
mkV2A = overload {
mkV2A : Str -> V2A
= \s -> lin V2A (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
= \s -> lin V2A (regVerb s ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
mkV2A : V -> V2A
= \v -> lin V2A (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
= \v -> lin V2A (v ** {c2 = emptyPrep ; c3 = emptyPrep ; hasPrep = False ; part = []}) ;
} ;
---- mkV2A : V -> Str -> Str -> V2A
---- = \v,p,q -> lin V2A (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ;
---- = \v,p,q -> lin V2A (v ** {c2 = mkPrep p ; c3 = mkPrep q}) ;
mkAdv = overload {
mkAdv : Str -> Adv
mkAdv : Str -> Adv
= \s -> let at = getAdvType s in lin Adv {s = word s ; advType = at ; hasDe = advTypeHasDe at} ;
mkAdv : Str -> Str -> Adv
mkAdv : Str -> Str -> Adv
= \s,t -> let at = getAdvType s in lin Adv {s = word (s + t) ; advType = at ; hasDe = advTypeHasDe at} ; ----
mkAdv : Str -> AdvType -> Adv
mkAdv : Str -> AdvType -> Adv
= \s,at -> lin Adv {s = word s ; advType = at ; hasDe = advTypeHasDe at} ;
mkAdv : Adv -> AdvType -> Adv -- To fix the AdvType in an Adv produced by SyntaxChi.mkAdv
mkAdv : Adv -> AdvType -> Adv -- To fix the AdvType in an Adv produced by SyntaxChi.mkAdv
= \adv,at -> adv ** {advType = at ; hasDe = advTypeHasDe at} ;
} ;
@@ -165,50 +168,50 @@ oper
= ATTime ;
mannerAdvType : AdvType
= ATManner ;
mkPrep = overload { -- first pre part, then optional post part
mkPrep : Str -> Prep
mkPrep : Str -> Prep
= \s -> lin Prep (ResChi.mkPreposition s [] (getAdvType s)) ;
mkPrep : Str -> Str -> Prep
mkPrep : Str -> Str -> Prep
= \s,t -> lin Prep (ResChi.mkPreposition s t (getAdvType s)) ;
mkPrep : Str -> Str -> AdvType -> Prep
mkPrep : Str -> Str -> AdvType -> Prep
= \s,t,a -> lin Prep (ResChi.mkPreposition s t a) ;
} ;
mkInterj : Str -> Interj
mkInterj : Str -> Interj
= \s -> lin Interj {s = word s} ;
emptyPrep : Preposition = mkPrep [] ;
mkpNP : Str -> CatChi.NP
mkpNP : Str -> CatChi.NP
= \s -> lin NP {s = word s} ;
mkAdV : Str -> AdV
mkAdV : Str -> AdV
= \s -> lin AdV {s = word s} ;
mkAdN : Str -> AdN
mkAdN : Str -> AdN
= \s -> lin AdN {s = word s} ;
mkSubj : Str -> Subj
mkSubj : Str -> Subj
= \s -> lin Subj (ResChi.mkSubj s []) ;
mkConj = overload {
mkConj : Str -> Conj
= \s -> lin Conj {s = \\_ => mkConjForm s} ;
mkConj : (both,and : Str) -> Conj
= \s,t -> lin Conj {s = \\_ => mkConjForm2 s t} ;
mkConj : Str -> Conj
= \s -> lin Conj {s = \\_ => mkConjForm s ; conjType = NotJiu} ;
mkConj : (both,and : Str) -> Conj
= \s,t -> lin Conj {s = \\_ => mkConjForm2 s t ; conjType = NotJiu} ;
} ;
mkpDet : Str -> Det
mkpDet : Str -> Det
= \s -> lin Det {s = word s ; detType = DTFull Sg} ;
mkQuant : Str -> Quant
mkQuant : Str -> Quant
= \s -> lin Quant {s,pl = word s ; detType = DTFull Sg} ;
mkAdA : Str -> AdA
mkAdA : Str -> AdA
= \s -> lin AdA {s = word s} ;
mkNum : Str -> Num
mkNum : Str -> Num
= \s -> lin Num {s = word s ; numType = NTFull} ;
mkPredet : Str -> Predet
mkPredet : Str -> Predet
= \s -> lin Predet {s = word s} ;
mkIDet : Str -> IDet
mkIDet : Str -> IDet
= \s -> lin IDet {s = word s ; detType = DTNum} ; ----
mkPConj : Str -> PConj
mkPConj : Str -> PConj
= \s -> lin PConj {s = word s} ;
mkRP : Str -> RP
mkRP : Str -> RP
= \s -> lin RP {s = table {True => [] ; False => word s}} ;
+2 -2
View File
@@ -3,7 +3,7 @@ concrete PhraseChi of Phrase = CatChi ** open Prelude, ResChi in {
lin
PhrUtt pconj utt voc = {s = pconj.s ++ voc.s ++ utt.s} ;
UttS s = s ;
UttS s = ss (linS s) ;
UttQS qs = ss (qs.s ! True) ;
UttImpSg pol imp = {s = pol.s ++ imp.s ! pol.p} ;
UttImpPl pol imp = {s = pol.s ++ imp.s ! pol.p} ;
@@ -13,7 +13,7 @@ concrete PhraseChi of Phrase = CatChi ** open Prelude, ResChi in {
UttIAdv iadv = iadv ;
UttNP np = np ;
UttCN cn = cn ;
UttAP ap = ap ;
UttAP ap = {s = ap.s!Attr} ;
UttCard x = x ;
UttVP vp = ss (infVP vp) ;
UttAdv adv = adv ;
+7 -21
View File
@@ -1,4 +1,4 @@
concrete QuestionChi of Question = CatChi **
concrete QuestionChi of Question = CatChi **
open ResChi, Prelude in {
flags optimize=all_subs ;
@@ -7,29 +7,15 @@ concrete QuestionChi of Question = CatChi **
lin
QuestCl cl = {
s = table {
True => \\p,a => cl.s ! p ! a ++ question_s ; -- redup question as variant in ExtraChi
False => \\p,a => --- code copied from ExtraChi
let
v = cl.vp.verb ;
verb = case a of {
APlain => v.s ++ v.neg ++ v.sn ;
APerf => v.s ++ neg_s ++ v.sn ++ v.pp ;
ADurStat => v.s ++ neg_s ++ v.sn ;
ADurProg => v.s ++ v.neg ++ v.dp ++ v.sn ; -- mei or bu
AExper => v.s ++ v.neg ++ v.sn ++ v.ep
}
in
cl.np ++ cl.vp.prePart ++ verb ++ cl.vp.compl
}
s = \\b,p,a => cl.s ! p ! a ++ question_s ; -- redup question as variant in ExtraChi
} ;
QuestVP ip vp = {
s = \\_,p,a => ip.s ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl
} ;
QuestSlash ip cls = {s = \\_ => (mkClauseCompl cls.np (insertObj (ss (appPrep cls.c2 ip.s)) cls.vp) []).s} ;
QuestSlash ip cls = {s = \\_ => (mkClauseCompl cls.np (insertObj (ss (appPrep cls.c2 ip.s)) cls.vp) []).s} ;
QuestIAdv iadv cl = {s = \\_ => (mkClauseCompl cl.np (insertAdv iadv cl.vp) []).s} ;
QuestIComp icomp np = {s = \\_,p,a => np.s ++ icomp.s} ; ---- order
@@ -49,13 +35,13 @@ concrete QuestionChi of Question = CatChi **
IdetIP idet = idet ;
IdetQuant iquant num = {
s = iquant.s ++ num.s ;
s = iquant.s ++ num.s ;
detType = case num.numType of {
NTFull => DTNum ; -- which five
NTVoid n => DTFull n ---- TODO: whose
}
} ;
AdvIAdv i a = ss (a.s ++ i.s) ;
+80 -49
View File
@@ -42,6 +42,8 @@ resource ResChi = ParamX ** open Prelude in {
geng_s = "更" ; -- more, in comparison
hen_s = "很" ; -- very, or predicating a monosyllabic adjective
taN_s = "它" ;
jiu_s = "就" ;
hui_s = "会" ;
zai_V = mkVerb "在" [] [] [] [] "不" ;
fullstop_s = "。" ;
@@ -67,9 +69,9 @@ resource ResChi = ParamX ** open Prelude in {
bword : Str -> Str -> Str = \x,y -> x ++ y ; -- change to x + y to treat words as single tokens
word : Str -> Str = \s -> case s of {
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? + e@? =>
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? + e@? =>
bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b (bword c (bword d e))))))))) ;
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? =>
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? + d@? =>
bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b (bword c d)))))))) ;
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? + c@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a (bword b c))))))) ;
x@? + y@? + z@? + u@? + v@? + w@? + a@? + b@? => bword x (bword y (bword z (bword u (bword v (bword w (bword a b)))))) ;
@@ -89,144 +91,173 @@ resource ResChi = ParamX ** open Prelude in {
-- parameters
param
Aspect = APlain | APerf | ADurStat | ADurProg | AExper ; ---- APlain added by AR
Aspect = APlain | APerf | ADurStat | ADurProg | AExper | AFut ; ---- APlain added by AR
ConjForm = CPhr CPosType | CSent;
ConjType = Jiu | NotJiu ; -- to put conjunction in the right place in ConjS: "I sleep *and* she walks" vs. "if I sleep, she *then* walks"
CPosType = CAPhrase | CNPhrase | CVPhrase ;
DeForm = DeNoun | NdNoun ; -- parameter created for noun with/out partical "de"
AdvType = ATPlace Bool | ATTime | ATManner | ATPoss ; -- ATPlace True = has zai_s already
-- parts of speech
AdjPlace = Attr | Pred ; -- a green cat / the cat is green colour
-- parts of speech
oper
VP = {
topic : Str ; -- topicalized item, before subject
prePart : Str ; -- between subject and verb
verb : Verb ;
verb : Verb ;
compl : Str ; -- after verb
isAdj : Bool ; -- whether it is an adjectival predication and behaves differently in relative
isAdj : Bool ; -- whether it is an adjectival predication and behaves differently in relative
} ;
NP = {s : Str} ;
NP = {s : Str} ;
-- for morphology
Noun : Type = {s : Str ; c : Str} ;
Adj : Type = {s : Str ; monoSyl: Bool} ;
Adj : Type = {s : AdjPlace => Str ; monoSyl: Bool} ;
Verb : Type = {s,sn : Str ; pp,ds,dp,ep : Str ; neg : Str} ; --- sn=[] needed for "hen" as copula
regNoun : Str -> Str -> Noun = \s,c -> {s = word s ; c = word c};
mkAdj : Str -> Bool -> Adj = \s,b -> {s = word s ; monoSyl = b};
mkAdj : Str -> Bool -> Adj = \s,b -> {s =
table {
_ => word s
};
monoSyl = b};
complexAP : Str -> Adj ** {hasAdA : Bool} =
\s -> {s = s ; monoSyl = False ; hasAdA = False} ; --- not used for adding AdA
complexAP : Str -> Adj ** {hasAdA : Bool} =
\s -> mkAdj s False ** {hasAdA = False} ; --- not used for adding AdA
simpleAdj : Str -> Adj = \s -> case s of {
? => mkAdj s True ; -- monosyllabic
_ => mkAdj s False
} ;
copula : Verb = mkVerb "是" [] [] [] [] "不" ;
hen_copula : Verb =
{s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
nocopula : Verb =
{s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
adjcopula : Verb =
{s = "是" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
colourAdj : Str -> Adj = \s -> {
s = table {
Attr => word s ;
Pred => word s ++ "色"
};
monoSyl = case s of {
? => True ;
_ => False }
};
regVerb : (walk : Str) -> Verb = \v ->
copula : Verb = mkVerb "是" [] [] [] [] "不" ;
hen_copula : Verb =
{s = hen_s ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
nocopula : Verb =
{s = [] ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
adjcopula : Verb =
{s = "是" ; sn = [] ; pp = [] ; ds = [] ; dp = [] ; ep = [] ; neg = "不"} ; ---
regVerb : (walk : Str) -> Verb = \v ->
mkVerb v "了" "着" "在" "过" "不" ; -- 没" ;
noVerb : Verb = regVerb [] ; ---?? -- used as copula for verbal adverbs
mkVerb : (v : Str) -> (pp,ds,dp,ep,neg : Str) -> Verb = \v,pp,ds,dp,ep,neg ->
mkVerb : (v : Str) -> (pp,ds,dp,ep,neg : Str) -> Verb = \v,pp,ds,dp,ep,neg ->
{s,sn = word v ; pp = pp ; ds = ds ; dp = dp ; ep = ep ; neg = neg} ;
useVerb : Verb -> Polarity => Aspect => Str = \v ->
useVerb : Verb -> Polarity => Aspect => Str = \v ->
table {
Pos => table {
APlain => v.s ;
APerf => v.s ++ v.pp ;
ADurStat => v.s ++ v.ds ;
ADurProg => v.dp ++ v.s ;
AExper => v.s ++ v.ep
AExper => v.s ++ v.ep ;
AFut => hui_s ++ v.s
} ;
Neg => table {
APlain => v.neg ++ v.sn ; --- neg?
APerf => "不" ++ v.sn ++ v.pp ;
ADurStat => "不" ++ v.sn ;
ADurProg => v.neg ++ v.dp ++ v.sn ; -- mei or bu
AExper => v.neg ++ v.sn ++ v.ep
AExper => v.neg ++ v.sn ++ v.ep ;
AFut => "不" ++ hui_s ++ v.s
}
} ;
infVP : VP -> Str = \vp -> vp.topic ++ vp.prePart ++ vp.verb.s ++ vp.compl ;
infVP : VP -> Str = \vp -> vp.topic ++ vp.prePart ++ vp.verb.s ++ vp.compl ;
predV : Verb -> Str -> VP = \v,part -> {
verb = v ;
verb = v ;
compl = part ;
prePart, topic = [] ;
isAdj = False ;
} ;
} ;
insertObj : NP -> VP -> VP = \np,vp -> vp ** {
compl = np.s ++ vp.compl ;
} ;
} ;
insertObjPost : NP -> VP -> VP = \np,vp -> vp ** {
compl = vp.compl ++ np.s ;
} ;
} ;
insertAdv : SS -> VP -> VP = \adv,vp -> vp ** {
prePart = adv.s ++ vp.prePart ;
} ;
} ;
insertTopic : SS -> VP -> VP = \adv,vp -> vp ** {
topic = adv.s ++ vp.topic
} ;
} ;
insertAdvPost : SS -> VP -> VP = \adv,vp -> vp ** {
prePart = vp.prePart ++ adv.s ;
} ;
} ;
insertPP : SS -> VP -> VP = \pp,vp -> vp ** {
prePart = vp.prePart ++ pp.s ;
} ;
} ;
insertExtra : SS -> VP -> VP = \ext,vp ->
insertObjPost ext vp ;
-- clauses: keep np and vp separate to enable insertion of IAdv
Clause : Type = {
s : Polarity => Aspect => Str ;
np : Str;
vp : VP
} ;
Clause : Type = {
s : Polarity => Aspect => Str ;
np : Str ;
vp : VP ;
postJiu : Polarity => Aspect => Str ;
} ;
Sentence : Type = {
preJiu, -- everything until the subject
postJiu -- everything after the subject
: Str
} ;
linS : Sentence -> Str = \s -> s.preJiu ++ s.postJiu ;
simpleS : Str -> Sentence = \s -> {preJiu=s ; postJiu=[]} ;
mkClause = overload {
mkClause : Str -> Verb -> Clause = \np,v ->
mkClause : Str -> Verb -> Clause = \np,v ->
mkClauseCompl np (predV v []) [] ;
mkClause : Str -> Verb -> Str -> Clause = \subj,verb,obj ->
mkClauseCompl subj (predV verb []) obj ;
mkClause : Str -> VP -> Clause = \np,vp ->
mkClause : Str -> VP -> Clause = \np,vp ->
mkClauseCompl np vp [] ;
mkClause : Str -> VP -> Str -> Clause =
mkClause : Str -> VP -> Str -> Clause =
mkClauseCompl ;
} ;
mkClauseCompl : Str -> VP -> Str -> Clause = \np,vp,compl -> {
s = \\p,a => vp.topic ++ np ++ vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
np = vp.topic ++ np ;
vp = insertObj (ss compl) vp ;
postJiu = \\p,a => vp.prePart ++ useVerb vp.verb ! p ! a ++ vp.compl ++ compl ;
} ;
-- for structural words
param
param
DetType = DTFull Number | DTNum | DTPoss ; -- this, these, five, our
NumType = NTFull | NTVoid Number ; -- five, sg, pl
@@ -250,8 +281,8 @@ oper
s = word s
} ;
Preposition = {prepPre : Str ; prepPost : Str ; advType : AdvType ; hasDe : Bool} ;
Preposition = {prepPre : Str ; prepPost : Str ; advType : AdvType ; hasDe : Bool} ;
mkPreposition : Str -> Str -> AdvType -> Preposition = \s1,s2,at -> {
prepPre = word s1 ;
prepPost = word s2 ;
@@ -262,8 +293,8 @@ oper
advTypeHasDe : AdvType -> Bool = \at -> case at of {
ATPoss => True ;
_ => False
} ;
} ;
getAdvType : Str -> AdvType = \s -> case s of {
"的" => ATPoss ;
"在" + _ => ATPlace True ; -- certain that True
@@ -271,7 +302,7 @@ oper
} ;
possessiveIf : Bool -> Str = \hasDe -> case hasDe of {
True => [] ; --- to avoid double "de"
True => [] ; --- to avoid double "de"
_ => possessive_s
} ;
@@ -285,7 +316,7 @@ oper
mkNP : Str -> NP = ss ; -- not to be used in lexicon building
appPrep : Preposition -> Str -> Str = \prep,s ->
appPrep : Preposition -> Str -> Str = \prep,s ->
prep.prepPre ++ s ++ prep.prepPost ;
}
+30 -14
View File
@@ -1,4 +1,4 @@
concrete SentenceChi of Sentence = CatChi **
concrete SentenceChi of Sentence = CatChi **
open Prelude, ResChi in {
flags optimize=all_subs ;
@@ -12,39 +12,55 @@ concrete SentenceChi of Sentence = CatChi **
ImpVP vp = {
s = table {
Pos => infVP vp ;
Neg => neg_s ++ infVP vp
Neg => neg_s ++ infVP vp
}
} ;
SlashVP np vp =
SlashVP np vp =
mkClauseCompl np.s vp []
** {c2 = vp.c2} ;
SlashVS np vs sslash = <mkClause np.s vs sslash.s : Clause> ** {c2 = sslash.c2} ;
-- yet another reason for discontinuity of clauses
AdvSlash slash adv = slash ** {vp = insertAdv adv slash.vp} ;
---- parser loops with unknown tokens if this version is used AR 20/4/2014
---- mkClauseCompl slash.np <insertAdv adv slash.vp : VP> []
---- ** {c2 = slash.c2} ;
SlashPrep cl prep = cl ** {c2 = prep} ;
EmbedS s = ss (conjThat ++ s.s) ;
EmbedS s = ss (conjThat ++ linS s) ;
EmbedQS qs = ss (qs.s ! False) ;
EmbedVP vp = ss (infVP vp) ;
UseCl t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t} ;
UseQCl t p cl = {s = \\isDir => t.s ++ p.s ++ cl.s ! isDir ! p.p ! t.t} ;
UseRCl t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t} ;
UseCl t p cl = {
preJiu = cl.np ;
postJiu = t.s ++ p.s ++ cl.postJiu ! p.p ! t.t} ;
UseQCl t p cl = {s = \\isDir => t.s ++ p.s ++ cl.s ! isDir ! p.p ! t.t} ;
UseRCl t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t} ;
UseSlash t p cl = {s = t.s ++ p.s ++ cl.s ! p.p ! t.t ; c2 = cl.c2} ;
AdvS a s = ss (a.s ++ s.s) ;
ExtAdvS a s = ss (a.s ++ chcomma ++ s.s) ;
AdvS a s = s ** {
preJiu = a.s ++ s.preJiu -- tomorrow she
} ;
RelS s r = ss (s.s ++ r.s) ;
ExtAdvS a s = s ** {
preJiu = a.s ++ chcomma ++ s.preJiu -- tomorrow, she
} ;
SSubjS a subj b = ss (a.s ++ subj.prePart ++ b.s ++ subj.sufPart) ;
RelS s r = s ** {
postJiu = s.postJiu ++ r.s ;
} ;
-- a="she walks", b="I die"
-- result: preJiu="if she walks, I", postJiu="die"
SSubjS a subj b = {
preJiu = linS a ++ subj.prePart -- if she walks,
++ b.preJiu ; -- I
postJiu = b.postJiu ++ subj.sufPart -- die
} ;
}
+19 -16
View File
@@ -5,7 +5,7 @@ concrete StructuralChi of Structural = CatChi **
lin
every_Det = mkDet "每" Sg ;
this_Quant = mkQuant "这" ;
that_Quant = mkQuant "那" ;
@@ -25,18 +25,20 @@ lin
possess_Prep = mkPrep [] "的" ATPoss ;
with_Prep = mkPrep "和" "一起" (ATPlace True) ; -- "with you"
---- with_Prep = mkPrep "和" [] ; -- "with bread"
and_Conj = {s = table {
CPhr CNPhrase => mkConjForm "和" ;
CPhr CAPhrase => mkConjForm "而" ;
CPhr CVPhrase => mkConjForm "又" ;
CSent => mkConjForm "并且" --modified by chenpneg 11.19
}
CSent => mkConjForm "" --modified by chenpneg 11.19
} ;
conjType = NotJiu ;
} ;
or_Conj = {s = table {
CPhr _ => mkConjForm "或" ;
CSent => mkConjForm "还是"
}
} ;
conjType = NotJiu ;
} ;
although_Subj = mkSubj "虽然" "但";
@@ -52,8 +54,8 @@ when_IAdv = mkIAdvL "什么时候" ;
how_IAdv = mkIAdvL "如何" ;
all_Predet = ssword "所有" ;
many_Det = mkDet (word "很多") DTPoss ;
someSg_Det = mkDet (word "一些") Sg ;
somePl_Det = mkDet (word "一些") Sg ;
someSg_Det = mkDet (word "一些") DTPoss ;
somePl_Det = mkDet (word "一些") DTPoss ;
few_Det = mkDet "少" Pl ;
other_A = mkA "其他" ;
@@ -116,13 +118,14 @@ as_CAdv = {s = word "和" ; p = word "一样" } ; -- modified by chenpeng 11.24
at_least_AdN = ssword "最少" ; -- at least five
at_most_AdN = ssword "最多" ;
behind_Prep = mkPrep "在" "后面" ;
both7and_DConj = {s = table { -- modified by chenpeng 11.19
CPhr CNPhrase => mkConjForm2 "包括" "和" ;
CPhr CAPhrase => mkConjForm2 "即" "又" ;
CPhr CVPhrase => mkConjForm2 "不但" "而且" ;
CSent => mkConjForm2 "不但" "而且"
}
} ;
conjType = NotJiu ;
} ;
by8agent_Prep = mkPrep "被" [] mannerAdvType; -- by for agent in passive
@@ -135,7 +138,8 @@ either7or_DConj = {s = table { -- modified by chenpeng 11.19
CPhr CAPhrase => mkConjForm2 "要么" "要么" ;
CPhr CVPhrase => mkConjForm2 "要么" "要么" ;
CSent => mkConjForm2 "要么" "要么"
}
} ;
conjType = NotJiu ;
} ;
everybody_NP = ssword "每个人" ; -- [mark] "每个人": 每(every)+个(classifier)+人(person)
@@ -152,11 +156,10 @@ less_CAdv = {s = than_s ; p = word "没更"} ; -- modified by chenpeng 11.24
more_CAdv = {s = than_s ; p = word "更"} ; -- modified by chenpeng 11.24
most_Predet = ssword "大多数" ;
if_then_Conj = {s = table { -- added by chenpeng 11.19
CPhr CNPhrase => mkConjForm [] ;
CPhr CAPhrase => mkConjForm [] ;
CPhr CVPhrase => mkConjForm [] ;
CSent => mkConjForm2 "如果" "那么"
}
CSent => mkConjForm2 "如果" "就" ; -- if she walks, I then sleep
CPhr _ => mkConjForm2 "如果" "那么" -- if fish , then rice
} ;
conjType = Jiu ;
} ;
nobody_NP = ssword "没人" ;
nothing_NP = ssword "没有什么" ;
@@ -171,7 +174,7 @@ there7from_Adv = mkAdv "从那里" ; -- from there
there7to_Adv = mkAdv "到那里" ;
therefore_PConj = ssword "因此" ;
through_Prep = mkPrep "通过" ;
which_IQuant = mkIQuant "哪" ; --
which_IQuant = mkIQuant "哪" ; --
--which_IQuant = ssword [] ; -- [mark] in sent, it depends on the context
without_Prep = mkPrep "没有" [] mannerAdvType ;
youPol_Pron = ssword "您" ; -- polite you
+3 -3
View File
@@ -13,17 +13,17 @@ concrete SymbolChi of Symbol = CatChi ** open Prelude, ResChi in {
s = cn.s ++ i.s ;
c = cn.c
} ;
CNSymbNP det cn xs = ss (det.s ++ cn.s ++ xs.s) ; ----
CNSymbNP det cn xs = ss (det.s ++ cn.s ++ xs.s) ; ----
CNNumNP cn i = {
s = cn.s ++ i.s ;
c = cn.c
} ;
SymbS sy = sy ;
SymbS sy = simpleS sy.s ;
SymbNum sy = sy ;
SymbOrd sy = sy ;
lincat
lincat
Symb, [Symb] = SS ;
+4 -4
View File
@@ -1,4 +1,4 @@
concrete TenseChi of Tense =
concrete TenseChi of Tense =
CatChi [Tense,Temp,Ant], TenseX [Pol,PNeg,PPos] ** open ResChi in {
lin
@@ -6,11 +6,11 @@ concrete TenseChi of Tense =
---- ??
TPres = {s = [] ; t = APlain} ;
TPast = {s = [] ; t = APerf} ;
TFut = {s = [] ; t = ADurProg} ;
TPast = {s = [] ; t = APerf} ;
TFut = {s = [] ; t = AFut} ;
TCond = {s = [] ; t = ADurStat} ;
ASimul = {s = [] ; t = APlain} ;
AAnter = {s = [] ; t = APerf} ;
AAnter = {s = [] ; t = APerf} ;
}
+13 -13
View File
@@ -7,14 +7,14 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
SlashV2a v = predV v v.part ** {c2 = v.c2 ; isPre = v.hasPrep} ;
Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v v.part) ** {c2 = v.c3 ; isPre = v.hasPrep} ; -- slot for third argument
Slash2V3 v np = insertAdv (mkNP (ba_s ++ np.s)) (predV v v.part) ** {c2 = v.c3 ; isPre = v.hasPrep} ; -- slot for third argument
Slash3V3 v np = insertObj (mkNP (appPrep v.c3 np.s)) (predV v v.part) ** {c2 = v.c2 ; isPre = True} ; -- slot for ba object
SlashV2A v ap = insertObj ap (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ;
SlashV2A v ap = insertObj {s = ap.s ! Pred} (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ;
SlashV2V v vp = insertObj (mkNP (infVP vp)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ;
SlashV2S v s = insertObj (ss (say_s ++ s.s)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ;
SlashV2Q v q = insertObj (ss (say_s ++ q.s ! False)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ;
SlashV2S v s = insertObj (ss (say_s ++ linS s)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ;
SlashV2Q v q = insertObj (ss (say_s ++ q.s ! False)) (predV v v.part) ** {c2 = v.c2 ; isPre = v.hasPrep} ;
ComplVV v vp = {
verb = v ;
@@ -23,9 +23,9 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
isAdj = False ;
} ;
ComplVS v s = insertObj s (predV v []) ;
ComplVQ v q = insertObj (ss (q.s ! False)) (predV v []) ;
ComplVA v ap = insertObj ap (predV v []) ;
ComplVS v s = insertObj (ss (linS s)) (predV v []) ;
ComplVQ v q = insertObj (ss (q.s ! False)) (predV v []) ;
ComplVA v ap = insertObj {s = ap.s ! Pred} (predV v []) ;
ComplSlash vp np = case vp.isPre of {
--- True => insertAdv (mkNP (ba_s ++ np.s)) vp ; --- ba or vp.c2 ?
@@ -39,7 +39,7 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
SlashVV v vp = ---- too simple?
insertObj (mkNP (infVP vp)) (predV v []) ** {c2 = vp.c2 ; isPre = vp.isPre} ;
SlashV2VNP v np vp =
SlashV2VNP v np vp =
insertObj np
(insertObj (mkNP (infVP vp)) (predV v v.part)) ** {c2 = vp.c2 ; isPre = vp.isPre} ;
@@ -56,19 +56,19 @@ concrete VerbChi of Verb = CatChi ** open ResChi, Prelude in {
ATTime | ATPoss => insertTopic adv vp -- *today* he here sleeps
} ;
AdVVP adv vp = insertAdv adv vp ;
AdVVP adv vp = insertAdv adv vp ;
ReflVP vp = insertObj (mkNP reflPron) vp ;
PassV2 v = insertAdv (mkNP passive_s) (predV v v.part) ; ----
CompAP ap = insertObj (mkNP (ap.s ++ de_s)) (predV copula []) ** {isAdj = True} ;
CompAP ap = insertObj (mkNP (ap.s ! Pred ++ de_s)) (predV copula []) ** {isAdj = True} ;
{-
CompAP ap = case ap.hasAdA of {
True => insertObj (mkNP ap.s) (predV nocopula []) ;
True => insertObj (mkNP ap.s) (predV nocopula []) ;
False => insertObj (mkNP (ap.s ++ de_s)) (predV copula [])
} ;
} ;
-}
CompNP np = insertObj np (predV copula []) ; ----
+3
View File
@@ -0,0 +1,3 @@
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (AdjCN (PositA green_A) (UseN cat_N))) (UseComp (CompAP (PositA green_A))))
LangChi: 那 只 绿 猫 是 绿 色 的
LangEng: that green cat is green
+12
View File
@@ -0,0 +1,12 @@
-- These are not ideal output. TODO: Add new constructor for semantic contexts to achieve the correct output for "地" vs "得"
Lang: PredVP (AdvNP (UsePron it_Pron) (PositAdvAdj beautiful_A)) (UseV walk_V)
LangChi: 漂 亮 地 的 它 走
LangEng: it beautifully walks
-- Correct LangChi: 它 漂 亮 地 走
Lang: PredVP (UsePron it_Pron) (AdvVP (UseV walk_V) (PositAdvAdj beautiful_A))
LangChi: 它 走 得 漂 亮 地
LangEng: it walks beautifully
-- Correct LangChi: 它 走 得 漂 亮
+3
View File
@@ -0,0 +1,3 @@
-- One way of saying "he/she gives me a cat"
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (Slash2V3 give_V3 (DetCN (DetQuant DefArt NumSg) (UseN cat_N))) (UsePron i_Pron)))
LangChi: 他 把 猫 给 我
+47
View File
@@ -0,0 +1,47 @@
-- Basic conjunctions, no jiu
Lang: ConjS and_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V))))
LangChi: 我 睡 觉 而 她 走
LangEng: I sleep and she walks
Lang: ConjS or_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV go_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV go_V))))
LangChi: 我 去 还 是 她 去
LangEng: I go or she goes
Lang: ConjS either7or_DConj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV go_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV go_V))))
LangChi: 要 么 我 去 要 么 她 去
LangEng: either I go or she goes
-- If-then in different tenses
Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V))))
LangChi: 如 果 我 睡 觉 , 她 就 死
LangEng: if I sleep then she dies
Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V))))
LangChi: 如 果 我 睡 觉 , 她 就 会 死
LangEng: if I sleep then she will die
-- contrast: if_Subj, not if_then_Conj
Lang: ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV die_V)))
LangChi: 如 果 我 睡 觉 , 她 会 死
LangEng: if I sleep , she will die
-- back to if_then_Conj, now with negations
Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron she_Pron) (UseV die_V))))
LangChi: 如 果 我 睡 觉 , 她 就 不 死
LangEng: if I sleep then she doesn't die
Lang: ConjS if_then_Conj (BaseS (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V))) (UseCl (TTAnt TFut ASimul) PNeg (PredVP (UsePron she_Pron) (UseV die_V))))
LangChi: 如 果 我 睡 觉 , 她 就 不 会 死
LangEng: if I sleep then she won't die
-- NP conjunctions
Lang: ConjNP or_Conj (BaseNP (MassNP (UseN fish_N)) (MassNP (UseN beer_N)))
LangChi: 鱼 或 啤 酒
LangEng: fish or beer
--NB: unnatural non-empty strings just for testing purpose
Lang: ConjNP if_then_Conj (BaseNP (MassNP (UseN fish_N)) (MassNP (UseN beer_N)))
LangChi: 如 果 鱼 那 么 啤 酒
LangEng: if fish then beer
+32
View File
@@ -0,0 +1,32 @@
Lang: UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron i_Pron) (UseV die_V))
LangChi: 我 会 死
LangEng: I will die
Lang: ExtAdvS (SubjS if_Subj (UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (UseV sleep_V)))) (UseCl (TTAnt TFut ASimul) PPos (PredVP (UsePron she_Pron) (UseV walk_V)))
LangChi: 如 果 我 睡 觉 , 她 会 走
LangEng: if I sleep , she will walk
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ProgrVP (UseV die_V)))
LangChi: 我 在 死
LangEng: I am dying
Lang: UseCl (TTAnt TFut ASimul) PNeg (PredVP (UsePron i_Pron) (UseV die_V))
LangChi: 我 不 会 死
LangEng: I won't die
Lang: UseQCl (TTAnt TFut ASimul) PPos (QuestCl (PredVP (UsePron i_Pron) (UseV die_V)))
-- LangChi: 我 会 不 会 死
LangChi: 我 会 死 吗
LangEng: will I die
Lang: UseQCl (TTAnt TFut ASimul) PNeg (QuestCl (PredVP (UsePron i_Pron) (UseV die_V)))
LangChi: 我 不 会 死 吗
LangEng: won't I die
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron i_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TFut ASimul) PPos (QuestCl (PredVP (UsePron i_Pron) (UseV die_V))))))
LangChi: 我 不 知 道 我 会 死 吗
LangEng: I don't know if I will die
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (UsePron i_Pron) (ComplVQ know_VQ (UseQCl (TTAnt TFut ASimul) PNeg (QuestCl (PredVP (UsePron i_Pron) (UseV die_V))))))
LangChi: 我 不 知 道 我 不 会 死 吗
LangEng: I don't know if I won't die
+30
View File
@@ -0,0 +1,30 @@
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (MassNP (UseN cat_N)) (UseComp (CompCN (UseN dog_N))))
LangEng: cat isn't a dog
LangChi: 猫 不 是 狗
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (UseComp (CompAP (PositA green_A))))
LangEng: these cats aren't green
LangChi: 这 些 猫 不 是 绿 色 的
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumPl) (UseN cat_N)) (UseComp (CompAdv (PrepNP in_Prep (DetCN (DetQuant DefArt NumSg) (UseN house_N))))))
LangEng: those cats aren't in the house
LangChi: 那 些 猫 不 在 房 子 中
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (ComplVV can8know_VV (UseV walk_V)))
LangChi: 这 些 猫 不 会 走
LangEng: these cats can't walk
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (ComplVV can_VV (UseV walk_V)))
LangChi: 这 些 猫 不 能 走
LangEng: these cats can't walk
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant this_Quant NumPl) (UseN cat_N)) (ComplVV want_VV (UseV walk_V)))
LangChi: 这 些 猫 不 想 走
LangEng: these cats don't want to walk
-- this tree does not make semantic sense in chinese but is compositionally correct due to the direct word for word translation for "must"
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumPl) (UseN cat_N)) (ComplVV must_VV (UseV walk_V)))
LangChi: 那 些 猫 不 必 须 走
LangEng: those cats mustn't walk
-- 没有 and must not , bu ke yi
+11
View File
@@ -0,0 +1,11 @@
Lang: DetCN (DetQuant IndefArt (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 pot01))))))) (UseN cat_N)
LangEng: one cat
LangChi: 一 只 猫
Lang: DetCN (DetQuant this_Quant (NumCard (NumNumeral (num (pot2as3 (pot1as2 (pot0as1 (pot0 n5)))))))) (UseN cat_N)
LangEng: these five cats
LangChi: 这 五 只 猫
Lang: DetCN (DetQuant (PossPron i_Pron) (NumCard (NumNumeral (num (pot2as3 (pot2 (pot0 n7))))))) (UseN cat_N)
LangEng: my seven hundred cats
LangChi: 我 的 七 百 只 猫
+11
View File
@@ -0,0 +1,11 @@
Lang: PredVP (DetCN (DetQuant that_Quant NumSg) (UseN boy_N)) (PassV2 kill_V2)
LangEng: that boy is killed
LangChi: 那 个 男 孩 被 杀
Lang: PredVP (DetCN (DetQuant DefArt NumSg) (UseN chair_N)) (PassV2 split_V2)
LangEng: the chair is split
LangChi: 椅 子 被 劈 开
Lang: UseCl (TTAnt TPres ASimul) PNeg (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN boy_N)) (ComplVV want_VV (PassV2 kill_V2)))
LangEng: that boy doesn't want to be killed
LangChi: 那 个 男 孩 不 想 被 杀
+117
View File
@@ -0,0 +1,117 @@
----------
-- Objects
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant DefArt NumSg) (UseN cat_N)) (ComplSlash (VPSlashPrep (ComplSlash (VPSlashPrep (UseV go_V) with_Prep) (UsePron i_Pron)) to_Prep) (DetCN (DetQuant DefArt NumSg) (UseN moon_N))))
LangEng: the cat goes with me to the moon
LangChi: 猫 和 我 一 起 往 月 亮 去
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron i_Pron) NumPl) (UseN cat_N)) (UseComp (CompAdv (PrepNP with_Prep (DetCN (DetQuant that_Quant NumSg) (UseN person_N))))))
LangEng: my cats are with that person
LangChi: 我 的 猫 和 那 个 人 一 起
Lang: UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a hit_V2) (UsePron he_Pron)))
LangEng: I hit him
LangChi: 我 打 了 他
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a hit_V2) (UsePron he_Pron)))
LangEng: I hit him
LangChi: 我 打 他
-------------
-- Possession
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N)
LangEng: my cat
LangChi: 我 的 猫
-- that is my cat
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetNP (DetQuant that_Quant NumSg)) (UseComp (CompNP (DetCN (DetQuant (PossPron i_Pron) NumSg) (UseN cat_N)))))
LangEng: that is my cat
LangChi: 那 个 是 我 的 猫
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant that_Quant NumSg) (UseN cat_N)) (UseComp (CompNP (DetNP (DetQuant (PossPron i_Pron) NumSg)))))
LangEng: that cat is mine
LangChi: 那 只 猫 是 我 的
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (DetCN (DetQuant (PossPron she_Pron) NumSg) (UseN cat_N)) (UseComp (CompAP (PositA green_A))))
LangEng: her cat is green
LangChi: 她 的 猫 是 绿 色 的
-- two variants, different trees
-- read a book
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant IndefArt NumSg) (PossNP (UseN book_N) (UsePron she_Pron)))))
LangEng: he reads a book of hers
LangChi: 他 读 一 本 她 的 书
Lang: UseCl (TTAnt TPres ASimul) PPos (PredVP (UsePron he_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant (PossPron she_Pron) NumSg) (UseN book_N))))
LangEng: he reads her book
LangChi: 他 读 她 的 书
-- I read his/her father's book
Lang: UseCl (TTAnt TPast ASimul) PPos (PredVP (UsePron i_Pron) (ComplSlash (SlashV2a read_V2) (DetCN (DetQuant DefArt NumSg) (PossNP (UseN book_N) (DetCN (DetQuant DefArt NumSg) (PossNP (UseN2 father_N2) (UsePron she_Pron)))))))
LangEng: I read the book of the father of hers
LangChi: 我 读 了 她 的 父 亲 的 书
-- Only the noun phrase
Lang: MassNP (PossNP (UseN book_N) (UsePron he_Pron))
LangEng: book of his
LangChi: 他 的 书
Lang: DetCN (DetQuant (PossPron he_Pron) NumSg) (UseN book_N)
LangEng: his book
LangChi: 他 的 书
-- For non-pronoun NPs, multiple trees
Lang: AdvNP (MassNP (UseN book_N)) (PrepNP part_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: AdvNP (MassNP (UseN book_N)) (PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (AdvCN (UseN book_N) (PrepNP part_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (AdvCN (UseN book_N) (PrepNP possess_Prep (DetCN (DetQuant DefArt NumSg) (UseN cat_N))))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (ApposCN (AdvCN (UseN book_N) (PrepNP part_Prep (DetNP (DetQuant DefArt NumPl)))) (MassNP (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (ApposCN (AdvCN (UseN book_N) (PrepNP possess_Prep (DetNP (DetQuant DefArt NumPl)))) (MassNP (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (ApposCN (PartNP (UseN book_N) (DetNP (DetQuant DefArt NumPl))) (MassNP (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (ApposCN (PossNP (UseN book_N) (DetNP (DetQuant DefArt NumPl))) (MassNP (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (PartNP (UseN book_N) (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
Lang: MassNP (PossNP (UseN book_N) (DetCN (DetQuant DefArt NumSg) (UseN cat_N)))
LangEng: book of the cat
LangChi: 猫 的 书
-- You can also produce nonsensical variants, in all languages.
-- The point of RGL is to be a collection of syntactic structures,
-- and application grammarians can choose to use them in any combinations.
-- So the following English linearizations aren't *wrong*, they just don't make sense.
-- If theese Chinese linearizations are merely weird, like the English ones, then they are correct.
-- If they feel wrong in the same way as "his cat of my" would in English, then they are wrong.
Lang: DetCN (DetQuant (PossPron he_Pron) NumSg) (PossNP (UseN cat_N) (UsePron i_Pron))
LangEng: his cat of mine
LangChi: 他 的 我 的 猫
Lang: DetCN (DetQuant (PossPron i_Pron) NumSg) (PossNP (UseN cat_N) (UsePron she_Pron))
LangEng: my cat of hers
LangChi: 我 的 她 的 猫

Some files were not shown because too many files have changed in this diff Show More