lrama 0.7.0 → 0.7.1

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 (260) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -0
  3. data/.github/workflows/codespell.yaml +1 -1
  4. data/.github/workflows/gh-pages.yml +5 -6
  5. data/.github/workflows/test.yaml +25 -14
  6. data/Gemfile +4 -3
  7. data/NEWS.md +370 -35
  8. data/README.md +7 -88
  9. data/Rakefile +3 -2
  10. data/Steepfile +11 -5
  11. data/doc/Index.md +1 -1
  12. data/doc/development/compressed_state_table/parser.rb +2 -0
  13. data/doc/development/profiling.md +44 -0
  14. data/exe/lrama +1 -1
  15. data/lib/lrama/bitmap.rb +18 -5
  16. data/lib/lrama/command.rb +95 -43
  17. data/lib/lrama/context.rb +22 -24
  18. data/lib/lrama/counterexamples/derivation.rb +14 -4
  19. data/lib/lrama/counterexamples/example.rb +47 -22
  20. data/lib/lrama/counterexamples/node.rb +30 -0
  21. data/lib/lrama/counterexamples/path.rb +12 -14
  22. data/lib/lrama/counterexamples/state_item.rb +24 -1
  23. data/lib/lrama/counterexamples/triple.rb +27 -9
  24. data/lib/lrama/counterexamples.rb +216 -88
  25. data/lib/lrama/diagram.rb +77 -0
  26. data/lib/lrama/digraph.rb +28 -7
  27. data/lib/lrama/erb.rb +29 -0
  28. data/lib/lrama/grammar/auxiliary.rb +6 -1
  29. data/lib/lrama/grammar/binding.rb +37 -25
  30. data/lib/lrama/grammar/code/destructor_code.rb +11 -0
  31. data/lib/lrama/grammar/code/initial_action_code.rb +3 -0
  32. data/lib/lrama/grammar/code/no_reference_code.rb +3 -0
  33. data/lib/lrama/grammar/code/printer_code.rb +11 -0
  34. data/lib/lrama/grammar/code/rule_action.rb +17 -0
  35. data/lib/lrama/grammar/code.rb +16 -1
  36. data/lib/lrama/grammar/counter.rb +10 -0
  37. data/lib/lrama/grammar/destructor.rb +14 -1
  38. data/lib/lrama/grammar/error_token.rb +14 -1
  39. data/lib/lrama/grammar/inline/resolver.rb +80 -0
  40. data/lib/lrama/grammar/inline.rb +3 -0
  41. data/lib/lrama/grammar/{parameterizing_rule → parameterized}/resolver.rb +19 -8
  42. data/lib/lrama/grammar/{parameterizing_rule → parameterized}/rhs.rb +7 -2
  43. data/lib/lrama/grammar/parameterized/rule.rb +36 -0
  44. data/lib/lrama/grammar/parameterized.rb +5 -0
  45. data/lib/lrama/grammar/percent_code.rb +12 -1
  46. data/lib/lrama/grammar/precedence.rb +43 -1
  47. data/lib/lrama/grammar/printer.rb +9 -0
  48. data/lib/lrama/grammar/reference.rb +13 -0
  49. data/lib/lrama/grammar/rule.rb +61 -1
  50. data/lib/lrama/grammar/rule_builder.rb +84 -69
  51. data/lib/lrama/grammar/stdlib.y +68 -48
  52. data/lib/lrama/grammar/symbol.rb +63 -19
  53. data/lib/lrama/grammar/symbols/resolver.rb +64 -3
  54. data/lib/lrama/grammar/type.rb +13 -1
  55. data/lib/lrama/grammar/union.rb +12 -1
  56. data/lib/lrama/grammar.rb +231 -35
  57. data/lib/lrama/lexer/location.rb +25 -8
  58. data/lib/lrama/lexer/token/base.rb +73 -0
  59. data/lib/lrama/lexer/token/char.rb +15 -2
  60. data/lib/lrama/lexer/token/empty.rb +14 -0
  61. data/lib/lrama/lexer/token/ident.rb +2 -2
  62. data/lib/lrama/lexer/token/instantiate_rule.rb +4 -4
  63. data/lib/lrama/lexer/token/int.rb +14 -0
  64. data/lib/lrama/lexer/token/str.rb +11 -0
  65. data/lib/lrama/lexer/token/tag.rb +2 -2
  66. data/lib/lrama/lexer/token/token.rb +11 -0
  67. data/lib/lrama/lexer/token/user_code.rb +63 -37
  68. data/lib/lrama/lexer/token.rb +6 -56
  69. data/lib/lrama/lexer.rb +51 -23
  70. data/lib/lrama/logger.rb +12 -2
  71. data/lib/lrama/option_parser.rb +63 -9
  72. data/lib/lrama/options.rb +25 -7
  73. data/lib/lrama/output.rb +4 -11
  74. data/lib/lrama/parser.rb +854 -723
  75. data/lib/lrama/reporter/conflicts.rb +44 -0
  76. data/lib/lrama/reporter/grammar.rb +39 -0
  77. data/lib/lrama/reporter/precedences.rb +54 -0
  78. data/lib/lrama/reporter/profile/call_stack.rb +45 -0
  79. data/lib/lrama/reporter/profile/memory.rb +44 -0
  80. data/lib/lrama/reporter/profile.rb +4 -0
  81. data/lib/lrama/reporter/rules.rb +43 -0
  82. data/lib/lrama/reporter/states.rb +387 -0
  83. data/lib/lrama/reporter/terms.rb +44 -0
  84. data/lib/lrama/reporter.rb +39 -0
  85. data/lib/lrama/state/action/goto.rb +33 -0
  86. data/lib/lrama/state/action/reduce.rb +71 -0
  87. data/lib/lrama/state/action/shift.rb +39 -0
  88. data/lib/lrama/state/action.rb +5 -0
  89. data/lib/lrama/state/inadequacy_annotation.rb +140 -0
  90. data/lib/lrama/{states → state}/item.rb +33 -4
  91. data/lib/lrama/state/reduce_reduce_conflict.rb +14 -1
  92. data/lib/lrama/state/resolved_conflict.rb +38 -4
  93. data/lib/lrama/state/shift_reduce_conflict.rb +14 -1
  94. data/lib/lrama/state.rb +301 -200
  95. data/lib/lrama/states.rb +447 -175
  96. data/lib/lrama/tracer/actions.rb +22 -0
  97. data/lib/lrama/tracer/closure.rb +30 -0
  98. data/lib/lrama/tracer/duration.rb +38 -0
  99. data/lib/lrama/tracer/only_explicit_rules.rb +24 -0
  100. data/lib/lrama/tracer/rules.rb +23 -0
  101. data/lib/lrama/tracer/state.rb +33 -0
  102. data/lib/lrama/tracer.rb +51 -0
  103. data/lib/lrama/version.rb +2 -1
  104. data/lib/lrama/warnings/conflicts.rb +27 -0
  105. data/lib/lrama/warnings/implicit_empty.rb +29 -0
  106. data/lib/lrama/warnings/name_conflicts.rb +63 -0
  107. data/lib/lrama/warnings/redefined_rules.rb +23 -0
  108. data/lib/lrama/warnings/required.rb +23 -0
  109. data/lib/lrama/warnings/useless_precedence.rb +25 -0
  110. data/lib/lrama/warnings.rb +33 -0
  111. data/lib/lrama.rb +5 -5
  112. data/parser.y +495 -404
  113. data/rbs_collection.lock.yaml +27 -3
  114. data/rbs_collection.yaml +2 -0
  115. data/sig/generated/lrama/bitmap.rbs +12 -4
  116. data/sig/generated/lrama/counterexamples/derivation.rbs +36 -0
  117. data/sig/generated/lrama/counterexamples/example.rbs +58 -0
  118. data/sig/generated/lrama/counterexamples/node.rbs +18 -0
  119. data/sig/generated/lrama/counterexamples/path.rbs +23 -0
  120. data/sig/generated/lrama/counterexamples/state_item.rbs +19 -0
  121. data/sig/generated/lrama/counterexamples/triple.rbs +32 -0
  122. data/sig/generated/lrama/counterexamples.rbs +98 -0
  123. data/sig/generated/lrama/diagram.rbs +34 -0
  124. data/sig/generated/lrama/digraph.rbs +26 -6
  125. data/sig/generated/lrama/erb.rbs +14 -0
  126. data/sig/generated/lrama/grammar/auxiliary.rbs +16 -0
  127. data/sig/generated/lrama/grammar/binding.rbs +18 -12
  128. data/sig/generated/lrama/grammar/code/destructor_code.rbs +26 -0
  129. data/sig/{lrama → generated/lrama}/grammar/code/initial_action_code.rbs +6 -0
  130. data/sig/{lrama → generated/lrama}/grammar/code/no_reference_code.rbs +6 -0
  131. data/sig/generated/lrama/grammar/code/printer_code.rbs +26 -0
  132. data/sig/generated/lrama/grammar/code/rule_action.rbs +63 -0
  133. data/sig/generated/lrama/grammar/code.rbs +38 -0
  134. data/sig/{lrama → generated/lrama}/grammar/counter.rbs +4 -0
  135. data/sig/generated/lrama/grammar/destructor.rbs +19 -0
  136. data/sig/generated/lrama/grammar/error_token.rbs +19 -0
  137. data/sig/generated/lrama/grammar/inline/resolver.rbs +26 -0
  138. data/sig/generated/lrama/grammar/parameterized/resolver.rbs +42 -0
  139. data/sig/generated/lrama/grammar/parameterized/rhs.rbs +21 -0
  140. data/sig/generated/lrama/grammar/parameterized/rule.rbs +28 -0
  141. data/sig/{lrama → generated/lrama}/grammar/percent_code.rbs +8 -0
  142. data/sig/generated/lrama/grammar/precedence.rbs +45 -0
  143. data/sig/{lrama/grammar/error_token.rbs → generated/lrama/grammar/printer.rbs} +8 -3
  144. data/sig/generated/lrama/grammar/reference.rbs +31 -0
  145. data/sig/generated/lrama/grammar/rule.rbs +83 -0
  146. data/sig/generated/lrama/grammar/rule_builder.rbs +91 -0
  147. data/sig/generated/lrama/grammar/symbol.rbs +89 -0
  148. data/sig/generated/lrama/grammar/symbols/resolver.rbs +131 -0
  149. data/sig/generated/lrama/grammar/type.rbs +21 -0
  150. data/sig/generated/lrama/grammar/union.rbs +17 -0
  151. data/sig/generated/lrama/grammar.rbs +289 -0
  152. data/sig/generated/lrama/lexer/location.rbs +12 -3
  153. data/sig/generated/lrama/lexer/token/base.rbs +53 -0
  154. data/sig/generated/lrama/lexer/token/char.rbs +9 -2
  155. data/sig/generated/lrama/lexer/token/empty.rbs +11 -0
  156. data/sig/generated/lrama/lexer/token/ident.rbs +2 -2
  157. data/sig/generated/lrama/lexer/token/instantiate_rule.rbs +5 -5
  158. data/sig/generated/lrama/lexer/token/int.rbs +13 -0
  159. data/sig/generated/lrama/lexer/token/str.rbs +10 -0
  160. data/sig/generated/lrama/lexer/token/tag.rbs +2 -2
  161. data/sig/generated/lrama/lexer/token/token.rbs +10 -0
  162. data/sig/generated/lrama/lexer/token/user_code.rbs +2 -2
  163. data/sig/generated/lrama/lexer/token.rbs +1 -39
  164. data/sig/generated/lrama/lexer.rbs +54 -0
  165. data/sig/generated/lrama/logger.rbs +6 -0
  166. data/sig/generated/lrama/option_parser.rbs +52 -0
  167. data/sig/{lrama → generated/lrama}/options.rbs +27 -3
  168. data/sig/generated/lrama/reporter/conflicts.rbs +18 -0
  169. data/sig/generated/lrama/reporter/grammar.rbs +13 -0
  170. data/sig/generated/lrama/reporter/precedences.rbs +15 -0
  171. data/sig/generated/lrama/reporter/profile/call_stack.rbs +19 -0
  172. data/sig/generated/lrama/reporter/profile/memory.rbs +19 -0
  173. data/sig/generated/lrama/reporter/rules.rbs +13 -0
  174. data/sig/generated/lrama/reporter/states.rbs +69 -0
  175. data/sig/generated/lrama/reporter/terms.rbs +13 -0
  176. data/sig/generated/lrama/reporter.rbs +13 -0
  177. data/sig/generated/lrama/state/action/goto.rbs +28 -0
  178. data/sig/generated/lrama/state/action/reduce.rbs +49 -0
  179. data/sig/generated/lrama/state/action/shift.rbs +33 -0
  180. data/sig/generated/lrama/state/inadequacy_annotation.rbs +45 -0
  181. data/sig/generated/lrama/state/item.rbs +75 -0
  182. data/sig/generated/lrama/state/reduce_reduce_conflict.rbs +19 -0
  183. data/sig/generated/lrama/state/resolved_conflict.rbs +38 -0
  184. data/sig/generated/lrama/state/shift_reduce_conflict.rbs +19 -0
  185. data/sig/generated/lrama/state.rbs +231 -0
  186. data/sig/generated/lrama/states.rbs +215 -0
  187. data/sig/generated/lrama/tracer/actions.rbs +13 -0
  188. data/sig/generated/lrama/tracer/closure.rbs +13 -0
  189. data/sig/generated/lrama/tracer/duration.rbs +18 -0
  190. data/sig/generated/lrama/tracer/only_explicit_rules.rbs +13 -0
  191. data/sig/generated/lrama/tracer/rules.rbs +13 -0
  192. data/sig/generated/lrama/tracer/state.rbs +16 -0
  193. data/sig/generated/lrama/tracer.rbs +23 -0
  194. data/sig/generated/lrama/version.rbs +5 -0
  195. data/sig/generated/lrama/warnings/conflicts.rbs +13 -0
  196. data/sig/generated/lrama/warnings/implicit_empty.rbs +17 -0
  197. data/sig/generated/lrama/warnings/name_conflicts.rbs +31 -0
  198. data/sig/generated/lrama/warnings/redefined_rules.rbs +13 -0
  199. data/sig/generated/lrama/warnings/required.rbs +13 -0
  200. data/sig/generated/lrama/warnings/useless_precedence.rbs +13 -0
  201. data/sig/generated/lrama/warnings.rbs +11 -0
  202. data/sig/railroad_diagrams/railroad_diagrams.rbs +16 -0
  203. data/template/bison/_yacc.h +8 -0
  204. data/template/diagram/diagram.html +102 -0
  205. metadata +126 -66
  206. data/lib/lrama/counterexamples/production_path.rb +0 -19
  207. data/lib/lrama/counterexamples/start_path.rb +0 -23
  208. data/lib/lrama/counterexamples/transition_path.rb +0 -19
  209. data/lib/lrama/diagnostics.rb +0 -36
  210. data/lib/lrama/grammar/parameterizing_rule/rule.rb +0 -24
  211. data/lib/lrama/grammar/parameterizing_rule.rb +0 -5
  212. data/lib/lrama/grammar_validator.rb +0 -37
  213. data/lib/lrama/report/duration.rb +0 -27
  214. data/lib/lrama/report/profile.rb +0 -16
  215. data/lib/lrama/report.rb +0 -4
  216. data/lib/lrama/state/reduce.rb +0 -37
  217. data/lib/lrama/state/shift.rb +0 -15
  218. data/lib/lrama/states_reporter.rb +0 -362
  219. data/lib/lrama/trace_reporter.rb +0 -45
  220. data/sig/generated/lrama/trace_reporter.rbs +0 -25
  221. data/sig/lrama/counterexamples/derivation.rbs +0 -33
  222. data/sig/lrama/counterexamples/example.rbs +0 -45
  223. data/sig/lrama/counterexamples/path.rbs +0 -21
  224. data/sig/lrama/counterexamples/production_path.rbs +0 -11
  225. data/sig/lrama/counterexamples/start_path.rbs +0 -13
  226. data/sig/lrama/counterexamples/state_item.rbs +0 -10
  227. data/sig/lrama/counterexamples/transition_path.rbs +0 -11
  228. data/sig/lrama/counterexamples/triple.rbs +0 -20
  229. data/sig/lrama/counterexamples.rbs +0 -29
  230. data/sig/lrama/grammar/auxiliary.rbs +0 -10
  231. data/sig/lrama/grammar/code/destructor_code.rbs +0 -14
  232. data/sig/lrama/grammar/code/printer_code.rbs +0 -14
  233. data/sig/lrama/grammar/code/rule_action.rbs +0 -19
  234. data/sig/lrama/grammar/code.rbs +0 -24
  235. data/sig/lrama/grammar/destructor.rbs +0 -13
  236. data/sig/lrama/grammar/parameterizing_rule/resolver.rbs +0 -24
  237. data/sig/lrama/grammar/parameterizing_rule/rhs.rbs +0 -14
  238. data/sig/lrama/grammar/parameterizing_rule/rule.rbs +0 -16
  239. data/sig/lrama/grammar/parameterizing_rule.rbs +0 -6
  240. data/sig/lrama/grammar/precedence.rbs +0 -13
  241. data/sig/lrama/grammar/printer.rbs +0 -13
  242. data/sig/lrama/grammar/reference.rbs +0 -22
  243. data/sig/lrama/grammar/rule.rbs +0 -45
  244. data/sig/lrama/grammar/rule_builder.rbs +0 -47
  245. data/sig/lrama/grammar/symbol.rbs +0 -38
  246. data/sig/lrama/grammar/symbols/resolver.rbs +0 -60
  247. data/sig/lrama/grammar/type.rbs +0 -11
  248. data/sig/lrama/grammar/union.rbs +0 -12
  249. data/sig/lrama/grammar.rbs +0 -108
  250. data/sig/lrama/report/duration.rbs +0 -11
  251. data/sig/lrama/report/profile.rbs +0 -7
  252. data/sig/lrama/state/reduce.rbs +0 -20
  253. data/sig/lrama/state/reduce_reduce_conflict.rbs +0 -13
  254. data/sig/lrama/state/resolved_conflict.rbs +0 -14
  255. data/sig/lrama/state/shift.rbs +0 -14
  256. data/sig/lrama/state/shift_reduce_conflict.rbs +0 -13
  257. data/sig/lrama/state.rbs +0 -79
  258. data/sig/lrama/states/item.rbs +0 -30
  259. data/sig/lrama/states.rbs +0 -101
  260. data/sig/lrama/warning.rbs +0 -16
