zenlish 0.1.16 → 0.1.17

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: 0b03b18d2aa554c1fa12c98c4fff5dce6a88de55055ae7f43e43a4b4db6b379b
4
- data.tar.gz: 8f6a59c3ad405d4959f03b3cf6f818c7158fd2474df8eb86638f2a0563925209
3
+ metadata.gz: e70c4615014b90304856f70ea963c84b4439765909f4fb6fd3701e73e520a72f
4
+ data.tar.gz: 36cbbdeb49d2154a20af9521b0177c75ae2c6a2aea1b6edfcc6026eabc5a383b
5
5
  SHA512:
6
- metadata.gz: 1df388e9589d5dd7ccec7c72b46a72deb325cd9dada87e82a951b1df7386125cd40cc1e737589d70008ab9e375be2f47aaf60c23b8ab5988f90cded5dad82fee
7
- data.tar.gz: 30d7ac36e86b95e11217fadda5c9ebb09060273643740bd8446cfc59df24e256ce8326a6b1c0e90057f6eda27e82a8334cf8152ca6b144d038aa20dec68c819e
6
+ metadata.gz: f963c2562f5554a1b6976cd358f30c77838563774314585864110d733c2b35a5749d379bac40057004c4a848d222fd4e1eb207170b5f346bcea3fd7b4dbcfd40
7
+ data.tar.gz: 366b4eefe238e059d83d1c5308933c9efc3647cb6697649d02e05c644b17960d6a21cec006d9cee76b4439349fb00c5a484261cee07d18c5a62fa70ce6f30c42
@@ -1,8 +1,24 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.1.17] - 2019-11-25
4
+ __Zenlish__ can parse all sentences in lesson 1 and 2-A..2-H from
5
+ [Learn These Words First](http://learnthesewordsfirst.com/).
6
+
7
+ ### Added
8
+ - Class `AdverbMaybe` to represent the relative pronoun `who`.
9
+
10
+ ### Changed
11
+ - Folder structure under `lib` and `spec`.
12
+ - File `zparser_spec.rb`: tests include all sentences from lesson 2-H (207 sentences in total).
13
+ - `ZenlishGrammar`: new production rules added (especially for linking/copular verbs).
14
+ - File `dictionary.rb`: new entries in lexicon `below`, `live`, `maybe`.
15
+ - File `README.md` Updated the metrics table
16
+
3
17
  ## [0.1.16] - 2019-11-23
4
18
  __Zenlish__ can parse all sentences in lesson 1 and 2-A..2-G from
5
19
  [Learn These Words First](http://learnthesewordsfirst.com/).
20
+
21
+ ### Changed
6
22
  - `ZenlishGrammar`: Vast grammar reworking.
7
23
  - File `dictionary.rb`: `there` in lexicon has `ExistentialThere` as word class.
8
24
  - File `dictionary.rb`: new entries for `body`, `one` (as indefinite pronoun), `two` (as indefinite pronoun)
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 2-G. The parser is able to cope with syntactical
23
+ sentences from lessons 1-A up to 2-H. The parser is able to cope with syntactical
24
24
  ambiguities generating parse forests instead of parse trees.
25
25
 
26
26
  The intent is to deliver gem versions in small increments.
@@ -38,11 +38,11 @@ Over time, the zenlish gem will contain:
38
38
  #### Some project metrics (v. 0.1.15)
39
39
  |Metric|Value|
40
40
  |:-:|:-:|
41
- | Number of lemmas in dictionary | 92 |
41
+ | Number of lemmas in dictionary | 102 |
42
42
  | [Coverage 100 commonest English words](https://en.wikipedia.org/wiki/Most_common_words_in_English) | 45 |
43
- | Number of production rules in grammar | 131 |
44
- | Number of lessons covered | 15 |
45
- | Number of sentences in spec files | 189 |
43
+ | Number of production rules in grammar | 137 |
44
+ | Number of lessons covered | 16 |
45
+ | Number of sentences in spec files | 207 |
46
46
 
47
47
 
48
48
  ## Installation...
@@ -121,7 +121,7 @@ Litmus test: a Zenlish text should be easy to read to a English reading person.
121
121
  Here a tentative roadmap:
122
122
 
123
123
  #### A) Ability to parse sentences from [Learn These Words First](http://learnthesewordsfirst.com/)
124
- *STARTED*. 15.6% complete
124
+ *STARTED*. 16.7% complete
125
125
  This website advocates the idea of a multi-layered dictionary.
126
126
  At the core, there are about 300 essential words.
127
127
  The choice of these words is inspired by the semantic primitives of [NSM
@@ -34,14 +34,17 @@ unless defined?(Zenlish::Lang::Dictionary)
34
34
  add_entry('because', 'SubordinatingConjunction')
35
35
  add_entry('before', 'Adverb')
36
36
  add_entry('before', 'SubordinatingConjunction')
37
+ add_entry('below', 'Preposition')
37
38
  add_entry('big', 'Adjective')
38
39
  add_entry('body', 'CommonNoun')
39
40
  add_entry('can', 'ModalVerbCan')
41
+ add_entry('die', 'RegularVerb')
40
42
  add_entry('do', 'AuxiliaryDo')
41
43
  add_entry('do', 'IrregularVerbDo')
42
44
  add_entry('false', 'Adjective')
43
45
  add_entry('far', 'Adverb')
44
- add_entry('feel', 'IrregularVerb')
46
+ add_entry('far from', 'Preposition')
47
+ add_entry('feel', 'IrregularLinkingVerb')
45
48
  add_entry('for', 'Preposition')
46
49
  add_entry('from', 'Preposition')
47
50
  add_entry('good', 'Adjective')
@@ -49,6 +52,7 @@ unless defined?(Zenlish::Lang::Dictionary)
49
52
  add_entry('happen', 'RegularVerb')
50
53
  add_entry('hear', 'IrregularVerb')
51
54
  add_entry('here', 'Adverb')
55
+ add_entry('here', 'CommonNoun') # from here (works as a pronoun of a place)
52
56
  add_entry('I', 'PersonalPronoun')
53
57
  add_entry('if', 'SubordinatingConjunction')
54
58
  add_entry('in', 'Preposition')
@@ -56,9 +60,11 @@ unless defined?(Zenlish::Lang::Dictionary)
56
60
  add_entry('kind', 'CommonNoun')
57
61
  add_entry('know', 'IrregularVerbKnow')
58
62
  add_entry('like', 'Preposition')
63
+ add_entry('live', 'RegularVerb')
59
64
  add_entry('living', 'Adjective')
60
65
  add_entry('long', 'Adjective')
61
66
  add_entry('many', 'IndefiniteQuantifier')
67
+ add_entry('maybe', 'AdverbMaybe')
62
68
  add_entry('me', 'PersonalPronoun')
63
69
  add_entry('moment', 'CommonNoun')
64
70
  add_entry('more', 'Adjective')
@@ -4,6 +4,22 @@
4
4
  require 'rley' # Load the Rley parsing library
5
5
  require_relative 'dictionary'
6
6
 
7
+ # Carnie 2012
8
+ # CP ➝ (C) TP
9
+ # TP ➝ {NP/CP} (T) VP
10
+ # VP ➝(AdvP+) V (NP)({NP/CP}) (AdvP+) (PP+) (AdvP+)
11
+ # NP ➝ (D) (AdjP+) N (PP+) (CP)
12
+ # PP ➝ P (NP)
13
+ # AdjP ➝ (AdvP) Adj
14
+ # AdvP ➝ (AdvP) Adv
15
+
16
+ # Slide show on ajective and adverb phrases
17
+ # https://www.slideshare.net/UtTramTran/advadj-phrase
18
+
19
+ # A Lexicalized Tree Adjoining Grammar for English
20
+ # https://www.cis.upenn.edu/~xtag/tech-report/tech-report.html
21
+
22
+
7
23
  ########################################
8
24
  # Define a grammar for a highly English-like language
9
25
  builder = Rley::Syntax::GrammarBuilder.new do
@@ -20,19 +36,20 @@ builder = Rley::Syntax::GrammarBuilder.new do
20
36
  # Simple sentence
21
37
  #################
22
38
  rule 'simple_sentence' => 'declarative_simple_sentence'
39
+ rule 'simple_sentence' => 'AdverbMaybe declarative_simple_sentence'
23
40
  rule 'declarative_simple_sentence' => 'affirmative_sentence'
24
41
  rule 'declarative_simple_sentence' => 'existential_sentence'
25
42
  rule 'declarative_simple_sentence' => 'predicative_sentence'
26
43
  rule 'declarative_simple_sentence' => 'negative_sentence'
27
44
  rule 'declarative_simple_sentence' => 'inexistential_sentence'
28
- rule 'affirmative_sentence' => 'noun_phrase verb_phrase'
45
+ rule 'affirmative_sentence' => 'tense_phrase'
29
46
  rule 'affirmative_sentence' => 'prepositional_phrase Comma simple_sentence'
30
47
  # Case of time adjunct adverbial put in front position
31
48
  rule 'affirmative_sentence' => 'noun_phrase Adverb Comma simple_sentence'
32
49
 
33
50
  # there + (auxiliary/raising verb) + be + notional subject.
34
51
  rule 'existential_sentence' => 'ExistentialThere IrregularVerbBe existential_subject'
35
- rule 'negative_sentence' => 'noun_phrase negative_verb_phrase'
52
+ rule 'negative_sentence' => 'negative_tense_phrase'
36
53
  rule 'negative_sentence' => 'negated_predicate_sentence'
37
54
  rule 'inexistential_sentence' => 'ExistentialThere IrregularVerbBe AdverbNot existential_subject'
38
55
  rule 'existential_subject' => 'noun_phrase adverb_phrase_opt'
@@ -44,6 +61,8 @@ builder = Rley::Syntax::GrammarBuilder.new do
44
61
  rule 'negated_predicate_sentence' => 'conjunctive_prefix IrregularVerbBe AdverbNot predicative_complement'
45
62
  rule 'predicative_complement' => 'noun_phrase'
46
63
  rule 'predicative_complement' => 'adjective_phrase comparative_clause_opt'
64
+ # 2-28b X is alive before this moment.
65
+ rule 'predicative_complement' => 'adjective_phrase adverb_phrase noun_phrase'
47
66
  # X is far from the start.
48
67
  rule 'predicative_complement' => 'adverb_phrase_opt prepositional_phrase'
49
68
 
@@ -67,7 +86,7 @@ builder = Rley::Syntax::GrammarBuilder.new do
67
86
  rule 'subordination_marker' => 'SubordinatingConjunction PrepositionOf'
68
87
  rule 'dependent_clause' => 'simple_sentence'
69
88
  rule 'dependent_clause' => 'noun_phrase'
70
- rule 'infinitive_clause' => 'verb_phrase' # Too generic
89
+ rule 'infinitive_clause' => 'verb_phrase' # Too broad
71
90
  rule 'comparative_clause_opt' => 'comparative_clause'
72
91
  rule 'comparative_clause_opt' => []
73
92
  rule 'comparative_clause' => 'comparative_start noun_phrase'
@@ -79,30 +98,40 @@ builder = Rley::Syntax::GrammarBuilder.new do
79
98
  rule 'identifying_clause' => 'RelativePronoun verb_phrase'
80
99
 
81
100
 
101
+ ##############
102
+ # TENSE PHRASE
103
+ ##############
104
+ rule 'tense_phrase' => 'noun_phrase tense_opt verb_phrase'
105
+ rule 'negative_tense_phrase' => 'noun_phrase tense AdverbNot verb_phrase'
106
+ rule 'tense_opt' => 'tense'
107
+ rule 'tense_opt' => []
108
+ rule 'tense' => 'AuxiliaryBe'
109
+ rule 'tense' => 'AuxiliaryDo'
110
+ rule 'tense' => 'ModalVerbCan'
111
+
82
112
  #############
83
113
  # NOUN PHRASE
84
114
  #############
85
115
  rule 'noun_phrase_opt' => 'noun_phrase'
86
116
  rule 'noun_phrase_opt' => []
87
- rule 'noun_phrase' => 'pre_head_noun head_noun post_head_noun'
117
+ rule 'noun_phrase' => 'pre_head_np head_np post_head_np'
88
118
  # someone, somebody, something, somewhere; no one, nobody, nothing,
89
119
  # nowhere; anyone, anybody, anything, anywhere; everyone, everybody,
90
120
  # everything, everywhere, the attributive adjective phrase occurs as a postmodifier
91
- rule 'pre_head_noun' => 'determiners adjective_phrase_opt'
92
- rule 'head_noun' => 'CommonNoun'
93
- rule 'head_noun' => 'ProperNoun'
94
- rule 'head_noun' => 'PersonalPronoun'
95
- rule 'head_noun' => 'DemonstrativePronoun'
96
- rule 'head_noun' => 'IndefinitePronoun'
97
- # rule 'head_noun' => 'Cardinal' # ... as indefinite pronoun in complement "There were three pies. I ate one."
98
- rule 'post_head_noun' => 'adjective_phrase_opt prepositional_phrases clause_noun_opt'
121
+ rule 'pre_head_np' => 'determiners adjective_phrase_opt'
122
+ rule 'head_np' => 'CommonNoun'
123
+ rule 'head_np' => 'ProperNoun'
124
+ rule 'head_np' => 'PersonalPronoun'
125
+ rule 'head_np' => 'DemonstrativePronoun'
126
+ rule 'head_np' => 'IndefinitePronoun'
127
+ # rule 'head_np' => 'Cardinal' # ... as indefinite pronoun in complement "There were three pies. I ate one."
128
+ rule 'post_head_np' => 'adjective_phrase_opt prepositional_phrases clause_noun_opt'
99
129
  rule 'clause_noun_opt' => 'clause_noun'
100
130
  rule 'clause_noun_opt' => []
101
131
  rule 'clause_noun' => 'comparative_clause'
102
132
  rule 'clause_noun' => 'dependent_clause'
103
133
 
104
134
 
105
-
106
135
  #############
107
136
  # DETERMINERS
108
137
  #############
@@ -133,23 +162,24 @@ builder = Rley::Syntax::GrammarBuilder.new do
133
162
  #############
134
163
  # VERB PHRASE
135
164
  #############
136
- rule 'verb_phrase' => 'pre_head_verb head_verb post_head_verb'
137
- rule 'pre_head_verb' => 'adverb_phrase_opt'
138
- rule 'head_verb' => 'lexical_verb'
139
- rule 'head_verb' => 'AuxiliaryBe lexical_verb'
140
- rule 'head_verb' => 'ModalVerbCan lexical_verb'
141
- rule 'head_verb' => 'IrregularVerbSay direct_speech'
142
- rule 'head_verb' => 'RegularVerbWant Preposition head_verb post_head_verb'
165
+ rule 'verb_phrase' => 'pre_head_vp head_vp post_head_vp'
166
+ # Rule specific to linking/copular verbs (CEG 288b). Example: I feel very bad.
167
+ rule 'verb_phrase' => 'pre_head_vp linking_verb adjective_phrase'
168
+ rule 'pre_head_vp' => 'adverb_phrase_opt'
169
+ rule 'head_vp' => 'lexical_verb'
170
+ rule 'head_vp' => 'IrregularVerbSay direct_speech'
171
+ rule 'head_vp' => 'RegularVerbWant Preposition head_vp post_head_vp'
143
172
 
144
173
  # Cover case where ´that´ conjunction is dropped.
145
- rule 'head_verb' => 'mental_verb dependent_clause'
174
+ rule 'head_vp' => 'mental_verb dependent_clause'
146
175
  # ex. 2-23c
147
- rule 'head_verb' => 'mental_verb identifying_clause'
176
+ rule 'head_vp' => 'mental_verb identifying_clause'
148
177
 
149
- rule 'post_head_verb' => 'noun_phrase_opt adverb_phrase_opt prepositional_phrases adverb_phrase_opt'
178
+ rule 'post_head_vp' => 'noun_phrase_opt adverb_phrase_opt prepositional_phrases adverb_phrase_opt'
150
179
  rule 'lexical_verb' => 'RegularVerb'
151
180
  rule 'lexical_verb' => 'RegularVerbWant'
152
181
  rule 'lexical_verb' => 'IrregularVerb'
182
+ rule 'lexical_verb' => 'IrregularLinkingVerb'
153
183
  rule 'lexical_verb' => 'IrregularVerbBe'
154
184
  rule 'lexical_verb' => 'IrregularVerbDo'
155
185
  rule 'lexical_verb' => 'IrregularVerbHave'
@@ -157,19 +187,15 @@ builder = Rley::Syntax::GrammarBuilder.new do
157
187
  rule 'lexical_verb' => 'IrregularVerbSay'
158
188
  rule 'lexical_verb' => 'IrregularVerbThink'
159
189
 
190
+
191
+ rule 'linking_verb' => 'IrregularLinkingVerb'
192
+
160
193
  rule 'mental_verb' => 'IrregularVerbKnow'
161
194
  rule 'mental_verb' => 'IrregularVerbThink'
162
195
  rule 'direct_speech' => 'Colon Quote declarative_simple_sentence Period Quote'
163
196
  rule 'direct_speech' => 'Preposition noun_phrase Colon Quote declarative_simple_sentence Period Quote'
164
197
  rule 'direct_speech' => 'Colon declarative_simple_sentence'
165
198
 
166
-
167
- #############
168
- # NEGATIVE VERB PHRASE
169
- #############
170
- rule 'negative_verb_phrase' => 'AuxiliaryDo AdverbNot head_verb post_head_verb'
171
- rule 'negative_verb_phrase' => 'ModalVerbCan AdverbNot head_verb post_head_verb'
172
-
173
199
  ##################
174
200
  # ADJECTIVE PHRASE
175
201
  ##################
@@ -180,6 +206,7 @@ builder = Rley::Syntax::GrammarBuilder.new do
180
206
  rule 'head_adjective' => 'head_adjective Adjective' # sequence of adjectives (rem: could be comma separated or anded)
181
207
  rule 'head_adjective' => 'Adjective'
182
208
  rule 'postmodifiers_adj' => 'prepositional_phrase' # TODO: multiple prepositional phrases, gerund and to + infinitive
209
+ # Adverbs such as enough, indeed can post-modify an adjective
183
210
  rule 'postmodifiers_adj' => []
184
211
 
185
212
  ################
@@ -209,7 +236,7 @@ builder = Rley::Syntax::GrammarBuilder.new do
209
236
  rule 'preposition_object' => 'noun_phrase' # (noun and pronoun)
210
237
 
211
238
  # complementation by a verb: gerund -ing form...
212
- rule 'preposition_object' => 'noun_phrase_opt lexical_verb post_head_verb'
239
+ rule 'preposition_object' => 'noun_phrase_opt lexical_verb post_head_vp'
213
240
  # preposition_object => "a gerund (a verb form ending in "-ing") that acts as a noun # Example: He beat Lee without overly trying.
214
241
  rule 'preposition_object' => 'conjunctive_prefix' # It's obvious from _what he said_.
215
242
  rule 'preposition_object' => []
@@ -218,13 +245,6 @@ builder = Rley::Syntax::GrammarBuilder.new do
218
245
  # REMAINING RULES
219
246
  ######################
220
247
  rule 'numeral' => 'Cardinal'
221
-
222
-
223
-
224
- ######################
225
- # DUMMY RULE
226
- ######################
227
- rule 'dummy' => "ConjunctivePronoun RelativePronoun"
228
248
  end
229
249
 
230
250
  # And now build the grammar...
@@ -17,6 +17,7 @@ module Zenlish
17
17
  def add_word_classes(aLexicon)
18
18
  aLexicon.add_terminal(WClasses::Adjective.new.freeze)
19
19
  aLexicon.add_terminal(WClasses::Adverb.new.freeze)
20
+ aLexicon.add_terminal(WClasses::AdverbMaybe.new.freeze)
20
21
  aLexicon.add_terminal(WClasses::AdverbNot.new.freeze)
21
22
  aLexicon.add_terminal(WClasses::AuxiliaryBe.new.freeze)
22
23
  aLexicon.add_terminal(WClasses::AuxiliaryDo.new.freeze)
@@ -31,6 +32,7 @@ module Zenlish
31
32
  aLexicon.add_terminal(WClasses::ConjunctivePronoun.new.freeze)
32
33
  aLexicon.add_terminal(WClasses::DemonstrativePronoun.new.freeze)
33
34
  aLexicon.add_terminal(WClasses::IndefinitePronoun.new.freeze)
35
+ aLexicon.add_terminal(WClasses::IrregularLinkingVerb.new.freeze)
34
36
  aLexicon.add_terminal(WClasses::IrregularVerb.new.freeze)
35
37
  aLexicon.add_terminal(WClasses::IrregularVerbBe.new.freeze)
36
38
  aLexicon.add_terminal(WClasses::IrregularVerbDo.new.freeze)
@@ -1,3 +1,3 @@
1
1
  module Zenlish
2
- VERSION = '0.1.16'
2
+ VERSION = '0.1.17'
3
3
  end
@@ -0,0 +1,10 @@
1
+ require_relative 'adverb'
2
+
3
+ module Zenlish
4
+ module WClasses
5
+ # The adverb maybe expresses uncertainty and is often placed in front
6
+ # of clauses.
7
+ class AdverbMaybe < Adverb
8
+ end # class
9
+ end # module
10
+ end # module
@@ -3,6 +3,7 @@
3
3
 
4
4
  require_relative 'adjective'
5
5
  require_relative 'adverb'
6
+ require_relative 'adverb_maybe'
6
7
  require_relative 'adverb_not'
7
8
  require_relative 'auxiliary_be'
8
9
  require_relative 'auxiliary_do'
@@ -14,6 +15,7 @@ require_relative 'definite_article'
14
15
  require_relative 'existential_there'
15
16
  require_relative 'pronoun'
16
17
  require_relative 'proper_noun'
18
+ require_relative 'irregular_linking_verb'
17
19
  require_relative 'irregular_verb'
18
20
  require_relative 'irregular_verb_be'
19
21
  require_relative 'irregular_verb_do'
@@ -0,0 +1,10 @@
1
+ require_relative 'irregular_verb'
2
+
3
+ module Zenlish
4
+ module WClasses
5
+ # Linking verbs (also known as copulae or copular verbs) describe
6
+ # the state of being of the subject of the clause.
7
+ class IrregularLinkingVerb < IrregularVerb
8
+ end # class
9
+ end # module
10
+ end # module
@@ -47,18 +47,24 @@ module Zenlish
47
47
  literal2var('because', 'because')
48
48
  def before_adverb ; Lex::Literal.new('before', get_lexeme('before', WClasses::Adverb), 0) ; end
49
49
  def before ; Lex::Literal.new('before', get_lexeme('before', WClasses::SubordinatingConjunction), 0) ; end
50
+ literal2var('below', 'below')
50
51
  literal2var('big', 'big')
51
52
  literal2var('big', 'bigger')
52
53
  literal2var('body', 'body')
53
54
  literal2var('can', 'can')
54
55
  def did ; Lex::Literal.new('did', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
56
+ literal2var('die', 'died')
57
+ literal2var('die', 'dies')
55
58
  def do_ ; Lex::Literal.new('do', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
59
+ def do_aux ; Lex::Literal.new('do', get_lexeme('do', WClasses::AuxiliaryDo), 0) ; end
56
60
  def does ; Lex::Literal.new('does', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
57
61
  def does_aux ; Lex::Literal.new('does', get_lexeme('do', WClasses::AuxiliaryDo), 0) ; end
58
62
  literal2var('false', 'false', '_')
59
63
  literal2var('far', 'far')
64
+ literal2var('far from', 'far_from')
60
65
  literal2var('feel', 'feel')
61
66
  literal2var('feel', 'feels')
67
+ literal2var('feel', 'felt')
62
68
  literal2var('for', 'for', '_')
63
69
  literal2var('from', 'from')
64
70
  literal2var('good', 'good')
@@ -69,7 +75,8 @@ module Zenlish
69
75
  literal2var('have', 'has')
70
76
  literal2var('have', 'have')
71
77
  literal2var('hear', 'hears')
72
- literal2var('here', 'here')
78
+ def here ; Lex::Literal.new('here', get_lexeme('here', WClasses::Adverb), 0) ; end
79
+ def here_as_noun ; Lex::Literal.new('here', get_lexeme('here', WClasses::CommonNoun), 0) ; end
73
80
  def i_pronoun ; Lex::Literal.new('I', get_lexeme('I'), 0) ; end
74
81
  literal2var('if', 'if', '_')
75
82
  literal2var('in', 'in', '_')
@@ -84,15 +91,18 @@ module Zenlish
84
91
  literal2var('know', 'knows')
85
92
  literal2var('like', 'like')
86
93
  literal2var('Lisa', 'Lisa')
94
+ literal2var('live', 'lived')
87
95
  literal2var('living', 'living')
88
96
  literal2var('long', 'long')
89
97
  literal2var('many', 'many')
98
+ literal2var('maybe', 'maybe')
90
99
  literal2var('me', 'me')
91
100
  literal2var('moment', 'moment')
92
101
  def more ; Lex::Literal.new('more', get_lexeme('more', WClasses::Adjective), 0) ; end
93
102
  def more_as_adverb ; Lex::Literal.new('more', get_lexeme('more', WClasses::Adverb), 0) ; end
94
103
  literal2var('move', 'move')
95
104
  literal2var('move', 'moved')
105
+ literal2var('move', 'moving')
96
106
  literal2var('move', 'moves')
97
107
  literal2var('much', 'much')
98
108
  literal2var('near', 'near')
@@ -102,7 +112,7 @@ module Zenlish
102
112
  literal2var('of', 'of')
103
113
  literal2var('on', 'on')
104
114
  def one ; Lex::Literal.new('one', get_lexeme('one', WClasses::Cardinal), 0) ; end
105
- def one_as_pronoun ; Lex::Literal.new('one', get_lexeme('one', WClasses::IndefinitePronoun), 0) ; end
115
+ def one_as_pronoun ; Lex::Literal.new('one', get_lexeme('one', WClasses::IndefinitePronoun), 0) ; end
106
116
  literal2var('other', 'other')
107
117
  literal2var('part', 'part')
108
118
  literal2var('part', 'parts')
@@ -138,10 +148,11 @@ module Zenlish
138
148
  literal2var('time', 'time')
139
149
  literal2var('to', 'to')
140
150
  literal2var('Tony', 'Tony')
151
+ literal2var('touch', 'touch')
141
152
  literal2var('touch', 'touching')
142
153
  literal2var('true', 'true', '_')
143
154
  def two ; Lex::Literal.new('two', get_lexeme('two', WClasses::Cardinal), 0) ; end
144
- def two_as_pronoun ; Lex::Literal.new('two', get_lexeme('two', WClasses::IndefinitePronoun), 0) ; end
155
+ def two_as_pronoun ; Lex::Literal.new('two', get_lexeme('two', WClasses::IndefinitePronoun), 0) ; end
145
156
  literal2var('very', 'very')
146
157
  literal2var('want', 'want')
147
158
  literal2var('want', 'wants')
@@ -212,7 +223,7 @@ module Zenlish
212
223
 
213
224
  # Sentence 1-04: "Lisa sees the other thing."
214
225
  sentence_literals = [lisa, sees, the, other, thing, dot]
215
- expect { subject.to_ptree(sentence_literals) }.not_to raise_error
226
+ expect { subject.to_ptree(sentence_literals) }.not_to raise_error
216
227
  end
217
228
 
218
229
  it 'should parse sample sentences from lesson 1-B' do
@@ -248,7 +259,7 @@ module Zenlish
248
259
  # same is an adjective of equality comparison
249
260
  # as is part of same ... as combination
250
261
  # it introduces a comparative clause
251
- expect { subject.to_pforest(literals) }.not_to raise_error
262
+ expect { subject.to_pforest(literals) }.not_to raise_error
252
263
  end
253
264
 
254
265
  it 'should parse sample sentences from lesson 1-C' do
@@ -271,7 +282,7 @@ module Zenlish
271
282
  # Sentence: "Lisa does not see people inside the other thing."
272
283
  literals = [lisa, does_aux, not_, see, people, inside, the, other, thing, dot]
273
284
  # Ambiguous parse...
274
- expect { subject.to_pforest(literals) }.not_to raise_error
285
+ expect { subject.to_pforest(literals) }.not_to raise_error
275
286
  end
276
287
 
277
288
  it 'should parse sample sentences from lesson 1-D' do
@@ -308,7 +319,7 @@ module Zenlish
308
319
  literals = [there, are, more, people, inside, the, other, thing,
309
320
  than, there, are, inside, this, thing, dot]
310
321
  # Ambiguous parse
311
- expect { subject.to_pforest(literals) }.not_to raise_error
322
+ expect { subject.to_pforest(literals) }.not_to raise_error
312
323
  end
313
324
 
314
325
  it 'should parse sample sentences from lesson 1-E' do
@@ -371,7 +382,7 @@ module Zenlish
371
382
  expect { subject.to_pforest(literals) }.not_to raise_error
372
383
 
373
384
  # Sentence 1-20c: "One of these is not the same kind as the other two."
374
- literals = [one, of, these_as_pronoun, is, not_, the, same, kind,
385
+ literals = [one, of, these_as_pronoun, is, not_, the, same, kind,
375
386
  as, the, other, two_as_pronoun, dot]
376
387
  expect { subject.to_pforest(literals) }.not_to raise_error
377
388
 
@@ -407,7 +418,7 @@ module Zenlish
407
418
 
408
419
  # Sentence 1-24: "Tony is near to Lisa."
409
420
  literals = [tony, is, near_to, lisa, dot]
410
- expect { subject.to_pforest(literals) }.not_to raise_error
421
+ expect { subject.to_pforest(literals) }.not_to raise_error
411
422
  end
412
423
 
413
424
  it 'should parse sample sentences from lesson 1-G' do
@@ -454,7 +465,7 @@ module Zenlish
454
465
  # Sentence 1-27c: "Tony is touching one side of this thing."
455
466
  literals = [tony, is_aux, touching, one, side, of, this, thing, dot]
456
467
  # Ambiguous parse
457
- expect { subject.to_pforest(literals) }.not_to raise_error
468
+ expect { subject.to_pforest(literals) }.not_to raise_error
458
469
  end
459
470
 
460
471
  it 'should parse sample sentences from lesson 1-H' do
@@ -539,7 +550,7 @@ module Zenlish
539
550
 
540
551
  # Sentence 2-Ax: "What Tony has is like what Lisa has."
541
552
  literals = [what, tony, has, is, like, what, lisa, has, dot]
542
- expect { subject.to_pforest(literals) }.not_to raise_error
553
+ expect { subject.to_pforest(literals) }.not_to raise_error
543
554
  end
544
555
 
545
556
  it 'should parse sample sentences from lesson 2-B' do
@@ -638,7 +649,7 @@ module Zenlish
638
649
 
639
650
  # Sentence 2-10e: "Lisa cannot do this."
640
651
  literals = [lisa, can, not_, do_, this_as_pronoun, dot]
641
- expect { subject.to_pforest(literals) }.not_to raise_error
652
+ expect { subject.to_pforest(literals) }.not_to raise_error
642
653
  end
643
654
 
644
655
  it 'should parse sample sentences from lesson 2-D' do
@@ -675,7 +686,7 @@ module Zenlish
675
686
  # Sentence 2-Dx: "Lisa thinks about something bad happening to this
676
687
  # living thing. Thinking about this feels bad for Lisa."
677
688
  literals = [lisa, thinks, about, something, bad, happening, to, this,
678
- living, thing, dot,
689
+ living, thing, dot,
679
690
  #thinking, about, this_as_pronoun, feels, bad,
680
691
  #for_, lisa, dot
681
692
  ]
@@ -739,7 +750,7 @@ module Zenlish
739
750
  expect { subject.to_pforest(literals) }.not_to raise_error
740
751
  end
741
752
 
742
- it 'should parse sample sentences from lesson 2-F' do
753
+ it 'should parse sample sentences from lesson 2-F' do
743
754
  # Sentence 2-19a: 'Tony says: "I did X.".'
744
755
  literals = [tony, says, colon, quote, i_pronoun, did, x_as_noun, dot, quote, dot]
745
756
  expect { subject.to_pforest(literals) }.not_to raise_error
@@ -921,31 +932,70 @@ module Zenlish
921
932
  # Sentence 2-27a definiendum: 'X is the body of this person.'
922
933
  literals = [x_as_noun, is, the, body, of, this, person, dot]
923
934
  expect { subject.to_pforest(literals) }.not_to raise_error
924
- end
925
- =begin
926
- TODO
927
- Lesson 2-H
928
- 2-27. body, bodies, the body of, the bodies of.
929
- [X is the body of this person.] = Parts of this person can touch other things. Parts of this person can touch other parts inside this person. X is all of these parts of this person.
930
- [One part of the body of this person felt very bad.]
931
935
 
932
- 2-28. die, dies, to die, dying, died, dead, is dead.
933
- [X dies.] = Something happens to X in a moment. X is alive before this moment. X is not alive after this moment.
934
- [After this person lived for a long time, this person died.]
936
+ # Sentence 2-27b "Parts of this person can touch other things.
937
+ # Parts of this person can touch other parts inside this person.
938
+ # X is all of these parts of this person."
939
+ # [One part of the body of this person felt very bad.]
940
+ literals = [ parts, of, this, person, can, touch, other, things, dot,
941
+ parts, of, this, person, can, touch, other, parts, inside,
942
+ this, person, dot,
943
+ x_as_noun, is, all, of, these, parts, of, this, person, dot,
944
+ one, part, of, the, body, of, this, person, felt, very, bad, dot
945
+ ]
946
+ expect { subject.to_pforest(literals) }.not_to raise_error
947
+
948
+ # Sentence 2-28a definiendum "X dies."
949
+ literals = [x_as_noun, dies, dot]
950
+ expect { subject.to_ptree(literals) }.not_to raise_error
935
951
 
936
- 2-29. maybe.
937
- [You think maybe X is true.] = You think something like X can be true. You do not know X is true. You do not know X is not true.
938
- [Maybe some people far from here can see me.]
952
+ # Sentence 2-28b definiens "Something happens to X in a moment.
953
+ # X is alive before this moment. X is not alive after this moment.
954
+ # [After this person lived for a long time, this person died."
955
+ literals = [ something, happens, to, x_as_noun, in_, a_as_art,
956
+ moment, dot,
957
+ x_as_noun, is, alive, before_adverb, this, moment, dot,
958
+ x_as_noun, is, not_, alive, after_adverb, this, moment, dot,
959
+ after_, this, person, lived, for_, a_as_art, long, time, comma,
960
+ this, person, died, dot
961
+ ]
962
+ expect { subject.to_pforest(literals) }.not_to raise_error
939
963
 
940
- 2-30. below, is below.
941
- [J is below K.] = K is above J.
942
- [I am touching this thing below me.]
964
+ # Sentence 2-29a definiendum "You think maybe X is true."
965
+ literals = [you, think, maybe, x_as_noun, is, true_, dot]
966
+ expect { subject.to_ptree(literals) }.not_to raise_error
967
+
968
+ # Sentence 2-29b definiens "You think something like X
969
+ # can be true. You do not know X is true.
970
+ # You do not know X is not true.
971
+ # [Maybe some people far from here can see me.]"
972
+ literals = [ you, do_aux, not_, know, x_as_noun, is, true_, dot,
973
+ you, do_aux, not_, know, x_as_noun, is, not_, true_, dot,
974
+ maybe, some, people, far_from, here_as_noun, can, see, me, dot
975
+ ]
976
+ expect { subject.to_pforest(literals) }.not_to raise_error
943
977
 
944
- Someone sees this thing.
945
- The body of this thing is not moving.
946
- Maybe this thing __________.
947
- is far below this person
978
+ # Sentence 2-30a definiendum "J is below K."
979
+ literals = [j_, is, below, k_, dot]
980
+ expect { subject.to_pforest(literals) }.not_to raise_error
981
+
982
+ # Sentence 2-30b definiens "K is above J.
983
+ # [I am touching this thing below me.]
984
+ literals = [ j_, is, below, k_, dot,
985
+ i_pronoun, am, touching, this, thing, below, me, dot
986
+ ]
987
+ expect { subject.to_pforest(literals) }.not_to raise_error
948
988
 
989
+ # Sentence 2-H extra "Someone sees this thing.
990
+ # The body of this thing is not moving.
991
+ # Maybe this thing is dead."
992
+ literals = [ someone, sees, thing, dot,
993
+ the, body, of, this, thing, is_aux, not_, moving, dot
994
+ ]
995
+ expect { subject.to_pforest(literals) }.not_to raise_error
996
+ end
997
+ =begin
998
+ TODO
949
999
  Lesson 2.C
950
1000
 
951
1001
  Xtra:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenlish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.16
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-23 00:00:00.000000000 Z
11
+ date: 2019-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rley
@@ -96,6 +96,7 @@ files:
96
96
  - lib/zenlish/version.rb
97
97
  - lib/zenlish/wclasses/adjective.rb
98
98
  - lib/zenlish/wclasses/adverb.rb
99
+ - lib/zenlish/wclasses/adverb_maybe.rb
99
100
  - lib/zenlish/wclasses/adverb_not.rb
100
101
  - lib/zenlish/wclasses/all_word_classes.rb
101
102
  - lib/zenlish/wclasses/article.rb
@@ -116,6 +117,7 @@ files:
116
117
  - lib/zenlish/wclasses/indefinite_article.rb
117
118
  - lib/zenlish/wclasses/indefinite_pronoun.rb
118
119
  - lib/zenlish/wclasses/indefinite_quantifier.rb
120
+ - lib/zenlish/wclasses/irregular_linking_verb.rb
119
121
  - lib/zenlish/wclasses/irregular_verb.rb
120
122
  - lib/zenlish/wclasses/irregular_verb_be.rb
121
123
  - lib/zenlish/wclasses/irregular_verb_do.rb