zenlish 0.1.24 → 0.1.25

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ff9fe6b71c6807a241c2b87205c7548c9a6b235b3e299ed29a2bddb3647b06d
4
- data.tar.gz: 5848cd30bc33670edcd39de4522b5a60cbadd6109aad7f94fa51806ad3c387a3
3
+ metadata.gz: d2f0746a4aeb453208667a3e6eed3f97ffda61a31bb9b551f3f80a09e04881bd
4
+ data.tar.gz: 958188827568032a3a71cc8021c3b6bdbaab6ddcd56508c2e13b93773b073631
5
5
  SHA512:
6
- metadata.gz: d0e361c9df02b285dd84c5228cc22fa5e4bb1c7f9d33a21c1eefccf53d87298482e87d99b6ad2cfd60523692321da372d508f94fe17ee82ecf99519f00d21b18
7
- data.tar.gz: 47b17dd65f35c051f9ce2fe166b97555eb7ff520f985f3cb21846cbc53c9917757e5b668c1e52667ab941b9636b97036999a472a3dbeaaa3c0f5977dd8c704a3
6
+ metadata.gz: 738bbeefbef76458d197b0dc5e7de3d9f0994304500933532da3a7935070a1981d8456e32e945c0d4f6e7e51f2f55389e9eb6debf7f945a2b441531a829e4963
7
+ data.tar.gz: 83237e8124d9d57ecd8d572b69ed88d26970c348ca2c2cef8b52a02a11a19d813eb867c1c44b56e9014a2e8f3bc5218e1ddf422cc08e42287f0b053bfdf9af7d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.1.25] - 2019-12-06
4
+ __Zenlish__ can parse all sentences in lesson 1, 2 and 3-A .. 3-G (352 sentences in total) from
5
+ [Learn These Words First](http://learnthesewordsfirst.com/).
6
+
7
+ ### Changed
8
+ - File `lesson3_spec.rb`: tests include all sentences from lesson 3-A to 3-G.
9
+ - `ZenlishGrammar`: refactoring of the predicative_sentence rules.
10
+ - File `dictionary.rb`: new entries in lexicon `between`, `choose`, `machine`.
11
+ - File `README.md` Updated the metrics table
12
+
3
13
  ## [0.1.24] - 2019-12-05
4
14
  __Zenlish__ can parse all sentences in lesson 1, 2 and 3-A .. 3-F (323 sentences in total) from
5
15
  [Learn These Words First](http://learnthesewordsfirst.com/).
data/README.md CHANGED
@@ -20,7 +20,7 @@ users with a language that is close enough to English.
20
20
  ### Project status
21
21
 
22
22
  The project is still in inception. Currently, zenlish is able to parse all
23
- sentences from lessons 1-A up to 3-F from
23
+ sentences from lessons 1-A up to 3-G from
24
24
  [Learn These Words First](http://learnthesewordsfirst.com/).
25
25
  The parser is able to cope with syntactical ambiguities generating parse forests
26
26
  instead of parse trees.
@@ -33,18 +33,18 @@ Over time, the zenlish gem will contain:
33
33
  - A lexicon [STARTED]
34
34
  - A context-free grammar [STARTED]
35
35
  - A parser [STARTED]
36
- - Feature unification (for number, gender agreement)[TODO]
36
+ - Feature unification (for number, gender agreement,...)[TODO]
37
37
  - A simplified ontology[TODO]
38
38
 
39
39
 
40
- #### Some project metrics (v. 0.1.24)
40
+ #### Some project metrics (v. 0.1.25)
41
41
  |Metric|Value|
42
42
  |:-:|:-:|
43
- | Number of lemmas in dictionary | 132 |
43
+ | Number of lemmas in dictionary | 138 |
44
44
  | [Coverage 100 commonest English words](https://en.wikipedia.org/wiki/Most_common_words_in_English) | 61% |
45
- | Number of production rules in grammar | 181 |
46
- | Number of lessons covered | 22 |
47
- | Number of sentences in spec files | 323 |
45
+ | Number of production rules in grammar | 185 |
46
+ | Number of lessons covered | 23 |
47
+ | Number of sentences in spec files | 352 |
48
48
 
49
49
 
50
50
  ## Installation...
@@ -123,7 +123,7 @@ Litmus test: a Zenlish text should be easy to read to a English reading person.
123
123
  Here a tentative roadmap:
124
124
 
125
125
  #### A) Ability to parse sentences from [Learn These Words First](http://learnthesewordsfirst.com/)
126
- *STARTED*. 22.9% complete
126
+ *STARTED*. 24% complete
127
127
  This website advocates the idea of a multi-layered dictionary.
128
128
  At the core, there are about 300 essential words.
129
129
  The choice of these words is inspired by the semantic primitives of [NSM
@@ -22,12 +22,14 @@ unless defined?(Zenlish::Lang::Dictionary)
22
22
  add_entry('about', 'Preposition')
23
23
  add_entry('above', 'Preposition')
24
24
  add_entry('after', 'Adverb')
25
+ add_entry('after', 'Preposition')
25
26
  add_entry('after', 'SubordinatingConjunction')
26
27
  add_entry('alive', 'Adjective')
27
28
  add_entry('all', 'FrontingQuantifier')
28
29
  add_entry('and', 'Coordinator')
29
30
  add_entry('animal', 'CommonNoun')
30
31
  add_entry('another', 'Adjective')
32
+ add_entry('another', 'Pronoun')
31
33
  add_entry('as', 'ComparativeParticle')
32
34
  add_entry('at', 'Preposition')
33
35
  add_entry('bad', 'Adjective')
@@ -37,15 +39,18 @@ unless defined?(Zenlish::Lang::Dictionary)
37
39
  add_entry('become', 'IrregularLinkingVerb')
38
40
  add_entry('before', 'Adverb')
39
41
  add_entry('before', 'Adjective')
42
+ add_entry('before', 'Preposition')
40
43
  add_entry('before', 'SubordinatingConjunction')
41
44
  add_entry('belong', 'RegularVerb')
42
45
  add_entry('below', 'Preposition')
46
+ add_entry('between', 'Preposition')
43
47
  add_entry('big', 'Adjective')
44
48
  add_entry('body', 'CommonNoun')
45
49
  add_entry('but', 'Coordinator')
46
50
  add_entry('can', 'ModalVerbCan')
47
51
  add_entry('cause', 'RegularVerb')
48
52
  add_entry('change', 'RegularVerb')
53
+ add_entry('choose', 'IrregularVerb')
49
54
  add_entry('contain', 'RegularVerb')
50
55
  add_entry('container', 'CommonNoun')
51
56
  add_entry('could', 'ModalVerbCould')
@@ -80,6 +85,7 @@ unless defined?(Zenlish::Lang::Dictionary)
80
85
  add_entry('live', 'RegularVerb')
81
86
  add_entry('living', 'Adjective')
82
87
  add_entry('long', 'Adjective')
88
+ add_entry('machine', 'CommonNoun')
83
89
  add_entry('make', 'IrregularVerb')
84
90
  add_entry('many', 'Quantifier')
85
91
  add_entry('maybe', 'AdverbMaybe')
@@ -36,18 +36,17 @@ builder = Rley::Syntax::GrammarBuilder.new do
36
36
  # there + (auxiliary/raising verb) + be + notional subject.
37
37
  rule 'existential_sentence' => 'ExistentialThere IrregularVerbBe existential_subject'
38
38
  rule 'negative_sentence' => 'negative_tense_phrase'
39
- rule 'negative_sentence' => 'negated_predicate_sentence'
40
39
  rule 'inexistential_sentence' => 'ExistentialThere IrregularVerbBe AdverbNot existential_subject'
41
40
  rule 'existential_subject' => 'noun_phrase adverb_phrase_opt'
42
41
  rule 'existential_subject' => 'prepositional_phrase'
43
42
 
44
- rule 'predicative_sentence' => 'noun_phrase affirmation'
45
- rule 'predicative_sentence' => 'conjunctive_prefix affirmation'
46
- rule 'negated_predicate_sentence' => 'noun_phrase adverb_phrase_opt negation'
47
- rule 'negated_predicate_sentence' => 'conjunctive_prefix negation'
48
- rule 'affirmation' => 'IrregularVerbBe predicative_complement'
49
- rule 'negation' => 'IrregularVerbBe AdverbNot predicative_complement'
43
+ rule 'predicative_sentence' => 'noun_phrase adverb_phrase_opt assertion'
44
+ rule 'predicative_sentence' => 'conjunctive_prefix assertion'
45
+ rule 'assertion' => 'IrregularVerbBe adverb_not_opt predicative_complement'
50
46
  rule 'predicative_complement' => 'noun_phrase'
47
+ # Sentence 3-25f definiens: X is more than J but not more than K
48
+ rule 'predicative_complement' => 'predicative_complement Coordinator adverb_not_opt predicative_complement'
49
+ rule 'adverb_not_opt' => 'AdverbNot'
51
50
  # 3-22b: X is not the same as before.
52
51
  rule 'predicative_complement' => 'noun_phrase ComparativeParticle Adverb'
53
52
  rule 'predicative_complement' => 'adjective_phrase comparative_clause_opt'
@@ -59,15 +58,17 @@ builder = Rley::Syntax::GrammarBuilder.new do
59
58
  rule 'predicative_complement' => 'adverb_phrase_opt prepositional_phrase'
60
59
  # something that was not here before.
61
60
  rule 'predicative_complement' => 'adverb_phrase_star'
61
+ rule 'adverb_not_opt' => []
62
62
 
63
63
  #################
64
64
  # Complex sentence
65
65
  #################
66
- # Case of dropped ´that´ conjunction
67
66
  rule 'complex_sentence' => 'AdverbMaybe complex_sentence'
68
67
  rule 'complex_sentence' => 'main_clause comma_opt subordinated_clause'
69
68
  rule 'complex_sentence' => 'main_clause comma_opt relative_clause'
70
69
  rule 'complex_sentence' => 'main_clause comma_opt coordinate_clause'
70
+ # 3-27b: They can do more than people can do.
71
+ rule 'complex_sentence' => 'main_clause comma_opt comparative_clause'
71
72
  # 3-22d: ..., it changed what I thought about them.
72
73
  rule 'complex_sentence' => 'main_clause conjunctive_prefix'
73
74
  # 3-22d: I cannot see what is inside.
@@ -79,6 +80,9 @@ builder = Rley::Syntax::GrammarBuilder.new do
79
80
  rule 'complex_sentence' => 'main_clause infinitive_clause'
80
81
  # Colon used to introduce an explanatory sentence.
81
82
  rule 'complex_sentence' => 'main_clause Colon sentence'
83
+ # sentence 3-24b: after this moment, you try for some time to do this one.
84
+ rule 'complex_sentence' => 'adverbial Comma main_clause'
85
+ rule 'adverbial' => 'adverb_phrase noun_phrase'
82
86
  rule 'comma_opt' => 'Comma'
83
87
  rule 'comma_opt' => []
84
88
 
@@ -94,6 +98,8 @@ builder = Rley::Syntax::GrammarBuilder.new do
94
98
  rule 'infinitive_clause' => 'verb_phrase' # Too broad
95
99
  rule 'comparative_clause_opt' => 'comparative_clause'
96
100
  rule 'comparative_clause_opt' => []
101
+ # 3-27b: they can do more than people can do AND more than people want to do.
102
+ rule 'comparative_clause' => 'comparative_clause Coordinator adverb_phrase comparative_clause'
97
103
  rule 'comparative_clause' => 'comparative_start noun_phrase'
98
104
  rule 'comparative_clause' => 'comparative_start declarative_simple_sentence'
99
105
  # rule 'comparative_clause' => 'comparative_start DefiniteArticle Adjective Cardinal'
@@ -105,13 +111,14 @@ builder = Rley::Syntax::GrammarBuilder.new do
105
111
  rule 'relative_clause_opt' => []
106
112
  rule 'relative_clause' => 'RelativePronoun tense_phrase'
107
113
  # Sentence 3-Bxa 'Lisa sees a living thing that is very big.
108
- rule 'relative_clause' => 'RelativePronoun affirmation'
109
114
  # Sentence 3-18b: something that was not here before.
110
- rule 'relative_clause' => 'RelativePronoun negation'
115
+ rule 'relative_clause' => 'RelativePronoun assertion'
111
116
  rule 'relative_clause' => 'identifying_clause'
112
- rule 'coordinate_clause' => 'Coordinator simple_sentence'
113
- # Sentence 3-11b K happens because J happens or because J does something.
117
+ rule 'coordinate_clause' => 'Coordinator sentence'
118
+ # Sentence 3-11b: K happens because J happens or because J does something.
114
119
  rule 'coordinate_clause' => 'Coordinator subordinated_clause'
120
+ # Sentence 3-24b: You think about these and what you want to do.
121
+ rule 'coordinate_clause' => 'Coordinator conjunctive_prefix'
115
122
 
116
123
  # Implicit subject. 3-05b: I saw this thing and touched some of its parts.
117
124
  rule 'coordinate_clause' => 'Coordinator tense_verb_phrase'
@@ -273,6 +280,8 @@ builder = Rley::Syntax::GrammarBuilder.new do
273
280
  ######################
274
281
  rule 'prepositional_phrases' => 'prepositional_phrases prepositional_phrase'
275
282
  rule 'prepositional_phrases' => []
283
+ # Sentence 3-25b definiens: X happens after J and before K
284
+ rule 'prepositional_phrase' => 'prepositional_phrase Coordinator prepositional_phrase'
276
285
  rule 'prepositional_phrase' => 'premodifier_prep preposition_head preposition_object'
277
286
  # premodifier_prep => # "A degree word" example 1: _straight_ across the street example 2: _right_ from the start
278
287
  rule 'premodifier_prep' => []
@@ -15,49 +15,49 @@ module Zenlish
15
15
  private
16
16
 
17
17
  def add_word_classes(aLexicon)
18
- aLexicon.add_terminal(WClasses::Adjective.new.freeze)
19
- aLexicon.add_terminal(WClasses::Adverb.new.freeze)
20
- aLexicon.add_terminal(WClasses::AdverbMaybe.new.freeze)
21
- aLexicon.add_terminal(WClasses::AdverbNot.new.freeze)
22
- aLexicon.add_terminal(WClasses::AuxiliaryBe.new.freeze)
23
- aLexicon.add_terminal(WClasses::AuxiliaryDo.new.freeze)
24
- aLexicon.add_terminal(WClasses::Cardinal.new.freeze)
25
- aLexicon.add_terminal(WClasses::CommonNoun.new.freeze)
26
- aLexicon.add_terminal(WClasses::ComparativeParticle.new.freeze)
27
- aLexicon.add_terminal(WClasses::ConjunctivePronoun.new.freeze)
28
- aLexicon.add_terminal(WClasses::Coordinator.new.freeze)
29
- aLexicon.add_terminal(WClasses::DefiniteArticle.new.freeze)
30
- aLexicon.add_terminal(WClasses::DegreeAdverb.new.freeze)
31
- aLexicon.add_terminal(WClasses::DemonstrativeDeterminer.new.freeze)
32
- aLexicon.add_terminal(WClasses::DemonstrativePronoun.new.freeze)
33
- aLexicon.add_terminal(WClasses::DistributiveDeterminer.new.freeze)
34
- aLexicon.add_terminal(WClasses::ExistentialThere.new.freeze)
35
- aLexicon.add_terminal(WClasses::FrontingQuantifier.new.freeze)
36
- aLexicon.add_terminal(WClasses::IndefiniteArticle.new.freeze)
37
- aLexicon.add_terminal(WClasses::IndefinitePronoun.new.freeze)
38
- aLexicon.add_terminal(WClasses::IrregularLinkingVerb.new.freeze)
39
- aLexicon.add_terminal(WClasses::IrregularVerb.new.freeze)
40
- aLexicon.add_terminal(WClasses::IrregularVerbBe.new.freeze)
41
- aLexicon.add_terminal(WClasses::IrregularVerbDo.new.freeze)
42
- aLexicon.add_terminal(WClasses::IrregularVerbHave.new.freeze)
43
- aLexicon.add_terminal(WClasses::IrregularVerbKnow.new.freeze)
44
- aLexicon.add_terminal(WClasses::IrregularVerbSay.new.freeze)
45
- aLexicon.add_terminal(WClasses::IrregularVerbThink.new.freeze)
46
- aLexicon.add_terminal(WClasses::LinkingAdverb.new.freeze)
47
- aLexicon.add_terminal(WClasses::ModalVerbCan.new.freeze)
48
- aLexicon.add_terminal(WClasses::ModalVerbCould.new.freeze)
49
- aLexicon.add_terminal(WClasses::PersonalPronoun.new.freeze)
50
- aLexicon.add_terminal(WClasses::PossessiveDeterminer.new.freeze)
51
- aLexicon.add_terminal(WClasses::Preposition.new.freeze)
52
- aLexicon.add_terminal(WClasses::PrepositionOf.new.freeze)
53
- aLexicon.add_terminal(WClasses::PrepositionThan.new.freeze)
54
- aLexicon.add_terminal(WClasses::Pronoun.new.freeze)
55
- aLexicon.add_terminal(WClasses::Quantifier.new.freeze)
56
- aLexicon.add_terminal(WClasses::RegularVerb.new.freeze)
57
- aLexicon.add_terminal(WClasses::RegularVerbWant.new.freeze)
58
- aLexicon.add_terminal(WClasses::RelativePronoun.new.freeze)
59
- aLexicon.add_terminal(WClasses::ProperNoun.new.freeze)
60
- aLexicon.add_terminal(WClasses::SubordinatingConjunction.new.freeze)
18
+ add_wclass(aLexicon, WClasses::Adjective)
19
+ add_wclass(aLexicon, WClasses::Adverb)
20
+ add_wclass(aLexicon, WClasses::AdverbMaybe)
21
+ add_wclass(aLexicon, WClasses::AdverbNot)
22
+ add_wclass(aLexicon, WClasses::AuxiliaryBe)
23
+ add_wclass(aLexicon, WClasses::AuxiliaryDo)
24
+ add_wclass(aLexicon, WClasses::Cardinal)
25
+ add_wclass(aLexicon, WClasses::CommonNoun)
26
+ add_wclass(aLexicon, WClasses::ComparativeParticle)
27
+ add_wclass(aLexicon, WClasses::ConjunctivePronoun)
28
+ add_wclass(aLexicon, WClasses::Coordinator)
29
+ add_wclass(aLexicon, WClasses::DefiniteArticle)
30
+ add_wclass(aLexicon, WClasses::DegreeAdverb)
31
+ add_wclass(aLexicon, WClasses::DemonstrativeDeterminer)
32
+ add_wclass(aLexicon, WClasses::DemonstrativePronoun)
33
+ add_wclass(aLexicon, WClasses::DistributiveDeterminer)
34
+ add_wclass(aLexicon, WClasses::ExistentialThere)
35
+ add_wclass(aLexicon, WClasses::FrontingQuantifier)
36
+ add_wclass(aLexicon, WClasses::IndefiniteArticle)
37
+ add_wclass(aLexicon, WClasses::IndefinitePronoun)
38
+ add_wclass(aLexicon, WClasses::IrregularLinkingVerb)
39
+ add_wclass(aLexicon, WClasses::IrregularVerb)
40
+ add_wclass(aLexicon, WClasses::IrregularVerbBe)
41
+ add_wclass(aLexicon, WClasses::IrregularVerbDo)
42
+ add_wclass(aLexicon, WClasses::IrregularVerbHave)
43
+ add_wclass(aLexicon, WClasses::IrregularVerbKnow)
44
+ add_wclass(aLexicon, WClasses::IrregularVerbSay)
45
+ add_wclass(aLexicon, WClasses::IrregularVerbThink)
46
+ add_wclass(aLexicon, WClasses::LinkingAdverb)
47
+ add_wclass(aLexicon, WClasses::ModalVerbCan)
48
+ add_wclass(aLexicon, WClasses::ModalVerbCould)
49
+ add_wclass(aLexicon, WClasses::PersonalPronoun)
50
+ add_wclass(aLexicon, WClasses::PossessiveDeterminer)
51
+ add_wclass(aLexicon, WClasses::Preposition)
52
+ add_wclass(aLexicon, WClasses::PrepositionOf)
53
+ add_wclass(aLexicon, WClasses::PrepositionThan)
54
+ add_wclass(aLexicon, WClasses::Pronoun)
55
+ add_wclass(aLexicon, WClasses::Quantifier)
56
+ add_wclass(aLexicon, WClasses::RegularVerb)
57
+ add_wclass(aLexicon, WClasses::RegularVerbWant)
58
+ add_wclass(aLexicon, WClasses::RelativePronoun)
59
+ add_wclass(aLexicon, WClasses::ProperNoun)
60
+ add_wclass(aLexicon, WClasses::SubordinatingConjunction)
61
61
  end
62
62
 
63
63
  def add_punctuation(aLexicon)
@@ -66,6 +66,11 @@ module Zenlish
66
66
  aLexicon.add_terminal(Rley::Syntax::Terminal.new('Period'))
67
67
  aLexicon.add_terminal(Rley::Syntax::Terminal.new('Quote'))
68
68
  end
69
+
70
+ def add_wclass(aLexicon, aClass)
71
+ aLexicon.add_terminal(aClass.new.freeze)
72
+ end
73
+
69
74
  end # module
70
75
  end # module
71
76
  end # module
@@ -1,3 +1,3 @@
1
1
  module Zenlish
2
- VERSION = '0.1.24'.freeze
2
+ VERSION = '0.1.25'.freeze
3
3
  end
@@ -392,6 +392,7 @@ module Zenlish
392
392
  ]
393
393
  expect { subject.to_pforest(literals) }.not_to raise_error
394
394
  end
395
+
395
396
  it 'should parse sample sentences from lesson 3-F' do
396
397
  # Sentence 3-21a definiendum: 'You try to do X.'
397
398
  literals = [you, try_, to, do_, x_as_noun, dot]
@@ -467,6 +468,113 @@ module Zenlish
467
468
  ]
468
469
  expect { subject.to_pforest(literals) }.not_to raise_error
469
470
  end
471
+
472
+ it 'should parse sample sentences from lesson 3-G' do
473
+ # Sentence 3-24a definiendum: 'You choose one of these things.'
474
+ literals = [you, choose, one, of, these, things, dot]
475
+ expect { subject.to_pforest(literals) }.not_to raise_error
476
+
477
+ # Sentence 3-24b definiendum: 'There are two or more things you can do.
478
+ # If you do one of these, you cannot do another.
479
+ # You think about these and what you want to do.
480
+ # There is one moment when you know what one of these you want more,
481
+ # and after this moment, you try for some time to do this one.
482
+ # [You can choose to have one of these things.]
483
+ # [I chose this big one.]'
484
+ literals = [there, are, two, or_, more, things, you, can, do_, dot,
485
+ if_, you, do_, one, of, these_as_pronoun, comma,
486
+ you, can, not_, do_, another_as_pronoun, dot,
487
+ you, think, about, these_as_pronoun, and_,
488
+ what, you, want, to, do_, dot,
489
+ there, is, one, moment, when_, you, know, what, one, of, these_as_pronoun,
490
+ you, want, more_as_adverb, comma, and_,
491
+ after_adverb, this, moment, comma, you, try_, for_, some, time,
492
+ to, do_, this, one_as_pronoun, dot,
493
+ you, can, choose, to, have, one, of, these, things, dot,
494
+ i_pronoun, chose, this, big, one_as_pronoun, dot
495
+ ]
496
+ expect { subject.to_pforest(literals) }.not_to raise_error
497
+
498
+ # Sentence 3-25a definiendum: 'X is in a place between J and K.'
499
+ literals = [x_as_noun, is, in_, a_as_art, place, between, j_, and_, k_, dot]
500
+ expect { subject.to_pforest(literals) }.not_to raise_error
501
+
502
+ # Sentence 3-25b definiens: X is in a place.
503
+ # J is on one side of X, and K is on the other side of X.
504
+ literals = [x_as_noun, is, in_, a_as_art, place, dot,
505
+ j_, is, on, one, side, of, x_as_noun, comma, and_,
506
+ k_, is, on, the, other, side, of, x_as_noun, dot
507
+ ]
508
+ expect { subject.to_pforest(literals) }.not_to raise_error
509
+
510
+ # Sentence 3-25c definiendum: 'X happens at a time between J and K.'
511
+ literals = [x_as_noun, happens, at, a_as_art, time, between, j_, and_, k_, dot]
512
+ expect { subject.to_pforest(literals) }.not_to raise_error
513
+
514
+ # Sentence 3-25d definiens: X happens after J and before K
515
+ literals = [x_as_noun, happens, after_as_prep, j_, and_,
516
+ before_as_prep, k_, dot]
517
+ expect { subject.to_pforest(literals) }.not_to raise_error
518
+
519
+ # Sentence 3-25e definiendum: 'X is between J and K.'
520
+ literals = [x_as_noun, is, between, j_, and_, k_, dot]
521
+ expect { subject.to_pforest(literals) }.not_to raise_error
522
+
523
+ # Sentence 3-25f definiens: X is more than J but not more than K.
524
+ literals = [x_as_noun, is, more, than, j_,
525
+ but, not_, more, than, k_, dot
526
+ ]
527
+ expect { subject.to_pforest(literals) }.not_to raise_error
528
+
529
+ # Sentence 3-26a definiendum: 'X moved here from this other place.'
530
+ literals = [x_as_noun, moved, here, from, this, other, place, dot]
531
+ expect { subject.to_pforest(literals) }.not_to raise_error
532
+
533
+ # Sentence 3-26b definiens: 'X was in this other place before
534
+ # it moved for some time. Because X moved, it is here after this,
535
+ # and it is not in this other place.'
536
+ literals = [x_as_noun, was, in_, this, other, place, before,
537
+ it_, moved, for_, some, time, dot,
538
+ because, x_as_noun, moved, comma, it_, is, here, after_,
539
+ this_as_pronoun, comma, and_, it_, is, not_, in_, this, other, place, dot
540
+ ]
541
+ expect { subject.to_pforest(literals) }.not_to raise_error
542
+
543
+ # Sentence 3-27a definiendum: 'X is a machine.'
544
+ literals = [x_as_noun, is, a_as_art, machine, dot]
545
+ expect { subject.to_pforest(literals) }.not_to raise_error
546
+
547
+ # Sentence 3-27b definiens: 'X is something people make.
548
+ # When people make some things like X, they use many parts to make these things.
549
+ # Some parts of X move. Some parts can cause other parts to move.
550
+ # People make things like this because these things do something that people want.
551
+ # These things can do more than people can do and more than people want to do.
552
+ # [I used a machine to cause these big things to move.].'
553
+ literals = [x_as_noun, is, something, people, make, dot,
554
+ when_, people, make, some, things, like, x_as_noun, comma,
555
+ they, use, many, parts, to, make, these, things, dot,
556
+ some, parts, of, x_as_noun, move, dot,
557
+ some, parts, can, cause, other, parts, to, move, dot,
558
+ people, make, things, like, this_as_pronoun, because, these, things, do_,
559
+ something, that, people, want, dot,
560
+ these, things, can, do_, more_as_adverb, than, people, can, do_,
561
+ and_, more_as_adverb, than, people, want, to, do_, dot,
562
+ i_pronoun, used, a_as_art, machine, to, cause, these, big, things,
563
+ to, move, dot
564
+ ]
565
+ expect { subject.to_pforest(literals) }.not_to raise_error
566
+
567
+ # Sentence 3-G xtra: Tony wants to make something using a machine.
568
+ # Tony is between two different machines.
569
+ # Tony says: "I can choose to use one of these machines."
570
+ literals = [ tony, wants, to, make, something, using, a_as_art,
571
+ machine, dot,
572
+ tony, is, between, two, different, machines, dot,
573
+ tony, says, colon, quote, i_pronoun, can, choose, to, use,
574
+ one, of, these, machines, dot, quote, dot
575
+ ]
576
+ expect { subject.to_pforest(literals) }.not_to raise_error
577
+ end
470
578
  end # context
471
579
  end # describe
472
580
  end # module
@@ -24,6 +24,7 @@ module Zenlish
24
24
  literal2var('about', 'about')
25
25
  literal2var('above', 'above')
26
26
  def after_adverb ; Lex::Literal.new('after', get_lexeme('after', WClasses::Adverb), 0) ; end
27
+ def after_as_prep ; Lex::Literal.new('after', get_lexeme('after', WClasses::Preposition), 0) ; end
27
28
  def after_ ; Lex::Literal.new('after', get_lexeme('after', WClasses::SubordinatingConjunction), 0) ; end
28
29
  literal2var('alive', 'alive')
29
30
  literal2var('all', 'all')
@@ -31,8 +32,9 @@ module Zenlish
31
32
  literal2var('and', 'and', '_')
32
33
  literal2var('animal', 'animal')
33
34
  literal2var('animal', 'animals')
34
- literal2var('another', 'another')
35
- def are ; Lex::Literal.new('are', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
35
+ def another ; Lex::Literal.new('another', get_lexeme('another', WClasses::Adjective), 0) ; end
36
+ def another_as_pronoun ; Lex::Literal.new('another', get_lexeme('another', WClasses::Pronoun), 0) ; end
37
+ def are ; Lex::Literal.new('are', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
36
38
  literal2var('as', 'as')
37
39
  literal2var('at', 'at')
38
40
  literal2var('bad', 'bad')
@@ -43,10 +45,12 @@ module Zenlish
43
45
  literal2var('become', 'becomes')
44
46
  def before_adverb ; Lex::Literal.new('before', get_lexeme('before', WClasses::Adverb), 0) ; end
45
47
  def before_as_adj ; Lex::Literal.new('before', get_lexeme('before', WClasses::Adjective), 0) ; end
48
+ def before_as_prep ; Lex::Literal.new('before', get_lexeme('before', WClasses::Preposition), 0) ; end
46
49
  def before ; Lex::Literal.new('before', get_lexeme('before', WClasses::SubordinatingConjunction), 0) ; end
47
50
  literal2var('belong', 'belong')
48
51
  literal2var('belong', 'belongs')
49
52
  literal2var('below', 'below')
53
+ literal2var('between', 'between')
50
54
  literal2var('big', 'big')
51
55
  literal2var('big', 'bigger')
52
56
  literal2var('body', 'body')
@@ -58,6 +62,8 @@ module Zenlish
58
62
  literal2var('change', 'change', '_')
59
63
  literal2var('change', 'changed')
60
64
  literal2var('change', 'changes')
65
+ literal2var('choose', 'choose')
66
+ literal2var('choose', 'chose')
61
67
  literal2var('contain', 'contain')
62
68
  literal2var('contain', 'contains')
63
69
  literal2var('container', 'container')
@@ -118,6 +124,8 @@ module Zenlish
118
124
  literal2var('live', 'lived')
119
125
  literal2var('living', 'living')
120
126
  literal2var('long', 'long')
127
+ literal2var('machine', 'machine')
128
+ literal2var('machine', 'machines')
121
129
  literal2var('make', 'made')
122
130
  literal2var('make', 'make')
123
131
  literal2var('many', 'many')
@@ -199,6 +207,7 @@ module Zenlish
199
207
  def two_as_pronoun ; Lex::Literal.new('two', get_lexeme('two', WClasses::IndefinitePronoun), 0) ; end
200
208
  literal2var('use', 'use')
201
209
  literal2var('use', 'used')
210
+ literal2var('use', 'using')
202
211
  literal2var('very', 'very')
203
212
  literal2var('want', 'want')
204
213
  literal2var('want', 'wants')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenlish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.24
4
+ version: 0.1.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef