skeem 0.2.20 → 0.2.21
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 +4 -4
- data/.rubocop.yml +46 -7
- data/CHANGELOG.md +10 -2
- data/LICENSE.txt +1 -1
- data/lib/skeem/grammar.rb +1 -2
- data/lib/skeem/parser.rb +1 -1
- data/lib/skeem/primitive/primitive_builder.rb +3 -1
- data/lib/skeem/runtime.rb +1 -1
- data/lib/skeem/s_expr_builder.rb +7 -7
- data/lib/skeem/skm_simple_datum.rb +2 -2
- data/lib/skeem/tokenizer.rb +3 -3
- data/lib/skeem/version.rb +1 -1
- data/skeem.gemspec +3 -3
- data/spec/skeem/skm_simple_datum_spec.rb +2 -0
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0800d07342e60be56e4ecbd4d2040eb22f593586347eff9c51cf26b999c3b37d'
|
4
|
+
data.tar.gz: 1e31cc8f1cc6e0f60d229e62fbef4f29670cb20d5c22709d5d31ae7ca54a74ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35d189903d0c8089151a6a5d0235326c812df8f750a10a23b6e9cedfd31451c614f5a151ff1348f1ed2207a5b5f08cb8751ae3d4760a92a4530c4426f7514632
|
7
|
+
data.tar.gz: e9e7ad4c789da7fef78486914314e5491262a8d769b495cb1130bdffdc339d5234b44c320a0cb97eacbbf0b646e57541c9bb6799c4d31e3625d41ae05f14d35a
|
data/.rubocop.yml
CHANGED
@@ -6,6 +6,9 @@ AllCops:
|
|
6
6
|
Gemspec/DateAssignment:
|
7
7
|
Enabled: true
|
8
8
|
|
9
|
+
Gemspec/RequireMFA: # new in 1.23
|
10
|
+
Enabled: false
|
11
|
+
|
9
12
|
Layout/ArgumentAlignment:
|
10
13
|
Enabled: false
|
11
14
|
|
@@ -132,6 +135,9 @@ Lint/RaiseException:
|
|
132
135
|
Lint/RedundantDirGlobSort:
|
133
136
|
Enabled: true
|
134
137
|
|
138
|
+
Lint/RefinementImportMethods: # new in 1.27
|
139
|
+
Enabled: true
|
140
|
+
|
135
141
|
Lint/RequireRelativeSelfPath: # new in 1.22
|
136
142
|
Enabled: true
|
137
143
|
|
@@ -162,12 +168,15 @@ Lint/UnusedMethodArgument:
|
|
162
168
|
Lint/UselessAccessModifier:
|
163
169
|
Enabled: true
|
164
170
|
|
165
|
-
Lint/Void:
|
166
|
-
Enabled: false
|
167
|
-
|
168
171
|
Lint/UselessAssignment:
|
169
172
|
Enabled: true
|
170
173
|
|
174
|
+
Lint/UselessRuby2Keywords: # new in 1.23
|
175
|
+
Enabled: true
|
176
|
+
|
177
|
+
Lint/Void:
|
178
|
+
Enabled: false
|
179
|
+
|
171
180
|
Metrics/AbcSize:
|
172
181
|
Enabled: false
|
173
182
|
|
@@ -201,15 +210,18 @@ Metrics/ModuleLength:
|
|
201
210
|
Metrics/PerceivedComplexity:
|
202
211
|
Enabled: false
|
203
212
|
|
213
|
+
Naming/BlockForwarding: # new in 1.24
|
214
|
+
Enabled: true
|
215
|
+
|
216
|
+
Naming/BlockParameterName:
|
217
|
+
Enabled: true
|
218
|
+
|
204
219
|
Naming/ConstantName:
|
205
220
|
Enabled: false
|
206
221
|
|
207
222
|
Naming/ClassAndModuleCamelCase:
|
208
223
|
Enabled: false
|
209
224
|
|
210
|
-
Naming/BlockParameterName:
|
211
|
-
Enabled: true
|
212
|
-
|
213
225
|
Naming/InclusiveLanguage:
|
214
226
|
Enabled: true
|
215
227
|
|
@@ -222,6 +234,9 @@ Naming/MethodName:
|
|
222
234
|
Naming/VariableName:
|
223
235
|
Enabled: false
|
224
236
|
|
237
|
+
Security/CompoundHash: # new in 1.28
|
238
|
+
Enabled: true
|
239
|
+
|
225
240
|
Security/IoMethods: # new in 1.22
|
226
241
|
Enabled: true
|
227
242
|
|
@@ -279,6 +294,15 @@ Style/ExpandPathArguments:
|
|
279
294
|
Style/ExponentialNotation:
|
280
295
|
Enabled: true
|
281
296
|
|
297
|
+
Style/FetchEnvVar: # new in 1.28
|
298
|
+
Enabled: true
|
299
|
+
|
300
|
+
Style/FileRead: # new in 1.24
|
301
|
+
Enabled: true
|
302
|
+
|
303
|
+
Style/FileWrite: # new in 1.24
|
304
|
+
Enabled: true
|
305
|
+
|
282
306
|
Style/GuardClause:
|
283
307
|
Enabled: false
|
284
308
|
|
@@ -303,6 +327,9 @@ Style/InPatternThen:
|
|
303
327
|
Style/InverseMethods:
|
304
328
|
Enabled: false
|
305
329
|
|
330
|
+
Style/MapToHash: # new in 1.24
|
331
|
+
Enabled: true
|
332
|
+
|
306
333
|
Style/MissingRespondToMissing:
|
307
334
|
Enabled: false
|
308
335
|
|
@@ -312,6 +339,9 @@ Style/MultilineInPatternThen:
|
|
312
339
|
Style/NegatedIfElseCondition:
|
313
340
|
Enabled: true
|
314
341
|
|
342
|
+
Style/NestedFileDirname: # new in 1.26
|
343
|
+
Enabled: true
|
344
|
+
|
315
345
|
Style/Next:
|
316
346
|
Enabled: false
|
317
347
|
|
@@ -327,6 +357,12 @@ Style/NumberedParametersLimit: # new in 1.22
|
|
327
357
|
Style/NumericLiterals:
|
328
358
|
Enabled: false
|
329
359
|
|
360
|
+
Style/ObjectThen: # new in 1.28
|
361
|
+
Enabled: true
|
362
|
+
|
363
|
+
Style/OpenStructUse: # new in 1.23
|
364
|
+
Enabled: true
|
365
|
+
|
330
366
|
Style/QuotedSymbols:
|
331
367
|
Enabled: true
|
332
368
|
|
@@ -335,9 +371,12 @@ Style/RaiseArgs:
|
|
335
371
|
|
336
372
|
Style/RedundantArgument:
|
337
373
|
Enabled: true
|
374
|
+
|
375
|
+
Style/RedundantInitialize: # new in 1.27
|
376
|
+
Enabled: true
|
338
377
|
|
339
378
|
Style/RedundantReturn:
|
340
|
-
Enabled:
|
379
|
+
Enabled: true
|
341
380
|
|
342
381
|
Style/RedundantSelf:
|
343
382
|
Enabled: true
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,16 @@
|
|
1
|
+
## [0.2.21] - 2022-04-24
|
2
|
+
- Dependencies updates, minor changes
|
3
|
+
|
4
|
+
### Changed
|
5
|
+
- File `.rubocop.yml` Incorporating new Rubocop cops (up to version 1.28)
|
6
|
+
- File `grammar.rb`: Refactoring of a rule with grouping parentheses
|
7
|
+
- File `s_expr_builder` Change to relfect changes in grammar
|
8
|
+
- File `skeem.gempsec` Updated dependencies; minimal Ruby version is now 2.6+
|
9
|
+
|
1
10
|
## [0.2.20] - 2021-11-01
|
2
11
|
- Code update to cope with changes in `Rley` v. 0.8.08
|
3
12
|
|
4
|
-
|
5
|
-
- File `grammar.rb`: Refactoring to cope with ? quantifier changes
|
13
|
+
|
6
14
|
- File `s_expr_builder.rb`: Refactoring to cope with ? quantifier changes
|
7
15
|
- File `skeem.gemspec` dependency updated for `Rley` v. 0.8.08
|
8
16
|
|
data/LICENSE.txt
CHANGED
data/lib/skeem/grammar.rb
CHANGED
@@ -89,8 +89,7 @@ module Skeem
|
|
89
89
|
rule 'number' => 'RATIONAL'
|
90
90
|
rule 'number' => 'REAL'
|
91
91
|
rule('assignment' => 'LPAREN SET! IDENTIFIER expression RPAREN').as 'assignment'
|
92
|
-
rule('derived_expression' => 'LPAREN COND cond_clause
|
93
|
-
rule('derived_expression' => 'LPAREN COND cond_clause* LPAREN ELSE sequence RPAREN RPAREN').as 'cond_else_form'
|
92
|
+
rule('derived_expression' => 'LPAREN COND cond_clause* (LPAREN ELSE sequence RPAREN)? RPAREN').as 'cond_form'
|
94
93
|
rule('derived_expression' => 'LPAREN LET LPAREN binding_spec* RPAREN body RPAREN').as 'short_let_form'
|
95
94
|
# TODO: implement "named let"
|
96
95
|
rule('derived_expression' => 'LPAREN LET IDENTIFIER LPAREN binding_spec* RPAREN body RPAREN') # .as 'named_form'
|
data/lib/skeem/parser.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative '../skm_exception'
|
|
6
6
|
require_relative '../skm_pair'
|
7
7
|
|
8
8
|
module Skeem
|
9
|
+
# rubocop: disable Metrics/ModuleLength
|
9
10
|
module Primitive
|
10
11
|
module PrimitiveBuilder
|
11
12
|
include DatumDSL
|
@@ -1231,7 +1232,7 @@ module Skeem
|
|
1231
1232
|
def remaining_args(arglist, aRuntime)
|
1232
1233
|
case arglist
|
1233
1234
|
when Array
|
1234
|
-
raw_arg = arglist[1
|
1235
|
+
raw_arg = arglist[1..]
|
1235
1236
|
when SkmPair
|
1236
1237
|
raw_arg = arglist.cdr.to_a
|
1237
1238
|
end
|
@@ -1239,4 +1240,5 @@ module Skeem
|
|
1239
1240
|
end
|
1240
1241
|
end # module
|
1241
1242
|
end # module
|
1243
|
+
# rubocop: enable Metrics/ModuleLength
|
1242
1244
|
end # module
|
data/lib/skeem/runtime.rb
CHANGED
data/lib/skeem/s_expr_builder.rb
CHANGED
@@ -214,14 +214,14 @@ module Skeem
|
|
214
214
|
SkmUpdateBinding.new(theChildren[2], theChildren[3])
|
215
215
|
end
|
216
216
|
|
217
|
-
# rule('derived_expression' => 'LPAREN COND
|
217
|
+
# rule('derived_expression' => 'LPAREN COND cond_clause* (LPAREN ELSE sequence RPAREN)? RPAREN')
|
218
218
|
def reduce_cond_form(_production, aRange, _tokens, theChildren)
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
SkmConditional.new(aRange.low, theChildren[2],
|
219
|
+
if theChildren[3]
|
220
|
+
else_part = SkmSequencingBlock.new(theChildren[3][2])
|
221
|
+
else
|
222
|
+
else_part = nil
|
223
|
+
end
|
224
|
+
SkmConditional.new(aRange.low, theChildren[2], else_part)
|
225
225
|
end
|
226
226
|
|
227
227
|
# rule('derived_expression' => 'LPAREN LET LPAREN binding_spec_star RPAREN body RPAREN').as 'short_let_form'
|
@@ -21,7 +21,7 @@ module Skeem
|
|
21
21
|
def self.create(aValue)
|
22
22
|
lightweight = allocate
|
23
23
|
lightweight.init_value(aValue)
|
24
|
-
|
24
|
+
lightweight
|
25
25
|
end
|
26
26
|
|
27
27
|
def symbol
|
@@ -62,7 +62,7 @@ module Skeem
|
|
62
62
|
# Reminder: terminals evaluate to themselves.
|
63
63
|
# @param _runtime [Skeem::Runtime]
|
64
64
|
def evaluate(_runtime)
|
65
|
-
|
65
|
+
self
|
66
66
|
end
|
67
67
|
|
68
68
|
# Return this object un-evaluated.
|
data/lib/skeem/tokenizer.rb
CHANGED
@@ -58,7 +58,7 @@ module Skeem
|
|
58
58
|
SYNTAX-RULES
|
59
59
|
UNQUOTE
|
60
60
|
UNQUOTE-SPLICING
|
61
|
-
].
|
61
|
+
].to_h { |x| [x, x.sub(/\*$/, '_STAR')] }
|
62
62
|
|
63
63
|
class ScanError < StandardError; end
|
64
64
|
|
@@ -289,7 +289,7 @@ other literal data (section 2.4).
|
|
289
289
|
value = aLexeme.gsub(/(^")|("$)/, '')
|
290
290
|
end
|
291
291
|
|
292
|
-
|
292
|
+
value
|
293
293
|
end
|
294
294
|
|
295
295
|
def to_identifier(aLexeme, aFormat)
|
@@ -298,7 +298,7 @@ other literal data (section 2.4).
|
|
298
298
|
value = aLexeme
|
299
299
|
end
|
300
300
|
|
301
|
-
|
301
|
+
value
|
302
302
|
end
|
303
303
|
|
304
304
|
def named_char(aLexeme)
|
data/lib/skeem/version.rb
CHANGED
data/skeem.gemspec
CHANGED
@@ -54,7 +54,7 @@ DESCR
|
|
54
54
|
SUMMARY
|
55
55
|
spec.homepage = 'https://github.com/famished-tiger/Skeem'
|
56
56
|
spec.license = 'MIT'
|
57
|
-
spec.required_ruby_version = '>= 2.
|
57
|
+
spec.required_ruby_version = '>= 2.6.0'
|
58
58
|
|
59
59
|
spec.bindir = 'bin'
|
60
60
|
spec.executables << 'skeem'
|
@@ -62,10 +62,10 @@ SUMMARY
|
|
62
62
|
PkgExtending.pkg_files(spec)
|
63
63
|
PkgExtending.pkg_documentation(spec)
|
64
64
|
# Runtime dependencies
|
65
|
-
spec.add_dependency 'rley', '~> 0.8.
|
65
|
+
spec.add_dependency 'rley', '~> 0.8.11'
|
66
66
|
|
67
67
|
# Development dependencies
|
68
68
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
69
|
-
spec.add_development_dependency 'rake', '
|
69
|
+
spec.add_development_dependency 'rake', '>= 12.0'
|
70
70
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
71
71
|
end
|
@@ -5,6 +5,7 @@ require_relative '../spec_helper' # Use the RSpec framework
|
|
5
5
|
require_relative '../../lib/skeem/skm_simple_datum' # Load the classes under test
|
6
6
|
|
7
7
|
module Skeem
|
8
|
+
# rubocop: disable Style/OpenStructUse
|
8
9
|
describe SkmSimpleDatum do
|
9
10
|
let(:pos) { double('fake-position') }
|
10
11
|
let(:dummy_symbol) { double('fake-symbol') }
|
@@ -298,4 +299,5 @@ module Skeem
|
|
298
299
|
end
|
299
300
|
end # context
|
300
301
|
end # describe
|
302
|
+
# rubocop: enable Style/OpenStructUse
|
301
303
|
end # module
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skeem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitri Geshef
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-04-24 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.8.
|
19
|
+
version: 0.8.11
|
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.8.
|
26
|
+
version: 0.8.11
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,14 +42,14 @@ dependencies:
|
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '12.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '12.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -149,14 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
149
|
requirements:
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 2.
|
152
|
+
version: 2.6.0
|
153
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
154
|
requirements:
|
155
155
|
- - ">="
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
158
|
requirements: []
|
159
|
-
rubygems_version: 3.
|
159
|
+
rubygems_version: 3.3.7
|
160
160
|
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: Skeem is an interpreter of a subset of the Scheme programming language. Scheme
|
@@ -170,6 +170,7 @@ test_files:
|
|
170
170
|
- spec/skeem/primitive/primitive_builder_spec.rb
|
171
171
|
- spec/skeem/primitive/primitive_procedure_spec.rb
|
172
172
|
- spec/skeem/runtime_spec.rb
|
173
|
+
- spec/skeem/s_expr_nodes_spec.rb
|
173
174
|
- spec/skeem/skm_compound_datum_spec.rb
|
174
175
|
- spec/skeem/skm_element_spec.rb
|
175
176
|
- spec/skeem/skm_empty_list_spec.rb
|
@@ -178,6 +179,5 @@ test_files:
|
|
178
179
|
- spec/skeem/skm_procedure_exec_spec.rb
|
179
180
|
- spec/skeem/skm_simple_datum_spec.rb
|
180
181
|
- spec/skeem/skm_unary_expression_spec.rb
|
181
|
-
- spec/skeem/s_expr_nodes_spec.rb
|
182
182
|
- spec/skeem/tokenizer_spec.rb
|
183
183
|
- spec/skeem_spec.rb
|