loxxy 0.4.08 → 0.4.09

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: e7e447625d999f4b95129d7feff1586c6759cb929a8faaa82e3ecc94105d0268
4
- data.tar.gz: 00a4801454ffd09b2d4e810fd15d0f9b40fea13f46e6d4eed7eba4cab8d35ebe
3
+ metadata.gz: 8ece684c97fd1a382d69d7fb821bd33ca29b662c07230e1f305a9fb50e4abef1
4
+ data.tar.gz: 0400c4fe48329686f63d34693658c6a8960759ba10173958e0ef0c6b2b75880b
5
5
  SHA512:
6
- metadata.gz: 4a59f746cb7b8086ff3e1252c3fc0846229cb6927dcc4d62ad261c5e0c2fec4b1a75176cab6788cedb5c57a2fe9e7bec94d92d7dc63a2c455609a18761f78043
7
- data.tar.gz: 66f72710a3f422e4431c88c44b56419f727711c1fbf339491f1fcb2f8f18edb0f4a21ce49a66ee4325ccf3b2576b0b94490d74f96c922a9d340d476e43660881
6
+ metadata.gz: 373db901360190ef0cd84fa3142ec7705922a41d77ec36e3a2f6b8a0b74fbc27c6f0e6de00fc8c38122813a4333758a497b9a88fc372c977a558c8722c19dccb
7
+ data.tar.gz: a52c9d016e7761ce6b0415cf7c5a409a90106e96c8c18dd8d7e264f87bf43a293d7314bf3854164e809cc1c9cb8354e4c9b97d5d1f2f57d6730e0ecf229e4502
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ AllCops:
3
3
  - 'exp/**/*'
4
4
  - 'demo/**/*'
5
5
 
6
- Gemspec/DateAssignment:
6
+ Gemspec/DeprecatedAttributeAssignment:
7
7
  Enabled: true
8
8
 
9
9
  Layout/ArgumentAlignment:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## [0.4.09] - 2025-01-16
2
+ - Tested with MRI Ruby 3.4.1.
3
+ - Minor changes
4
+ - [NEW] Added `demo` folder
5
+ - [FIX] Some Rubocop 1.72.0 offences fixed.
6
+
1
7
  ## [0.4.08] - 2022-04-09
2
8
  - Refactoring of the `Scanner` class.
3
9
 
@@ -14,7 +20,6 @@
14
20
  - File `duplicate_local.lox` Fixed typo in error message.
15
21
  - File `duplicate_parameter.lox` Fixed typo in error message.
16
22
 
17
-
18
23
  ## [0.4.06] - 2021-11-01
19
24
  - Code update to cope with `Rley` v.0.8.08 changes
20
25
 
data/README.md CHANGED
@@ -19,8 +19,8 @@ Although __Lox__ is fairly simple, it is far from being a toy language:
19
19
  ### Loxxy gem features
20
20
  - Complete tree-walking interpreter including lexer, parser and resolver
21
21
  - 100% pure Ruby with clean design (not a port from some other language)
