parsanol 1.3.5-aarch64-linux → 1.3.7-aarch64-linux

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +48 -48
  3. data/lib/parsanol/ast_visitor.rb +1 -1
  4. data/lib/parsanol/atoms/alternative.rb +3 -2
  5. data/lib/parsanol/atoms/base.rb +12 -6
  6. data/lib/parsanol/atoms/can_flatten.rb +8 -8
  7. data/lib/parsanol/atoms/context.rb +23 -16
  8. data/lib/parsanol/atoms/custom.rb +2 -2
  9. data/lib/parsanol/atoms/dynamic.rb +1 -1
  10. data/lib/parsanol/atoms/infix.rb +10 -5
  11. data/lib/parsanol/atoms/lookahead.rb +7 -4
  12. data/lib/parsanol/atoms/re.rb +1 -1
  13. data/lib/parsanol/atoms/repetition.rb +29 -11
  14. data/lib/parsanol/atoms/sequence.rb +3 -2
  15. data/lib/parsanol/atoms/str.rb +9 -3
  16. data/lib/parsanol/atoms.rb +20 -20
  17. data/lib/parsanol/builder_callbacks.rb +2 -2
  18. data/lib/parsanol/cause.rb +2 -2
  19. data/lib/parsanol/context.rb +2 -2
  20. data/lib/parsanol/error_reporter.rb +5 -5
  21. data/lib/parsanol/expression/treetop.rb +17 -17
  22. data/lib/parsanol/expression.rb +1 -1
  23. data/lib/parsanol/fast_mode.rb +50 -12
  24. data/lib/parsanol/first_set.rb +1 -1
  25. data/lib/parsanol/grammar_builder.rb +10 -8
  26. data/lib/parsanol/incremental_parser.rb +13 -8
  27. data/lib/parsanol/interval_tree.rb +12 -3
  28. data/lib/parsanol/lazy_result.rb +2 -2
  29. data/lib/parsanol/mermaid.rb +12 -9
  30. data/lib/parsanol/native/batch_decoder.rb +13 -9
  31. data/lib/parsanol/native/dynamic.rb +7 -6
  32. data/lib/parsanol/native/parser.rb +7 -5
  33. data/lib/parsanol/native/serializer.rb +42 -42
  34. data/lib/parsanol/native/transformer.rb +55 -28
  35. data/lib/parsanol/native/types.rb +3 -3
  36. data/lib/parsanol/native.rb +26 -20
  37. data/lib/parsanol/optimizer.rb +6 -6
  38. data/lib/parsanol/optimizers/choice_optimizer.rb +1 -1
  39. data/lib/parsanol/optimizers/cut_inserter.rb +5 -2
  40. data/lib/parsanol/optimizers/lookahead_optimizer.rb +9 -3
  41. data/lib/parsanol/optimizers/quantifier_optimizer.rb +5 -5
  42. data/lib/parsanol/optimizers/sequence_optimizer.rb +1 -1
  43. data/lib/parsanol/options/zero_copy.rb +1 -1
  44. data/lib/parsanol/options.rb +1 -1
  45. data/lib/parsanol/parallel.rb +4 -3
  46. data/lib/parsanol/parser.rb +18 -16
  47. data/lib/parsanol/parslet.rb +7 -7
  48. data/lib/parsanol/pattern/binding.rb +1 -1
  49. data/lib/parsanol/pattern.rb +4 -1
  50. data/lib/parsanol/pool.rb +3 -3
  51. data/lib/parsanol/pools/buffer_pool.rb +2 -2
  52. data/lib/parsanol/pools/position_pool.rb +2 -2
  53. data/lib/parsanol/position.rb +1 -1
  54. data/lib/parsanol/result_builder.rb +4 -4
  55. data/lib/parsanol/result_stream.rb +10 -5
  56. data/lib/parsanol/slice.rb +11 -8
  57. data/lib/parsanol/source.rb +14 -9
  58. data/lib/parsanol/source_location.rb +1 -1
  59. data/lib/parsanol/streaming_parser.rb +3 -3
  60. data/lib/parsanol/string_view.rb +4 -1
  61. data/lib/parsanol/transform.rb +2 -2
  62. data/lib/parsanol/version.rb +1 -1
  63. data/lib/parsanol/wasm_parser.rb +1 -1
  64. data/lib/parsanol.rb +37 -39
  65. data/parsanol.gemspec +30 -30
  66. metadata +1 -1
