ibex 0.1.0

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 (118) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +43 -0
  3. data/CHANGELOG.md +30 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +194 -0
  6. data/Rakefile +25 -0
  7. data/Steepfile +10 -0
  8. data/docs/architecture.md +99 -0
  9. data/docs/compat-notes.md +37 -0
  10. data/docs/grammar-reference.md +127 -0
  11. data/docs/lexer-coverage.md +14 -0
  12. data/docs/phase10-extensions.md +27 -0
  13. data/docs/racc-migration.md +47 -0
  14. data/exe/ibex +6 -0
  15. data/gemfiles/Gemfile +7 -0
  16. data/gemfiles/Gemfile.lock +98 -0
  17. data/lib/ibex/analysis/sets.rb +194 -0
  18. data/lib/ibex/analysis.rb +8 -0
  19. data/lib/ibex/cli/counterexample_options.rb +38 -0
  20. data/lib/ibex/cli/outputs.rb +88 -0
  21. data/lib/ibex/cli.rb +333 -0
  22. data/lib/ibex/codegen/dot.rb +52 -0
  23. data/lib/ibex/codegen/html.rb +110 -0
  24. data/lib/ibex/codegen/rbs.rb +54 -0
  25. data/lib/ibex/codegen/report.rb +149 -0
  26. data/lib/ibex/codegen/ruby.rb +235 -0
  27. data/lib/ibex/codegen/symbol_labels.rb +18 -0
  28. data/lib/ibex/error.rb +7 -0
  29. data/lib/ibex/frontend/action_scanner.rb +266 -0
  30. data/lib/ibex/frontend/ast.rb +146 -0
  31. data/lib/ibex/frontend/bootstrap_parser.rb +163 -0
  32. data/lib/ibex/frontend/dsl.rb +196 -0
  33. data/lib/ibex/frontend/generated_parser.rb +434 -0
  34. data/lib/ibex/frontend/generated_parser_base.rb +273 -0
  35. data/lib/ibex/frontend/grammar.y +156 -0
  36. data/lib/ibex/frontend/lexer.rb +165 -0
  37. data/lib/ibex/frontend/parser/declarations.rb +163 -0
  38. data/lib/ibex/frontend/parser/rules.rb +154 -0
  39. data/lib/ibex/frontend/parser.rb +23 -0
  40. data/lib/ibex/frontend/regenerator.rb +41 -0
  41. data/lib/ibex/frontend/source_cursor.rb +94 -0
  42. data/lib/ibex/frontend/token_adapter/declaration_state.rb +248 -0
  43. data/lib/ibex/frontend/token_adapter/delimiter_tracker.rb +37 -0
  44. data/lib/ibex/frontend/token_adapter/rule_state.rb +162 -0
  45. data/lib/ibex/frontend/token_adapter.rb +108 -0
  46. data/lib/ibex/frontend.rb +28 -0
  47. data/lib/ibex/ir/automaton_ir.rb +109 -0
  48. data/lib/ibex/ir/grammar_ir.rb +192 -0
  49. data/lib/ibex/ir/serialize.rb +154 -0
  50. data/lib/ibex/ir.rb +53 -0
  51. data/lib/ibex/lalr/builder.rb +270 -0
  52. data/lib/ibex/lalr/conflict.rb +120 -0
  53. data/lib/ibex/lalr/conflict_search.rb +332 -0
  54. data/lib/ibex/lalr/conflict_search_limits.rb +39 -0
  55. data/lib/ibex/lalr/counterexample.rb +138 -0
  56. data/lib/ibex/lalr/default_reductions.rb +67 -0
  57. data/lib/ibex/lalr.rb +27 -0
  58. data/lib/ibex/normalize/declarations.rb +60 -0
  59. data/lib/ibex/normalize/diagnostics.rb +99 -0
  60. data/lib/ibex/normalize/expander.rb +218 -0
  61. data/lib/ibex/normalize/expression.rb +54 -0
  62. data/lib/ibex/normalize.rb +166 -0
  63. data/lib/ibex/runtime/parser.rb +360 -0
  64. data/lib/ibex/runtime.rb +8 -0
  65. data/lib/ibex/tables.rb +125 -0
  66. data/lib/ibex/version.rb +6 -0
  67. data/lib/ibex.rb +23 -0
  68. data/sig/ibex/analysis/sets.rbs +72 -0
  69. data/sig/ibex/analysis.rbs +6 -0
  70. data/sig/ibex/cli/counterexample_options.rbs +16 -0
  71. data/sig/ibex/cli/outputs.rbs +31 -0
  72. data/sig/ibex/cli.rbs +108 -0
  73. data/sig/ibex/codegen/dot.rbs +19 -0
  74. data/sig/ibex/codegen/html.rbs +35 -0
  75. data/sig/ibex/codegen/rbs.rbs +31 -0
  76. data/sig/ibex/codegen/report.rbs +39 -0
  77. data/sig/ibex/codegen/ruby.rbs +92 -0
  78. data/sig/ibex/codegen/symbol_labels.rbs +11 -0
  79. data/sig/ibex/error.rbs +7 -0
  80. data/sig/ibex/frontend/action_scanner.rbs +74 -0
  81. data/sig/ibex/frontend/ast.rbs +223 -0
  82. data/sig/ibex/frontend/bootstrap_parser.rbs +80 -0
  83. data/sig/ibex/frontend/dsl.rbs +124 -0
  84. data/sig/ibex/frontend/generated_parser.rbs +163 -0
  85. data/sig/ibex/frontend/generated_parser_base.rbs +114 -0
  86. data/sig/ibex/frontend/lexer.rbs +61 -0
  87. data/sig/ibex/frontend/parser/declarations.rbs +56 -0
  88. data/sig/ibex/frontend/parser/rules.rbs +48 -0
  89. data/sig/ibex/frontend/parser.rbs +16 -0
  90. data/sig/ibex/frontend/regenerator.rbs +16 -0
  91. data/sig/ibex/frontend/source_cursor.rbs +73 -0
  92. data/sig/ibex/frontend/token_adapter/declaration_state.rbs +97 -0
  93. data/sig/ibex/frontend/token_adapter/delimiter_tracker.rbs +25 -0
  94. data/sig/ibex/frontend/token_adapter/rule_state.rbs +77 -0
  95. data/sig/ibex/frontend/token_adapter.rbs +67 -0
  96. data/sig/ibex/frontend.rbs +15 -0
  97. data/sig/ibex/ir/automaton_ir.rbs +77 -0
  98. data/sig/ibex/ir/grammar_ir.rbs +143 -0
  99. data/sig/ibex/ir/serialize.rbs +50 -0
  100. data/sig/ibex/ir.rbs +43 -0
  101. data/sig/ibex/lalr/builder.rbs +85 -0
  102. data/sig/ibex/lalr/conflict.rbs +47 -0
  103. data/sig/ibex/lalr/conflict_search.rbs +131 -0
  104. data/sig/ibex/lalr/conflict_search_limits.rbs +29 -0
  105. data/sig/ibex/lalr/counterexample.rbs +53 -0
  106. data/sig/ibex/lalr/default_reductions.rbs +20 -0
  107. data/sig/ibex/lalr.rbs +23 -0
  108. data/sig/ibex/normalize/declarations.rbs +20 -0
  109. data/sig/ibex/normalize/diagnostics.rbs +32 -0
  110. data/sig/ibex/normalize/expander.rbs +66 -0
  111. data/sig/ibex/normalize/expression.rbs +21 -0
  112. data/sig/ibex/normalize.rbs +96 -0
  113. data/sig/ibex/runtime/parser.rbs +167 -0
  114. data/sig/ibex/runtime.rbs +6 -0
  115. data/sig/ibex/tables.rbs +50 -0
  116. data/sig/ibex/version.rbs +6 -0
  117. data/sig/ibex.rbs +6 -0
  118. metadata +161 -0