22
- - Passes the `jox` (THE reference `Lox` implementation) test suite
23
- - Can run a Lox imterpreter implemented in ... `Lox` [LoxLox](https://github.com/benhoyt/loxlox),
22
+ - Passes the `jlox` (THE reference `Lox` implementation) test suite
23
+ - Can run a Lox interpreter implemented in ... `Lox` [LoxLox](https://github.com/benhoyt/loxlox),
24
24
  - Minimal runtime dependency (Rley gem). Won't drag a bunch of gems...
25
25
  - Ruby API for integrating a Lox interpreter with your code.
26
26
  - A command-line interpreter `loxxy`
@@ -55,7 +55,7 @@ And then execute:
55
55
  Create a text file and enter the following lines:
56
56
  ```javascript
57
57
  // hello.lox
58
- // Your firs Lox program
58
+ // Your first Lox program
59
59
  print "Hello, world.";
60
60
  ```
61
61
 
@@ -326,7 +326,9 @@ lox_input = <<-LOX_END
326
326
  print "Hello, world!";
327
327
  LOX_END
328
328
 
329
-
329
+ lox = Loxxy::Interpreter.new
330
+ lox.evaluate(lox_program) # => Hello, world!
331
+ ```
330
332
 
331
333
  ## Suppported Lox language features
332
334
 
@@ -188,7 +188,7 @@ module Loxxy
188
188
  # rule('varDecl' => 'VAR IDENTIFIER (EQUAL expression)? SEMICOLON')
189
189
  def reduce_var_declaration(_production, _range, tokens, theChildren)
190
190
  var_name = theChildren[1].token.lexeme.dup
191
- init_val = theChildren[2] ? theChildren[2].last : nil
191
+ init_val = theChildren[2]&.last
192
192
  Ast::LoxVarStmt.new(tokens[1].position, var_name, init_val)
193
193
  end
194
194
 
@@ -260,7 +260,7 @@ module Loxxy
260
260
 
261
261
  # rule('returnStmt' => 'RETURN expression? SEMICOLON')
262
262
  def reduce_return_stmt(_production, _range, tokens, theChildren)
263
- ret_expr = theChildren[1].nil? ? nil : theChildren[1].first
263
+ ret_expr = theChildren[1]&.first
264
264
  Ast::LoxReturnStmt.new(tokens[1].position, ret_expr)
265
265
  end
266
266
 
@@ -178,7 +178,6 @@ module Loxxy
178
178
  resolve_local(aThisExpr, aVisitor)
179
179
  end
180
180
 
181
- # rubocop: disable Style/CaseLikeIf
182
181
  # rubocop: disable Style/StringConcatenation
183
182
  def after_super_expr(aSuperExpr, aVisitor)
184
183
  msg_prefix = "Error at 'super': Can't use 'super' "
@@ -195,7 +194,6 @@ module Loxxy
195
194
  resolve_local(aSuperExpr, aVisitor)
196
195
  end
197
196
  # rubocop: enable Style/StringConcatenation
198
- # rubocop: enable Style/CaseLikeIf
199
197
 
200
198
  # function declaration creates a new scope for its body & binds its parameters for that scope
201
199
  def before_fun_stmt(aFunStmt, aVisitor)
@@ -63,7 +63,6 @@ module Loxxy
63
63
  # one Lox number and a Ruby Numeric
64
64
  # @param other [Loxxy::Datatype::Number, Numeric]
65
65
  # @return [Loxxy::Datatype::Number]
66
- # rubocop: disable Lint/BinaryOperatorWithIdenticalOperands
67
66
  def /(other)
68
67
  case other
69
68
  when Number, Numeric
@@ -84,7 +83,6 @@ module Loxxy
84
83
  raise TypeError, err_msg
85
84
  end
86
85
  end
87
- # rubocop: enable Lint/BinaryOperatorWithIdenticalOperands
88
86
 
89
87
  # Unary minus (return value with changed sign)
90
88
  # @return [Loxxy::Datatype::Number]
@@ -67,7 +67,7 @@ module Loxxy
67
67
  @@keywords = %w[
68
68
  and class else false fun for if nil or
69
69
  print return super this true var while
70
- ].map { |x| [x, x] }.to_h
70
+ ].to_h { |x| [x, x] }
71
71
 
72
72
  # Single character that have a special meaning when escaped
73
73
  # @return [{Char => String}]
data/lib/loxxy/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Loxxy
4
- VERSION = '0.4.08'
4
+ VERSION = '0.4.09'
5
5
  end
data/loxxy.gemspec CHANGED
@@ -10,12 +10,10 @@ module PkgExtending
10
10
  file_list = Dir[
11
11
  '.rubocop.yml',
12
12
  '.rspec',
13
- '.travis.yml',
14
13
  '.yardopts',
15
14
  'Gemfile',
16
15
  'Rakefile',
17
16
  'CHANGELOG.md',
18
- 'CODE_OF_CONDUCT.md',
19
17
  'LICENSE.txt',
20
18
  'README.md',
21
19
  'loxxy.gemspec',
@@ -48,7 +46,7 @@ Gem::Specification.new do |spec|
48
46
  DESCR_END
49
47
  spec.homepage = 'https://github.com/famished-tiger/loxxy'
50
48
  spec.license = 'MIT'
51
- spec.required_ruby_version = '>= 2.5'
49
+ spec.required_ruby_version = '>= 2.6'
52
50
 
53
51
  spec.bindir = 'bin'
54
52
  spec.executables = ['loxxy']
@@ -58,10 +56,11 @@ Gem::Specification.new do |spec|
58
56
  PkgExtending.pkg_documentation(spec)
59
57
 
60
58
  # Runtime dependencies
61
- spec.add_dependency 'rley', '~> 0.8.08'
59
+ spec.add_dependency 'rley', '~> 0.8.10'
62
60
 
63
61
  # Development dependencies
64
- spec.add_development_dependency 'bundler', '~> 2.0'
65
- spec.add_development_dependency 'rake', '~> 12.0'
66
- spec.add_development_dependency 'rspec', '~> 3.0'
62
+ spec.add_development_dependency 'bundler', '~> 2.5.0'
63
+ spec.add_development_dependency 'rake', '~> 13.1.0'
64
+ spec.add_development_dependency 'rspec', '~> 3.12'
65
+ spec.add_development_dependency 'yard', '~> 0.9.34'
67
66
  end
@@ -15,7 +15,7 @@ module Loxxy
15
15
  subject { Engine.new(sample_options) }
16
16
 
17
17
  context 'Initialization:' do
18
- it 'should accept a option Hash at initialization' do
18
+ it 'should accept an option Hash at initialization' do
19
19
  expect { Engine.new(sample_options) }.not_to raise_error
20
20
  end
21
21
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: loxxy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.08
4
+ version: 0.4.09
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-04-09 00:00:00.000000000 Z
10
+ date: 2025-02-16 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rley
@@ -16,56 +15,70 @@ dependencies:
16
15
  requirements:
17
16
  - - "~>"
18
17
  - !ruby/object:Gem::Version
19
- version: 0.8.08
18
+ version: 0.8.10
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - "~>"
25
24
  - !ruby/object:Gem::Version
26
- version: 0.8.08
25
+ version: 0.8.10
27
26
  - !ruby/object:Gem::Dependency
28
27
  name: bundler
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - "~>"
32
31
  - !ruby/object:Gem::Version
33
- version: '2.0'
32
+ version: 2.5.0
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - "~>"
39
38
  - !ruby/object:Gem::Version
40
- version: '2.0'
39
+ version: 2.5.0
41
40
  - !ruby/object:Gem::Dependency
42
41
  name: rake
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '12.0'
46
+ version: 13.1.0
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '12.0'
53
+ version: 13.1.0
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: rspec
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '3.0'
60
+ version: '3.12'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '3.0'
67
+ version: '3.12'
68
+ - !ruby/object:Gem::Dependency
69
+ name: yard
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.9.34
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: 0.9.34
69
82
  description: |2
70
83
  A Ruby implementation of the Lox programming language. Lox is a dynamically typed,
71
84
  object-oriented programming language that features first-class functions, closures,
@@ -80,7 +93,6 @@ extra_rdoc_files:
80
93
  files:
81
94
  - ".rspec"
82
95
  - ".rubocop.yml"
83
- - ".travis.yml"
84
96
  - ".yardopts"
85
97
  - CHANGELOG.md
86
98
  - Gemfile
@@ -163,7 +175,6 @@ homepage: https://github.com/famished-tiger/loxxy
163
175
  licenses:
164
176
  - MIT
165
177
  metadata: {}
166
- post_install_message:
167
178
  rdoc_options:
168
179
  - --charset=UTF-8 --exclude="examples|spec"
169
180
  require_paths:
@@ -172,15 +183,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
183
  requirements:
173
184
  - - ">="
174
185
  - !ruby/object:Gem::Version
175
- version: '2.5'
186
+ version: '2.6'
176
187
  required_rubygems_version: !ruby/object:Gem::Requirement
177
188
  requirements:
178
189
  - - ">="
179
190
  - !ruby/object:Gem::Version
180
191
  version: '0'
181
192
  requirements: []
182
- rubygems_version: 3.3.3
183
- signing_key:
193
+ rubygems_version: 3.6.2
184
194
  specification_version: 4
185
195
  summary: An implementation of the Lox programming language.
186
196
  test_files:
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- ---
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.6.3
6
- before_install: gem install bundler -v 2.1.4