@@ -74,7 +74,7 @@ module Parsanol
74
74
 
75
75
  SourceSpan.new(
76
76
  start_pos: [@start, other.start].min_by(&:offset),
77
- end_pos: [@end, other.end].max_by(&:offset)
77
+ end_pos: [@end, other.end].max_by(&:offset),
78
78
  )
79
79
  end
80
80
 
@@ -37,7 +37,7 @@ module Parsanol
37
37
  @native_parser = nil
38
38
  end
39
39
 
40
- @buffer = String.new
40
+ @buffer = +""
41
41
  @position = 0
42
42
  end
43
43
 
@@ -65,7 +65,7 @@ module Parsanol
65
65
  else
66
66
  # Pure Ruby fallback - not supported
67
67
  raise NotImplementedError,
68
- 'Streaming parser requires native extension for full functionality.'
68
+ "Streaming parser requires native extension for full functionality."
69
69
  end
70
70
  end
71
71
 
@@ -106,7 +106,7 @@ module Parsanol
106
106
 
107
107
  # Reset the parser for reuse
108
108
  def reset
109
- @buffer = String.new
109
+ @buffer = +""
110
110
  @position = 0
111
111
 
112
112
  return unless @native_parser
@@ -146,7 +146,10 @@ module Parsanol
146
146
  #
147
147
  def slice(start, len)
148
148
  # Handle edge cases
149
- return self.class.new(@string, offset: @offset, length: 0) if len <= 0 || start >= @length
149
+ if len <= 0 || start >= @length
150
+ return self.class.new(@string, offset: @offset,
151
+ length: 0)
152
+ end
150
153
 
151
154
  # Clamp start to valid range [0, @length)
152
155
  clamped_start = [[start, 0].max, @length].min
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'parsanol/pattern'
3
+ require "parsanol/pattern"
4
4
 
5
5
  # Tree transformation engine for converting parse trees into abstract syntax trees.
6
6
  #
@@ -223,4 +223,4 @@ module Parsanol
223
223
  end
224
224
  end
225
225
 
226
- require 'parsanol/context'
226
+ require "parsanol/context"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Parsanol
4
- VERSION = '1.3.5'
4
+ VERSION = "1.3.7"
5
5
  end
@@ -218,7 +218,7 @@ module Parsanol
218
218
  end
219
219
  end
220
220
  i += chunks
221
- key = key_bytes.pack('C*').force_encoding('UTF-8')
221
+ key = key_bytes.pack("C*").force_encoding("UTF-8")
222
222
  stack << key
223
223
  else
224
224
  raise "Unknown tag: #{tag} at index #{i}"
data/lib/parsanol.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'set'
4
-
5
3
  # Parsanol - A high-performance PEG parser construction library for Ruby.
6
4
  #
7
5
  # Typical usage:
@@ -148,7 +146,7 @@ module Parsanol
148
146
  #
149
147
  # @return [Parsanol::Atoms::Re] regex atom matching '.'
150
148
  def any
151
- Atoms::Re.new('.')
149
+ Atoms::Re.new(".")
152
150
  end
153
151
  module_function :any
154
152
 
@@ -179,8 +177,8 @@ module Parsanol
179
177
  # @param operators [Array<Array>] operator definitions
180
178
  # @yield optional block to customize result tree structure
181
179
  # @return [Parsanol::Atoms::Infix] infix parser
182
- def infix_expression(operand, *operators, &combiner)
183
- Atoms::Infix.new(operand, operators, &combiner)
180
+ def infix_expression(operand, *operators, &)
181
+ Atoms::Infix.new(operand, operators, &)
184
182
  end
185
183
  module_function :infix_expression
186
184
 
@@ -237,44 +235,44 @@ module Parsanol
237
235
  end
238
236
  module_function :exp
239
237
 
240
- autoload :Expression, 'parsanol/expression'
238
+ autoload :Expression, "parsanol/expression"
241
239
  end
242
240
 
