zenlish 0.1.18 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ba42d383263196dd063d6da9c26cbdfa0a14ec073846a284e7abd7a5ec7d46c
4
- data.tar.gz: ea3cd93a8a6f19809e6da1ddff463f5f70d4d7677ec510f350ccc8a858d68244
3
+ metadata.gz: 4b7091b27c821ece14a4fef18ad5ad23a195ca9d4e9e49738169209e00a6969b
4
+ data.tar.gz: 48a9f36d5be3895ebe1dce139cf9c69e86acbaa0e1a0d460f36122c13a889d3a
5
5
  SHA512:
6
- metadata.gz: d2e69ae33e38f657d9764a3a1cfe5a1059c9b43d9ea4508922e8381f59ee348921b646c985dd154756f251a2c4008a1facda0cd0ed148b680ecb09ee5c31e978
7
- data.tar.gz: a441e9e60e7d6c0a7eeee25bbd7580cab3975c57ff44bc29328d810e35fe7f69a1958b03d81a51358169ce4843c927428e50274b955b7dd398837a6d88e50afb
6
+ metadata.gz: 2b82cda45ccc61c7a4af5a81652b824816604f28387e3f48ff3e673db4914395cf7a288f20b898d3c96e8ae11d94c0f0badb00ced5c202c1baafca60316f3e14
7
+ data.tar.gz: 529877d53bff5860d03cf1fb349a539b5837f49ac8152557239d7f09ebd2be082c22a6229c921faf357658dab6713b9227aa58f3a5f84f367843939c198a9c17
data/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [0.1.19] - 2019-11-28
4
+ __Zenlish__ can parse all sentences in lesson 1, 2 and 3-A .. 3-B from
5
+ [Learn These Words First](http://learnthesewordsfirst.com/).
6
+
7
+ ### Added
8
+ - Class `PossessiveDeterminer` to represent the posessive determiners `its`, `my`, `their`, `your`.
9
+
10
+ ### Changed
11
+ - File `zenlish.gemspec`: raise an error if Rley version is < 0.7.06
12
+ - File `zparser_spec.rb`: tests include all sentences from lesson 1, 2, and 3-B (255 sentences in total).
13
+ - `ZenlishGrammar`: new production rules added (especially for posessive determiners a multiple sentences in direct speech).
14
+ - File `dictionary.rb`: new entries in lexicon `and`, `belong`, `it`, `or`, `that`, `them`, `they`.
15
+ - File `README.md` Updated the metrics table
16
+
3
17
  ## [0.1.18] - 2019-11-26
4
18
  __Zenlish__ can parse all sentences in lesson 1, 2 and 3-A from
5
19
  [Learn These Words First](http://learnthesewordsfirst.com/).
@@ -8,7 +22,6 @@ __Zenlish__ can parse all sentences in lesson 1, 2 and 3-A from
8
22
  - Class `Coordinator` to represent the coordinating conjunctions `and`, `or`.
9
23
 
10
24
  ### Changed
11
- - Folder structure under `lib` and `spec`.
12
25
  - File `zparser_spec.rb`: tests include all sentences from lesson 1, 2, and 3-A (235 sentences in total).
13
26
  - `ZenlishGrammar`: new production rules added (especially for coordinators).
14
27
  - File `dictionary.rb`: new entries in lexicon `and`, `belong`, `it`, `or`, `that`, `them`, `they`.
data/README.md CHANGED
@@ -20,7 +20,7 @@ users with a language that is close enough to English.
20
20
  ### Project status
21
21
 
22
22
  The project is still in inception. Currently, zenlish is able to parse all
23
- sentences from lessons 1-A up to 3-A. The parser is able to cope with syntactical
23
+ sentences from lessons 1-A up to 3-B. The parser is able to cope with syntactical
24
24
  ambiguities generating parse forests instead of parse trees.
25
25
 
26
26
  The intent is to deliver gem versions in small increments.
@@ -38,11 +38,11 @@ Over time, the zenlish gem will contain:
38
38
  #### Some project metrics (v. 0.1.15)
39
39
  |Metric|Value|
40
40
  |:-:|:-:|
41
- | Number of lemmas in dictionary | 106 |
42
- | [Coverage 100 commonest English words](https://en.wikipedia.org/wiki/Most_common_words_in_English) | 53% |
43
- | Number of production rules in grammar | 148 |
44
- | Number of lessons covered | 17 |
45
- | Number of sentences in spec files | 235 |
41
+ | Number of lemmas in dictionary | 111 |
42
+ | [Coverage 100 commonest English words](https://en.wikipedia.org/wiki/Most_common_words_in_English) | 56% |
43
+ | Number of production rules in grammar | 151 |
44
+ | Number of lessons covered | 18 |
45
+ | Number of sentences in spec files | 255 |
46
46
 
47
47
 
48
48
  ## Installation...
@@ -121,7 +121,7 @@ Litmus test: a Zenlish text should be easy to read to a English reading person.
121
121
  Here a tentative roadmap:
122
122
 
123
123
  #### A) Ability to parse sentences from [Learn These Words First](http://learnthesewordsfirst.com/)
124
- *STARTED*. 17.7% complete
124
+ *STARTED*. 18.8% complete
125
125
  This website advocates the idea of a multi-layered dictionary.
126
126
  At the core, there are about 300 essential words.
127
127
  The choice of these words is inspired by the semantic primitives of [NSM
@@ -60,6 +60,7 @@ unless defined?(Zenlish::Lang::Dictionary)
60
60
  add_entry('in', 'Preposition')
61
61
  add_entry('inside', 'Preposition')
62
62
  add_entry('it', 'PersonalPronoun')
63
+ add_entry('its', 'PossessiveDeterminer')
63
64
  add_entry('kind', 'CommonNoun')
64
65
  add_entry('know', 'IrregularVerbKnow')
65
66
  add_entry('like', 'Preposition')
@@ -74,9 +75,11 @@ unless defined?(Zenlish::Lang::Dictionary)
74
75
  add_entry('more', 'Adverb')
75
76
  add_entry('move', 'RegularVerb')
76
77
  add_entry('much', 'Adverb')
78
+ add_entry('my', 'PossessiveDeterminer')
77
79
  add_entry('near', 'Preposition')
78
80
  add_entry('near to', 'Preposition')
79
81
  add_entry('now', 'Adverb')
82
+ add_entry('now', 'CommonNoun')
80
83
  add_entry('not', 'AdverbNot')
81
84
  add_entry('of', 'PrepositionOf')
82
85
  add_entry('on', 'Preposition')
@@ -103,6 +106,7 @@ unless defined?(Zenlish::Lang::Dictionary)
103
106
  add_entry('the', 'DefiniteArticle')
104
107
  add_entry('them', 'PersonalPronoun')
105
108
  add_entry('then', 'LinkingAdverb')
109
+ add_entry('their', 'PossessiveDeterminer')
106
110
  add_entry('there', 'ExistentialThere')
107
111
  add_entry('they', 'PersonalPronoun')
108
112
  add_entry('thing', 'CommonNoun')
@@ -124,6 +128,7 @@ unless defined?(Zenlish::Lang::Dictionary)
124
128
  add_entry('with','Preposition')
125
129
  add_entry('word', 'CommonNoun')
126
130
  add_entry('you', 'PersonalPronoun')
131
+ add_entry('your', 'PossessiveDeterminer')
127
132
 
128
133
  # Punctuation signs...
129
134
  add_entry(':', 'Colon')
@@ -107,8 +107,12 @@ builder = Rley::Syntax::GrammarBuilder.new do
107
107
  rule 'relative_clause_opt' => 'relative_clause'
108
108
  rule 'relative_clause_opt' => []
109
109
  rule 'relative_clause' => 'RelativePronoun tense_phrase'
110
+ # Sentence 3-Bxa 'Lisa sees a living thing that is very big.
111
+ rule 'relative_clause' => 'RelativePronoun IrregularVerbBe predicative_complement'
110
112
  rule 'relative_clause' => 'identifying_clause'
111
113
  rule 'coordinate_clause' => 'Coordinator simple_sentence'
114
+ # Implicit subject. 3-05b: I saw this thing and touched some of its parts.
115
+ rule 'coordinate_clause' => 'Coordinator verb_phrase'
112
116
 
113
117
 
114
118
  ##############
@@ -162,7 +166,7 @@ builder = Rley::Syntax::GrammarBuilder.new do
162
166
  # Central determiners: article, demonstrative or possessive
163
167
  rule 'central_determiners' => 'article'
164
168
  rule 'central_determiners' => 'demonstrative'
165
- # central_determiners => possessive
169
+ rule 'central_determiners' => 'PossessiveDeterminer'
166
170
  rule 'central_determiners' => []
167
171
  rule 'article' => 'DefiniteArticle' # 'the'
168
172
  rule 'article' => 'IndefiniteArticle' # 'a/an', .., any, some, that, those,
@@ -206,7 +210,7 @@ builder = Rley::Syntax::GrammarBuilder.new do
206
210
 
207
211
  rule 'mental_verb' => 'IrregularVerbKnow'
208
212
  rule 'mental_verb' => 'IrregularVerbThink'
209
- rule 'direct_speech' => 'Colon Quote declarative_simple_sentence Period Quote'
213
+ rule 'direct_speech' => 'Colon Quote prose Quote'
210
214
  rule 'direct_speech' => 'Preposition noun_phrase Colon Quote declarative_simple_sentence Period Quote'
211
215
  rule 'direct_speech' => 'Colon declarative_simple_sentence'
212
216
 
@@ -44,6 +44,7 @@ module Zenlish
44
44
  aLexicon.add_terminal(WClasses::LinkingAdverb.new.freeze)
45
45
  aLexicon.add_terminal(WClasses::ModalVerbCan.new.freeze)
46
46
  aLexicon.add_terminal(WClasses::PersonalPronoun.new.freeze)
47
+ aLexicon.add_terminal(WClasses::PossessiveDeterminer.new.freeze)
47
48
  aLexicon.add_terminal(WClasses::Preposition.new.freeze)
48
49
  aLexicon.add_terminal(WClasses::PrepositionOf.new.freeze)
49
50
  aLexicon.add_terminal(WClasses::PrepositionThan.new.freeze)
@@ -1,3 +1,3 @@
1
1
  module Zenlish
2
- VERSION = '0.1.18'
2
+ VERSION = '0.1.19'
3
3
  end
@@ -33,6 +33,7 @@ require_relative 'indefinite_quantifier'
33
33
  require_relative 'linking_adverb'
34
34
  require_relative 'modal_verb_can'
35
35
  require_relative 'personal_pronoun'
36
+ require_relative 'possessive_determiner'
36
37
  require_relative 'preposition'
37
38
  require_relative 'preposition_of'
38
39
  require_relative 'preposition_than'
@@ -0,0 +1,11 @@
1
+ require_relative 'determiner'
2
+
3
+ module Zenlish
4
+ module WClasses
5
+ # Possessive determiner (aka possessive adjective) is a class of determiner,
6
+ # that is used to modify nouns to denote possession my, your, her, his, its.
7
+ # they aren't used with other determiners like the, a/an, or this.
8
+ class PossessiveDeterminer < Determiner
9
+ end # class
10
+ end # module
11
+ end # module
@@ -31,6 +31,7 @@ module Zenlish
31
31
  # to variables that themselves return Literal objects.
32
32
  # For instance, next line will create a variable called 'alive'
33
33
  literal2var('a', 'a', '_as_art')
34
+ literal2var('a', 'an')
34
35
  literal2var('about', 'about')
35
36
  literal2var('above', 'above')
36
37
  def after_adverb ; Lex::Literal.new('after', get_lexeme('after', WClasses::Adverb), 0) ; end
@@ -48,6 +49,7 @@ module Zenlish
48
49
  literal2var('because', 'because')
49
50
  def before_adverb ; Lex::Literal.new('before', get_lexeme('before', WClasses::Adverb), 0) ; end
50
51
  def before ; Lex::Literal.new('before', get_lexeme('before', WClasses::SubordinatingConjunction), 0) ; end
52
+ literal2var('belong', 'belong')
51
53
  literal2var('belong', 'belongs')
52
54
  literal2var('below', 'below')
53
55
  literal2var('big', 'big')
@@ -85,6 +87,7 @@ module Zenlish
85
87
  literal2var('in', 'in', '_')
86
88
  literal2var('inside', 'inside')
87
89
  literal2var('it', 'it', '_')
90
+ literal2var('its', 'its')
88
91
  literal2var('J', 'j', '_')
89
92
  def is ; Lex::Literal.new('is', get_lexeme('be', WClasses::IrregularVerbBe), 0) ; end
90
93
  def is_aux ; Lex::Literal.new('is', get_lexeme('be', WClasses::AuxiliaryBe), 0) ; end
@@ -109,10 +112,12 @@ module Zenlish
109
112
  literal2var('move', 'moving')
110
113
  literal2var('move', 'moves')
111
114
  literal2var('much', 'much')
115
+ literal2var('my', 'my')
112
116
  literal2var('near', 'near')
113
117
  literal2var('near to', 'near_to')
114
118
  literal2var('not', 'not', '_')
115
- literal2var('now', 'now')
119
+ def now ; Lex::Literal.new('now', get_lexeme('now', WClasses::Adverb), 0) ; end
120
+ def now_as_noun ; Lex::Literal.new('now', get_lexeme('now', WClasses::CommonNoun), 0) ; end
116
121
  literal2var('of', 'of')
117
122
  literal2var('on', 'on')
118
123
  def one ; Lex::Literal.new('one', get_lexeme('one', WClasses::Cardinal), 0) ; end
@@ -139,6 +144,7 @@ module Zenlish
139
144
  literal2var('someone', 'someone')
140
145
  literal2var('something', 'something')
141
146
  literal2var('the', 'the')
147
+ literal2var('their', 'their')
142
148
  literal2var('them', 'them')
143
149
  literal2var('then', 'then', '_')
144
150
  literal2var('they', 'they')
@@ -176,6 +182,7 @@ module Zenlish
176
182
  literal2var('word', 'words')
177
183
  def x_as_noun ; Lex::Literal.new('X', get_lexeme('X'), 0) ; end
178
184
  literal2var('you', 'you')
185
+ literal2var('you', 'your')
179
186
 
180
187
  def colon ; Lex::Literal.new(':', get_lexeme(':'), 0) ; end
181
188
  def comma ; Lex::Literal.new(',', get_lexeme(','), 0) ; end
@@ -1103,8 +1110,83 @@ module Zenlish
1103
1110
  ]
1104
1111
  expect { subject.to_pforest(literals) }.not_to raise_error
1105
1112
  end
1113
+
1114
+ it 'should parse sample sentences from lesson 3-B' do
1115
+ # Sentence 3-05a definiendum: 'This is its X.'
1116
+ literals = [this_as_pronoun, is, its, x_as_noun, dot
1117
+ ]
1118
+ expect { subject.to_pforest(literals) }.not_to raise_error
1119
+
1120
+ # Sentence 3-05b definiens: 'This X belongs to it.
1121
+ # [I saw this thing and touched some of its parts.]
1122
+ # [These things are their things.] = These things belong to them.
1123
+ literals = [this, x_as_noun, belongs, to, it_, dot,
1124
+ i_pronoun, saw, this, thing, and_, touched, some, of, its, parts, dot
1125
+ ]
1126
+ expect { subject.to_pforest(literals) }.not_to raise_error
1127
+
1128
+ # Sentence 3-05c definiendum: 'These things are their things.'
1129
+ literals = [these, things, are, their, things, dot
1130
+ ]
1131
+ expect { subject.to_pforest(literals) }.not_to raise_error
1132
+
1133
+ # Sentence 3-05d definiens: 'These things belong to them.
1134
+ literals = [these, things, belong, to, them, dot,
1135
+ ]
1136
+ expect { subject.to_pforest(literals) }.not_to raise_error
1137
+
1138
+ # Sentence 3-06a definiendum: 'This is your X.'
1139
+ literals = [this_as_pronoun, is, your, x_as_noun, dot,
1140
+ ]
1141
+ expect { subject.to_pforest(literals) }.not_to raise_error
1142
+
1143
+ # Sentence 3-06b definien: 'This X belongs to you.
1144
+ # [You feel something touching your body.]
1145
+ literals = [this, x_as_noun, belongs, to, you, dot,
1146
+ you, feel, something, touching, your, body, dot
1147
+ ]
1148
+ expect { subject.to_pforest(literals) }.not_to raise_error
1149
+
1150
+ # Sentence 3-07a definiendum: 'This is my X.'
1151
+ literals = [this_as_pronoun, is, my, x_as_noun, dot,
1152
+ ]
1153
+ expect { subject.to_pforest(literals) }.not_to raise_error
1154
+
1155
+ # Sentence 3-07b definiens: 'This X belongs to me.
1156
+ # [I do not want you to touch my body.]
1157
+ literals = [this, x_as_noun, belongs, to, me, dot,
1158
+ i_pronoun, do_aux, not_, want, to, touch, my, body, dot
1159
+ ]
1160
+ expect { subject.to_pforest(literals) }.not_to raise_error
1161
+
1162
+ # Sentence 3-08a definiendum: 'There is an X here.'
1163
+ literals = [there, is, an, x_as_noun, here, dot,
1164
+ ]
1165
+ expect { subject.to_pforest(literals) }.not_to raise_error
1166
+
1167
+ # Sentence 3-0bb definiens: 'X is some kind of thing.
1168
+ # There is one of this kind of thing here.
1169
+ # This is not one that you said something about a short time before now.
1170
+ # [I did not know there was a person in this place.]
1171
+ literals = [x_as_noun, is, some, kind, of, thing, dot,
1172
+ there, is, one, of, this, kind, of, thing, here, dot,
1173
+ this_as_pronoun, is, not_, one_as_adj, that, you, said, something,
1174
+ about, a_as_art, short, time, before, now_as_noun, dot
1175
+ ]
1176
+ expect { subject.to_pforest(literals) }.not_to raise_error
1177
+
1178
+ # Sentence 3-Bxa 'Lisa sees a living thing that is very big.
1179
+ # Lisa says: "I see one living thing. Its body is bigger than my body.", dot
1180
+ literals = [
1181
+ lisa, sees, a_as_art, living, thing, that, is, very, big, dot,
1182
+ lisa, says, colon, quote, i_pronoun, see, one, living, thing, dot,
1183
+ its, body, is, bigger, than, my, body, dot, quote, dot
1184
+ ]
1185
+ expect { subject.to_pforest(literals) }.not_to raise_error
1186
+ end
1106
1187
  =begin
1107
1188
  TODO
1189
+
1108
1190
  Lesson 2.C
1109
1191
 
1110
1192
  Xtra:
data/zenlish.gemspec CHANGED
@@ -54,7 +54,7 @@ Gem::Specification.new do |spec|
54
54
  PkgExtending.pkg_documentation(spec)
55
55
 
56
56
  # Runtime dependencies
57
- spec.add_dependency 'rley', '~> 0.7.0'
57
+ spec.add_dependency 'rley', '~> 0.7.06'
58
58
 
59
59
  spec.add_development_dependency "bundler", "~> 2.0"
60
60
  spec.add_development_dependency "rake", "~> 12.0"
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.18
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-26 00:00:00.000000000 Z
11
+ date: 2019-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rley
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.7.0
19
+ version: 0.7.06
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.7.0
26
+ version: 0.7.06
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -132,6 +132,7 @@ files:
132
132
  - lib/zenlish/wclasses/noun.rb
133
133
  - lib/zenlish/wclasses/numeral.rb
134
134
  - lib/zenlish/wclasses/personal_pronoun.rb
135
+ - lib/zenlish/wclasses/possessive_determiner.rb
135
136
  - lib/zenlish/wclasses/preposition.rb
136
137
  - lib/zenlish/wclasses/preposition_of.rb
137
138
  - lib/zenlish/wclasses/preposition_than.rb