skeem 0.2.20 → 0.2.21
Sign up to get free protection for your applications and to get access to all the features.
- 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
|