243
- require 'parsanol/version'
244
- require 'parsanol/resettable'
245
- require 'parsanol/result'
246
- require 'parsanol/slice'
247
- require 'parsanol/string_view'
248
- require 'parsanol/rope'
249
- require 'parsanol/pool'
250
- require 'parsanol/pools/slice_pool'
251
- require 'parsanol/pools/array_pool'
252
- require 'parsanol/pools/position_pool'
253
- require 'parsanol/buffer'
254
- require 'parsanol/pools/buffer_pool'
255
- require 'parsanol/lazy_result'
256
- require 'parsanol/result_builder'
257
- require 'parsanol/first_set'
258
- require 'parsanol/cause'
259
- require 'parsanol/source'
260
- require 'parsanol/atoms'
261
- require 'parsanol/pattern'
262
- require 'parsanol/pattern/binding'
263
- require 'parsanol/transform'
264
- require 'parsanol/parser'
265
- require 'parsanol/error_reporter'
266
- require 'parsanol/scope'
267
- require 'parsanol/optimizer'
268
- require 'parsanol/options'
269
- require 'parsanol/native'
241
+ require "parsanol/version"
242
+ require "parsanol/resettable"
243
+ require "parsanol/result"
244
+ require "parsanol/slice"
245
+ require "parsanol/string_view"
246
+ require "parsanol/rope"
247
+ require "parsanol/pool"
248
+ require "parsanol/pools/slice_pool"
249
+ require "parsanol/pools/array_pool"
250
+ require "parsanol/pools/position_pool"
251
+ require "parsanol/buffer"
252
+ require "parsanol/pools/buffer_pool"
253
+ require "parsanol/lazy_result"
254
+ require "parsanol/result_builder"
255
+ require "parsanol/first_set"
256
+ require "parsanol/cause"
257
+ require "parsanol/source"
258
+ require "parsanol/atoms"
259
+ require "parsanol/pattern"
260
+ require "parsanol/pattern/binding"
261
+ require "parsanol/transform"
262
+ require "parsanol/parser"
263
+ require "parsanol/error_reporter"
264
+ require "parsanol/scope"
265
+ require "parsanol/optimizer"
266
+ require "parsanol/options"
267
+ require "parsanol/native"
270
268
 
271
269
  # New features (require native extension for full functionality)
272
- require 'parsanol/source_location'
273
- require 'parsanol/grammar_builder'
274
- require 'parsanol/streaming_parser'
275
- require 'parsanol/incremental_parser'
276
- require 'parsanol/builder_callbacks'
277
- require 'parsanol/parallel'
270
+ require "parsanol/source_location"
271
+ require "parsanol/grammar_builder"
272
+ require "parsanol/streaming_parser"
273
+ require "parsanol/incremental_parser"
274
+ require "parsanol/builder_callbacks"
275
+ require "parsanol/parallel"
278
276
 
279
277
  # Add GrammarBuilder DSL to Parsanol module
280
278
  Parsanol.extend(Parsanol::GrammarBuilderDSL)
data/parsanol.gemspec CHANGED
@@ -1,35 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'lib/parsanol/version'
3
+ require_relative "lib/parsanol/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = 'parsanol'
6
+ spec.name = "parsanol"
7
7
  spec.version = Parsanol::VERSION
8
8
  spec.platform = Gem::Platform::RUBY
9
9
 
10
- spec.authors = ['Ribose Inc.']
11
- spec.email = ['open.source@ribose.com']
10
+ spec.authors = ["Ribose Inc."]
11
+ spec.email = ["open.source@ribose.com"]
12
12
 
13
- spec.summary = 'Parser construction library with great error reporting in Ruby.'
14
- spec.description = 'A small Ruby library for constructing parsers in the PEG (Parsing Expression Grammar) fashion. ' \
15
- 'Parsanol provides Parslet-compatible API with additional features including ' \
16
- 'static frozen parsers and dynamic parsers, with optional Rust native extension for improved performance.'
17
- spec.homepage = 'https://github.com/parsanol/parsanol-ruby'
18
- spec.license = 'MIT'
13
+ spec.summary = "Parser construction library with great error reporting in Ruby."
14
+ spec.description = "A small Ruby library for constructing parsers in the PEG (Parsing Expression Grammar) fashion. " \
15
+ "Parsanol provides Parslet-compatible API with additional features including " \
16
+ "static frozen parsers and dynamic parsers, with optional Rust native extension for improved performance."
17
+ spec.homepage = "https://github.com/parsanol/parsanol-ruby"
18
+ spec.license = "MIT"
19
19
 