@@ -0,0 +1,63 @@
1
+ # Generated from lib/lrama/grammar/code/rule_action.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Code
6
+ class RuleAction < Code
7
+ @rule: Rule
8
+
9
+ # @rbs (type: ::Symbol, token_code: Lexer::Token::UserCode, rule: Rule) -> void
10
+ def initialize: (type: ::Symbol, token_code: Lexer::Token::UserCode, rule: Rule) -> void
11
+
12
+ private
13
+
14
+ # * ($$) yyval
15
+ # * (@$) yyloc
16
+ # * ($:$) error
17
+ # * ($1) yyvsp[i]
18
+ # * (@1) yylsp[i]
19
+ # * ($:1) i - 1
20
+ #
21
+ #
22
+ # Consider a rule like
23
+ #
24
+ # class: keyword_class { $1 } tSTRING { $2 + $3 } keyword_end { $class = $1 + $keyword_end }
25
+ #
26
+ # For the semantic action of original rule:
27
+ #
28
+ # "Rule" class: keyword_class { $1 } tSTRING { $2 + $3 } keyword_end { $class = $1 + $keyword_end }
29
+ # "Position in grammar" $1 $2 $3 $4 $5
30
+ # "Index for yyvsp" -4 -3 -2 -1 0
31
+ # "$:n" $:1 $:2 $:3 $:4 $:5
32
+ # "index of $:n" -5 -4 -3 -2 -1
33
+ #
34
+ #
35
+ # For the first midrule action:
36
+ #
37
+ # "Rule" class: keyword_class { $1 } tSTRING { $2 + $3 } keyword_end { $class = $1 + $keyword_end }
38
+ # "Position in grammar" $1
39
+ # "Index for yyvsp" 0
40
+ # "$:n" $:1
41
+ #
42
+ # @rbs (Reference ref) -> String
43
+ def reference_to_c: (Reference ref) -> String
44
+
45
+ # @rbs () -> Integer
46
+ def position_in_rhs: () -> Integer
47
+
48
+ # If this is midrule action, RHS is an RHS of the original rule.
49
+ #
50
+ # @rbs () -> Array[Grammar::Symbol]
51
+ def rhs: () -> Array[Grammar::Symbol]
52
+
53
+ # Unlike `rhs`, LHS is always an LHS of the rule.
54
+ #
55
+ # @rbs () -> Grammar::Symbol
56
+ def lhs: () -> Grammar::Symbol
57
+
58
+ # @rbs (Reference ref) -> bot
59
+ def raise_tag_not_found_error: (Reference ref) -> bot
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,38 @@
1
+ # Generated from lib/lrama/grammar/code.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Code
6
+ # delegated
7
+ def s_value: () -> String
8
+
9
+ def line: () -> Integer
10
+
11
+ def column: () -> Integer
12
+
13
+ def references: () -> Array[Lrama::Grammar::Reference]
14
+
15
+ extend Forwardable
16
+
17
+ attr_reader type: ::Symbol
18
+
19
+ attr_reader token_code: Lexer::Token::UserCode
20
+
21
+ # @rbs (type: ::Symbol, token_code: Lexer::Token::UserCode) -> void
22
+ def initialize: (type: ::Symbol, token_code: Lexer::Token::UserCode) -> void
23
+
24
+ # @rbs (Code other) -> bool
25
+ def ==: (Code other) -> bool
26
+
27
+ # $$, $n, @$, @n are translated to C code
28
+ #
29
+ # @rbs () -> String
30
+ def translated_code: () -> String
31
+
32
+ private
33
+
34
+ # @rbs (Lrama::Grammar::Reference ref) -> bot
35
+ def reference_to_c: (Lrama::Grammar::Reference ref) -> bot
36
+ end
37
+ end
38
+ end
@@ -1,10 +1,14 @@
1
+ # Generated from lib/lrama/grammar/counter.rb with RBS::Inline
2
+
1
3
  module Lrama
