zenlish 0.1.23 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  require_relative '../../spec_helper' # Use the RSpec framework
4
- require_relative '../../../lib/zenlish/lex/literal'
5
- require_relative '../support/minimal_lexicon'
3
+ require_relative '../support/var2word'
6
4
  require_relative '../../../lib/zenlish/parser/zparser' # Load the class under test
7
5
 
8
6
  module Zenlish
9
7
  module Parser
10
8
  describe ZParser do
9
+ include Var2Word
10
+
11
11
  subject { ZParser.new }
12
12
 
13
13
  context 'Initialization:' do
@@ -16,224 +16,6 @@ module Zenlish
16
16
  end
17
17
  end # context
18
18
 
19
- def get_lexeme(aLemma, aWordClass = nil)
20
- Zenlish::Lang::Dictionary.get_lexeme(aLemma, aWordClass)
21
- end
22
-
23
- def self.literal2var(aLemma, aLiteral, aSuffix = '')
24
- mth_name = aLiteral.downcase + aSuffix
25
- define_method(mth_name.to_sym) do
26
- Lex::Literal.new(aLiteral, get_lexeme(aLemma), 0)
27
- end
28
- end
29
-
30
- # In absence of a POS tagger/lemmatizer, we map input words
31
- # to variables that themselves return Literal objects.
32
- # For instance, next line will create a variable called 'alive'
33
- literal2var('a', 'a', '_as_art')
34
- literal2var('a', 'an')
35
- literal2var('about', 'about')
36
- literal2var('above', 'above')
37
- def after_adverb ; Lex::Literal.new('after', get_lexeme('after', WClasses::Adverb), 0) ; end
38
- def after_ ; Lex::Literal.new('after', get_lexeme('after', WClasses::SubordinatingConjunction), 0) ; end
39
- literal2var('alive', 'alive')
40
- literal2var('all', 'all')
41
- def am ; Lex::Literal.new('am', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
42
- literal2var('and', 'and', '_')
43
- literal2var('animal', 'animal')
44
- literal2var('animal', 'animals')
45
- literal2var('another', 'another')
46
- def are ; Lex::Literal.new('are', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
47
- literal2var('as', 'as')
48
- literal2var('at', 'at')
49
- literal2var('bad', 'bad')
50
- def be_ ; Lex::Literal.new('be', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
51
- literal2var('because', 'because')
52
- literal2var('become', 'became')
53
- literal2var('become', 'become')
54
- literal2var('become', 'becomes')
55
- def before_adverb ; Lex::Literal.new('before', get_lexeme('before', WClasses::Adverb), 0) ; end
56
- def before_as_adj ; Lex::Literal.new('before', get_lexeme('before', WClasses::Adjective), 0) ; end
57
- def before ; Lex::Literal.new('before', get_lexeme('before', WClasses::SubordinatingConjunction), 0) ; end
58
- literal2var('belong', 'belong')
59
- literal2var('belong', 'belongs')
60
- literal2var('below', 'below')
61
- literal2var('big', 'big')
62
- literal2var('big', 'bigger')
63
- literal2var('body', 'body')
64
- literal2var('but', 'but')
65
- literal2var('can', 'can')
66
- literal2var('cause', 'cause')
67
- literal2var('cause', 'caused')
68
- literal2var('cause', 'causes')
69
- literal2var('contain', 'contain')
70
- literal2var('contain', 'contains')
71
- literal2var('container', 'container')
72
- literal2var('container', 'containers')
73
- def did ; Lex::Literal.new('did', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
74
- literal2var('die', 'die')
75
- literal2var('die', 'died')
76
- literal2var('die', 'dies')
77
- literal2var('different', 'different')
78
- def do_ ; Lex::Literal.new('do', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
79
- def do_aux ; Lex::Literal.new('do', get_lexeme('do', WClasses::AuxiliaryDo), 0) ; end
80
- def does ; Lex::Literal.new('does', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
81
- def does_aux ; Lex::Literal.new('does', get_lexeme('do', WClasses::AuxiliaryDo), 0) ; end
82
- literal2var('each', 'each', '_')
83
- def each_ ; Lex::Literal.new('each', get_lexeme('each', WClasses::DistributiveDeterminer), 0) ; end
84
- def each_as_pronoun ; Lex::Literal.new('each', get_lexeme('each', WClasses::Pronoun), 0) ; end
85
- literal2var('exist', 'exist')
86
- literal2var('exist', 'existed')
87
- literal2var('exist', 'exists')
88
- literal2var('false', 'false', '_')
89
- literal2var('far', 'far')
90
- literal2var('far from', 'far_from')
91
- literal2var('feel', 'feel')
92
- literal2var('feel', 'feels')
93
- literal2var('feel', 'felt')
94
- literal2var('for', 'for', '_')
95
- literal2var('from', 'from')
96
- literal2var('good', 'good')
97
- literal2var('happen', 'happen')
98
- literal2var('happen', 'happened')
99
- literal2var('happen', 'happening')
100
- literal2var('happen', 'happens')
101
- literal2var('have', 'has')
102
- literal2var('have', 'have')
103
- literal2var('hear', 'hear')
104
- literal2var('hear', 'heard')
105
- literal2var('hear', 'hears')
106
- def here ; Lex::Literal.new('here', get_lexeme('here', WClasses::Adverb), 0) ; end
107
- def here_as_noun ; Lex::Literal.new('here', get_lexeme('here', WClasses::CommonNoun), 0) ; end
108
- def i_pronoun ; Lex::Literal.new('I', get_lexeme('I'), 0) ; end
109
- literal2var('if', 'if', '_')
110
- literal2var('in', 'in', '_')
111
- literal2var('inside', 'inside')
112
- literal2var('it', 'it', '_')
113
- literal2var('its', 'its')
114
- literal2var('J', 'j', '_')
115
- def is ; Lex::Literal.new('is', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
116
- def is_aux ; Lex::Literal.new('is', get_lexeme('be', WClasses::AuxiliaryBe), 0) ; end
117
- literal2var('K', 'k', '_')
118
- literal2var('kind', 'kind')
119
- literal2var('kind', 'kinds')
120
- literal2var('know', 'knew')
121
- literal2var('know', 'know')
122
- literal2var('know', 'knows')
123
- literal2var('like', 'like')
124
- literal2var('Lisa', 'Lisa')
125
- literal2var('live', 'lived')
126
- literal2var('living', 'living')
127
- literal2var('long', 'long')
128
- literal2var('make', 'made')
129
- literal2var('make', 'make')
130
- literal2var('many', 'many')
131
- literal2var('maybe', 'maybe')
132
- literal2var('me', 'me')
133
- literal2var('moment', 'moment')
134
- def more ; Lex::Literal.new('more', get_lexeme('more', WClasses::Adjective), 0) ; end
135
- def more_as_adverb ; Lex::Literal.new('more', get_lexeme('more', WClasses::Adverb), 0) ; end
136
- literal2var('move', 'move')
137
- literal2var('move', 'moved')
138
- literal2var('move', 'moving')
139
- literal2var('move', 'moves')
140
- literal2var('much', 'much')
141
- literal2var('my', 'my')
142
- literal2var('near', 'near')
143
- literal2var('near to', 'near_to')
144
- literal2var('not', 'not', '_')
145
- def now ; Lex::Literal.new('now', get_lexeme('now', WClasses::Adverb), 0) ; end
146
- def now_as_noun ; Lex::Literal.new('now', get_lexeme('now', WClasses::CommonNoun), 0) ; end
147
- literal2var('of', 'of')
148
- literal2var('on', 'on')
149
- def one ; Lex::Literal.new('one', get_lexeme('one', WClasses::Cardinal), 0) ; end
150
- def one_as_adj ; Lex::Literal.new('one', get_lexeme('one', WClasses::Adjective), 0) ; end
151
- def one_as_pronoun ; Lex::Literal.new('one', get_lexeme('one', WClasses::IndefinitePronoun), 0) ; end
152
- literal2var('or', 'or', '_')
153
- literal2var('other', 'other')
154
- literal2var('part', 'part')
155
- literal2var('part', 'parts')
156
- literal2var('people', 'people')
157
- literal2var('person', 'person')
158
- literal2var('place', 'place')
159
- def same ; Lex::Literal.new('same', get_lexeme('same', WClasses::Adjective), 0) ; end
160
- def same_as_pronoun ; Lex::Literal.new('same', get_lexeme('same', WClasses::Pronoun), 0) ; end
161
- literal2var('see', 'saw')
162
- literal2var('short', 'short')
163
- literal2var('side', 'side')
164
- literal2var('small', 'small')
165
- literal2var('small', 'smaller')
166
- literal2var('some', 'some')
167
- literal2var('say', 'say')
168
- literal2var('say', 'said')
169
- literal2var('say', 'says')
170
- literal2var('see', 'see')
171
- literal2var('see', 'sees')
172
- literal2var('someone', 'someone')
173
- literal2var('someplace', 'someplace')
174
- literal2var('something', 'something')
175
- literal2var('the', 'the')
176
- literal2var('their', 'their')
177
- literal2var('them', 'them')
178
- literal2var('then', 'then', '_')
179
- literal2var('they', 'they')
180
- literal2var('than', 'than')
181
- literal2var('that', 'that')
182
- literal2var('there', 'there')
183
- literal2var('thing', 'thing')
184
- literal2var('thing', 'things')
185
- literal2var('think', 'think')
186
- literal2var('think', 'thinking')
187
- literal2var('think', 'thinks')
188
- def these ; Lex::Literal.new('these', get_lexeme('this', WClasses::DemonstrativeDeterminer), 0) ; end
189
- def these_as_pronoun ; Lex::Literal.new('these', get_lexeme('this', WClasses::DemonstrativePronoun), 0) ; end
190
- def this ; Lex::Literal.new('this', get_lexeme('this', WClasses::DemonstrativeDeterminer), 0) ; end
191
- def this_as_pronoun ; Lex::Literal.new('this', get_lexeme('this', WClasses::DemonstrativePronoun), 0) ; end
192
- literal2var('this one', 'this_one')
193
- literal2var('time', 'time')
194
- literal2var('to', 'to')
195
- literal2var('Tony', 'Tony')
196
- literal2var('touch', 'touch')
197
- literal2var('touch', 'touched')
198
- literal2var('touch', 'touching')
199
- literal2var('true', 'true', '_')
200
- def two ; Lex::Literal.new('two', get_lexeme('two', WClasses::Cardinal), 0) ; end
201
- def two_as_pronoun ; Lex::Literal.new('two', get_lexeme('two', WClasses::IndefinitePronoun), 0) ; end
202
- literal2var('use', 'use')
203
- literal2var('use', 'used')
204
- literal2var('very', 'very')
205
- literal2var('want', 'want')
206
- literal2var('want', 'wants')
207
- def was ; Lex::Literal.new('was', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
208
- def were ; Lex::Literal.new('were', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
209
- literal2var('what', 'what')
210
- literal2var('when', 'when', '_')
211
- literal2var('who', 'who')
212
- literal2var('with', 'with')
213
- literal2var('word', 'words')
214
- def x_as_noun ; Lex::Literal.new('X', get_lexeme('X'), 0) ; end
215
- literal2var('you', 'you')
216
- literal2var('you', 'your')
217
-
218
- def colon ; Lex::Literal.new(':', get_lexeme(':'), 0) ; end
219
- def comma ; Lex::Literal.new(',', get_lexeme(','), 0) ; end
220
- def dot ; Lex::Literal.new('.', get_lexeme('.'), 0) ; end
221
- def quote ; Lex::Literal.new('"', get_lexeme('"'), 0) ; end
222
-
223
- class ZProxy
224
- attr_reader :literal
225
-
226
- def initialize(aTarget)
227
- @literal = aTarget
228
- end
229
-
230
- def method_missing(name, *args, &aBlock)
231
- puts "#{literal.lexeme} about to receive #{name}"
232
- $stdout.flush
233
- literal.send(name, *args, &aBlock)
234
- end
235
- end
236
-
237
19
  context 'Producing parse tree or forest:' do
238
20
  # it 'should produce trees (for non ambiguous input)' do
239
21
  # # OK, non-ambiguous sentence: "Lisa sees Tony."
@@ -249,1192 +31,6 @@ module Zenlish
249
31
  expect(subject.to_pforest(literals)).to be_kind_of(result_type)
250
32
  end
251
33
  end # context
252
-
253
- context 'Parsing lessons:' do
254
- it 'should parse sample sentences from lesson 1-A' do
255
- # Sentence 1-01: "Tony sees Lisa."
256
- # in absence of a tokenizer, we create a sequence of literals by hand...
257
- # prox_tony = ZProxy.new(tony)
258
- literals = [tony, sees, lisa, dot]
259
- expect { subject.to_pforest(literals) }.not_to raise_error
260
-
261
- # Sentence 1-02a: "Tony sees something."
262
- sentence_literals = [tony, sees, something, dot]
263
- expect { subject.to_pforest(sentence_literals) }.not_to raise_error
264
-
265
- # Sentence 1-02b: "Lisa sees something."
266
- sentence_literals = [lisa, sees, something, dot]
267
- expect { subject.to_pforest(sentence_literals) }.not_to raise_error
268
-
269
- # Sentence 1-03: "Tony sees this thing."
270
- sentence_literals = [tony, sees, this, thing, dot]
271
- expect { subject.to_pforest(sentence_literals) }.not_to raise_error
272
-
273
- # Sentence 1-04: "Lisa sees the other thing."
274
- sentence_literals = [lisa, sees, the, other, thing, dot]
275
- expect { subject.to_pforest(sentence_literals) }.not_to raise_error
276
- end
277
-
278
- it 'should parse sample sentences from lesson 1-B' do
279
- # Sentence 1-05a: "Lisa sees the same thing."
280
- literals = [lisa, sees, the, same, thing, dot]
281
- expect { subject.to_pforest(literals) }.not_to raise_error
282
-
283
- # Sentence 1-05b: "Lisa sees the same thing as Tony sees."
284
- literals = [lisa, sees, the, same, thing, as, tony, sees, dot]
285
- # same is an adjective of equality comparison
286
- # as is part of same ... as combination
287
- # it introduces a comparative clause
288
- expect { subject.to_pforest(literals) }.not_to raise_error
289
-
290
- # Sentence 1-06: "Tony sees one thing."
291
- literals = [tony, sees, one, thing, dot]
292
- expect { subject.to_pforest(literals) }.not_to raise_error
293
-
294
- # Sentence 1-07: "Lisa sees two things."
295
- literals = [lisa, sees, two, things, dot]
296
- expect { subject.to_pforest(literals) }.not_to raise_error
297
-
298
- # Sentence 1-08a: "Tony sees one person."
299
- literals = [tony, sees, one, person, dot]
300
- expect { subject.to_pforest(literals) }.not_to raise_error
301
-
302
- # Sentence 1-08b: "Lisa sees two people."
303
- literals = [lisa, sees, two, people, dot]
304
- expect { subject.to_pforest(literals) }.not_to raise_error
305
-
306
- # Sentence 1-05b: "Tony sees the same person as Lisa sees."
307
- literals = [tony, sees, the, same, person, as, lisa, sees, dot]
308
- # same is an adjective of equality comparison
309
- # as is part of same ... as combination
310
- # it introduces a comparative clause
311
- expect { subject.to_pforest(literals) }.not_to raise_error
312
- end
313
-
314
- it 'should parse sample sentences from lesson 1-C' do
315
- # Sentence 1-09a: "Tony sees many things."
316
- literals = [tony, sees, many, things, dot]
317
- expect { subject.to_pforest(literals) }.not_to raise_error
318
-
319
- # Sentence 1-09b: "Lisa sees many people."
320
- literals = [lisa, sees, many, people, dot]
321
- expect { subject.to_pforest(literals) }.not_to raise_error
322
-
323
- # Sentence 1-10: "Tony is inside this thing."
324
- literals = [tony, is, inside, this, thing, dot]
325
- expect { subject.to_pforest(literals) }.not_to raise_error
326
-
327
- # Sentence 1-11: "Lisa is not inside this thing."
328
- literals = [lisa, is, not_, inside, this, thing, dot]
329
- expect { subject.to_pforest(literals) }.not_to raise_error
330
-
331
- # Sentence: "Lisa does not see people inside the other thing."
332
- literals = [lisa, does_aux, not_, see, people, inside, the, other, thing, dot]
333
- # Ambiguous parse...
334
- expect { subject.to_pforest(literals) }.not_to raise_error
335
- end
336
-
337
- it 'should parse sample sentences from lesson 1-D' do
338
- # Sentence 1-12a: "Some of these people are inside this thing."
339
- literals = [some, of, these, people, are, inside, this, thing, dot]
340
- expect { subject.to_pforest(literals) }.not_to raise_error
341
-
342
- # Sentence 1-12b: "Some of these people are not inside this thing."
343
- literals = [some, of, these, people, are, not_, inside, this, thing, dot]
344
- expect { subject.to_pforest(literals) }.not_to raise_error
345
-
346
- # Sentence 1-13: "All of these people are inside this thing."
347
- literals = [all, of, these, people, are, not_, inside, this, thing, dot]
348
- expect { subject.to_pforest(literals) }.not_to raise_error
349
-
350
- # Sentence 1-14a: "There are two people inside one of these things."
351
- literals = [there, are, two, people, inside, one, of, these, things, dot]
352
- expect { subject.to_pforest(literals) }.not_to raise_error
353
-
354
- # Sentence 1-14b: "There are not people inside the other thing."
355
- literals = [there, are, not_, people, inside, the, other, thing, dot]
356
- expect { subject.to_pforest(literals) }.not_to raise_error
357
-
358
- # Sentence 1-15a: "There are many people inside this thing."
359
- literals = [there, are, many, people, inside, this, thing, dot]
360
- expect { subject.to_pforest(literals) }.not_to raise_error
361
-
362
- # Sentence 1-15b: "There are more people inside this thing."
363
- literals = [there, are, more, people, inside, this, thing, dot]
364
- expect { subject.to_pforest(literals) }.not_to raise_error
365
-
366
- # Sentence 1-15c: "There are more people inside the other thing
367
- # than there are inside this thing."
368
- literals = [there, are, more, people, inside, the, other, thing,
369
- than, there, are, inside, this, thing, dot]
370
- # Ambiguous parse
371
- expect { subject.to_pforest(literals) }.not_to raise_error
372
- end
373
-
374
- it 'should parse sample sentences from lesson 1-E' do
375
- # Sentence 1-16a: "Two of these things are alive."
376
- literals = [two, of, these, things, are, alive, dot]
377
- expect { subject.to_pforest(literals) }.not_to raise_error
378
-
379
- # Sentence 1-16b: "One of these things is not alive."
380
- literals = [one, of, these, things, is, not_, alive, dot]
381
- expect { subject.to_pforest(literals) }.not_to raise_error
382
-
383
- # Sentence 1-17a: "Tony sees some living things."
384
- literals = [tony, sees, some, living, things, dot]
385
- expect { subject.to_pforest(literals) }.not_to raise_error
386
-
387
- # Sentence 1-17b: "Two of these things are big."
388
- literals = [two, of, these, things, are, big, dot]
389
- expect { subject.to_pforest(literals) }.not_to raise_error
390
-
391
- # Sentence 1-17c: "One of these things is not big."
392
- literals = [one, of, these, things, is, not_, big, dot]
393
- expect { subject.to_pforest(literals) }.not_to raise_error
394
-
395
- # Sentence 1-18a: "Tony sees some living things."
396
- literals = [tony, sees, some, living, things, dot]
397
- expect { subject.to_pforest(literals) }.not_to raise_error
398
-
399
- # Sentence 1-18b: "One of these is big."
400
- literals = [one, of, these_as_pronoun, is, big, dot]
401
- expect { subject.to_pforest(literals) }.not_to raise_error
402
-
403
- # Sentence 1-18c: "Two of these are small."
404
- literals = [two, of, these_as_pronoun, are, small, dot]
405
- expect { subject.to_pforest(literals) }.not_to raise_error
406
-
407
- # Sentence 1-19a: "Tony sees one living thing."
408
- literals = [tony, sees, one, living, thing, dot]
409
- expect { subject.to_pforest(literals) }.not_to raise_error
410
-
411
- # Sentence 1-19b: "This one is very big."
412
- literals = [this_one, is, very, big, dot]
413
- expect { subject.to_pforest(literals) }.not_to raise_error
414
-
415
- # Sentence: "This thing is bigger than the other thing."
416
- literals = [this, thing, is, bigger, than, the, other, thing, dot]
417
- expect { subject.to_pforest(literals) }.not_to raise_error
418
-
419
- # Sentence: "This thing is smaller than the other thing."
420
- literals = [this, thing, is, smaller, than, the, other, thing, dot]
421
- expect { subject.to_pforest(literals) }.not_to raise_error
422
- end
423
-
424
- it 'should parse sample sentences from lesson 1-F' do
425
- # Sentence 1-20a: "Tony sees some living things."
426
- literals = [tony, sees, some, living, things, dot]
427
- expect { subject.to_pforest(literals) }.not_to raise_error
428
-
429
- # Sentence 1-20b: "Two of these are the same kind of living thing."
430
- literals = [these_as_pronoun, are, the, same, kind, of, living, thing, dot]
431
- expect { subject.to_pforest(literals) }.not_to raise_error
432
-
433
- # Sentence 1-20c: "One of these is not the same kind as the other two."
434
- literals = [one, of, these_as_pronoun, is, not_, the, same, kind,
435
- as, the, other, two_as_pronoun, dot]
436
- expect { subject.to_pforest(literals) }.not_to raise_error
437
-
438
- # Sentence 1-21a: "There is one person inside this thing."
439
- literals = [there, is, one, person, inside, this, thing, dot]
440
- expect { subject.to_pforest(literals) }.not_to raise_error
441
-
442
- # Sentence 1-21b: "If Tony is not inside this thing, then another person is inside."
443
- literals = [if_, tony, is, not_, inside, this, thing, comma, then_,
444
- another, person, is, inside, dot]
445
- # Ambiguous parse
446
- expect { subject.to_pforest(literals) }.not_to raise_error
447
-
448
- # Sentence 1-22a: "Tony is touching something."
449
- literals = [tony, is_aux, touching, something, dot]
450
- expect { subject.to_pforest(literals) }.not_to raise_error
451
-
452
- # Sentence 1-22b: "Lisa is touching Tony."
453
- literals = [lisa, is_aux, touching, tony, dot]
454
- expect { subject.to_pforest(literals) }.not_to raise_error
455
-
456
- # Sentence 1-23a: "Tony is far from Lisa."
457
- literals = [tony, is, far, from, lisa, dot]
458
- expect { subject.to_pforest(literals) }.not_to raise_error
459
-
460
- # Sentence 1-23b: "Lisa is far from Tony."
461
- literals = [lisa, is, far, from, tony, dot]
462
- expect { subject.to_pforest(literals) }.not_to raise_error
463
-
464
- # Sentence 1-23c: "Tony is not far from Lisa."
465
- literals = [tony, is, far, from, lisa, dot]
466
- expect { subject.to_pforest(literals) }.not_to raise_error
467
-
468
- # Sentence 1-24: "Tony is near to Lisa."
469
- literals = [tony, is, near_to, lisa, dot]
470
- expect { subject.to_pforest(literals) }.not_to raise_error
471
- end
472
-
473
- it 'should parse sample sentences from lesson 1-G' do
474
- # Sentence 1-25a: "Lisa is in this place."
475
- literals = [lisa, is, in_, this, place, dot]
476
- expect { subject.to_pforest(literals) }.not_to raise_error
477
-
478
- # Sentence 1-25b: "There are two other things in this place."
479
- literals = [there, are, two, other, things, in_, this, place, dot]
480
- expect { subject.to_pforest(literals) }.not_to raise_error
481
-
482
- # Sentence 1-25c: "Lisa is in the same place as these two other things."
483
- literals = [lisa, is, in_, the, same, place, as, these, two, other, things, dot]
484
- expect { subject.to_pforest(literals) }.not_to raise_error
485
-
486
- # Sentence 1-25d: "Tony is not in this place."
487
- literals = [tony, is, not_, in_, this, place, dot]
488
- expect { subject.to_pforest(literals) }.not_to raise_error
489
-
490
- # Sentence 1-25e: "Tony is in another place."
491
- literals = [tony, is, in_, another, place, dot]
492
- expect { subject.to_pforest(literals) }.not_to raise_error
493
-
494
- # Sentence 1-26a: "Lisa is inside this thing."
495
- literals = [lisa, is, inside, this, thing, dot]
496
- expect { subject.to_pforest(literals) }.not_to raise_error
497
-
498
- # Sentence 1-26b: "Tony is above this thing."
499
- literals = [tony, is, above, this, thing, dot]
500
- expect { subject.to_pforest(literals) }.not_to raise_error
501
-
502
- # Sentence 1-26c: "Tony is above lisa."
503
- literals = [tony, is, above, lisa, dot]
504
- expect { subject.to_pforest(literals) }.not_to raise_error
505
-
506
- # Sentence 1-27a: "Tony is on one side of this thing."
507
- literals = [tony, is, on, one, side, of, this, thing, dot]
508
- expect { subject.to_pforest(literals) }.not_to raise_error
509
-
510
- # Sentence 1-27b: "Lisa is on the other side."
511
- literals = [lisa, is, on, the, other, side, dot]
512
- expect { subject.to_pforest(literals) }.not_to raise_error
513
-
514
- # Sentence 1-27c: "Tony is touching one side of this thing."
515
- literals = [tony, is_aux, touching, one, side, of, this, thing, dot]
516
- # Ambiguous parse
517
- expect { subject.to_pforest(literals) }.not_to raise_error
518
- end
519
-
520
- it 'should parse sample sentences from lesson 1-H' do
521
- # Sentence 1-28: "Tony hears something."
522
- literals = [tony, hears, something, dot]
523
- expect { subject.to_pforest(literals) }.not_to raise_error
524
-
525
- # Sentence 1-29a: "Tony says something."
526
- literals = [tony, says, something, dot]
527
- expect { subject.to_pforest(literals) }.not_to raise_error
528
-
529
- # Sentence 1-29b: "Tony says something to Lisa."
530
- literals = [tony, says, something, to, lisa, dot]
531
- # Ambiguous parse
532
- expect { subject.to_pforest(literals) }.not_to raise_error
533
-
534
- # Sentence 1-29c: "Tony says something about this living thing."
535
- literals = [tony, says, something, about, this, living, thing, dot]
536
- expect { subject.to_pforest(literals) }.not_to raise_error
537
-
538
- # Sentence 1-29d: 'Tony says: "This living thing is small."'
539
- literals = [tony, says, colon, quote, this, living, thing, is, small, dot, quote, dot]
540
- expect { subject.to_pforest(literals) }.not_to raise_error
541
-
542
- # Sentence 1-30a: "Tony says some words."
543
- literals = [tony, says, some, words, dot]
544
- expect { subject.to_pforest(literals) }.not_to raise_error
545
-
546
- # Sentence 1-30b: "Lisa says more words."
547
- literals = [lisa, says, more, words, dot]
548
- expect { subject.to_pforest(literals) }.not_to raise_error
549
-
550
- # Sentence 1-31a: 'Tony says: "There are two people inside this thing."'
551
- literals = [tony, says, colon, quote, there, are, two, people, inside,
552
- this, thing, dot, quote, dot]
553
- expect { subject.to_pforest(literals) }.not_to raise_error
554
-
555
- # Sentence 1-31b: 'Lisa says: "There is one person inside this thing."'
556
- literals = [lisa, says, colon, quote, there, is, one, person, inside,
557
- this, thing, dot, quote, dot]
558
- expect { subject.to_pforest(literals) }.not_to raise_error
559
-
560
- # Sentence 1-31c: "What Tony says is not true."
561
- literals = [what, tony, says, is, not_, true_, dot]
562
- expect { subject.to_pforest(literals) }.not_to raise_error
563
-
564
- # Sentence 1-31d: "What Lisa says is true."
565
- literals = [what, lisa, says, is, true_, dot]
566
- expect { subject.to_pforest(literals) }.not_to raise_error
567
- end
568
-
569
- it 'should parse sample sentences from lesson 2-A' do
570
- # Sentence 2-01a: "This thing is like two of the other things."
571
- literals = [this, thing, is, like, two, of, the, other, things, dot]
572
- expect { subject.to_pforest(literals) }.not_to raise_error
573
-
574
- # Sentence 2-01b: "One of these things is not like the other things."
575
- literals = [one, of, these, things, is, not_, like, the, other, things, dot]
576
- expect { subject.to_pforest(literals) }.not_to raise_error
577
-
578
- # Sentence 2-02a: "Lisa has something."
579
- literals = [lisa, has, something, dot]
580
- expect { subject.to_pforest(literals) }.not_to raise_error
581
-
582
- # Sentence 2-02b: "Tony has another thing."
583
- literals = [tony, has, another, thing, dot]
584
- expect { subject.to_pforest(literals) }.not_to raise_error
585
-
586
- # Sentence 2-02c: "Lisa does not have the same kind of thing as Tony has."
587
- literals = [lisa, does_aux, not_, have, the, same, kind, of, thing, as, tony, has, dot]
588
- # Ambiguous parse
589
- expect { subject.to_pforest(literals) }.not_to raise_error
590
-
591
- # Sentence 2-03a: "Lisa is touching part of this thing."
592
- literals = [lisa, is_aux, touching, part, of, this, thing, dot]
593
- # Ambiguous parse
594
- expect { subject.to_pforest(literals) }.not_to raise_error
595
-
596
- # Sentence 2-03b: "Tony is touching the other part."
597
- literals = [tony, is_aux, touching, the, other, part, dot]
598
- expect { subject.to_pforest(literals) }.not_to raise_error
599
-
600
- # Sentence 2-Ax: "What Tony has is like what Lisa has."
601
- literals = [what, tony, has, is, like, what, lisa, has, dot]
602
- expect { subject.to_pforest(literals) }.not_to raise_error
603
- end
604
-
605
- it 'should parse sample sentences from lesson 2-B' do
606
- # Sentence 2-04a: "Lisa does something."
607
- literals = [lisa, does, something, dot]
608
- expect { subject.to_pforest(literals) }.not_to raise_error
609
-
610
- # Sentence 2-04b: "Lisa does something with this thing."
611
- literals = [lisa, does, something, with, this, thing, dot]
612
- # Ambiguous parse
613
- expect { subject.to_pforest(literals) }.not_to raise_error
614
-
615
- # Sentence 2-04c: "Lisa does something to Tony."
616
- literals = [lisa, does, something, to, tony, dot]
617
- # Ambiguous parse
618
- expect { subject.to_pforest(literals) }.not_to raise_error
619
-
620
- # Sentence 2-04d: "Lisa does something to Tony with this thing."
621
- literals = [lisa, does, something, to, tony, with, this, thing, dot]
622
- # Ambiguous parse
623
- expect { subject.to_pforest(literals) }.not_to raise_error
624
-
625
- # Sentence 2-05a: "Something happens."
626
- literals = [something, happens, dot]
627
- expect { subject.to_pforest(literals) }.not_to raise_error
628
-
629
- # Sentence 2-05b: "Something happens to Lisa."
630
- literals = [something, happens, to, lisa, dot]
631
- expect { subject.to_pforest(literals) }.not_to raise_error
632
-
633
- # Sentence 2-06a: "Tony does something."
634
- literals = [tony, does, something, dot]
635
- expect { subject.to_pforest(literals) }.not_to raise_error
636
-
637
- # Sentence 2-06b: "Something happens to Lisa because of this."
638
- literals = [something, happens, to, lisa, because, of, this_as_pronoun, dot]
639
- expect { subject.to_pforest(literals) }.not_to raise_error
640
-
641
- # Sentence 2-06c: "Something happens to Lisa because Tony does this."
642
- literals = [something, happens, to, lisa, because, tony, does, this_as_pronoun, dot]
643
- expect { subject.to_pforest(literals) }.not_to raise_error
644
-
645
- # Sentence 2-06: "Something happens to this living thing."
646
- literals = [something, happens, to, this, living, thing, dot]
647
- expect { subject.to_pforest(literals) }.not_to raise_error
648
- end
649
-
650
- it 'should parse sample sentences from lesson 2-C' do
651
- # Sentence 2-07a: "Lisa thinks Tony is inside this thing."
652
- literals = [lisa, thinks, tony, is, inside, this, thing, dot]
653
- # Ambiguous parse
654
- expect { subject.to_pforest(literals) }.not_to raise_error
655
-
656
- # Sentence 2-07b: "Lisa thinks something about Tony."
657
- literals = [lisa, thinks, something, about, tony, dot]
658
- # Ambiguous parse
659
- expect { subject.to_pforest(literals) }.not_to raise_error
660
-
661
- # Sentence 2-08a: "Tony knows Lisa is inside this thing, because Tony sees Lisa inside."
662
- literals = [tony, knows, lisa, is, inside, this, thing, comma,
663
- because, tony, sees, lisa, inside, dot]
664
- # Ambiguous parse
665
- expect { subject.to_pforest(literals) }.not_to raise_error
666
-
667
- # Sentence 2-08b: "Tony knows something about Lisa."
668
- literals = [tony, knows, something, about, lisa, dot]
669
- # Ambiguous parse
670
- expect { subject.to_pforest(literals) }.not_to raise_error
671
-
672
- # Sentence 2-09a: "Tony wants this thing."
673
- literals = [tony, wants, this, thing, dot]
674
- expect { subject.to_pforest(literals) }.not_to raise_error
675
-
676
- # Sentence 2-09b: "Tony wants to have this thing."
677
- literals = [tony, wants, to, have, this, thing, dot]
678
- # Ambiguous parse
679
- expect { subject.to_pforest(literals) }.not_to raise_error
680
-
681
- # Sentence 2-10a: "Tony wants to do something."
682
- literals = [tony, wants, to, do_, something, dot]
683
- # Ambiguous parse
684
- expect { subject.to_pforest(literals) }.not_to raise_error
685
-
686
- # Sentence 2-10b: "Lisa wants to do the same thing."
687
- literals = [lisa, wants, to, do_, the, same, thing, dot]
688
- # Ambiguous parse
689
- expect { subject.to_pforest(literals) }.not_to raise_error
690
-
691
- # Sentence 2-10c: "Tony can do this."
692
- literals = [tony, can, do_, this_as_pronoun, dot]
693
- expect { subject.to_pforest(literals) }.not_to raise_error
694
-
695
- # Sentence 2-10d: "This is not something Lisa can do."
696
- literals = [this_as_pronoun, is, not_, something, lisa, can, do_, dot]
697
- expect { subject.to_pforest(literals) }.not_to raise_error
698
-
699
- # Sentence 2-10e: "Lisa cannot do this."
700
- literals = [lisa, can, not_, do_, this_as_pronoun, dot]
701
- expect { subject.to_pforest(literals) }.not_to raise_error
702
- end
703
-
704
- it 'should parse sample sentences from lesson 2-D' do
705
- # Sentence 2-11a: "This person does something bad."
706
- literals = [this, person, does, something, bad, dot]
707
- # Ambiguous parse
708
- expect { subject.to_pforest(literals) }.not_to raise_error
709
-
710
- # Sentence 2-11b: "This person does something bad for Tony."
711
- literals = [this, person, does, something, bad, for_, tony, dot]
712
- # Ambiguous parse
713
- expect { subject.to_pforest(literals) }.not_to raise_error
714
-
715
- # Sentence 2-12a: "Tony does something good."
716
- literals = [tony, does, something, good, dot]
717
- expect { subject.to_pforest(literals) }.not_to raise_error
718
-
719
- # Sentence 2-12b: "Tony does something good for Lisa."
720
- literals = [tony, does, something, good, for_, lisa, dot]
721
- expect { subject.to_pforest(literals) }.not_to raise_error
722
-
723
- # Sentence 2-13a: "Tony feels something."
724
- literals = [tony, feels, something, dot]
725
- expect { subject.to_pforest(literals) }.not_to raise_error
726
-
727
- # Sentence 2-13b: "This does not feel good for Tony."
728
- literals = [this_as_pronoun, does_aux, not_, feel, good, for_, tony, dot]
729
- expect { subject.to_pforest(literals) }.not_to raise_error
730
-
731
- # Sentence 2-13b: "This feels bad for Tony."
732
- literals = [this_as_pronoun, feels, bad, for_, tony, dot]
733
- expect { subject.to_pforest(literals) }.not_to raise_error
734
-
735
- # Sentence 2-Dx: "Lisa thinks about something bad happening to this
736
- # living thing. Thinking about this feels bad for Lisa."
737
- literals = [lisa, thinks, about, something, bad, happening, to, this,
738
- living, thing, dot,
739
- #thinking, about, this_as_pronoun, feels, bad,
740
- #for_, lisa, dot
741
- ]
742
- expect { subject.to_pforest(literals) }.not_to raise_error
743
- end
744
-
745
- it 'should parse sample sentences from lesson 2-E' do
746
- # Sentence 2-14a: "Lisa says something at this time."
747
- literals = [lisa, says, something, at, this, time, dot]
748
- # Ambiguous parse
749
- expect { subject.to_pforest(literals) }.not_to raise_error
750
-
751
- # Sentence 2-14b: "Tony is not in this place at this time."
752
- literals = [tony, is, not_, in_, this, place, at, this, time, dot]
753
- expect { subject.to_pforest(literals) }.not_to raise_error
754
-
755
- # Sentence 2-15a: "At one time, Tony does something to this thing."
756
- literals = [at, one, time, comma, tony, does, something, to, this, thing, dot]
757
- expect { subject.to_pforest(literals) }.not_to raise_error
758
-
759
- # Sentence 2-15b: "At another time, Lisa says something."
760
- literals = [at, another, time, comma, lisa, says, something, dot]
761
- expect { subject.to_pforest(literals) }.not_to raise_error
762
-
763
- # Sentence 2-15c: "Tony does something to this thing before Lisa says something."
764
- literals = [tony, does, something, to, this, thing, before, lisa, says, something, dot]
765
- expect { subject.to_pforest(literals) }.not_to raise_error
766
-
767
- # Sentence 2-16a: "Lisa does something for a long time."
768
- literals = [lisa, does, something, for_, a_as_art, long, time, dot]
769
- expect { subject.to_pforest(literals) }.not_to raise_error
770
-
771
- # Sentence 2-17a: "Tony does something for a short time."
772
- literals = [tony, does, something, for_, a_as_art, short, time, dot]
773
- expect { subject.to_pforest(literals) }.not_to raise_error
774
-
775
- # Sentence 2-17a: "Tony does not do this for a long time."
776
- literals = [tony, does_aux, not_, do_, this_as_pronoun, for_, a_as_art, long, time, dot]
777
- expect { subject.to_pforest(literals) }.not_to raise_error
778
-
779
- # Sentence 2-18a: "Lisa sees something move."
780
- literals = [lisa, sees, something, move, dot]
781
- expect { subject.to_pforest(literals) }.not_to raise_error
782
-
783
- # Sentence 2-18a: "Lisa moves near to this thing."
784
- literals = [lisa, moves, near_to, this, thing, dot]
785
- expect { subject.to_pforest(literals) }.not_to raise_error
786
-
787
- # Sentence 2-E-Xa: "A short time before, Tony was far from Lisa."
788
- # Case of a time adverbial adjunct that is put in front position.
789
- literals = [a_as_art, short, time, before_adverb, comma, tony, was, far, from, lisa, dot]
790
- expect { subject.to_pforest(literals) }.not_to raise_error
791
-
792
- # Sentence 2-E-Xa: "At this time, Tony is near to Lisa"
793
- literals = [at, this, time, comma, tony, is, near_to, lisa, dot]
794
- expect { subject.to_pforest(literals) }.not_to raise_error
795
-
796
- # Sentence 2-E-Xa: "Tony is near to Lisa because Tony moved"
797
- # Case of a time adverbial adjunct that is put in front position.
798
- literals = [tony, is, near_to, lisa, because, tony, moved, dot]
799
- expect { subject.to_pforest(literals) }.not_to raise_error
800
- end
801
-
802
- it 'should parse sample sentences from lesson 2-F' do
803
- # Sentence 2-19a: 'Tony says: "I did X.".'
804
- literals = [tony, says, colon, quote, i_pronoun, did, x_as_noun, dot, quote, dot]
805
- expect { subject.to_pforest(literals) }.not_to raise_error
806
-
807
- # Sentence 2-19a definiendum: 'Tony says: "I did X.".'
808
- literals = [tony, says, colon, quote, i_pronoun, did, x_as_noun, dot, quote, dot]
809
- expect { subject.to_pforest(literals) }.not_to raise_error
810
-
811
- # Sentence 2-19a definiens: 'Tony says something about Tony. Tony says: Tony did X.'
812
- literals = [tony, says, something, about, tony, dot,
813
- tony, says, colon, tony, did, x_as_noun, dot]
814
- expect { subject.to_pforest(literals) }.not_to raise_error
815
-
816
- # Sentence 2-19a: 'Tony says: "I see Lisa.".'
817
- literals = [tony, says, colon, quote, i_pronoun, see, lisa, dot, quote, dot]
818
- expect { subject.to_pforest(literals) }.not_to raise_error
819
-
820
- # Sentence 2-19b definiendum: 'Lisa says: "X happened to me.".'
821
- literals = [lisa, says, colon, quote, x_as_noun, happened, to, me, dot, quote, dot]
822
- expect { subject.to_pforest(literals) }.not_to raise_error
823
-
824
- # Sentence 2-19b definiens: 'Lisa says something about Lisa. Lisa says: X happened to Lisa.'
825
- literals = [lisa, says, something, about, lisa, dot,
826
- lisa, says, colon, x_as_noun, happened, to, lisa, dot]
827
- expect { subject.to_pforest(literals) }.not_to raise_error
828
-
829
- # Sentence 2-19c: 'Lisa says: "Tony sees me."'
830
- literals = [lisa, says, colon, quote, tony, sees, me, dot, quote, dot]
831
- expect { subject.to_pforest(literals) }.not_to raise_error
832
-
833
- # Sentence 2-20a definiendum: 'Tony says to Lisa: "I can see you.".'
834
- literals = [tony, says, to, lisa, colon, quote, i_pronoun, can, see, you, dot, quote, dot]
835
- expect { subject.to_pforest(literals) }.not_to raise_error
836
-
837
- # Sentence 2-20a definiens: 'Tony says something about Lisa.
838
- # Tony says this to Lisa. Tony says: Tony can see Lisa.'
839
- literals = [tony, says, something, about, lisa, dot,
840
- tony, says, this_as_pronoun, to, lisa, dot,
841
- tony, says, colon, tony, can, see, lisa, dot]
842
- expect { subject.to_pforest(literals) }.not_to raise_error
843
-
844
- # Sentence 2-20b: "I know you have something good."
845
- literals = [i_pronoun, know, you, have, something, good, dot]
846
- expect { subject.to_pforest(literals) }.not_to raise_error
847
-
848
- # Sentence 2-20c: "I want you to do something good for me."
849
- literals = [i_pronoun, want, you, to, do_, something, good, for_, me, dot]
850
- expect { subject.to_pforest(literals) }.not_to raise_error
851
-
852
- # Sentence 2-21a definiendum: 'Tony says: "X happens here.".'
853
- literals = [tony, says, colon, quote, x_as_noun, happens, here, dot, quote, dot]
854
- expect { subject.to_pforest(literals) }.not_to raise_error
855
-
856
- # Sentence 2-21a definiens: "Tony is in a place. Tony says: X happens in this place."
857
- literals = [tony, is, in_, a_as_art, place, dot,
858
- tony, says, colon, x_as_noun, happens, in_, this, place, dot]
859
- expect { subject.to_pforest(literals) }.not_to raise_error
860
-
861
- # Sentence 2-21b: "Many people were here at one time."
862
- literals = [many, people, were, here, at, one, time, dot]
863
- expect { subject.to_pforest(literals) }.not_to raise_error
864
-
865
- # Sentence 2-22a definiendum: 'Lisa says: "X happens now.".'
866
- literals = [lisa, says, colon, quote, x_as_noun, happens, now, dot, quote, dot]
867
- expect { subject.to_pforest(literals) }.not_to raise_error
868
-
869
- # Sentence 2-22a definiens: 'Lisa says something at a time.
870
- # Lisa says: X happens at this same time.'
871
- literals = [lisa, says, something, at, a_as_art, time, dot,
872
- lisa, says, colon, x_as_noun, happens, at, this, time, dot]
873
- expect { subject.to_pforest(literals) }.not_to raise_error
874
-
875
- # Sentence 2-22b: "There are not many people here now."
876
- literals = [there, are, not_, many, people, here, now , dot]
877
- expect { subject.to_pforest(literals) }.not_to raise_error
878
-
879
- # Sentence 2-Fa: "Lisa says to Tony: "I can see many living things here."."
880
- literals = [lisa, says, to, tony, colon, quote, i_pronoun,
881
- can, see, many, living, things, here, dot, quote, dot]
882
- expect { subject.to_pforest(literals) }.not_to raise_error
883
- end
884
-
885
- it 'should parse sample sentences from lesson 2-G' do
886
- # Sentence 2-23a definiendum: 'Someone does X.'
887
- literals = [someone, does, x_as_noun, dot]
888
- expect { subject.to_pforest(literals) }.not_to raise_error
889
-
890
- # Sentence 2-23a definiens: 'Something does X. This something can
891
- # think like people think. This something can be one person.'
892
- literals = [something, does, x_as_noun, dot,
893
- this, something, can, think, like, people, think, dot,
894
- this, something, can, be_, a_as_art, person, dot]
895
- expect { subject.to_pforest(literals) }.not_to raise_error
896
-
897
- # Sentence 2-23b: Someone said something to Tony.
898
- literals = [someone, said, something, to, tony, dot]
899
- expect { subject.to_pforest(literals) }.not_to raise_error
900
-
901
- # Sentence 2-23c definiendum: 'J knows who did K.'
902
- literals = [j_, knows, who, did, k_, dot]
903
- expect { subject.to_pforest(literals) }.not_to raise_error
904
-
905
- # Sentence 2-23c definiens: J thinks about someone.
906
- # J knows this someone did K.
907
- literals = [j_, thinks, about, someone, dot,
908
- j_, knows, this, someone, did, k_, dot]
909
- expect { subject.to_pforest(literals) }.not_to raise_error
910
-
911
- # Sentence 2-23d: Tony knows who said something.
912
- literals = [tony, knows, who, said, something, dot]
913
- expect { subject.to_pforest(literals) }.not_to raise_error
914
-
915
- # Sentence 2-24a definiendum: 'J happens after K happens.'
916
- literals = [j_, happens, after_, k_, happens, dot]
917
- expect { subject.to_pforest(literals) }.not_to raise_error
918
-
919
- # Sentence 2-24a definiens: K happens before J happens.
920
- literals = [k_, happens, before, j_, happens, dot]
921
- expect { subject.to_pforest(literals) }.not_to raise_error
922
-
923
- # Sentence 2-24b: After you do something for a long time,
924
- # you can know much more about this.
925
- literals = [after_, you, do_, something, for_, a_as_art, long, time,
926
- comma, you, can, know, much, more_as_adverb, about, this_as_pronoun, dot]
927
- expect { subject.to_pforest(literals) }.not_to raise_error
928
-
929
- # Sentence 2-25a definiendum: 'X is true for some time.'
930
- literals = [x_as_noun, is, true_, for_, some, time, dot]
931
- expect { subject.to_pforest(literals) }.not_to raise_error
932
-
933
- # Sentence 2-25a definiens: X is true at a time.
934
- # Some parts of this one time happen before other parts.
935
- # Some parts of this one time happen after other parts.
936
- # X is true at all parts of this one time.
937
- literals = [x_as_noun, is, true_, at, a_as_art, time, dot,
938
- some, parts, of, this, one, time, happen, before_adverb, other, parts, dot,
939
- some, parts, of, this, one, time, happen, after_adverb, other, parts, dot,
940
- x_as_noun, is, true_, at, all, parts, of, this, one, time, dot]
941
- expect { subject.to_pforest(literals) }.not_to raise_error
942
-
943
- # Sentence 2-25b: After I moved for some time,
944
- # I was near the other side of this place.
945
- literals = [after_, i_pronoun, moved, for_, some, time,
946
- comma, i_pronoun, was, near, the, other, side, of, this, place, dot]
947
- expect { subject.to_pforest(literals) }.not_to raise_error
948
-
949
- # Sentence 2-26a definiendum: 'X happens in a moment.'
950
- literals = [x_as_noun, happens, in_, a_as_art, moment, dot]
951
- expect { subject.to_pforest(literals) }.not_to raise_error
952
-
953
- # Sentence 2-26a definiens: X happens for one very short time.
954
- # There are not parts of this very short time when one part
955
- # happens before other parts.
956
- literals = [x_as_noun, happens, for_, one, very, short, time, dot,
957
- there, are, not_, parts, of, this, very, short, time, when_,
958
- one, part, happens, before_adverb, other, part, dot]
959
- expect { subject.to_pforest(literals) }.not_to raise_error
960
-
961
- # Sentence 2-26b: In a moment, I knew something here was not good.
962
- # 'here' is adverb that modifies the 'knew' verb
963
- literals = [in_, a_as_art, moment, comma, i_pronoun, knew, something,
964
- here, was, not_, good, dot ]
965
- expect { subject.to_pforest(literals) }.not_to raise_error
966
-
967
- # Sentence 2-Gx: Tony is inside this thing for some time.
968
- # Lisa says: "I want to know who is inside this thing.".
969
- # Tony hears Lisa. Because of this, Tony says: "I am inside.".
970
- # Tony says this after Tony hears Lisa.
971
- literals = [tony, is, inside, this, thing, for_, some, time, dot,
972
- lisa, says, colon, quote, i_pronoun, want, to, know, who, is,
973
- inside, this, thing, dot, quote, dot, tony, hears, lisa, dot,
974
- because, of, this_as_pronoun, comma, tony, says, colon,
975
- quote, i_pronoun, am, inside, dot, quote, dot,
976
- tony, says, this_as_pronoun, after_, tony, hears, lisa, dot]
977
- expect { subject.to_pforest(literals) }.not_to raise_error
978
- end
979
-
980
- it 'should parse sample sentences from lesson 2-H' do
981
- # Sentence 2-27a definiendum: 'X is the body of this person.'
982
- literals = [x_as_noun, is, the, body, of, this, person, dot]
983
- expect { subject.to_pforest(literals) }.not_to raise_error
984
-
985
- # Sentence 2-27b "Parts of this person can touch other things.
986
- # Parts of this person can touch other parts inside this person.
987
- # X is all of these parts of this person."
988
- # [One part of the body of this person felt very bad.]
989
- literals = [ parts, of, this, person, can, touch, other, things, dot,
990
- parts, of, this, person, can, touch, other, parts, inside,
991
- this, person, dot,
992
- x_as_noun, is, all, of, these, parts, of, this, person, dot,
993
- one, part, of, the, body, of, this, person, felt, very, bad, dot
994
- ]
995
- expect { subject.to_pforest(literals) }.not_to raise_error
996
-
997
- # Sentence 2-28a definiendum "X dies."
998
- literals = [x_as_noun, dies, dot]
999
- expect { subject.to_pforest(literals) }.not_to raise_error
1000
-
1001
- # Sentence 2-28b definiens "Something happens to X in a moment.
1002
- # X is alive before this moment. X is not alive after this moment.
1003
- # [After this person lived for a long time, this person died."
1004
- literals = [ something, happens, to, x_as_noun, in_, a_as_art,
1005
- moment, dot,
1006
- x_as_noun, is, alive, before_adverb, this, moment, dot,
1007
- x_as_noun, is, not_, alive, after_adverb, this, moment, dot,
1008
- after_, this, person, lived, for_, a_as_art, long, time, comma,
1009
- this, person, died, dot
1010
- ]
1011
- expect { subject.to_pforest(literals) }.not_to raise_error
1012
-
1013
- # Sentence 2-29a definiendum "You think maybe X is true."
1014
- literals = [you, think, maybe, x_as_noun, is, true_, dot]
1015
- expect { subject.to_pforest(literals) }.not_to raise_error
1016
-
1017
- # Sentence 2-29b definiens "You think something like X
1018
- # can be true. You do not know X is true.
1019
- # You do not know X is not true.
1020
- # [Maybe some people far from here can see me.]"
1021
- literals = [ you, do_aux, not_, know, x_as_noun, is, true_, dot,
1022
- you, do_aux, not_, know, x_as_noun, is, not_, true_, dot,
1023
- maybe, some, people, far_from, here_as_noun, can, see, me, dot
1024
- ]
1025
- expect { subject.to_pforest(literals) }.not_to raise_error
1026
-
1027
- # Sentence 2-30a definiendum "J is below K."
1028
- literals = [j_, is, below, k_, dot]
1029
- expect { subject.to_pforest(literals) }.not_to raise_error
1030
-
1031
- # Sentence 2-30b definiens "K is above J.
1032
- # [I am touching this thing below me.]
1033
- literals = [ j_, is, below, k_, dot,
1034
- i_pronoun, am, touching, this, thing, below, me, dot
1035
- ]
1036
- expect { subject.to_pforest(literals) }.not_to raise_error
1037
-
1038
- # Sentence 2-H extra "Someone sees this thing.
1039
- # The body of this thing is not moving.
1040
- # Maybe this thing is dead."
1041
- literals = [ someone, sees, thing, dot,
1042
- the, body, of, this, thing, is_aux, not_, moving, dot
1043
- ]
1044
- expect { subject.to_pforest(literals) }.not_to raise_error
1045
- end
1046
-
1047
- it 'should parse sample sentences from lesson 3-A' do
1048
- # Sentence 3-01a definiendum: 'J happens to something that does K.'
1049
- literals = [j_, happens, to, something, that, does, k_, dot]
1050
- expect { subject.to_pforest(literals) }.not_to raise_error
1051
-
1052
- # Sentence 3-01b definiens: 'J happens to something.
1053
- # This same something does K.
1054
- # [Tony has something that Lisa wants.]'
1055
- literals = [j_, happens, to, something, dot,
1056
- this, same, thing, does, k_, dot,
1057
- tony, has, something, that, lisa, wants, dot
1058
- ]
1059
- expect { subject.to_pforest(literals) }.not_to raise_error
1060
-
1061
- # Sentence 3-02a definiendum: 'J is true, and K is true.'
1062
- literals = [j_, is, true_, comma, and_, k_, is, true_, dot]
1063
- expect { subject.to_pforest(literals) }.not_to raise_error
1064
-
1065
- # Sentence 3-02b definiens: 'These two things are true: J is true.
1066
- # K is true.'
1067
- # [Lisa sees Tony, and Tony sees Lisa.]'
1068
- literals = [these, two, things, are, true_, colon, j_, is, true_, dot,
1069
- k_, is, true_, dot,
1070
- lisa, sees, tony, comma, and_, tony, sees, lisa, dot
1071
- ]
1072
- expect { subject.to_pforest(literals) }.not_to raise_error
1073
-
1074
- # Sentence 3-02c definiendum: 'J and K do X.'
1075
- literals = [j_, and_, k_, do_, x_as_noun, dot]
1076
- expect { subject.to_pforest(literals) }.not_to raise_error
1077
-
1078
- # Sentence 3-02d definiens: 'These two things do X.
1079
- # J is one that does this.
1080
- # K is another that does this.'
1081
- # [Tony and Lisa want to see me.]
1082
- # [I see Tony and Lisa.]'
1083
- literals = [these, two, things, do_, x_as_noun, dot,
1084
- j_, is, one_as_adj, that, does, this_as_pronoun, dot,
1085
- k_, is, another, that, does, this_as_pronoun, dot,
1086
- tony, and_, lisa, want, to, see, me, dot,
1087
- i_pronoun, see, tony, and_, lisa, dot
1088
- ]
1089
- expect { subject.to_pforest(literals) }.not_to raise_error
1090
-
1091
- # Sentence 3-03a definiendum: 'J is true, or K is true.'
1092
- literals = [j_, is, true_, comma, or_, k_, is, true_, dot]
1093
- expect { subject.to_pforest(literals) }.not_to raise_error
1094
-
1095
- # Sentence 3-03b definiens: 'If J is not true, then K is true.
1096
- # [Tony saw me, or Lisa heard me.]
1097
- literals = [if_, j_, is, not_, true_, comma,
1098
- then_, k_, is, true_, dot,
1099
- tony, saw, me, comma, or_, lisa, heard, me, dot
1100
- ]
1101
- expect { subject.to_pforest(literals) }.not_to raise_error
1102
-
1103
- # Sentence 3-03c definiendum: 'J or K does this.'
1104
- literals = [j_, or_, k_, does, this_as_pronoun, dot]
1105
- expect { subject.to_pforest(literals) }.not_to raise_error
1106
-
1107
- # Sentence 3-03d definiendum: 'If J does not do this, then K does this.'
1108
- literals = [if_, j_, does_aux, not_, do_, this_as_pronoun, comma,
1109
- then_, k_, does, this_as_pronoun, dot]
1110
- expect { subject.to_pforest(literals) }.not_to raise_error
1111
-
1112
- # Sentence 3-03e: '[Lisa or Tony said something.]
1113
- # [This belongs to Tony or Lisa.]'
1114
- literals = [lisa, or_, tony, said, something, dot,
1115
- this_as_pronoun, belongs, to, tony, or_, lisa, dot
1116
- ]
1117
- expect { subject.to_pforest(literals) }.not_to raise_error
1118
-
1119
- # Sentence 3-04a definiendum: 'It does something.'
1120
- literals = [it_, does, something, dot]
1121
- expect { subject.to_pforest(literals) }.not_to raise_error
1122
-
1123
- # Sentence 3-04b definiens: 'This thing does something.'
1124
- # [I touched this thing, and it moved.]
1125
- literals = [this, thing, does, something, dot,
1126
- i_pronoun, touched, this, thing, comma, and_, it_, moved, dot
1127
- ]
1128
- expect { subject.to_pforest(literals) }.not_to raise_error
1129
-
1130
- # Sentence 3-04c definiendum: 'They do something.'
1131
- literals = [they, does, something, dot
1132
- ]
1133
- expect { subject.to_pforest(literals) }.not_to raise_error
1134
-
1135
- # Sentence 3-04d definiens: 'These things or people do something.'
1136
- # [Something happens to them.] = Something happens to these things or people.
1137
- literals = [ these, things, or_, people, do_, something, dot,
1138
- something, happens, to, them, dot,
1139
- something, happens, to, these, things, or_, people, dot
1140
- ]
1141
- expect { subject.to_pforest(literals) }.not_to raise_error
1142
- end
1143
-
1144
- it 'should parse sample sentences from lesson 3-B' do
1145
- # Sentence 3-05a definiendum: 'This is its X.'
1146
- literals = [this_as_pronoun, is, its, x_as_noun, dot
1147
- ]
1148
- expect { subject.to_pforest(literals) }.not_to raise_error
1149
-
1150
- # Sentence 3-05b definiens: 'This X belongs to it.
1151
- # [I saw this thing and touched some of its parts.]
1152
- # [These things are their things.] = These things belong to them.
1153
- literals = [this, x_as_noun, belongs, to, it_, dot,
1154
- i_pronoun, saw, this, thing, and_, touched, some, of, its, parts, dot
1155
- ]
1156
- expect { subject.to_pforest(literals) }.not_to raise_error
1157
-
1158
- # Sentence 3-05c definiendum: 'These things are their things.'
1159
- literals = [these, things, are, their, things, dot
1160
- ]
1161
- expect { subject.to_pforest(literals) }.not_to raise_error
1162
-
1163
- # Sentence 3-05d definiens: 'These things belong to them.
1164
- literals = [these, things, belong, to, them, dot]
1165
- expect { subject.to_pforest(literals) }.not_to raise_error
1166
-
1167
- # Sentence 3-06a definiendum: 'This is your X.'
1168
- literals = [this_as_pronoun, is, your, x_as_noun, dot]
1169
- expect { subject.to_pforest(literals) }.not_to raise_error
1170
-
1171
- # Sentence 3-06b definien: 'This X belongs to you.
1172
- # [You feel something touching your body.]
1173
- literals = [this, x_as_noun, belongs, to, you, dot,
1174
- you, feel, something, touching, your, body, dot
1175
- ]
1176
- expect { subject.to_pforest(literals) }.not_to raise_error
1177
-
1178
- # Sentence 3-07a definiendum: 'This is my X.'
1179
- literals = [this_as_pronoun, is, my, x_as_noun, dot,
1180
- ]
1181
- expect { subject.to_pforest(literals) }.not_to raise_error
1182
-
1183
- # Sentence 3-07b definiens: 'This X belongs to me.
1184
- # [I do not want you to touch my body.]
1185
- literals = [this, x_as_noun, belongs, to, me, dot,
1186
- i_pronoun, do_aux, not_, want, to, touch, my, body, dot
1187
- ]
1188
- expect { subject.to_pforest(literals) }.not_to raise_error
1189
-
1190
- # Sentence 3-08a definiendum: 'There is an X here.'
1191
- literals = [there, is, an, x_as_noun, here, dot]
1192
- expect { subject.to_pforest(literals) }.not_to raise_error
1193
-
1194
- # Sentence 3-08b definiens: 'X is some kind of thing.
1195
- # There is one of this kind of thing here.
1196
- # This is not one that you said something about a short time before now.
1197
- # [I did not know there was a person in this place.]
1198
- literals = [x_as_noun, is, some, kind, of, thing, dot,
1199
- there, is, one, of, this, kind, of, thing, here, dot,
1200
- this_as_pronoun, is, not_, one_as_adj, that, you, said, something,
1201
- about, a_as_art, short, time, before_as_adj, now_as_noun, dot
1202
- ]
1203
- expect { subject.to_pforest(literals) }.not_to raise_error
1204
-
1205
- # Sentence 3-Bxa 'Lisa sees a living thing that is very big.
1206
- # Lisa says: "I see one living thing. Its body is bigger than my body.", dot
1207
- literals = [
1208
- lisa, sees, a_as_art, living, thing, that, is, very, big, dot,
1209
- lisa, says, colon, quote, i_pronoun, see, one, living, thing, dot,
1210
- its, body, is, bigger, than, my, body, dot, quote, dot
1211
- ]
1212
- expect { subject.to_pforest(literals) }.not_to raise_error
1213
- end
1214
-
1215
- it 'should parse sample sentences from lesson 3-C' do
1216
- # Sentence 3-09a definiendum: 'Something happens to the X.'
1217
- literals = [something, happens, to, the, x_as_noun, dot]
1218
- expect { subject.to_pforest(literals) }.not_to raise_error
1219
-
1220
- # Sentence 3-09b definiens: Something happens to X.
1221
- # This is the same X that someone said something about a short time before,
1222
- # or there is not another thing that is the same kind as X.
1223
- # [I saw two people here before, and now I do not see the people.]
1224
- literals = [something, happens, to, x_as_noun, dot,
1225
- this_as_pronoun, is, the, same, x_as_noun, that, someone, said, something, about,
1226
- a_as_art, short, time, before_as_adj, comma,
1227
- or_, there, is, not_, another, thing, that, is, the, same, kind,
1228
- as, x_as_noun, dot,
1229
- i_pronoun, saw, two, people, here, before_adverb, comma,
1230
- and_, now, i_pronoun, do_aux, not_, see, the, people, dot
1231
- ]
1232
- expect { subject.to_pforest(literals) }.not_to raise_error
1233
-
1234
- # Sentence 3-10a definiendum: 'X is an animal.'
1235
- literals = [x_as_noun, is, an, animal, dot]
1236
- expect { subject.to_pforest(literals) }.not_to raise_error
1237
-
1238
- # Sentence 3-10b definiens: There are many kinds of living things
1239
- # that can feel and can move when they want. X is one of these.
1240
- # [The animal moved when someone touched its body.]
1241
- literals = [ there, are, many, kinds, of, living, things,
1242
- that, can, feel, and_, can, move, when_, they, want, dot,
1243
- x_as_noun, is, one, of, these_as_pronoun, dot,
1244
- the, animal, moved, when_, someone, touched, its, body, dot
1245
- ]
1246
- expect { subject.to_pforest(literals) }.not_to raise_error
1247
-
1248
- # Sentence 3-11a definiendum: 'J causes K to happen.'
1249
- literals = [j_, causes, k_, to, happen, dot]
1250
- expect { subject.to_pforest(literals) }.not_to raise_error
1251
-
1252
- # Sentence 3-11b definiens: K happens because J happens
1253
- # or because J does something.
1254
- # [Someone bad caused these people to die.]
1255
- literals = [ k_, happens, because, j_, happens,
1256
- or_, because, j_, does, something, dot,
1257
- something, bad, caused, these, people, to, die, dot
1258
- ]
1259
- expect { subject.to_pforest(literals) }.not_to raise_error
1260
-
1261
- # Sentence 3-12a definiendum: 'J is true, but K is not true.'
1262
- literals = [j_, is, true_, comma, but, k_, is, not_, true_, dot]
1263
- expect { subject.to_pforest(literals) }.not_to raise_error
1264
-
1265
- # Sentence 3-12b definiens: You say J is true.
1266
- # Maybe when some people hear J is true,
1267
- # they think K is true because of this.
1268
- # You want them to know K is not true, and you say this.
1269
- # [I hear Tony, but I do not see Tony.]
1270
- literals = [ maybe, when_, some, people, hear, j_, is, true_, comma,
1271
- they, think, k_, is, true_, because, of, this_as_pronoun, dot,
1272
- you, want, them, to, know, k_, is, not_, true_, comma,
1273
- and_, you, say, this_as_pronoun, dot,
1274
- i_pronoun, hear, tony, comma, but, i_pronoun, do_aux, not_, see, lisa, dot
1275
- ]
1276
- expect { subject.to_pforest(literals) }.not_to raise_error
1277
-
1278
- # Sentence 3-C Xtra Lisa says: "I can hear an animal, but I do not see it."
1279
- # Tony says: "I can see the animal that you hear.".
1280
- literals = [ lisa, says, colon, quote, i_pronoun, can, hear, an,
1281
- animal, comma, but, i_pronoun, do_aux, not_, see, it_, dot, quote,
1282
- dot, tony, says, colon, quote, i_pronoun, can, see, the, animal,
1283
- that, you, hear, dot, quote, dot
1284
- ]
1285
- expect { subject.to_pforest(literals) }.not_to raise_error
1286
- end
1287
-
1288
- it 'should parse sample sentences from lesson 3-D' do
1289
- # Sentence 3-13a definiendum: 'You use this thing.'
1290
- literals = [you, use, this, thing, dot]
1291
- expect { subject.to_pforest(literals) }.not_to raise_error
1292
-
1293
- # Sentence 3-13b definiens: You do something with this thing
1294
- # because you think this can cause something to happen that you want.
1295
- # [I used something big to cause people far from here to see me.]
1296
- literals = [ you, do_, something, with, this, thing, because, you,
1297
- think, this_as_pronoun, can, cause, something, to, happen,
1298
- that, you, want, dot,
1299
- i_pronoun, used, something, big, to, cause, people, far, from,
1300
- here_as_noun, to, see, me, dot
1301
- ]
1302
- expect { subject.to_pforest(literals) }.not_to raise_error
1303
-
1304
- # Sentence 3-14a definiendum: 'You know X about each of these things.'
1305
- literals = [you, know, x_as_noun, about, each_, of, these, things, dot]
1306
- expect { subject.to_pforest(literals) }.not_to raise_error
1307
-
1308
- # Sentence 3-14b definiens: There are two or more things.
1309
- # You think about all these things like this:
1310
- # If something is one of these things, then you know X about it.
1311
- # [Each person here said something to me.]
1312
- # because you think this can cause something to happen that you want.
1313
- # [I used something big to cause people far from here to see me.]
1314
- literals = [ there, are, two, or_, more, things, dot,
1315
- you, think, about, all, these, things, like, this_as_pronoun, colon,
1316
- if_, something, is, one, of, these, things, comma,
1317
- then_, you, know, x_as_noun, about, it_, dot,
1318
- each_, person, here, said, something, to, me, dot
1319
- ]
1320
- expect { subject.to_pforest(literals) }.not_to raise_error
1321
-
1322
- # Sentence 3-15a definiendum: 'Someplace an X exists.'
1323
- literals = [someplace, an, x_as_noun, exists, dot]
1324
- expect { subject.to_pforest(literals) }.not_to raise_error
1325
-
1326
- # Sentence 3-15b definiens: Someplace there is an X,
1327
- # or someplace an X is alive.
1328
- # [This kind of thing did not exist before this time.]
1329
- literals = [ someplace, there, is, an, x_as_noun, comma,
1330
- or_, someplace, an, x_as_noun, is, alive, dot,
1331
- this, kind, of, thing, did, not_, exist, before, this, time, dot]
1332
- expect { subject.to_pforest(literals) }.not_to raise_error
1333
-
1334
- # Sentence 3-16a definiendum: 'J became K.'
1335
- literals = [j_, became, k_, dot]
1336
- expect { subject.to_pforest(literals) }.not_to raise_error
1337
-
1338
- # Sentence 3-16b definiens: Something happened to J for some time.
1339
- # After this happened, K is something true you can know about J.
1340
- # But before this happened, K was not true.
1341
- # [These two animals were small before, but they became big.]
1342
- literals = [ something, happened, to, j_, for_, some, time, dot,
1343
- after_, this_as_pronoun, happened, comma, k_, is, something, true_,
1344
- you, can, know, about, j_, dot,
1345
- these, two, animals, were, small, before_adverb, comma,
1346
- but, they, became, big, dot
1347
- ]
1348
- expect { subject.to_pforest(literals) }.not_to raise_error
1349
-
1350
- # Sentence 3-Dx: There are some animals here.
1351
- # Each of these animals was small when it existed a short time.
1352
- # After a long time, each of these animals became big.
1353
- literals = [there, are, some, animal, here, dot,
1354
- each_, of, these, animals, was, small, when_, it_,
1355
- existed, a_as_art, short, time, dot,
1356
- after_, a_as_art, long, time, comma, each_, of, these, animals,
1357
- became, big, dot
1358
- ]
1359
- expect { subject.to_pforest(literals) }.not_to raise_error
1360
- end
1361
-
1362
- it 'should parse sample sentences from lesson 3-E' do
1363
- # Sentence 3-17a definiendum: 'These things are different.'
1364
- literals = [things, are, different, dot]
1365
- expect { subject.to_pforest(literals) }.not_to raise_error
1366
-
1367
- # Sentence 3-17b definiens: These things are not the same.
1368
- # [I want this kind of thing, but you want something different.]
1369
- literals = [ these, things, are, not_, the, same_as_pronoun, dot,
1370
- i_pronoun, want, this, kind, of, thing, comma,
1371
- but, you, want, something, different, dot
1372
- ]
1373
- expect { subject.to_pforest(literals) }.not_to raise_error
1374
-
1375
- # Sentence 3-18a definiendum: 'J made K.'
1376
- literals = [j_, made, k_, dot]
1377
- expect { subject.to_pforest(literals) }.not_to raise_error
1378
-
1379
- # Sentence 3-18b definiens: J did something to some things
1380
- # and caused them to become parts of one different
1381
- # kind of thing that was not here before.
1382
- # K is this thing that now exists because of this.
1383
- # [I used many small things to make this big thing.]
1384
- # [J made K happen.] = J caused K to happen.
1385
- literals = [ j_, did, something, to, some, things, and_,
1386
- caused, them, to, become, parts, of, one, different, kind, of,
1387
- thing, that, was, not_, here, before_adverb, dot,
1388
- k_, is, this, thing, that, now, exists, because, of, this_as_pronoun, dot,
1389
- i_pronoun, used, many, small, things, to, make, this, big, thing, dot,
1390
- j_, made, k_, happen, dot,
1391
- j_, caused, k_, to, happen, dot
1392
- ]
1393
- expect { subject.to_pforest(literals) }.not_to raise_error
1394
-
1395
- # Sentence 3-19a definiendum: 'J contains K.'
1396
- literals = [j_, contains, k_, dot]
1397
- expect { subject.to_pforest(literals) }.not_to raise_error
1398
-
1399
- # Sentence 3-19b definiens: K is inside J.
1400
- # [I made something to contain all these small things.]
1401
- # [Your body contains many parts.]
1402
- literals = [ k_, is, inside, j_, dot,
1403
- i_pronoun, made, something, to, contain, all, these, small, things, dot,
1404
- your, body, contains, many, parts, dot,
1405
- ]
1406
- expect { subject.to_pforest(literals) }.not_to raise_error
1407
-
1408
- # Sentence 3-20a definiendum: 'X is a container.'
1409
- literals = [x_as_noun, is, a_as_art, container, dot]
1410
- expect { subject.to_pforest(literals) }.not_to raise_error
1411
-
1412
- # Sentence 3-20b definiens: X is something that people make because
1413
- # they want to use it to contain other things.
1414
- # [There are two things inside this container.]
1415
- literals = [ x_as_noun, is, something, that, people, make, because,
1416
- they, want, to, use, it_, to, contain, other, things, dot,
1417
- there, are, two, things, inside, this, container, dot
1418
- ]
1419
- expect { subject.to_pforest(literals) }.not_to raise_error
1420
-
1421
- # Sentence 3-Fxtra: Someone made these containers.
1422
- # Each contains a different kind of animal.
1423
- literals = [someone, made, these, containers, dot,
1424
- each_as_pronoun, contains, a_as_art, different, kind, of, animal, dot
1425
- ]
1426
- expect { subject.to_pforest(literals) }.not_to raise_error
1427
- end
1428
- =begin
1429
- TODO
1430
-
1431
- Lesson 2.C
1432
-
1433
- Xtra:
1434
- Tony knows Lisa has something, because Tony sees what Lisa has.
1435
- Tony thinks about what Lisa has, because Tony want to have the same kind of thing.
1436
- =end
1437
- end # context
1438
34
  end # describe
1439
35
  end # module
1440
36
  end # module