20
20
  spec.metadata = {
21
- 'bug_tracker_uri' => 'https://github.com/parsanol/parsanol-ruby/issues',
22
- 'changelog_uri' => 'https://github.com/parsanol/parsanol-ruby/blob/main/HISTORY.txt',
23
- 'documentation_uri' => 'https://parsanol.github.io/parsanol-ruby/',
24
- 'homepage_uri' => 'https://github.com/parsanol/parsanol-ruby',
25
- 'source_code_uri' => 'https://github.com/parsanol/parsanol-ruby',
26
- 'rubygems_mfa_required' => 'true'
21
+ "bug_tracker_uri" => "https://github.com/parsanol/parsanol-ruby/issues",
22
+ "changelog_uri" => "https://github.com/parsanol/parsanol-ruby/blob/main/HISTORY.txt",
23
+ "documentation_uri" => "https://parsanol.github.io/parsanol-ruby/",
24
+ "homepage_uri" => "https://github.com/parsanol/parsanol-ruby",
25
+ "source_code_uri" => "https://github.com/parsanol/parsanol-ruby",
26
+ "rubygems_mfa_required" => "true",
27
27
  }
28
28
 
29
29
  # Rust extension
30
- spec.extensions = ['ext/parsanol_native/extconf.rb']
30
+ spec.extensions = ["ext/parsanol_native/extconf.rb"]
31
31
 
32
- spec.files = Dir.glob('{lib,ext}/**/*') + %w[
32
+ spec.files = Dir.glob("{lib,ext}/**/*") + %w[
33
33
  HISTORY.txt
34
34
  LICENSE
35
35
  Rakefile
@@ -40,28 +40,28 @@ Gem::Specification.new do |spec|
40
40
  ]
41
41
  spec.files.reject! { |f| File.directory?(f) }
42
42
  spec.files.reject! { |f| f =~ /\.(dll|so|dylib|lib|bundle)\Z/ }
43
- spec.require_paths = ['lib']
43
+ spec.require_paths = ["lib"]
44
44
 
45
- spec.required_ruby_version = '>= 3.2.0'
45
+ spec.required_ruby_version = ">= 3.2.0"
46
46
 
47
47
  # Required for Rust extension
48
- spec.add_dependency 'rb_sys', '~> 0.9.39'
48
+ spec.add_dependency "rb_sys", "~> 0.9.39"
49
49
 
50
- spec.add_development_dependency 'rake', '~> 13.0'
51
- spec.add_development_dependency 'rake-compiler', '~> 1.2.0'
52
- spec.add_development_dependency 'rdoc', '~> 6.0'
53
- spec.add_development_dependency 'rspec', '~> 3.0'
50
+ spec.add_development_dependency "rake", "~> 13.0"
51
+ spec.add_development_dependency "rake-compiler", "~> 1.2.0"
52
+ spec.add_development_dependency "rdoc", "~> 6.0"
53
+ spec.add_development_dependency "rspec", "~> 3.0"
54
54
 
55
55
  # For code style checking
56
- spec.add_development_dependency 'rubocop', '~> 1.0'
56
+ spec.add_development_dependency "rubocop", "~> 1.0"
57
57
 
58
58
  # For Parslet compatibility verification
59
- spec.add_development_dependency 'parslet', '~> 2.0.0'
59
+ spec.add_development_dependency "parslet", "~> 2.0.0"
60
60
 
61
61
  # For benchmarking
62
- spec.add_development_dependency 'benchmark-ips', '~> 2.0'
62
+ spec.add_development_dependency "benchmark-ips", "~> 2.0"
63
63
 
64
64
  # For type checking
65
- spec.add_development_dependency 'rbs', '~> 3.0'
66
- spec.add_development_dependency 'steep', '~> 1.0'
65
+ spec.add_development_dependency "rbs", "~> 3.0"
66
+ spec.add_development_dependency "steep", "~> 1.0"
67
67
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parsanol
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.5
4
+ version: 1.3.7
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - Ribose Inc.