2
4
  class Grammar
3
5
  class Counter
4
6
  @number: Integer
5
7
 
8
+ # @rbs (Integer number) -> void
6
9
  def initialize: (Integer number) -> void
7
10
 
11
+ # @rbs () -> Integer
8
12
  def increment: () -> Integer
9
13
  end
10
14
  end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/lrama/grammar/destructor.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Destructor
6
+ attr_reader ident_or_tags: Array[Lexer::Token::Ident | Lexer::Token::Tag]
7
+
8
+ attr_reader token_code: Lexer::Token::UserCode
9
+
10
+ attr_reader lineno: Integer
11
+
12
+ # @rbs (ident_or_tags: Array[Lexer::Token::Ident|Lexer::Token::Tag], token_code: Lexer::Token::UserCode, lineno: Integer) -> void
13
+ def initialize: (ident_or_tags: Array[Lexer::Token::Ident | Lexer::Token::Tag], token_code: Lexer::Token::UserCode, lineno: Integer) -> void
14
+
15
+ # @rbs (Lexer::Token::Tag tag) -> String
16
+ def translated_code: (Lexer::Token::Tag tag) -> String
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/lrama/grammar/error_token.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class ErrorToken
6
+ attr_reader ident_or_tags: Array[Lexer::Token::Ident | Lexer::Token::Tag]
7
+
8
+ attr_reader token_code: Lexer::Token::UserCode
9
+
10
+ attr_reader lineno: Integer
11
+
12
+ # @rbs (ident_or_tags: Array[Lexer::Token::Ident|Lexer::Token::Tag], token_code: Lexer::Token::UserCode, lineno: Integer) -> void
13
+ def initialize: (ident_or_tags: Array[Lexer::Token::Ident | Lexer::Token::Tag], token_code: Lexer::Token::UserCode, lineno: Integer) -> void
14
+
15
+ # @rbs (Lexer::Token::Tag tag) -> String
16
+ def translated_code: (Lexer::Token::Tag tag) -> String
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ # Generated from lib/lrama/grammar/inline/resolver.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Inline
6
+ class Resolver
7
+ # @rbs (Lrama::Grammar::RuleBuilder rule_builder) -> void
8
+ def initialize: (Lrama::Grammar::RuleBuilder rule_builder) -> void
9
+
10
+ # @rbs () -> Array[Lrama::Grammar::RuleBuilder]
11
+ def resolve: () -> Array[Lrama::Grammar::RuleBuilder]
12
+
13
+ private
14
+
15
+ # @rbs (Lrama::Grammar::Parameterized::Rhs rhs, Lrama::Lexer::Token token, Integer index, Lrama::Grammar::Parameterized::Rule rule) -> Lrama::Grammar::RuleBuilder
16
+ def build_rule: (Lrama::Grammar::Parameterized::Rhs rhs, Lrama::Lexer::Token token, Integer index, Lrama::Grammar::Parameterized::Rule rule) -> Lrama::Grammar::RuleBuilder
17
+
18
+ # @rbs (Lrama::Grammar::RuleBuilder builder, Lrama::Grammar::Parameterized::Rhs rhs, Integer index, Lrama::Lexer::Token token, Lrama::Grammar::Parameterized::Rule rule) -> void
19
+ def resolve_rhs: (Lrama::Grammar::RuleBuilder builder, Lrama::Grammar::Parameterized::Rhs rhs, Integer index, Lrama::Lexer::Token token, Lrama::Grammar::Parameterized::Rule rule) -> void
20
+
21
+ # @rbs (Lrama::Grammar::Parameterized::Rhs rhs, Integer index) -> Lrama::Lexer::Token::UserCode
22
+ def replace_user_code: (Lrama::Grammar::Parameterized::Rhs rhs, Integer index) -> Lrama::Lexer::Token::UserCode
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,42 @@
1
+ # Generated from lib/lrama/grammar/parameterized/resolver.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Parameterized
6
+ class Resolver
7
+ attr_accessor rules: Array[Rule]
8
+
9
+ attr_accessor created_lhs_list: Array[Lexer::Token::Base]
10
+
11
+ # @rbs () -> void
12
+ def initialize: () -> void
13
+
14
+ # @rbs (Rule rule) -> Array[Rule]
15
+ def add_rule: (Rule rule) -> Array[Rule]
16
+
17
+ # @rbs (Lexer::Token::InstantiateRule token) -> Rule?
18
+ def find_rule: (Lexer::Token::InstantiateRule token) -> Rule?
19
+
20
+ # @rbs (Lexer::Token::Base token) -> Rule?
21
+ def find_inline: (Lexer::Token::Base token) -> Rule?
22
+
23
+ # @rbs (String lhs_s_value) -> Lexer::Token::Base?
24
+ def created_lhs: (String lhs_s_value) -> Lexer::Token::Base?
25
+
26
+ # @rbs () -> Array[Rule]
27
+ def redefined_rules: () -> Array[Rule]
28
+
29
+ private
30
+
31
+ # @rbs (Array[Rule] rules, Lexer::Token::InstantiateRule token) -> Array[Rule]
32
+ def select_rules: (Array[Rule] rules, Lexer::Token::InstantiateRule token) -> Array[Rule]
33
+
34
+ # @rbs (Array[Rule] rules) -> Array[Rule]
35
+ def reject_inline_rules: (Array[Rule] rules) -> Array[Rule]
36
+
37
+ # @rbs (Array[Rule] rules, String rule_name) -> Array[Rule]
38
+ def select_rules_by_name: (Array[Rule] rules, String rule_name) -> Array[Rule]
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,21 @@
1
+ # Generated from lib/lrama/grammar/parameterized/rhs.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Parameterized
6
+ class Rhs
7
+ attr_accessor symbols: Array[Lexer::Token::Base]
8
+
9
+ attr_accessor user_code: Lexer::Token::UserCode?
10
+
11
+ attr_accessor precedence_sym: Grammar::Symbol?
12
+
13
+ # @rbs () -> void
14
+ def initialize: () -> void
15
+
16
+ # @rbs (Grammar::Binding bindings) -> Lexer::Token::UserCode?
17
+ def resolve_user_code: (Grammar::Binding bindings) -> Lexer::Token::UserCode?
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ # Generated from lib/lrama/grammar/parameterized/rule.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Parameterized
6
+ class Rule
7
+ attr_reader name: String
8
+
9
+ attr_reader parameters: Array[Lexer::Token::Base]
10
+
11
+ attr_reader rhs: Array[Rhs]
12
+
13
+ attr_reader required_parameters_count: Integer
14
+
15
+ attr_reader tag: Lexer::Token::Tag?
16
+
17
+ # @rbs (String name, Array[Lexer::Token::Base] parameters, Array[Rhs] rhs, tag: Lexer::Token::Tag?, is_inline: bool) -> void
18
+ def initialize: (String name, Array[Lexer::Token::Base] parameters, Array[Rhs] rhs, tag: Lexer::Token::Tag?, is_inline: bool) -> void
19
+
20
+ # @rbs () -> String
21
+ def to_s: () -> String
22
+
23
+ # @rbs () -> bool
24
+ def inline?: () -> bool
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,9 +1,17 @@
1
+ # Generated from lib/lrama/grammar/percent_code.rb with RBS::Inline
2
+
1
3
  module Lrama
