zenlish 0.1.09 → 0.1.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 750e9535d2fb78ea38521e183fdd583c0d654d9ad4111081b261944d15a44775
4
- data.tar.gz: b6daa5ab5b66248bdd91c2c3f26e4cc8f552852409cc2c1f5b0fb4b359b7923b
3
+ metadata.gz: f22b9d962fc961e2216a043ef79b1deb793dca96ae528256dd785aa77894baa8
4
+ data.tar.gz: 246147e969e4606805914f4ea8313c19d6ed7a650b1c592cf2c20fac34374181
5
5
  SHA512:
6
- metadata.gz: ba7ad7bcdf5391c95d4ff846484b6b55d403c4b2ffd1e2501c228471b05a14b687339604e390c5d2337eb95d7f47ee4f104b1b7404455816a7d8afe91ee36e0d
7
- data.tar.gz: c313789bc4eba7a8d403942f5f53e543730bba60f707fc7fb195851da3fc97d124d7525e1f04ee7494ddb64f89985e8b5793bee190b2f06a4a96b7bd898a0bc3
6
+ metadata.gz: 4c3e2adf7b59659b45cea513a990dd9b14334bfe390f9f6bd4076ddcff299ab2dbf57768fade51257d2916e8a642522de9a3fddb1f73facb15629feb3a3a5a1f
7
+ data.tar.gz: de4bfa611281c709a6ab176d9cf0b50614eae1b9674f28d85a1a3f16c1367ee4e57ea4ca49ba285c7e3ec9c54452c4c62e808afc9d51a12a686bddc48e0d1c28
data/CHANGELOG.md CHANGED
@@ -1,6 +1,20 @@
1
1
  # CHANGELOG
2
2
 