@@ -0,0 +1,167 @@
1
+ # Generated from lib/ibex/runtime/parser.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Runtime
5
+ # Parser-table shape understood by this runtime.
6
+ PARSER_TABLE_FORMAT_VERSION: Integer
7
+
8
+ # Raised by the default parser error handler.
9
+ class ParseError < StandardError
10
+ end
11
+
12
+ # Drives a table-defined LR parser without native extensions.
13
+ #
14
+ # Subclasses provide `.parser_tables`, returning `:tokens`, `:token_names`,
15
+ # `:actions`, `:gotos`, and `:productions`. Actions are represented by
16
+ # `[:shift, state]`, `[:reduce, production]`, `[:accept]`, or `[:error]`.
17
+ class Parser
18
+ EOF_TOKEN: Integer
19
+
20
+ ERROR_TOKEN: Integer
21
+
22
+ NO_LOOKAHEAD: Object
23
+
24
+ RECOVERY_SHIFTS: Integer
25
+
26
+ EMPTY_ROW: Hash[Integer, untyped]
27
+
28
+ @yydebug: bool
29
+
30
+ @yydebug_output: IO
31
+
32
+ @source: (^() -> untyped)?
33
+
34
+ @state_stack: Array[Integer]
35
+
36
+ @value_stack: Array[untyped]
37
+
38
+ @lookahead: untyped
39
+
40
+ @lookahead_value: untyped
41
+
42
+ @recovery_shifts: Integer
43
+
44
+ @semantic_error: bool
45
+
46
+ @accept_requested: bool
47
+
48
+ @unknown_token_id: Integer?
49
+
50
+ @unknown_token_name: String?
51
+
52
+ attr_accessor yydebug: bool
53
+
54
+ attr_writer yydebug_output: IO
55
+
56
+ # @rbs () -> void
57
+ def initialize: () -> void
58
+
59
+ # Pull tokens from `next_token` and parse them.
60
+ # @rbs () -> untyped
61
+ def do_parse: () -> untyped
62
+
63
+ # Parse tokens yielded by `receiver.method_id`.
64
+ # @rbs (untyped receiver, Symbol method_id) -> untyped
65
+ def yyparse: (untyped receiver, Symbol method_id) -> untyped
66
+
67
+ # Override in pull parsers. Return `[token, value]`, `false`, or `nil`.
68
+ # @rbs () -> ([untyped, untyped] | false | nil)
69
+ def next_token: () -> ([ untyped, untyped ] | false | nil)
70
+
71
+ # Override to recover from syntax errors. The default always raises.
72
+ # @rbs (Integer token_id, untyped value, Array[untyped] value_stack) -> untyped
73
+ def on_error: (Integer token_id, untyped value, Array[untyped] value_stack) -> untyped
74
+
75
+ # Called after an ordinary input token is shifted. Override to observe
76
+ # the internal token id, semantic value, and destination state.
77
+ # @rbs (Integer token_id, untyped value, Integer state) -> void
78
+ def on_shift: (Integer token_id, untyped value, Integer state) -> void
79
+
80
+ # Called after a production's semantic action and goto are committed.
81
+ # Override to observe its id, RHS values, and semantic result.
82
+ # @rbs (Integer production_id, Array[untyped] values, untyped result) -> void
83
+ def on_reduce: (Integer production_id, Array[untyped] values, untyped result) -> void
84
+
85
+ # Called after the synthetic error token enters a recovery state.
86
+ # The payload describes the original error before recovery popped stacks.
87
+ # @rbs (Integer token_id, untyped value, Array[untyped] value_stack) -> void
88
+ def on_error_recover: (Integer token_id, untyped value, Array[untyped] value_stack) -> void
89
+
90
+ # Return a human-readable name for an internal token id.
91
+ # @rbs (Integer token_id) -> String
92
+ def token_to_str: (Integer token_id) -> String
93
+
94
+ # Enter error recovery from a semantic action without calling `on_error`.
95
+ # @rbs () -> nil
96
+ def yyerror: () -> nil
97
+
98
+ # Leave error recovery immediately.
99
+ # @rbs () -> nil
100
+ def yyerrok: () -> nil
101
+
102
+ # Accept immediately after the current semantic action completes.
103
+ # @rbs () -> nil
104
+ def yyaccept: () -> nil
105
+
106
+ # Return token names accepted in the current parser state.
107
+ # @rbs () -> Array[String]
108
+ def expected_tokens: () -> Array[String]
109
+
110
+ private
111
+
112
+ # @rbs (^() -> untyped source) -> untyped
113
+ def drive_parser: (^() -> untyped source) -> untyped
114
+
115
+ # @rbs (^() -> untyped source) -> void
116
+ def prepare_parse: (^() -> untyped source) -> void
117
+
118
+ # @rbs () -> void
119
+ def validate_parser_table_format!: () -> void
120
+
121
+ # @rbs () -> untyped
122
+ def action_for_current_state: () -> untyped
123
+
124
+ # @rbs (untyped action) -> untyped
125
+ def perform: (untyped action) -> untyped
126
+
127
+ # @rbs (Integer next_state) -> untyped
128
+ def shift: (Integer next_state) -> untyped
129
+
130
+ # @rbs (Integer production_id) -> untyped
131
+ def reduce: (Integer production_id) -> untyped
132
+
133
+ # @rbs (Hash[Symbol, untyped] production, Array[untyped] values) -> untyped
134
+ def reduction_value: (Hash[Symbol, untyped] production, Array[untyped] values) -> untyped
135
+
136
+ # @rbs (?report: bool) -> untyped
137
+ def recover: (?report: bool) -> untyped
138
+
139
+ # @rbs () -> bool
140
+ def shift_error_token: () -> bool
141
+
142
+ # @rbs () -> void
143
+ def read_lookahead: () -> void
144
+
145
+ # @rbs () -> untyped
146
+ def read_external_token: () -> untyped
147
+
148
+ # @rbs (untyped external_token) -> Integer
149
+ def internal_token_id: (untyped external_token) -> Integer
150
+
151
+ # @rbs () -> Hash[Symbol, untyped]
152
+ def parser_tables: () -> Hash[Symbol, untyped]
153
+
154
+ # @rbs (untyped action) -> bool
155
+ def error_action?: (untyped action) -> bool
156
+
157
+ # @rbs (Integer state) -> untyped
158
+ def default_action: (Integer state) -> untyped
159
+
160
+ # @rbs (untyped table, Integer row, Integer column) -> untyped
161
+ def table_lookup: (untyped table, Integer row, Integer column) -> untyped
162
+
163
+ # @rbs (String message) -> void
164
+ def trace: (String message) -> void
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,6 @@
1
+ # Generated from lib/ibex/runtime.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ module Runtime
5
+ end
6
+ end
@@ -0,0 +1,50 @@
1
+ # Generated from lib/ibex/tables.rb with RBS::Inline
2
+
3
+ module Ibex
4
+ # Parser table construction and row-displacement compression.
5
+ module Tables
6
+ private def runtime_action: (IR::parser_action action) -> IR::runtime_action
7
+
8
+ private def self.runtime_action: (IR::parser_action action) -> IR::runtime_action
9
+
10
+ class TableSet < Struct[untyped]
11
+ attr_accessor actions(): untyped
12
+
13
+ attr_accessor gotos(): untyped
14
+
15
+ attr_accessor default_actions(): untyped
16
+
17
+ def self.new: (?actions: untyped, ?gotos: untyped, ?default_actions: untyped) -> instance
18
+ | ({ ?actions: untyped, ?gotos: untyped, ?default_actions: untyped }) -> instance
19
+ end
20
+
21
+ # Sparse table represented by per-row offsets and ownership checks.
22
+ class Compact
23
+ attr_reader offsets: Array[Integer]
24
+
25
+ attr_reader values: Array[untyped]
26
+
27
+ attr_reader checks: Array[Integer?]
28
+
29
+ attr_reader row_count: Integer
30
+
31
+ # @rbs (Array[Hash[Integer, untyped]] rows) -> Compact
32
+ def self.build: (Array[Hash[Integer, untyped]] rows) -> Compact
33
+
34
+ # @rbs (Array[Integer] columns, Array[Integer?] checks) -> Integer
35
+ private def self.find_offset: (Array[Integer] columns, Array[Integer?] checks) -> Integer
36
+
37
+ # @rbs (offsets: Array[Integer], values: Array[untyped], checks: Array[Integer?], row_count: Integer) -> void
38
+ def initialize: (offsets: Array[Integer], values: Array[untyped], checks: Array[Integer?], row_count: Integer) -> void
39
+
40
+ # @rbs (Integer row, Integer column) -> untyped
41
+ def lookup: (Integer row, Integer column) -> untyped
42
+
43
+ # @rbs (Integer row) -> Hash[Integer, untyped]
44
+ def row: (Integer row) -> Hash[Integer, untyped]
45
+ end
46
+
47
+ # @rbs (IR::Automaton automaton, ?format: Symbol | String) -> TableSet
48
+ def self?.build: (IR::Automaton automaton, ?format: Symbol | String) -> TableSet
49
+ end
50
+ end
@@ -0,0 +1,6 @@
1
+ # Generated from lib/ibex/version.rb with RBS::Inline
2
+
3
+ # Ibex generates and runs Pure Ruby LR parsers.
4
+ module Ibex
5
+ VERSION: ::String
6
+ end
data/sig/ibex.rbs ADDED
@@ -0,0 +1,6 @@
1
+ # Generated from lib/ibex.rb with RBS::Inline
2
+
3
+ # Ibex generates and runs Pure Ruby LR parsers.
4
+ module Ibex
5
+ ParseError: singleton(Runtime::ParseError)
6
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ibex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yudai Takada
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: Ibex generates LR parsers from racc-compatible grammars without native
13
+ extensions.
14
+ email:
15
+ - t.yudai92@gmail.com
16
+ executables:
17
+ - ibex
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - ".rubocop.yml"
22
+ - CHANGELOG.md
23
+ - LICENSE.txt
24
+ - README.md
25
+ - Rakefile
26
+ - Steepfile
27
+ - docs/architecture.md
28
+ - docs/compat-notes.md
29
+ - docs/grammar-reference.md
30
+ - docs/lexer-coverage.md
31
+ - docs/phase10-extensions.md
32
+ - docs/racc-migration.md
33
+ - exe/ibex
34
+ - gemfiles/Gemfile
35
+ - gemfiles/Gemfile.lock
36
+ - lib/ibex.rb
37
+ - lib/ibex/analysis.rb
38
+ - lib/ibex/analysis/sets.rb
39
+ - lib/ibex/cli.rb
40
+ - lib/ibex/cli/counterexample_options.rb
41
+ - lib/ibex/cli/outputs.rb
42
+ - lib/ibex/codegen/dot.rb
43
+ - lib/ibex/codegen/html.rb
44
+ - lib/ibex/codegen/rbs.rb
45
+ - lib/ibex/codegen/report.rb
46
+ - lib/ibex/codegen/ruby.rb
47
+ - lib/ibex/codegen/symbol_labels.rb
48
+ - lib/ibex/error.rb
49
+ - lib/ibex/frontend.rb
50
+ - lib/ibex/frontend/action_scanner.rb
51
+ - lib/ibex/frontend/ast.rb
52
+ - lib/ibex/frontend/bootstrap_parser.rb
53
+ - lib/ibex/frontend/dsl.rb
54
+ - lib/ibex/frontend/generated_parser.rb
55
+ - lib/ibex/frontend/generated_parser_base.rb
56
+ - lib/ibex/frontend/grammar.y
57
+ - lib/ibex/frontend/lexer.rb
58
+ - lib/ibex/frontend/parser.rb
59
+ - lib/ibex/frontend/parser/declarations.rb
60
+ - lib/ibex/frontend/parser/rules.rb
61
+ - lib/ibex/frontend/regenerator.rb
62
+ - lib/ibex/frontend/source_cursor.rb
63
+ - lib/ibex/frontend/token_adapter.rb
64
+ - lib/ibex/frontend/token_adapter/declaration_state.rb
65
+ - lib/ibex/frontend/token_adapter/delimiter_tracker.rb
66
+ - lib/ibex/frontend/token_adapter/rule_state.rb
67
+ - lib/ibex/ir.rb
68
+ - lib/ibex/ir/automaton_ir.rb
69
+ - lib/ibex/ir/grammar_ir.rb
70
+ - lib/ibex/ir/serialize.rb
71
+ - lib/ibex/lalr.rb
72
+ - lib/ibex/lalr/builder.rb
73
+ - lib/ibex/lalr/conflict.rb
74
+ - lib/ibex/lalr/conflict_search.rb
75
+ - lib/ibex/lalr/conflict_search_limits.rb
76
+ - lib/ibex/lalr/counterexample.rb
77
+ - lib/ibex/lalr/default_reductions.rb
78
+ - lib/ibex/normalize.rb
79
+ - lib/ibex/normalize/declarations.rb
80
+ - lib/ibex/normalize/diagnostics.rb
81
+ - lib/ibex/normalize/expander.rb
82
+ - lib/ibex/normalize/expression.rb
83
+ - lib/ibex/runtime.rb
84
+ - lib/ibex/runtime/parser.rb
85
+ - lib/ibex/tables.rb
86
+ - lib/ibex/version.rb
87
+ - sig/ibex.rbs
88
+ - sig/ibex/analysis.rbs
89
+ - sig/ibex/analysis/sets.rbs
90
+ - sig/ibex/cli.rbs
91
+ - sig/ibex/cli/counterexample_options.rbs
92
+ - sig/ibex/cli/outputs.rbs
93
+ - sig/ibex/codegen/dot.rbs
94
+ - sig/ibex/codegen/html.rbs
95
+ - sig/ibex/codegen/rbs.rbs
96
+ - sig/ibex/codegen/report.rbs
97
+ - sig/ibex/codegen/ruby.rbs
98
+ - sig/ibex/codegen/symbol_labels.rbs
99
+ - sig/ibex/error.rbs
100
+ - sig/ibex/frontend.rbs
101
+ - sig/ibex/frontend/action_scanner.rbs
102
+ - sig/ibex/frontend/ast.rbs
103
+ - sig/ibex/frontend/bootstrap_parser.rbs
104
+ - sig/ibex/frontend/dsl.rbs
105
+ - sig/ibex/frontend/generated_parser.rbs
106
+ - sig/ibex/frontend/generated_parser_base.rbs
107
+ - sig/ibex/frontend/lexer.rbs
108
+ - sig/ibex/frontend/parser.rbs
109
+ - sig/ibex/frontend/parser/declarations.rbs
110
+ - sig/ibex/frontend/parser/rules.rbs
111
+ - sig/ibex/frontend/regenerator.rbs
112
+ - sig/ibex/frontend/source_cursor.rbs
113
+ - sig/ibex/frontend/token_adapter.rbs
114
+ - sig/ibex/frontend/token_adapter/declaration_state.rbs
115
+ - sig/ibex/frontend/token_adapter/delimiter_tracker.rbs
116
+ - sig/ibex/frontend/token_adapter/rule_state.rbs
117
+ - sig/ibex/ir.rbs
118
+ - sig/ibex/ir/automaton_ir.rbs
119
+ - sig/ibex/ir/grammar_ir.rbs
120
+ - sig/ibex/ir/serialize.rbs
121
+ - sig/ibex/lalr.rbs
122
+ - sig/ibex/lalr/builder.rbs
123
+ - sig/ibex/lalr/conflict.rbs
124
+ - sig/ibex/lalr/conflict_search.rbs
125
+ - sig/ibex/lalr/conflict_search_limits.rbs
126
+ - sig/ibex/lalr/counterexample.rbs
127
+ - sig/ibex/lalr/default_reductions.rbs
128
+ - sig/ibex/normalize.rbs
129
+ - sig/ibex/normalize/declarations.rbs
130
+ - sig/ibex/normalize/diagnostics.rbs
131
+ - sig/ibex/normalize/expander.rbs
132
+ - sig/ibex/normalize/expression.rbs
133
+ - sig/ibex/runtime.rbs
134
+ - sig/ibex/runtime/parser.rbs
135
+ - sig/ibex/tables.rbs
136
+ - sig/ibex/version.rbs
137
+ homepage: https://github.com/ydah/ibex
138
+ licenses:
139
+ - MIT
140
+ metadata:
141
+ homepage_uri: https://github.com/ydah/ibex
142
+ source_code_uri: https://github.com/ydah/ibex/tree/main
143
+ rubygems_mfa_required: 'true'
144
+ rdoc_options: []
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: 3.0.0
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ requirements: []
158
+ rubygems_version: 4.0.6
159
+ specification_version: 4
160
+ summary: A Pure Ruby LR parser generator
161
+ test_files: []