2
4
  class Grammar
3
5
  class PercentCode
6
+ @name: String
7
+
8
+ @code: String
9
+
4
10
  attr_reader name: String
11
+
5
12
  attr_reader code: String
6
13
 
14
+ # @rbs (String name, String code) -> void
7
15
  def initialize: (String name, String code) -> void
8
16
  end
9
17
  end
@@ -0,0 +1,45 @@
1
+ # Generated from lib/lrama/grammar/precedence.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Precedence
6
+ include Comparable
7
+
8
+ type type_enum = :left | :right | :nonassoc | :precedence
9
+
10
+ attr_accessor type: type_enum
11
+
12
+ attr_accessor symbol: Grammar::Symbol
13
+
14
+ attr_accessor precedence: Integer
15
+
16
+ attr_accessor s_value: String
17
+
18
+ attr_accessor lineno: Integer
19
+
20
+ def initialize: (?type: type_enum, ?symbol: Grammar::Symbol, ?precedence: Integer, ?s_value: ::String, ?lineno: Integer) -> void
21
+
22
+ attr_reader used_by_lalr: Array[State::ResolvedConflict]
23
+
24
+ attr_reader used_by_ielr: Array[State::ResolvedConflict]
25
+
26
+ # @rbs (Precedence other) -> Integer
27
+ def <=>: (Precedence other) -> Integer
28
+
29
+ # @rbs (State::ResolvedConflict resolved_conflict) -> void
30
+ def mark_used_by_lalr: (State::ResolvedConflict resolved_conflict) -> void
31
+
32
+ # @rbs (State::ResolvedConflict resolved_conflict) -> void
33
+ def mark_used_by_ielr: (State::ResolvedConflict resolved_conflict) -> void
34
+
35
+ # @rbs () -> bool
36
+ def used_by?: () -> bool
37
+
38
+ # @rbs () -> bool
39
+ def used_by_lalr?: () -> bool
40
+
41
+ # @rbs () -> bool
42
+ def used_by_ielr?: () -> bool
43
+ end
44
+ end
45
+ end
@@ -1,12 +1,17 @@
1
+ # Generated from lib/lrama/grammar/printer.rb with RBS::Inline
2
+
1
3
  module Lrama