3
- ## [0.1.08] - 2019-10-22
3
+ ## [0.1.10] - 2019-10-23
4
+ __Zenlish__ can parse all sentences in lesson 1 and 2-A..2-B from
5
+ [Learn These Words First](http://learnthesewordsfirst.com/).
6
+
7
+ ### Added
8
+ - Class `ConjunctivePronoun` to represent the conjunctive `what`.
9
+ - Class `IrregularVerbDo` to represent the lexical verb `do`.
10
+
11
+ ### Changed
12
+ - File `zparser_spec.rb`: tests include all sentences from lesson 2-B (87 sentences in total).
13
+ - `ZenlishGrammar`: added support for complex sentence with one dependent clause like: "Something happens to Lisa because Tony does this.".
14
+ - File `minimal_lexicon.rb`: new entries in lexicon `because`, `do`, `happen`, with.
15
+ - File `README.md` Updated the metrics table, added AppVeyor badge
16
+
17
+ ## [0.1.09] - 2019-10-22
4
18
  __Zenlish__ can parse all sentences in lesson 1 and 2-A from
5
19
  [Learn These Words First](http://learnthesewordsfirst.com/).
6
20
 
@@ -10,7 +24,7 @@ __Zenlish__ can parse all sentences in lesson 1 and 2-A from
10
24
  - File `.appveyor.yml`
11
25
 
12
26
  ### Changed
13
- - File `zparser_spec.rb`: tests include all sentences from lesson 1-H (77 sentences in total).
27
+ - File `zparser_spec.rb`: tests include all sentences from lesson 2-A (77 sentences in total).
14
28
  - `ZenlishGrammar`: added support for sentence like: "This thing is like two of the other things.".
15
29
  - File `minimal_lexicon.rb`: new entries in lexicon `have`, `like`, `part`.
16
30
  - File `README.md` Updated the metrics table, added AppVeyor badge
data/README.md CHANGED
@@ -47,14 +47,14 @@ sentences of the first lesson.
47
47
 
48
48
  The intent is to deliver gem versions in small increments.
49
49
 
50
- #### Some project metrics (v. 0.1.08)
50
+ #### Some project metrics (v. 0.1.10)
51
51
  |Metric|Value|
52
52
  |:-:|:-:|
53
- | Number of lemmas in lexicon | 56 |
54
- | [Coverage 100 commonest English words](https://en.wikipedia.org/wiki/Most_common_words_in_English) | 28 |
55
- | Number of production rules in grammar | 76 |
56
- | Number of lessons covered | 9 |
57
- | Number of sentences in spec files | 77 |
53
+ | Number of lemmas in lexicon | 61 |
54
+ | [Coverage 100 commonest English words](https://en.wikipedia.org/wiki/Most_common_words_in_English) | 30 |
55
+ | Number of production rules in grammar | 85 |
56
+ | Number of lessons covered | 10 |
57
+ | Number of sentences in spec files | 87 |
58
58
 
59
59
 
60
60
  ### Roadmap
@@ -32,6 +32,7 @@ module Zenlish
32
32
  aLexicon.add_terminal(WClasses::IndefinitePronoun.new.freeze)
33
33
  aLexicon.add_terminal(WClasses::IrregularVerb.new.freeze)
34
34
  aLexicon.add_terminal(WClasses::IrregularVerbBe.new.freeze)
35
+ aLexicon.add_terminal(WClasses::IrregularVerbDo.new.freeze)
35
36
  aLexicon.add_terminal(WClasses::IrregularVerbHave.new.freeze)
36
37
  aLexicon.add_terminal(WClasses::IrregularVerbSay.new.freeze)
37
38
  aLexicon.add_terminal(WClasses::LinkingAdverb.new.freeze)
@@ -11,10 +11,18 @@ builder = Rley::Syntax::GrammarBuilder.new do
11
11
 
12
12
  rule 'language' => 'sentence'
13
13
  rule 'sentence' => 'simple_sentence Period'
14
+ rule 'sentence' => 'complex_sentence Period'
14
15
  rule 'simple_sentence' => 'declarative_simple_sentence'
15
- rule 'simple_sentence' => 'conditional_statement'
16
+ rule 'complex_sentence' => 'main_clause subordination_marker dependent_clause'
17
+ rule 'complex_sentence' => 'subordination_marker dependent_clause Comma main_clause'
18
+ rule 'complex_sentence' => 'subordination_marker dependent_clause Comma LinkingAdverb main_clause'
19
+ rule 'subordination_marker' => 'SubordinatingConjunction'
20
+ rule 'subordination_marker' => 'SubordinatingConjunction PrepositionOf'
16
21
  rule 'declarative_simple_sentence' => 'affirmative_sentence'
17
22
  rule 'declarative_simple_sentence' => 'negative_sentence'
23
+ rule 'main_clause' => 'simple_sentence'
24
+ rule 'dependent_clause' => 'simple_sentence'
25
+ rule 'dependent_clause' => 'DemonstrativePronoun'
18
26
  rule 'affirmative_sentence' => 'noun_phrase verb_phrase'
19
27
  rule 'affirmative_sentence' => 'AdverbThere IrregularVerbBe verb_be_complement'
20
28
  rule 'affirmative_sentence' => 'numeral_of IrregularVerbBe verb_be_complement'
@@ -24,8 +32,6 @@ builder = Rley::Syntax::GrammarBuilder.new do
24
32
  rule 'negative_sentence' => 'AdverbThere negative_verb_phrase'
25
33
  rule 'negative_sentence' => 'numeral_of negative_verb_phrase'
26
34
  rule 'negative_sentence' => 'conjunctive_prefix negative_verb_phrase'
27
- rule 'conditional_statement' => 'condition_subordinate Comma LinkingAdverb declarative_simple_sentence'
28
- rule 'condition_subordinate' => 'SubordinatingConjunction declarative_simple_sentence'
29
35
  rule 'conjunctive_prefix' => 'ConjunctivePronoun noun_phrase verb_phrase'
30
36
  rule 'noun_phrase' => 'simple_noun_phrase'
31
37
  rule 'noun_phrase' => 'compound_noun_phrase'
@@ -59,6 +65,8 @@ builder = Rley::Syntax::GrammarBuilder.new do
59
65
  rule 'single_determiner' => 'IndefiniteQuantifier'
60
66
  rule 'verb_phrase' => 'verb_group'
61
67
  rule 'verb_phrase' => 'verb_group verb_complement'
68
+ rule 'verb_phrase' => 'RegularVerb propositional_phrase'
69
+ rule 'verb_phrase' => 'IrregularVerbDo DemonstrativePronoun'
62
70
  rule 'verb_phrase' => 'IrregularVerbBe verb_be_complement'
63
71
  rule 'verb_phrase' => 'IrregularVerbSay Colon Quote affirmative_sentence Period Quote'
64
72
  rule 'verb_complement' => 'noun_phrase'
@@ -77,6 +85,7 @@ builder = Rley::Syntax::GrammarBuilder.new do
77
85
  rule 'lexical_verb' => 'RegularVerb'
78
86
  rule 'lexical_verb' => 'IrregularVerb'
79
87
  rule 'lexical_verb' => 'IrregularVerbBe'
88
+ rule 'lexical_verb' => 'IrregularVerbDo'
80
89
  rule 'lexical_verb' => 'IrregularVerbHave'
81
90
  rule 'lexical_verb' => 'IrregularVerbSay'
82
91
  rule 'numeral' => 'Cardinal'
@@ -91,7 +100,7 @@ builder = Rley::Syntax::GrammarBuilder.new do
91
100
  rule 'propositional_phrase' => 'preposition'
92
101
  rule 'propositional_complement' => 'noun_phrase'
93
102
  rule 'preposition' => 'Preposition'
94
- rule 'preposition' => 'PrepositionOf'
103
+ rule 'preposition' => 'PrepositionOf'
95
104
  end
96
105
 
97
106
 
@@ -1,3 +1,3 @@
1
1
  module Zenlish
2
- VERSION = '0.1.09'
2
+ VERSION = '0.1.10'
3
3
  end
@@ -15,6 +15,7 @@ require_relative 'pronoun'
15
15
  require_relative 'proper_noun'
16
16
  require_relative 'irregular_verb'
17
17
  require_relative 'irregular_verb_be'
18
+ require_relative 'irregular_verb_do'
18
19
  require_relative 'irregular_verb_have'
19
20
  require_relative 'irregular_verb_say'
20
21
  require_relative 'definite_article'
@@ -2,7 +2,7 @@ require_relative 'irregular_verb'
2
2
 
3
3
  module Zenlish
4
4
  module WClasses
5
- # TODO: document
5
+ # The `be` verb used as a lexical verb (as opposed auxiliary verb).
6
6
  class IrregularVerbBe < IrregularVerb
7
7
  end # class
8
8
  end # module
@@ -0,0 +1,9 @@
1
+ require_relative 'irregular_verb'
2
+
3
+ module Zenlish
4
+ module WClasses
5
+ # The `do` verb used as a lexical verb (as opposed auxiliary verb).
6
+ class IrregularVerbDo < IrregularVerb
7
+ end # class
8
+ end # module
9
+ end # module
@@ -2,7 +2,7 @@ require_relative 'irregular_verb'
2
2
 
3
3
  module Zenlish
4
4
  module WClasses
5
- # TODO: document
5
+ # The `have` verb used as a lexical verb (as opposed auxiliary verb).
6
6
  class IrregularVerbHave < IrregularVerb
7
7
  end # class
8
8
  end # module
@@ -2,7 +2,14 @@ require_relative 'conjunction'
2
2
 
3
3
  module Zenlish
4
4
  module WClasses
5
- # TODO: if,
5
+ # A subordinating conjunction is a word or phrase that connects a dependent
6
+ # clause to a main clause. The subordinating conjunction indicates how the
7
+ # dependent clause adds informative value to the main clause. For instance,
8
+ # by signaling a cause-and-effect relation, a shift in time or place between
9
+ # the two clauses.
10
+ # Common subordinating conjunctions: after, although, as, because, before,
11
+ # how, if, once, since, than, that, though, till, until, when, where,
12
+ # whether, while
6
13
  class SubordinatingConjunction < WordClass
7
14
  end # class
8
15
  end # module
@@ -36,14 +36,17 @@ module Zenlish
36
36
  literal2var('all', 'all')
37
37
  literal2var('another', 'another')
38
38
  def are ; Lex::Literal.new('are', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
39
+ literal2var('because', 'because')
39
40
  literal2var('big', 'big')
40
41
  literal2var('big', 'bigger')
41
42
  literal2var('as', 'as')
42
43
  literal2var('of', 'of')
43
- literal2var('do', 'does')
44
+ def does ; Lex::Literal.new('does', get_lexeme('do', WClasses::IrregularVerbDo), 0) ; end
45
+ def does_aux ; Lex::Literal.new('does', get_lexeme('do', WClasses::AuxiliaryDo), 0) ; end
44
46
  literal2var('false', 'false', '_')
45
47
  literal2var('far', 'far')
46
48
  literal2var('from', 'from')
49
+ literal2var('happen', 'happens')
47
50
  literal2var('have', 'has')
48
51
  literal2var('have', 'have')
49
52
  literal2var('hear', 'hears')
@@ -94,6 +97,7 @@ module Zenlish
94
97
  literal2var('two', 'two')
95
98
  literal2var('very', 'very')
96
99
  literal2var('what', 'what')
100
+ literal2var('with', 'with')
97
101
  literal2var('word', 'words')
98
102
 
99
103
  def colon ; Lex::Literal.new(':', get_lexeme(':'), 0) ; end
@@ -194,7 +198,7 @@ module Zenlish
194
198
  expect { subject.parse(literals) }.not_to raise_error
195
199
 
196
200
  # Sentence: "Lisa does not see people inside the other thing."
197
- literals = [lisa, does, not_, see, people, inside, the, other, thing, dot]
201
+ literals = [lisa, does_aux, not_, see, people, inside, the, other, thing, dot]
198
202
  expect { subject.parse(literals) }.not_to raise_error
199
203
  end
200
204
 
@@ -441,23 +445,63 @@ module Zenlish
441
445
  expect { subject.parse(literals) }.not_to raise_error
442
446
 
443
447
  # Sentence 2-02c: "Lisa does not have the same kind of thing as Tony has."
444
- literals = [lisa, does, not_, have, the, same, kind, of, thing, as, tony, has, dot]
448
+ literals = [lisa, does_aux, not_, have, the, same, kind, of, thing, as, tony, has, dot]
445
449
  expect { subject.parse(literals) }.not_to raise_error
446
450
 
447
451
  # Sentence 2-03a: "Lisa is touching part of this thing."
448
452
  literals = [lisa, is_aux, touching, part, of, this, thing, dot]
449
453
  expect { subject.parse(literals) }.not_to raise_error
450
-
454
+
451
455
  # Sentence 2-03b: "Tony is touching the other part."
452
456
  literals = [tony, is_aux, touching, the, other, part, dot]
457
+ expect { subject.parse(literals) }.not_to raise_error
458
+
459
+ # Sentence 2-04a: "Lisa does something."
460
+ literals = [lisa, does, something, dot]
461
+ expect { subject.parse(literals) }.not_to raise_error
462
+
463
+ # Sentence 2-04b: "Lisa does something with this thing."
464
+ literals = [lisa, does, something, with, this, thing, dot]
465
+ expect { subject.parse(literals) }.not_to raise_error
466
+
467
+ # Sentence 2-04c: "Lisa does something to Tony."
468
+ literals = [lisa, does, something, to, tony, dot]
469
+ expect { subject.parse(literals) }.not_to raise_error
470
+
471
+ # Sentence 2-04d: "Lisa does something to Tony with this thing."
472
+ literals = [lisa, does, something, to, tony, with, this, thing, dot]
473
+ expect { subject.parse(literals) }.not_to raise_error
474
+
475
+ # Sentence 2-05a: "Something happens."
476
+ literals = [something, happens, dot]
477
+ expect { subject.parse(literals) }.not_to raise_error
478
+
479
+ # Sentence 2-05b: "Something happens to Lisa."
480
+ literals = [something, happens, to, lisa, dot]
481
+ expect { subject.parse(literals) }.not_to raise_error
482
+
483
+ # Sentence 2-06a: "Tony does something."
484
+ literals = [tony, does, something, dot]
485
+ expect { subject.parse(literals) }.not_to raise_error
486
+
487
+ # Sentence 2-06b: "Something happens to Lisa because of this."
488
+ literals = [something, happens, to, lisa, because, of, this_as_pronoun, dot]
489
+ expect { subject.parse(literals) }.not_to raise_error
490
+
491
+ # Sentence 2-06c: "Something happens to Lisa because Tony does this."
492
+ literals = [something, happens, to, lisa, because, tony, does, this_as_pronoun, dot]
453
493
  expect { subject.parse(literals) }.not_to raise_error
494
+
495
+ # Sentence 2-06: "Something happens to this living thing."
496
+ literals = [something, happens, to, this, living, thing, dot]
497
+ expect { subject.parse(literals) }.not_to raise_error
454
498
  end
455
499
  =begin
456
500
  TODO
457
501
  Lesson 2.A
458
502
  Xtra:
459
503
  What Tony has is like what Lisa has.
460
- =end
504
+ =end
461
505
  end # context
462
506
  end # describe
463
507
  end # module
@@ -21,6 +21,7 @@ preposition_than = $ZenlishLexicon.name2terminal['PrepositionThan']
21
21
  regular_verb = $ZenlishLexicon.name2terminal['RegularVerb']
22
22
  irregular_verb = $ZenlishLexicon.name2terminal['IrregularVerb']
23
23
  irregular_verb_be = $ZenlishLexicon.name2terminal['IrregularVerbBe']
24
+ irregular_verb_do = $ZenlishLexicon.name2terminal['IrregularVerbDo']
24
25
  irregular_verb_have = $ZenlishLexicon.name2terminal['IrregularVerbHave']
25
26
  irregular_verb_say = $ZenlishLexicon.name2terminal['IrregularVerbSay']
26
27
  indefinite_pronoun = $ZenlishLexicon.name2terminal['IndefinitePronoun']
@@ -54,12 +55,15 @@ add_entry('another', adjective)
54
55
  add_entry('as', comparative_particle)
55
56
  add_entry('be', auxiliary_be)
56
57
  add_entry('be', irregular_verb_be)
58
+ add_entry('because', subordinating_conjunction)
57
59
  add_entry('big', adjective)
58
60
  add_entry('do', auxiliary_do)
61
+ add_entry('do', irregular_verb_do)
59
62
  add_entry('false', adjective)
60
63
  add_entry('far', adverb)
61
64
  add_entry('from', preposition)
62
- add_entry('have', irregular_verb_have)
65
+ add_entry('have', irregular_verb_have)
66
+ add_entry('happen', regular_verb)
63
67
  add_entry('hear', irregular_verb)
64
68
  add_entry('if', subordinating_conjunction)
65
69
  add_entry('in', preposition)
@@ -102,6 +106,7 @@ add_entry('true', adjective)
102
106
  add_entry('two', cardinal)
103
107
  add_entry('very', degree_adverb)
104
108
  add_entry('what',conjunctive_pronoun)
109
+ add_entry('with',preposition)
105
110
  add_entry('word', common_noun)
106
111
 
107
112
  add_entry(':', colon)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zenlish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.09
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-22 00:00:00.000000000 Z
11
+ date: 2019-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rley
@@ -117,6 +117,7 @@ files:
117
117
  - lib/zenlish/wclasses/indefinite_quantifier.rb
118
118
  - lib/zenlish/wclasses/irregular_verb.rb
119
119
  - lib/zenlish/wclasses/irregular_verb_be.rb
120
+ - lib/zenlish/wclasses/irregular_verb_do.rb
120
121
  - lib/zenlish/wclasses/irregular_verb_have.rb
121
122
  - lib/zenlish/wclasses/irregular_verb_say.rb
122
123
  - lib/zenlish/wclasses/lexical_verb.rb