spec/zenlish/parser/zparser_spec.rb in zenlish-0.1.15 vs spec/zenlish/parser/zparser_spec.rb in zenlish-0.1.16
- old
+ new
@@ -47,10 +47,11 @@
literal2var('because', 'because')
def before_adverb ; Lex::Literal.new('before', get_lexeme('before', WClasses::Adverb), 0) ; end
def before ; Lex::Literal.new('before', get_lexeme('before', WClasses::SubordinatingConjunction), 0) ; end
literal2var('big', 'big')
literal2var('big', 'bigger')
+ literal2var('body', 'body')
literal2var('can', 'can')
def did ; Lex::Literal.new('did', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
def do_ ; Lex::Literal.new('do', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
def does ; Lex::Literal.new('does', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
def does_aux ; Lex::Literal.new('does', get_lexeme('do', WClasses::AuxiliaryDo), 0) ; end
@@ -98,11 +99,12 @@
literal2var('near to', 'near_to')
literal2var('not', 'not', '_')
literal2var('now', 'now')
literal2var('of', 'of')
literal2var('on', 'on')
- literal2var('one', 'one')
+ def one ; Lex::Literal.new('one', get_lexeme('one', WClasses::Cardinal), 0) ; end
+ def one_as_pronoun ; Lex::Literal.new('one', get_lexeme('one', WClasses::IndefinitePronoun), 0) ; end
literal2var('other', 'other')
literal2var('part', 'part')
literal2var('part', 'parts')
literal2var('people', 'people')
literal2var('person', 'person')
@@ -124,10 +126,11 @@
literal2var('than', 'than')
literal2var('there', 'there')
literal2var('thing', 'thing')
literal2var('thing', 'things')
literal2var('think', 'think')
+ literal2var('think', 'thinking')
literal2var('think', 'thinks')
def these ; Lex::Literal.new('these', get_lexeme('this', WClasses::DemonstrativeDeterminer), 0) ; end
def these_as_pronoun ; Lex::Literal.new('these', get_lexeme('this', WClasses::DemonstrativePronoun), 0) ; end
def this ; Lex::Literal.new('this', get_lexeme('this', WClasses::DemonstrativeDeterminer), 0) ; end
def this_as_pronoun ; Lex::Literal.new('this', get_lexeme('this', WClasses::DemonstrativePronoun), 0) ; end
@@ -135,11 +138,12 @@
literal2var('time', 'time')
literal2var('to', 'to')
literal2var('Tony', 'Tony')
literal2var('touch', 'touching')
literal2var('true', 'true', '_')
- literal2var('two', 'two')
+ def two ; Lex::Literal.new('two', get_lexeme('two', WClasses::Cardinal), 0) ; end
+ def two_as_pronoun ; Lex::Literal.new('two', get_lexeme('two', WClasses::IndefinitePronoun), 0) ; end
literal2var('very', 'very')
literal2var('want', 'want')
literal2var('want', 'wants')
def was ; Lex::Literal.new('was', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
def were ; Lex::Literal.new('were', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
@@ -168,697 +172,739 @@
$stdout.flush
literal.send(name, *args, &aBlock)
end
end
+ context 'Producing parse tree or forest:' do
+ it 'should produce trees (for non ambiguous input)' do
+ # OK, non-ambiguous sentence: "Lisa sees Tony."
+ literals = [lisa, sees, tony, dot]
+ result_type = Rley::PTree::ParseTree
+ expect(subject.to_ptree(literals)).to be_kind_of(result_type)
+ end
+
+ it 'should produce forest' do
+ # Sentence: "Lisa sees Tony."
+ literals = [lisa, sees, tony, dot]
+ result_type = Rley::SPPF::ParseForest
+ expect(subject.to_pforest(literals)).to be_kind_of(result_type)
+ end
+ end # context
+
context 'Parsing lessons:' do
it 'should parse sample sentences from lesson 1-A' do
# Sentence 1-01: "Tony sees Lisa."
# in absence of a tokenizer, we create a sequence of literals by hand...
# prox_tony = ZProxy.new(tony)
literals = [tony, sees, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_ptree(literals) }.not_to raise_error
# Sentence 1-02a: "Tony sees something."
sentence_literals = [tony, sees, something, dot]
- expect { subject.parse(sentence_literals) }.not_to raise_error
+ expect { subject.to_ptree(sentence_literals) }.not_to raise_error
# Sentence 1-02b: "Lisa sees something."
sentence_literals = [lisa, sees, something, dot]
- expect { subject.parse(sentence_literals) }.not_to raise_error
+ expect { subject.to_ptree(sentence_literals) }.not_to raise_error
# Sentence 1-03: "Tony sees this thing."
sentence_literals = [tony, sees, this, thing, dot]
- expect { subject.parse(sentence_literals) }.not_to raise_error
+ expect { subject.to_ptree(sentence_literals) }.not_to raise_error
# Sentence 1-04: "Lisa sees the other thing."
sentence_literals = [lisa, sees, the, other, thing, dot]
- expect { subject.parse(sentence_literals) }.not_to raise_error
+ expect { subject.to_ptree(sentence_literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 1-B' do
# Sentence 1-05a: "Lisa sees the same thing."
literals = [lisa, sees, the, same, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_ptree(literals) }.not_to raise_error
# Sentence 1-05b: "Lisa sees the same thing as Tony sees."
literals = [lisa, sees, the, same, thing, as, tony, sees, dot]
# same is an adjective of equality comparison
# as is part of same ... as combination
# it introduces a comparative clause
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-06: "Tony sees one thing."
literals = [tony, sees, one, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-07: "Lisa sees two things."
literals = [lisa, sees, two, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-08a: "Tony sees one person."
literals = [tony, sees, one, person, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-08b: "Lisa sees two people."
literals = [lisa, sees, two, people, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-05b: "Tony sees the same person as Lisa sees."
literals = [tony, sees, the, same, person, as, lisa, sees, dot]
# same is an adjective of equality comparison
# as is part of same ... as combination
# it introduces a comparative clause
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 1-C' do
# Sentence 1-09a: "Tony sees many things."
literals = [tony, sees, many, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-09b: "Lisa sees many people."
literals = [lisa, sees, many, people, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-10: "Tony is inside this thing."
literals = [tony, is, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-11: "Lisa is not inside this thing."
literals = [lisa, is, not_, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence: "Lisa does not see people inside the other thing."
literals = [lisa, does_aux, not_, see, people, inside, the, other, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse...
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 1-D' do
# Sentence 1-12a: "Some of these people are inside this thing."
literals = [some, of, these, people, are, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-12b: "Some of these people are not inside this thing."
literals = [some, of, these, people, are, not_, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-13: "All of these people are inside this thing."
literals = [all, of, these, people, are, not_, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-14a: "There are two people inside one of these things."
literals = [there, are, two, people, inside, one, of, these, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-14b: "There are not people inside the other thing."
literals = [there, are, not_, people, inside, the, other, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-15a: "There are many people inside this thing."
literals = [there, are, many, people, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-15b: "There are more people inside this thing."
literals = [there, are, more, people, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
- # Sentence 1-15c: "There are more people inside the other thing than there are inside this thing."
- literals = [there, are, more, people, inside, the, other, thing, than, there, are, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Sentence 1-15c: "There are more people inside the other thing
+ # than there are inside this thing."
+ literals = [there, are, more, people, inside, the, other, thing,
+ than, there, are, inside, this, thing, dot]
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 1-E' do
# Sentence 1-16a: "Two of these things are alive."
literals = [two, of, these, things, are, alive, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-16b: "One of these things is not alive."
literals = [one, of, these, things, is, not_, alive, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-17a: "Tony sees some living things."
literals = [tony, sees, some, living, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-17b: "Two of these things are big."
literals = [two, of, these, things, are, big, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-17c: "One of these things is not big."
literals = [one, of, these, things, is, not_, big, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-18a: "Tony sees some living things."
literals = [tony, sees, some, living, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-18b: "One of these is big."
- literals = [one, of, these, is, big, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ literals = [one, of, these_as_pronoun, is, big, dot]
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-18c: "Two of these are small."
- literals = [two, of, these, are, small, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ literals = [two, of, these_as_pronoun, are, small, dot]
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-19a: "Tony sees one living thing."
literals = [tony, sees, one, living, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-19b: "This one is very big."
literals = [this_one, is, very, big, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence: "This thing is bigger than the other thing."
literals = [this, thing, is, bigger, than, the, other, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence: "This thing is smaller than the other thing."
literals = [this, thing, is, smaller, than, the, other, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 1-F' do
# Sentence 1-20a: "Tony sees some living things."
literals = [tony, sees, some, living, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-20b: "Two of these are the same kind of living thing."
literals = [these_as_pronoun, are, the, same, kind, of, living, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-20c: "One of these is not the same kind as the other two."
- literals = [one, of, these, is, not_, the, same, kind, as, the, other, two, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ literals = [one, of, these_as_pronoun, is, not_, the, same, kind,
+ as, the, other, two_as_pronoun, dot]
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-21a: "There is one person inside this thing."
literals = [there, is, one, person, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-21b: "If Tony is not inside this thing, then another person is inside."
literals = [if_, tony, is, not_, inside, this, thing, comma, then_,
another, person, is, inside, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-22a: "Tony is touching something."
literals = [tony, is_aux, touching, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-22b: "Lisa is touching Tony."
literals = [lisa, is_aux, touching, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-23a: "Tony is far from Lisa."
literals = [tony, is, far, from, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-23b: "Lisa is far from Tony."
literals = [lisa, is, far, from, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-23c: "Tony is not far from Lisa."
literals = [tony, is, far, from, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-24: "Tony is near to Lisa."
literals = [tony, is, near_to, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 1-G' do
# Sentence 1-25a: "Lisa is in this place."
literals = [lisa, is, in_, this, place, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-25b: "There are two other things in this place."
literals = [there, are, two, other, things, in_, this, place, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-25c: "Lisa is in the same place as these two other things."
literals = [lisa, is, in_, the, same, place, as, these, two, other, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-25d: "Tony is not in this place."
literals = [tony, is, not_, in_, this, place, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-25e: "Tony is in another place."
literals = [tony, is, in_, another, place, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-26a: "Lisa is inside this thing."
literals = [lisa, is, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-26b: "Tony is above this thing."
literals = [tony, is, above, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-26c: "Tony is above lisa."
literals = [tony, is, above, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-27a: "Tony is on one side of this thing."
literals = [tony, is, on, one, side, of, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-27b: "Lisa is on the other side."
literals = [lisa, is, on, the, other, side, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-27c: "Tony is touching one side of this thing."
literals = [tony, is_aux, touching, one, side, of, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 1-H' do
# Sentence 1-28: "Tony hears something."
literals = [tony, hears, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-29a: "Tony says something."
literals = [tony, says, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-29b: "Tony says something to Lisa."
literals = [tony, says, something, to, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-29c: "Tony says something about this living thing."
literals = [tony, says, something, about, this, living, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-29d: 'Tony says: "This living thing is small."'
literals = [tony, says, colon, quote, this, living, thing, is, small, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-30a: "Tony says some words."
literals = [tony, says, some, words, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-30b: "Lisa says more words."
literals = [lisa, says, more, words, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-31a: 'Tony says: "There are two people inside this thing."'
literals = [tony, says, colon, quote, there, are, two, people, inside,
this, thing, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-31b: 'Lisa says: "There is one person inside this thing."'
literals = [lisa, says, colon, quote, there, is, one, person, inside,
this, thing, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-31c: "What Tony says is not true."
literals = [what, tony, says, is, not_, true_, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 1-31d: "What Lisa says is true."
literals = [what, lisa, says, is, true_, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 2-A' do
# Sentence 2-01a: "This thing is like two of the other things."
literals = [this, thing, is, like, two, of, the, other, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-01b: "One of these things is not like the other things."
literals = [one, of, these, things, is, not_, like, the, other, things, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-02a: "Lisa has something."
literals = [lisa, has, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-02b: "Tony has another thing."
literals = [tony, has, another, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-02c: "Lisa does not have the same kind of thing as Tony has."
literals = [lisa, does_aux, not_, have, the, same, kind, of, thing, as, tony, has, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-03a: "Lisa is touching part of this thing."
literals = [lisa, is_aux, touching, part, of, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-03b: "Tony is touching the other part."
literals = [tony, is_aux, touching, the, other, part, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-Ax: "What Tony has is like what Lisa has."
literals = [what, tony, has, is, like, what, lisa, has, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 2-B' do
# Sentence 2-04a: "Lisa does something."
literals = [lisa, does, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-04b: "Lisa does something with this thing."
literals = [lisa, does, something, with, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-04c: "Lisa does something to Tony."
literals = [lisa, does, something, to, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-04d: "Lisa does something to Tony with this thing."
literals = [lisa, does, something, to, tony, with, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-05a: "Something happens."
literals = [something, happens, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-05b: "Something happens to Lisa."
literals = [something, happens, to, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-06a: "Tony does something."
literals = [tony, does, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-06b: "Something happens to Lisa because of this."
literals = [something, happens, to, lisa, because, of, this_as_pronoun, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-06c: "Something happens to Lisa because Tony does this."
literals = [something, happens, to, lisa, because, tony, does, this_as_pronoun, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-06: "Something happens to this living thing."
literals = [something, happens, to, this, living, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 2-C' do
# Sentence 2-07a: "Lisa thinks Tony is inside this thing."
literals = [lisa, thinks, tony, is, inside, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-07b: "Lisa thinks something about Tony."
literals = [lisa, thinks, something, about, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-08a: "Tony knows Lisa is inside this thing, because Tony sees Lisa inside."
literals = [tony, knows, lisa, is, inside, this, thing, comma,
because, tony, sees, lisa, inside, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-08b: "Tony knows something about Lisa."
literals = [tony, knows, something, about, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-09a: "Tony wants this thing."
literals = [tony, wants, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-09b: "Tony wants to have this thing."
literals = [tony, wants, to, have, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-10a: "Tony wants to do something."
literals = [tony, wants, to, do_, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-10b: "Lisa wants to do the same thing."
literals = [lisa, wants, to, do_, the, same, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-10c: "Tony can do this."
literals = [tony, can, do_, this_as_pronoun, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-10d: "This is not something Lisa can do."
literals = [this_as_pronoun, is, not_, something, lisa, can, do_, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-10e: "Lisa cannot do this."
literals = [lisa, can, not_, do_, this_as_pronoun, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 2-D' do
# Sentence 2-11a: "This person does something bad."
literals = [this, person, does, something, bad, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-11b: "This person does something bad for Tony."
literals = [this, person, does, something, bad, for_, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-12a: "Tony does something good."
literals = [tony, does, something, good, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-12b: "Tony does something good for Lisa."
literals = [tony, does, something, good, for_, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-13a: "Tony feels something."
literals = [tony, feels, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-13b: "This does not feel good for Tony."
literals = [this_as_pronoun, does_aux, not_, feel, good, for_, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-13b: "This feels bad for Tony."
literals = [this_as_pronoun, feels, bad, for_, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-Dx: "Lisa thinks about something bad happening to this
# living thing. Thinking about this feels bad for Lisa."
- # literals = [lisa, thinks, about, something, bad, happening, to, this,
- # living, thing, dot]
- # expect { subject.parse(literals) }.not_to raise_error
+ literals = [lisa, thinks, about, something, bad, happening, to, this,
+ living, thing, dot,
+ #thinking, about, this_as_pronoun, feels, bad,
+ #for_, lisa, dot
+ ]
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 2-E' do
# Sentence 2-14a: "Lisa says something at this time."
literals = [lisa, says, something, at, this, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ # Ambiguous parse
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-14b: "Tony is not in this place at this time."
literals = [tony, is, not_, in_, this, place, at, this, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-15a: "At one time, Tony does something to this thing."
literals = [at, one, time, comma, tony, does, something, to, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-15b: "At another time, Lisa says something."
literals = [at, another, time, comma, lisa, says, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-15c: "Tony does something to this thing before Lisa says something."
literals = [tony, does, something, to, this, thing, before, lisa, says, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-16a: "Lisa does something for a long time."
literals = [lisa, does, something, for_, a_as_art, long, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-17a: "Tony does something for a short time."
literals = [tony, does, something, for_, a_as_art, short, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-17a: "Tony does not do this for a long time."
literals = [tony, does_aux, not_, do_, this_as_pronoun, for_, a_as_art, long, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-18a: "Lisa sees something move."
literals = [lisa, sees, something, move, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-18a: "Lisa moves near to this thing."
literals = [lisa, moves, near_to, this, thing, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-E-Xa: "A short time before, Tony was far from Lisa."
# Case of a time adverbial adjunct that is put in front position.
literals = [a_as_art, short, time, before_adverb, comma, tony, was, far, from, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-E-Xa: "At this time, Tony is near to Lisa"
literals = [at, this, time, comma, tony, is, near_to, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-E-Xa: "Tony is near to Lisa because Tony moved"
# Case of a time adverbial adjunct that is put in front position.
literals = [tony, is, near_to, lisa, because, tony, moved, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
- it 'should parse sample sentences from lesson 2-F' do
+ it 'should parse sample sentences from lesson 2-F' do
# Sentence 2-19a: 'Tony says: "I did X.".'
literals = [tony, says, colon, quote, i_pronoun, did, x_as_noun, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-19a definiendum: 'Tony says: "I did X.".'
literals = [tony, says, colon, quote, i_pronoun, did, x_as_noun, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-19a definiens: 'Tony says something about Tony. Tony says: Tony did X.'
literals = [tony, says, something, about, tony, dot,
tony, says, colon, tony, did, x_as_noun, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-19a: 'Tony says: "I see Lisa.".'
literals = [tony, says, colon, quote, i_pronoun, see, lisa, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-19b definiendum: 'Lisa says: "X happened to me.".'
literals = [lisa, says, colon, quote, x_as_noun, happened, to, me, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-19b definiens: 'Lisa says something about Lisa. Lisa says: X happened to Lisa.'
literals = [lisa, says, something, about, lisa, dot,
lisa, says, colon, x_as_noun, happened, to, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-19c: 'Lisa says: "Tony sees me."'
literals = [lisa, says, colon, quote, tony, sees, me, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-20a definiendum: 'Tony says to Lisa: "I can see you.".'
literals = [tony, says, to, lisa, colon, quote, i_pronoun, can, see, you, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-20a definiens: 'Tony says something about Lisa.
# Tony says this to Lisa. Tony says: Tony can see Lisa.'
literals = [tony, says, something, about, lisa, dot,
tony, says, this_as_pronoun, to, lisa, dot,
tony, says, colon, tony, can, see, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-20b: "I know you have something good."
literals = [i_pronoun, know, you, have, something, good, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-20c: "I want you to do something good for me."
literals = [i_pronoun, want, you, to, do_, something, good, for_, me, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-21a definiendum: 'Tony says: "X happens here.".'
literals = [tony, says, colon, quote, x_as_noun, happens, here, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-21a definiens: "Tony is in a place. Tony says: X happens in this place."
literals = [tony, is, in_, a_as_art, place, dot,
tony, says, colon, x_as_noun, happens, in_, this, place, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-21b: "Many people were here at one time."
literals = [many, people, were, here, at, one, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-22a definiendum: 'Lisa says: "X happens now.".'
literals = [lisa, says, colon, quote, x_as_noun, happens, now, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-22a definiens: 'Lisa says something at a time.
# Lisa says: X happens at this same time.'
literals = [lisa, says, something, at, a_as_art, time, dot,
lisa, says, colon, x_as_noun, happens, at, this, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-22b: "There are not many people here now."
literals = [there, are, not_, many, people, here, now , dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-Fa: "Lisa says to Tony: "I can see many living things here."."
literals = [lisa, says, to, tony, colon, quote, i_pronoun,
can, see, many, living, things, here, dot, quote, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
it 'should parse sample sentences from lesson 2-G' do
# Sentence 2-23a definiendum: 'Someone does X.'
literals = [someone, does, x_as_noun, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-23a definiens: 'Something does X. This something can
# think like people think. This something can be one person.'
literals = [something, does, x_as_noun, dot,
this, something, can, think, like, people, think, dot,
this, something, can, be_, a_as_art, person, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-23b: Someone said something to Tony.
literals = [someone, said, something, to, tony, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-23c definiendum: 'J knows who did K.'
literals = [j_, knows, who, did, k_, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-23c definiens: J thinks about someone.
# J knows this someone did K.
literals = [j_, thinks, about, someone, dot,
j_, knows, this, someone, did, k_, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-23d: Tony knows who said something.
literals = [tony, knows, who, said, something, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-24a definiendum: 'J happens after K happens.'
literals = [j_, happens, after_, k_, happens, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-24a definiens: K happens before J happens.
literals = [k_, happens, before, j_, happens, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-24b: After you do something for a long time,
# you can know much more about this.
literals = [after_, you, do_, something, for_, a_as_art, long, time,
comma, you, can, know, much, more_as_adverb, about, this_as_pronoun, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-25a definiendum: 'X is true for some time.'
literals = [x_as_noun, is, true_, for_, some, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-25a definiens: X is true at a time.
# Some parts of this one time happen before other parts.
# Some parts of this one time happen after other parts.
# X is true at all parts of this one time.
literals = [x_as_noun, is, true_, at, a_as_art, time, dot,
some, parts, of, this, one, time, happen, before_adverb, other, parts, dot,
some, parts, of, this, one, time, happen, after_adverb, other, parts, dot,
x_as_noun, is, true_, at, all, parts, of, this, one, time, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-25b: After I moved for some time,
# I was near the other side of this place.
literals = [after_, i_pronoun, moved, for_, some, time,
comma, i_pronoun, was, near, the, other, side, of, this, place, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-26a definiendum: 'X happens in a moment.'
literals = [x_as_noun, happens, in_, a_as_art, moment, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-26a definiens: X happens for one very short time.
# There are not parts of this very short time when one part
# happens before other parts.
literals = [x_as_noun, happens, for_, one, very, short, time, dot,
there, are, not_, parts, of, this, very, short, time, when_,
one, part, happens, before_adverb, other, part, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-26b: In a moment, I knew something here was not good.
# 'here' is adverb that modifies the 'knew' verb
literals = [in_, a_as_art, moment, comma, i_pronoun, knew, something,
here, was, not_, good, dot ]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
# Sentence 2-Gx: Tony is inside this thing for some time.
# Lisa says: "I want to know who is inside this thing.".
# Tony hears Lisa. Because of this, Tony says: "I am inside.".
# Tony says this after Tony hears Lisa.
@@ -866,13 +912,40 @@
lisa, says, colon, quote, i_pronoun, want, to, know, who, is,
inside, this, thing, dot, quote, dot, tony, hears, lisa, dot,
because, of, this_as_pronoun, comma, tony, says, colon,
quote, i_pronoun, am, inside, dot, quote, dot,
tony, says, this_as_pronoun, after_, tony, hears, lisa, dot]
- expect { subject.parse(literals) }.not_to raise_error
+ expect { subject.to_pforest(literals) }.not_to raise_error
end
+
+ it 'should parse sample sentences from lesson 2-H' do
+ # Sentence 2-27a definiendum: 'X is the body of this person.'
+ literals = [x_as_noun, is, the, body, of, this, person, dot]
+ expect { subject.to_pforest(literals) }.not_to raise_error
+ end
=begin
TODO
+Lesson 2-H
+2-27. body, bodies, the body of, the bodies of.
+[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.
+[One part of the body of this person felt very bad.]
+
+2-28. die, dies, to die, dying, died, dead, is dead.
+[X dies.] = Something happens to X in a moment. X is alive before this moment. X is not alive after this moment.
+[After this person lived for a long time, this person died.]
+
+2-29. maybe.
+[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.
+[Maybe some people far from here can see me.]
+
+2-30. below, is below.
+[J is below K.] = K is above J.
+[I am touching this thing below me.]
+
+Someone sees this thing.
+The body of this thing is not moving.
+Maybe this thing __________.
+is far below this person
Lesson 2.C
Xtra:
Tony knows Lisa has something, because Tony sees what Lisa has.