skeem 0.2.16 → 0.2.20
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 +283 -11
- data/.travis.yml +27 -0
- data/CHANGELOG.md +30 -1
- data/README.md +1 -1
- data/bin/skeem +4 -4
- data/lib/skeem/datum_dsl.rb +36 -35
- data/lib/skeem/grammar.rb +38 -77
- data/lib/skeem/interpreter.rb +8 -4
- data/lib/skeem/primitive/primitive_builder.rb +7 -15
- data/lib/skeem/primitive/primitive_procedure.rb +11 -5
- data/lib/skeem/runtime.rb +8 -10
- data/lib/skeem/s_expr_builder.rb +18 -57
- data/lib/skeem/s_expr_nodes.rb +46 -45
- data/lib/skeem/skeem_exception.rb +1 -0
- data/lib/skeem/skm_binding.rb +4 -5
- data/lib/skeem/skm_compound_datum.rb +2 -3
- data/lib/skeem/skm_element.rb +1 -1
- data/lib/skeem/skm_pair.rb +5 -2
- data/lib/skeem/skm_procedure_exec.rb +3 -0
- data/lib/skeem/skm_simple_datum.rb +12 -10
- data/lib/skeem/skm_unary_expression.rb +25 -26
- data/lib/skeem/tokenizer.rb +14 -7
- data/lib/skeem/version.rb +1 -1
- data/skeem.gemspec +5 -5
- data/spec/skeem/element_visitor_spec.rb +3 -1
- data/spec/skeem/interpreter_spec.rb +3 -1
- data/spec/skeem/lambda_spec.rb +4 -4
- data/spec/skeem/parser_spec.rb +2 -0
- data/spec/skeem/primitive/primitive_builder_spec.rb +5 -5
- data/spec/skeem/primitive/primitive_procedure_spec.rb +1 -1
- data/spec/skeem/runtime_spec.rb +2 -2
- data/spec/skeem/skm_compound_datum_spec.rb +1 -1
- data/spec/skeem/skm_pair_spec.rb +5 -5
- data/spec/skeem/tokenizer_spec.rb +4 -2
- data/spec/spec_helper.rb +13 -10
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f17c469661c1ebfa3ad17ae7685ac52a90b30fcd4b31d1d01b5af1c54ccfb765
|
4
|
+
data.tar.gz: ccb061b50470a01a740c99f3e01c89a5e962216fa80d3147fa5d7bbc759b6a1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf7120cc110af075a3c5c3294492e5246e2857fe86d6090fba57fd8b8425f47871249710af82b1acf4471dc2ab2bf34770977acee3e98cee1cc7631382953930
|
7
|
+
data.tar.gz: af3025b621249db56813fa5c91fee6b33a47943d025a18cf50e5490f92d99b6750225b2af47d66c57bd72947faafb6e96f84cf4ab3038bf437e306308c09fa89
|
data/.rubocop.yml
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
3
|
- 'exp/**/*'
|
4
|
+
- 'demo/**/*'
|
5
|
+
|
6
|
+
Gemspec/DateAssignment:
|
7
|
+
Enabled: true
|
8
|
+
|
9
|
+
Layout/ArgumentAlignment:
|
10
|
+
Enabled: false
|
11
|
+
|
12
|
+
Layout/ArrayAlignment:
|
13
|
+
Enabled: true
|
14
|
+
EnforcedStyle: with_fixed_indentation
|
4
15
|
|
5
16
|
Layout/CaseIndentation:
|
6
17
|
Enabled: false
|
@@ -24,39 +35,127 @@ Layout/EndOfLine:
|
|
24
35
|
Enabled: true
|
25
36
|
EnforcedStyle: lf
|
26
37
|
|
38
|
+
Layout/FirstArgumentIndentation:
|
39
|
+
Enabled: false
|
40
|
+
|
41
|
+
Layout/HashAlignment:
|
42
|
+
Enabled: false
|
43
|
+
|
27
44
|
Layout/IndentationWidth:
|
28
45
|
Enabled: false
|
29
46
|
|
30
47
|
Layout/IndentationConsistency:
|
31
48
|
Enabled: true
|
32
49
|
|
33
|
-
Layout/
|
50
|
+
Layout/HeredocIndentation:
|
34
51
|
Enabled: false
|
35
52
|
|
53
|
+
Layout/LineEndStringConcatenationIndentation:
|
54
|
+
Enabled: true
|
55
|
+
|
36
56
|
Layout/MultilineHashBraceLayout:
|
37
57
|
Enabled: true
|
38
58
|
|
59
|
+
Layout/MultilineMethodCallBraceLayout:
|
60
|
+
Enabled: true
|
61
|
+
EnforcedStyle: same_line
|
62
|
+
|
39
63
|
Layout/SpaceAroundOperators:
|
40
64
|
Enabled: true
|
41
65
|
|
66
|
+
Layout/SpaceBeforeBrackets:
|
67
|
+
Enabled: true
|
68
|
+
|
42
69
|
Layout/SpaceInsideParens:
|
43
70
|
Enabled: true
|
44
71
|
|
45
|
-
Layout/
|
72
|
+
Layout/IndentationStyle:
|
73
|
+
Enabled: true
|
74
|
+
|
75
|
+
Layout/SpaceAroundMethodCallOperator:
|
46
76
|
Enabled: true
|
47
77
|
|
48
|
-
Layout/
|
78
|
+
Layout/TrailingEmptyLines:
|
49
79
|
Enabled: true
|
50
80
|
|
51
81
|
Layout/TrailingWhitespace:
|
52
82
|
Enabled: true
|
53
83
|
|
84
|
+
Lint/AmbiguousAssignment:
|
85
|
+
Enabled: true
|
86
|
+
|
87
|
+
Lint/AmbiguousOperatorPrecedence: # new in 1.21
|
88
|
+
Enabled: true
|
89
|
+
|
90
|
+
Lint/AmbiguousRange:
|
91
|
+
Enabled: true
|
92
|
+
|
93
|
+
Lint/DeprecatedConstants:
|
94
|
+
Enabled: true
|
95
|
+
|
96
|
+
Lint/DuplicateBranch:
|
97
|
+
Enabled: true
|
98
|
+
|
99
|
+
Lint/DuplicateRegexpCharacterClassElement:
|
100
|
+
Enabled: true
|
101
|
+
|
102
|
+
Lint/EmptyBlock:
|
103
|
+
Enabled: true
|
104
|
+
|
105
|
+
Lint/EmptyClass:
|
106
|
+
Enabled: false
|
107
|
+
|
108
|
+
Lint/EmptyInPattern:
|
109
|
+
Enabled: true
|
110
|
+
|
111
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
|
112
|
+
Enabled: true
|
113
|
+
|
114
|
+
Lint/LambdaWithoutLiteralBlock:
|
115
|
+
Enabled: true
|
116
|
+
|
54
117
|
Lint/Loop:
|
55
118
|
Enabled: true
|
56
119
|
|
120
|
+
Lint/NoReturnInBeginEndBlocks:
|
121
|
+
Enabled: true
|
122
|
+
|
123
|
+
Lint/NumberedParameterAssignment:
|
124
|
+
Enabled: true
|
125
|
+
|
126
|
+
Lint/OrAssignmentToConstant:
|
127
|
+
Enabled: true
|
128
|
+
|
129
|
+
Lint/RaiseException:
|
130
|
+
Enabled: true
|
131
|
+
|
132
|
+
Lint/RedundantDirGlobSort:
|
133
|
+
Enabled: true
|
134
|
+
|
135
|
+
Lint/RequireRelativeSelfPath: # new in 1.22
|
136
|
+
Enabled: true
|
137
|
+
|
57
138
|
Lint/RescueException:
|
58
139
|
Enabled: true
|
59
140
|
|
141
|
+
Lint/StructNewOverride:
|
142
|
+
Enabled: true
|
143
|
+
|
144
|
+
Lint/SymbolConversion:
|
145
|
+
Enabled: true
|
146
|
+
|
147
|
+
Lint/ToEnumArguments:
|
148
|
+
Enabled: true
|
149
|
+
|
150
|
+
Lint/TripleQuotes:
|
151
|
+
Enabled: true
|
152
|
+
|
153
|
+
Lint/UnexpectedBlockArity:
|
154
|
+
Enabled: true
|
155
|
+
|
156
|
+
Lint/UnmodifiedReduceAccumulator:
|
157
|
+
Enabled: true
|
158
|
+
|
60
159
|
Lint/UnusedMethodArgument:
|
61
160
|
Enabled: true
|
62
161
|
|
@@ -76,20 +175,24 @@ Metrics/BlockLength:
|
|
76
175
|
Enabled: true
|
77
176
|
Max: 350
|
78
177
|
|
178
|
+
Metrics/BlockNesting:
|
179
|
+
Enabled: true
|
180
|
+
Max: 5
|
181
|
+
|
79
182
|
Metrics/ClassLength:
|
80
183
|
Enabled: true
|
81
|
-
Max:
|
184
|
+
Max: 450
|
82
185
|
|
83
186
|
Metrics/CyclomaticComplexity:
|
84
187
|
Enabled: false
|
85
188
|
|
86
|
-
|
189
|
+
Layout/LineLength:
|
87
190
|
Enabled: false
|
88
191
|
Max: 90
|
89
192
|
|
90
193
|
Metrics/MethodLength:
|
91
194
|
Enabled: true
|
92
|
-
Max:
|
195
|
+
Max: 60
|
93
196
|
|
94
197
|
Metrics/ModuleLength:
|
95
198
|
Enabled: true
|
@@ -104,20 +207,29 @@ Naming/ConstantName:
|
|
104
207
|
Naming/ClassAndModuleCamelCase:
|
105
208
|
Enabled: false
|
106
209
|
|
107
|
-
Naming/
|
210
|
+
Naming/BlockParameterName:
|
211
|
+
Enabled: true
|
212
|
+
|
213
|
+
Naming/InclusiveLanguage:
|
108
214
|
Enabled: true
|
109
215
|
|
110
|
-
Naming/
|
216
|
+
Naming/MethodParameterName:
|
217
|
+
Enabled: false
|
218
|
+
|
219
|
+
Naming/MethodName:
|
111
220
|
Enabled: false
|
112
221
|
|
113
222
|
Naming/VariableName:
|
114
223
|
Enabled: false
|
115
224
|
|
225
|
+
Security/IoMethods: # new in 1.22
|
226
|
+
Enabled: true
|
227
|
+
|
116
228
|
Style/Alias:
|
117
229
|
Enabled: true
|
118
230
|
|
119
|
-
|
120
|
-
Enabled:
|
231
|
+
Style/ArgumentsForwarding:
|
232
|
+
Enabled: true
|
121
233
|
|
122
234
|
Style/AsciiComments:
|
123
235
|
Enabled: false
|
@@ -137,6 +249,9 @@ Style/ClassCheck:
|
|
137
249
|
Style/ClassVars:
|
138
250
|
Enabled: false
|
139
251
|
|
252
|
+
Style/CollectionCompact:
|
253
|
+
Enabled: true
|
254
|
+
|
140
255
|
Style/ColonMethodCall:
|
141
256
|
Enabled: false
|
142
257
|
|
@@ -155,47 +270,204 @@ Style/DefWithParentheses:
|
|
155
270
|
Style/Documentation:
|
156
271
|
Enabled: false
|
157
272
|
|
273
|
+
Style/DocumentDynamicEvalDefinition:
|
274
|
+
Enabled: true
|
275
|
+
|
158
276
|
Style/ExpandPathArguments:
|
159
277
|
Enabled: false
|
160
278
|
|
279
|
+
Style/ExponentialNotation:
|
280
|
+
Enabled: true
|
281
|
+
|
161
282
|
Style/GuardClause:
|
162
283
|
Enabled: false
|
163
284
|
|
285
|
+
Style/HashEachMethods:
|
286
|
+
Enabled: true
|
287
|
+
|
288
|
+
Style/HashExcept:
|
289
|
+
Enabled: true
|
290
|
+
|
291
|
+
Style/HashTransformKeys:
|
292
|
+
Enabled: true
|
293
|
+
|
294
|
+
Style/HashTransformValues:
|
295
|
+
Enabled: true
|
296
|
+
|
164
297
|
Style/IfUnlessModifier:
|
165
298
|
Enabled: false
|
166
299
|
|
300
|
+
Style/InPatternThen:
|
301
|
+
Enabled: true
|
302
|
+
|
167
303
|
Style/InverseMethods:
|
304
|
+
Enabled: false
|
305
|
+
|
306
|
+
Style/MissingRespondToMissing:
|
307
|
+
Enabled: false
|
308
|
+
|
309
|
+
Style/MultilineInPatternThen:
|
310
|
+
Enabled: true
|
311
|
+
|
312
|
+
Style/NegatedIfElseCondition:
|
168
313
|
Enabled: true
|
169
314
|
|
170
315
|
Style/Next:
|
171
316
|
Enabled: false
|
172
317
|
|
318
|
+
Style/NilLambda:
|
319
|
+
Enabled: true
|
320
|
+
|
321
|
+
Style/NumberedParameters: # new in 1.22
|
322
|
+
Enabled: true
|
323
|
+
|
324
|
+
Style/NumberedParametersLimit: # new in 1.22
|
325
|
+
Enabled: true
|
326
|
+
|
173
327
|
Style/NumericLiterals:
|
174
328
|
Enabled: false
|
175
329
|
|
330
|
+
Style/QuotedSymbols:
|
331
|
+
Enabled: true
|
332
|
+
|
176
333
|
Style/RaiseArgs:
|
177
334
|
Enabled: true
|
178
335
|
|
336
|
+
Style/RedundantArgument:
|
337
|
+
Enabled: true
|
338
|
+
|
179
339
|
Style/RedundantReturn:
|
180
340
|
Enabled: false
|
181
341
|
|
182
342
|
Style/RedundantSelf:
|
183
343
|
Enabled: true
|
184
344
|
|
345
|
+
Style/RedundantSelfAssignmentBranch:
|
346
|
+
Enabled: true
|
347
|
+
|
185
348
|
Style/RegexpLiteral:
|
186
349
|
Enabled: false
|
187
350
|
|
188
351
|
Style/PercentLiteralDelimiters:
|
189
352
|
Enabled: false
|
190
353
|
|
354
|
+
Style/SelectByRegexp: # new in 1.22
|
355
|
+
Enabled: true
|
356
|
+
|
191
357
|
Style/StderrPuts:
|
192
358
|
Enabled: false
|
193
359
|
|
194
360
|
Style/StringLiterals:
|
195
361
|
Enabled: true
|
196
362
|
|
363
|
+
Style/SwapValues:
|
364
|
+
Enabled: true
|
365
|
+
|
197
366
|
Style/TernaryParentheses:
|
198
367
|
Enabled: false
|
199
368
|
|
200
369
|
Style/UnlessElse:
|
201
|
-
Enabled: false
|
370
|
+
Enabled: false
|
371
|
+
|
372
|
+
# Rubocop complains when it doesn't find an explicit setting for the following cops:
|
373
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
374
|
+
Enabled: true
|
375
|
+
|
376
|
+
Lint/BinaryOperatorWithIdenticalOperands:
|
377
|
+
Enabled: true
|
378
|
+
|
379
|
+
Lint/DeprecatedOpenSSLConstant:
|
380
|
+
Enabled: true
|
381
|
+
|
382
|
+
Lint/DuplicateElsifCondition:
|
383
|
+
Enabled: true
|
384
|
+
|
385
|
+
Lint/DuplicateRescueException:
|
386
|
+
Enabled: true
|
387
|
+
|
388
|
+
Lint/EmptyConditionalBody:
|
389
|
+
Enabled: true
|
390
|
+
|
391
|
+
Lint/FloatComparison:
|
392
|
+
Enabled: true
|
393
|
+
|
394
|
+
Lint/MissingSuper:
|
395
|
+
Enabled: true
|
396
|
+
|
397
|
+
Lint/MixedRegexpCaptureTypes:
|
398
|
+
Enabled: true
|
399
|
+
|
400
|
+
Lint/OutOfRangeRegexpRef:
|
401
|
+
Enabled: true
|
402
|
+
|
403
|
+
Lint/SelfAssignment:
|
404
|
+
Enabled: true
|
405
|
+
|
406
|
+
Lint/TopLevelReturnWithArgument:
|
407
|
+
Enabled: true
|
408
|
+
|
409
|
+
Lint/UnreachableLoop:
|
410
|
+
Enabled: true
|
411
|
+
|
412
|
+
Style/AccessorGrouping:
|
413
|
+
Enabled: true
|
414
|
+
|
415
|
+
Style/ArrayCoercion:
|
416
|
+
Enabled: true
|
417
|
+
|
418
|
+
Style/BisectedAttrAccessor:
|
419
|
+
Enabled: true
|
420
|
+
|
421
|
+
Style/CaseLikeIf:
|
422
|
+
Enabled: true
|
423
|
+
|
424
|
+
Style/EndlessMethod:
|
425
|
+
Enabled: true
|
426
|
+
|
427
|
+
Style/ExplicitBlockArgument:
|
428
|
+
Enabled: true
|
429
|
+
|
430
|
+
Style/GlobalStdStream:
|
431
|
+
Enabled: true
|
432
|
+
|
433
|
+
Style/HashAsLastArrayItem:
|
434
|
+
Enabled: true
|
435
|
+
|
436
|
+
Style/HashConversion:
|
437
|
+
Enabled: true
|
438
|
+
|
439
|
+
Style/HashLikeCase:
|
440
|
+
Enabled: true
|
441
|
+
|
442
|
+
Style/IfWithBooleanLiteralBranches:
|
443
|
+
Enabled: true
|
444
|
+
|
445
|
+
Style/OptionalBooleanParameter:
|
446
|
+
Enabled: true
|
447
|
+
|
448
|
+
Style/RedundantAssignment:
|
449
|
+
Enabled: true
|
450
|
+
|
451
|
+
Style/RedundantFetchBlock:
|
452
|
+
Enabled: true
|
453
|
+
|
454
|
+
Style/RedundantFileExtensionInRequire:
|
455
|
+
Enabled: true
|
456
|
+
|
457
|
+
Style/RedundantRegexpCharacterClass:
|
458
|
+
Enabled: true
|
459
|
+
|
460
|
+
Style/RedundantRegexpEscape:
|
461
|
+
Enabled: true
|
462
|
+
|
463
|
+
Style/SingleArgumentDig:
|
464
|
+
Enabled: true
|
465
|
+
|
466
|
+
Style/SlicingWithRange:
|
467
|
+
Enabled: true
|
468
|
+
|
469
|
+
Style/StringChars:
|
470
|
+
Enabled: true
|
471
|
+
|
472
|
+
Style/StringConcatenation:
|
473
|
+
Enabled: true
|
data/.travis.yml
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
language: ruby
|
2
|
+
dist: trusty
|
3
|
+
|
4
|
+
before_install:
|
5
|
+
- gem update --system
|
6
|
+
- gem install bundler
|
7
|
+
|
8
|
+
script:
|
9
|
+
- bundle exec rake
|
10
|
+
|
11
|
+
rvm:
|
12
|
+
- 2.6.3
|
13
|
+
- 2.5.5
|
14
|
+
- 2.4.6
|
15
|
+
- 2.3.8
|
16
|
+
- jruby-9.1.9.0
|
17
|
+
|
18
|
+
matrix:
|
19
|
+
allow_failures:
|
20
|
+
- rvm: ruby-head
|
21
|
+
- rvm: jruby-head
|
22
|
+
|
23
|
+
|
24
|
+
# whitelist
|
25
|
+
branches:
|
26
|
+
only:
|
27
|
+
- master
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,37 @@
|
|
1
|
+
## [0.2.20] - 2021-11-01
|
2
|
+
- Code update to cope with changes in `Rley` v. 0.8.08
|
3
|
+
|
4
|
+
### Changed
|
5
|
+
- File `grammar.rb`: Refactoring to cope with ? quantifier changes
|
6
|
+
- File `s_expr_builder.rb`: Refactoring to cope with ? quantifier changes
|
7
|
+
- File `skeem.gemspec` dependency updated for `Rley` v. 0.8.08
|
8
|
+
|
9
|
+
## [0.2.19] - 2021-08-30
|
10
|
+
- Grammar refactoring: use ?, * and + modifiers in Rley 0.8.03 rules
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
- File `grammar.rb`: Remove redundant rules after introduction of ?, * and + modifiers
|
14
|
+
- Class `SkmBuilder`: Removal of useless methods after removal of their rule counterpart
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
## [0.2.18] - 2021-08-29
|
19
|
+
- Minor refactoring for Rley 0.8.03
|
20
|
+
- Code restyling to please rubocop 1.19.1.
|
21
|
+
|
22
|
+
### Changed
|
23
|
+
- File `.rubocop.yml` updated with newer Rubocop cops
|
24
|
+
- File `grammar.rb`: Calling `Rley::grammar_builder`, replace `LET*` token by `LET_STAR`
|
25
|
+
- Other files changed to get rid of Rubocop offences
|
26
|
+
|
27
|
+
## [0.2.17] - 2020-05-09
|
28
|
+
- Updated `.rubocop.yml` file.
|
29
|
+
- Code restyling to please rubocop 0.8.0.
|
30
|
+
|
1
31
|
## [0.2.16] - 2019-08-18
|
2
32
|
- Code refactoring to use string frozen magic comments (as a consequence, srl_ruby runs only on Rubies 2.3 or newer).
|
3
33
|
- Code restyling to please rubocop 0.7.40.
|
4
34
|
|
5
|
-
|
6
35
|
## [0.2.15] - 2019-07-02
|
7
36
|
- Added a basic command-line and console interface for Skeem interpreter.
|
8
37
|
- Added procedures: `display!`, `newline`, `make-list`
|
data/README.md
CHANGED
@@ -392,7 +392,7 @@ This project is intended to be a safe, welcoming space for collaboration, and co
|
|
392
392
|
|
393
393
|
Copyright
|
394
394
|
---------
|
395
|
-
Copyright (c) 2018-
|
395
|
+
Copyright (c) 2018-2021, Dimitri Geshef.
|
396
396
|
__Skeem__ is released under the MIT License see [LICENSE.txt](https://github.com/famished-tiger/Skeem/blob/master/LICENSE.txt) for details.
|
397
397
|
|
398
398
|
## Code of Conduct
|
data/bin/skeem
CHANGED
@@ -25,10 +25,10 @@ class SkeemREPL
|
|
25
25
|
if File.exist?(aFilename)
|
26
26
|
valid_fname = aFilename
|
27
27
|
elsif File.extname(aFilename).empty? # Retry by adding extension...
|
28
|
-
if File.exist?(aFilename
|
29
|
-
valid_fname = aFilename
|
30
|
-
elsif File.exist?(aFilename
|
31
|
-
valid_fname = aFilename
|
28
|
+
if File.exist?("#{aFilename}.skm")
|
29
|
+
valid_fname = "#{aFilename}.skm"
|
30
|
+
elsif File.exist?("#{aFilename}.scm")
|
31
|
+
valid_fname = "#{aFilename}.scm"
|
32
32
|
else
|
33
33
|
valid_fname = nil
|
34
34
|
end
|