2
4
  class Grammar
3
- class ErrorToken
5
+ class Printer
4
6
  attr_accessor ident_or_tags: Array[Lexer::Token::Ident | Lexer::Token::Tag]
5
- attr_accessor token_code: Grammar::Code
7
+
8
+ attr_accessor token_code: Lexer::Token::UserCode
9
+
6
10
  attr_accessor lineno: Integer
7
11
 
8
- def initialize: (?ident_or_tags: Array[Lexer::Token::Ident|Lexer::Token::Tag], ?token_code: Grammar::Code, ?lineno: Integer) -> void
12
+ def initialize: (?ident_or_tags: Array[Lexer::Token::Ident | Lexer::Token::Tag], ?token_code: Lexer::Token::UserCode, ?lineno: Integer) -> void
9
13
 
14
+ # @rbs (Lexer::Token::Tag tag) -> String
10
15
  def translated_code: (Lexer::Token::Tag tag) -> String
11
16
  end
12
17
  end
@@ -0,0 +1,31 @@
1
+ # Generated from lib/lrama/grammar/reference.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ # type: :dollar or :at
6
+ # name: String (e.g. $$, $foo, $expr.right)
7
+ # number: Integer (e.g. $1)
8
+ # index: Integer
9
+ # ex_tag: "$<tag>1" (Optional)
10
+ class Reference
11
+ attr_accessor type: ::Symbol
12
+
13
+ attr_accessor name: String
14
+
15
+ attr_accessor number: Integer
16
+
17
+ attr_accessor index: Integer
18
+
19
+ attr_accessor ex_tag: Lexer::Token::Base?
20
+
21
+ attr_accessor first_column: Integer
22
+
23
+ attr_accessor last_column: Integer
24
+
25
+ def initialize: (type: ::Symbol, first_column: Integer, last_column: Integer, ?name: String, ?number: Integer, ?index: Integer, ?ex_tag: Lexer::Token::Base?) -> void
26
+
27
+ # @rbs () -> (String|Integer)
28
+ def value: () -> (String | Integer)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,83 @@
1
+ # Generated from lib/lrama/grammar/rule.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ # _rhs holds original RHS element. Use rhs to refer to Symbol.
6
+ class Rule
7
+ interface _DelegatedMethods
8
+ def lhs: () -> Grammar::Symbol
9
+
10
+ def rhs: () -> Array[Grammar::Symbol]
11
+ end
12
+
13
+ attr_accessor id: Integer
14
+
15
+ attr_accessor _lhs: Lexer::Token::Base
16
+
17
+ attr_accessor lhs: Grammar::Symbol
18
+
19
+ attr_accessor lhs_tag: Lexer::Token::Tag?
20
+
21
+ attr_accessor _rhs: Array[Lexer::Token::Base]
22
+
23
+ attr_accessor rhs: Array[Grammar::Symbol]
24
+
25
+ attr_accessor token_code: Lexer::Token::UserCode?
26
+
27
+ attr_accessor position_in_original_rule_rhs: Integer
28
+
29
+ attr_accessor nullable: bool
30
+
31
+ attr_accessor precedence_sym: Grammar::Symbol?
32
+
33
+ attr_accessor lineno: Integer?
34
+
35
+ def initialize: (?id: Integer, ?_lhs: Lexer::Token::Base?, ?lhs: Lexer::Token::Base, ?lhs_tag: Lexer::Token::Tag?, ?_rhs: Array[Lexer::Token::Base], ?rhs: Array[Grammar::Symbol], ?token_code: Lexer::Token::UserCode?, ?position_in_original_rule_rhs: Integer?, ?nullable: bool, ?precedence_sym: Grammar::Symbol?, ?lineno: Integer?) -> void
36
+
37
+ attr_accessor original_rule: Rule
38
+
39
+ # @rbs (Rule other) -> bool
40
+ def ==: (Rule other) -> bool
41
+
42
+ # @rbs () -> String
43
+ def display_name: () -> String
44
+
45
+ # @rbs () -> String
46
+ def display_name_without_action: () -> String
47
+
48
+ # @rbs () -> (RailroadDiagrams::Skip | RailroadDiagrams::Sequence)
49
+ def to_diagrams: () -> (RailroadDiagrams::Skip | RailroadDiagrams::Sequence)
50
+
51
+ # Used by #user_actions
52
+ #
53
+ # @rbs () -> String
54
+ def as_comment: () -> String
55
+
56
+ # @rbs () -> String
57
+ def with_actions: () -> String
58
+
59
+ # opt_nl: ε <-- empty_rule
60
+ # | '\n' <-- not empty_rule
61
+ #
62
+ # @rbs () -> bool
63
+ def empty_rule?: () -> bool
64
+
65
+ # @rbs () -> Precedence?
66
+ def precedence: () -> Precedence?
67
+
68
+ # @rbs () -> bool
69
+ def initial_rule?: () -> bool
70
+
71
+ # @rbs () -> String?
72
+ def translated_code: () -> String?
73
+
74
+ # @rbs () -> bool
75
+ def contains_at_reference?: () -> bool
76
+
77
+ private
78
+
79
+ # @rbs () -> Array[(RailroadDiagrams::Terminal | RailroadDiagrams::NonTerminal)]
80
+ def rhs_to_diagram: () -> Array[RailroadDiagrams::Terminal | RailroadDiagrams::NonTerminal]
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,91 @@
1
+ # Generated from lib/lrama/grammar/rule_builder.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class RuleBuilder
6
+ @position_in_original_rule_rhs: Integer?
7
+
8
+ @skip_preprocess_references: bool
9
+
10
+ @rules: Array[Rule]
11
+
12
+ @rule_builders_for_parameterized: Array[RuleBuilder]
13
+
14
+ @rule_builders_for_derived_rules: Array[RuleBuilder]
15
+
16
+ @parameterized_rules: Array[Rule]
17
+
18
+ @midrule_action_rules: Array[Rule]
19
+
20
+ @replaced_rhs: Array[Lexer::Token::Base]?
21
+
22
+ attr_accessor lhs: Lexer::Token::Base?
23
+
24
+ attr_accessor line: Integer?
25
+
26
+ attr_reader rule_counter: Counter
27
+
28
+ attr_reader midrule_action_counter: Counter
29
+
30
+ attr_reader parameterized_resolver: Grammar::Parameterized::Resolver
31
+
32
+ attr_reader lhs_tag: Lexer::Token::Tag?
33
+
34
+ attr_reader rhs: Array[Lexer::Token::Base]
35
+
36
+ attr_reader user_code: Lexer::Token::UserCode?
37
+
38
+ attr_reader precedence_sym: Grammar::Symbol?
39
+
40
+ # @rbs (Counter rule_counter, Counter midrule_action_counter, Grammar::Parameterized::Resolver parameterized_resolver, ?Integer position_in_original_rule_rhs, ?lhs_tag: Lexer::Token::Tag?, ?skip_preprocess_references: bool) -> void
41
+ def initialize: (Counter rule_counter, Counter midrule_action_counter, Grammar::Parameterized::Resolver parameterized_resolver, ?Integer position_in_original_rule_rhs, ?lhs_tag: Lexer::Token::Tag?, ?skip_preprocess_references: bool) -> void
42
+
43
+ # @rbs (Lexer::Token::Base rhs) -> void
44
+ def add_rhs: (Lexer::Token::Base rhs) -> void
45
+
46
+ # @rbs (Lexer::Token::UserCode? user_code) -> void
47
+ def user_code=: (Lexer::Token::UserCode? user_code) -> void
48
+
49
+ # @rbs (Grammar::Symbol? precedence_sym) -> void
50
+ def precedence_sym=: (Grammar::Symbol? precedence_sym) -> void
51
+
52
+ # @rbs () -> void
53
+ def complete_input: () -> void
54
+
55
+ # @rbs () -> void
56
+ def setup_rules: () -> void
57
+
58
+ # @rbs () -> Array[Grammar::Rule]
59
+ def rules: () -> Array[Grammar::Rule]
60
+
61
+ # @rbs () -> bool
62
+ def has_inline_rules?: () -> bool
63
+
64
+ private
65
+
66
+ # @rbs () -> void
67
+ def freeze_rhs: () -> void
68
+
69
+ # @rbs () -> void
70
+ def preprocess_references: () -> void
71
+
72
+ # @rbs () -> void
73
+ def build_rules: () -> void
74
+
75
+ # rhs is a mixture of variety type of tokens like `Ident`, `InstantiateRule`, `UserCode` and so on.
76
+ # `#process_rhs` replaces some kind of tokens to `Ident` so that all `@replaced_rhs` are `Ident` or `Char`.
77
+ #
78
+ # @rbs () -> void
79
+ def process_rhs: () -> void
80
+
81
+ # @rbs () -> void
82
+ def resolve_inline_rules: () -> void
83
+
84
+ # @rbs () -> void
85
+ def numberize_references: () -> void
86
+
87
+ # @rbs () -> void
88
+ def flush_user_code: () -> void
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,89 @@
1
+ # Generated from lib/lrama/grammar/symbol.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Grammar
5
+ class Symbol
6
+ attr_accessor id: Lexer::Token::Base
7
+
8
+ attr_accessor alias_name: String?
9
+
10
+ attr_reader number: Integer
11
+
12
+ attr_accessor number_bitmap: Bitmap::bitmap
13
+
14
+ attr_accessor tag: Lexer::Token::Tag?
15
+
16
+ attr_accessor token_id: Integer
17
+
18
+ attr_accessor nullable: bool
19
+
20
+ attr_accessor precedence: Precedence?
21
+
22
+ attr_accessor printer: Printer?
23
+
24
+ attr_accessor destructor: Destructor?
25
+
26
+ attr_accessor error_token: ErrorToken
27
+
28
+ attr_accessor first_set: Set[Grammar::Symbol]
29
+
30
+ attr_accessor first_set_bitmap: Bitmap::bitmap
31
+
32
+ attr_reader term: bool
33
+
34
+ attr_writer eof_symbol: bool
35
+
36
+ attr_writer error_symbol: bool
37
+
38
+ attr_writer undef_symbol: bool
39
+
40
+ attr_writer accept_symbol: bool
41
+
42
+ # @rbs (id: Lexer::Token::Base, term: bool, ?alias_name: String?, ?number: Integer?, ?tag: Lexer::Token::Tag?,
43
+ # ?token_id: Integer?, ?nullable: bool?, ?precedence: Precedence?, ?printer: Printer?) -> void
44
+ def initialize: (id: Lexer::Token::Base, term: bool, ?alias_name: String?, ?number: Integer?, ?tag: Lexer::Token::Tag?, ?token_id: Integer?, ?nullable: bool?, ?precedence: Precedence?, ?printer: Printer?) -> void
45
+
46
+ # @rbs (Integer) -> void
47
+ def number=: (Integer) -> void
48
+
49
+ # @rbs () -> bool
50
+ def term?: () -> bool
51
+
52
+ # @rbs () -> bool
53
+ def nterm?: () -> bool
54
+
55
+ # @rbs () -> bool
56
+ def eof_symbol?: () -> bool
57
+
58
+ # @rbs () -> bool
59
+ def error_symbol?: () -> bool
60
+
61
+ # @rbs () -> bool
62
+ def undef_symbol?: () -> bool
63
+
64
+ # @rbs () -> bool
65
+ def accept_symbol?: () -> bool
66
+
67
+ # @rbs () -> bool
68
+ def midrule?: () -> bool
69
+
70
+ # @rbs () -> String
71
+ def name: () -> String
72
+
73
+ # @rbs () -> String
74
+ def display_name: () -> String
75
+
76
+ # name for yysymbol_kind_t
77
+ #
78
+ # See: b4_symbol_kind_base
79
+ # @type var name: String
80
+ # @rbs () -> String
81
+ def enum_name: () -> String
82
+
83
+ # comment for yysymbol_kind_t
84
+ #
85
+ # @rbs () -> String?
86
+ def comment: () -> String?
87
+ end
88
+ end
89
+ end