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
@@ -2,45 +2,7 @@
2
2
 
3
3
  module Lrama
4
4
  class Lexer
5
- class Token
6
- attr_reader s_value: String
7
-
8
- attr_reader location: Location
9
-
10
- attr_accessor alias_name: String
11
-
12
- attr_accessor referred: bool
13
-
14
- # @rbs (s_value: String, ?alias_name: String, ?location: Location) -> void
15
- def initialize: (s_value: String, ?alias_name: String, ?location: Location) -> void
16
-
17
- # @rbs () -> String
18
- def to_s: () -> String
19
-
20
- # @rbs (String string) -> bool
21
- def referred_by?: (String string) -> bool
22
-
23
- # @rbs (Token other) -> bool
24
- def ==: (Token other) -> bool
25
-
26
- # @rbs () -> Integer
27
- def first_line: () -> Integer
28
-
29
- alias line first_line
30
-
31
- # @rbs () -> Integer
32
- def first_column: () -> Integer
33
-
34
- alias column first_column
35
-
36
- # @rbs () -> Integer
37
- def last_line: () -> Integer
38
-
39
- # @rbs () -> Integer
40
- def last_column: () -> Integer
41
-
42
- # @rbs (Lrama::Grammar::Reference ref, String message) -> bot
43
- def invalid_ref: (Lrama::Grammar::Reference ref, String message) -> bot
5
+ module Token
44
6
  end
45
7
  end
46
8
  end
@@ -0,0 +1,54 @@
1
+ # Generated from lib/lrama/lexer.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Lexer
5
+ type token = lexer_token | c_token
6
+
7
+ type lexer_token = [ String, Token::Token ] | [ ::Symbol, Token::Tag ] | [ ::Symbol, Token::Char ] | [ ::Symbol, Token::Str ] | [ ::Symbol, Token::Int ] | [ ::Symbol, Token::Ident ]
8
+
9
+ type c_token = [ :C_DECLARATION, Token::UserCode ]
10
+
11
+ attr_reader head_line: Integer
12
+
13
+ attr_reader head_column: Integer
14
+
15
+ attr_reader line: Integer
16
+
17
+ attr_accessor status: :initial | :c_declaration
18
+
19
+ attr_accessor end_symbol: String?
20
+
21
+ SYMBOLS: Array[String]
22
+
23
+ PERCENT_TOKENS: Array[String]
24
+
25
+ # @rbs (GrammarFile grammar_file) -> void
26
+ def initialize: (GrammarFile grammar_file) -> void
27
+
28
+ # @rbs () -> token?
29
+ def next_token: () -> token?
30
+
31
+ # @rbs () -> Integer
32
+ def column: () -> Integer
33
+
34
+ # @rbs () -> Location
35
+ def location: () -> Location
36
+
37
+ # @rbs () -> lexer_token?
38
+ def lex_token: () -> lexer_token?
39
+
40
+ # @rbs () -> c_token
41
+ def lex_c_code: () -> c_token
42
+
43
+ private
44
+
45
+ # @rbs () -> void
46
+ def lex_comment: () -> void
47
+
48
+ # @rbs () -> void
49
+ def reset_first_position: () -> void
50
+
51
+ # @rbs () -> void
52
+ def newline: () -> void
53
+ end
54
+ end
@@ -5,6 +5,12 @@ module Lrama
5
5
  # @rbs (IO out) -> void
6
6
  def initialize: (IO out) -> void
7
7
 
8
+ # @rbs () -> void
9
+ def line_break: () -> void
10
+
11
+ # @rbs (String message) -> void
12
+ def trace: (String message) -> void
13
+
8
14
  # @rbs (String message) -> void
9
15
  def warn: (String message) -> void
10
16
 
@@ -0,0 +1,52 @@
1
+ # Generated from lib/lrama/option_parser.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ # Handle option parsing for the command line interface.
5
+ class OptionParser
6
+ @options: Lrama::Options
7
+
8
+ @trace: Array[String]
9
+
10
+ @report: Array[String]
11
+
12
+ @profile: Array[String]
13
+
14
+ # @rbs (Array[String]) -> Lrama::Options
15
+ def self.parse: (Array[String]) -> Lrama::Options
16
+
17
+ # @rbs () -> void
18
+ def initialize: () -> void
19
+
20
+ # @rbs (Array[String]) -> Lrama::Options
21
+ def parse: (Array[String]) -> Lrama::Options
22
+
23
+ private
24
+
25
+ # @rbs (Array[String]) -> void
26
+ def parse_by_option_parser: (Array[String]) -> void
27
+
28
+ ALIASED_REPORTS: Hash[Symbol, Symbol]
29
+
30
+ VALID_REPORTS: Array[Symbol]
31
+
32
+ # @rbs (Array[String]) -> Hash[Symbol, bool]
33
+ def validate_report: (Array[String]) -> Hash[Symbol, bool]
34
+
35
+ # @rbs (String) -> Symbol
36
+ def aliased_report_option: (String) -> Symbol
37
+
38
+ VALID_TRACES: Array[String]
39
+
40
+ NOT_SUPPORTED_TRACES: Array[String]
41
+
42
+ SUPPORTED_TRACES: Array[String]
43
+
44
+ # @rbs (Array[String]) -> Hash[Symbol, bool]
45
+ def validate_trace: (Array[String]) -> Hash[Symbol, bool]
46
+
47
+ VALID_PROFILES: Array[String]
48
+
49
+ # @rbs (Array[String]) -> Hash[Symbol, bool]
50
+ def validate_profile: (Array[String]) -> Hash[Symbol, bool]
51
+ end
52
+ end
@@ -1,19 +1,43 @@
1
+ # Generated from lib/lrama/options.rb with RBS::Inline
2
+
1
3
  module Lrama
4
+ # Command line options.
2
5
  class Options
3
6
  attr_accessor skeleton: String
4
- attr_accessor define: Hash[String, String]
7
+
8
+ attr_accessor locations: bool
9
+
5
10
  attr_accessor header: bool
11
+
6
12
  attr_accessor header_file: String?
13
+
7
14
  attr_accessor report_file: String?
15
+
8
16
  attr_accessor outfile: String
17
+
9
18
  attr_accessor error_recovery: bool
10
- attr_accessor grammar_file: String?
19
+
20
+ attr_accessor grammar_file: String
21
+
11
22
  attr_accessor trace_opts: Hash[Symbol, bool]?
23
+
12
24
  attr_accessor report_opts: Hash[Symbol, bool]?
13
- attr_accessor diagnostic: bool
25
+
26
+ attr_accessor warnings: bool
27
+
14
28
  attr_accessor y: IO
29
+
15
30
  attr_accessor debug: bool
16
31
 
32
+ attr_accessor define: Hash[String, String]
33
+
34
+ attr_accessor diagram: bool
35
+
36
+ attr_accessor diagram_file: String
37
+
38
+ attr_accessor profile_opts: Hash[Symbol, bool]?
39
+
40
+ # @rbs () -> void
17
41
  def initialize: () -> void
18
42
  end
19
43
  end
@@ -0,0 +1,18 @@
1
+ # Generated from lib/lrama/reporter/conflicts.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ class Conflicts
6
+ # @rbs (IO io, Lrama::States states) -> void
7
+ def report: (IO io, Lrama::States states) -> void
8
+
9
+ private
10
+
11
+ # @rbs (IO io, Lrama::States states) -> void
12
+ def report_conflicts: (IO io, Lrama::States states) -> void
13
+
14
+ # @rbs (Array[(Lrama::State::ShiftReduceConflict | Lrama::State::ReduceReduceConflict)] conflicts) -> Array[String]
15
+ def format_conflict_messages: (Array[Lrama::State::ShiftReduceConflict | Lrama::State::ReduceReduceConflict] conflicts) -> Array[String]
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/lrama/reporter/grammar.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ class Grammar
6
+ # @rbs (?grammar: bool, **bool _) -> void
7
+ def initialize: (?grammar: bool, **bool _) -> void
8
+
9
+ # @rbs (IO io, Lrama::States states) -> void
10
+ def report: (IO io, Lrama::States states) -> void
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ # Generated from lib/lrama/reporter/precedences.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ class Precedences
6
+ # @rbs (IO io, Lrama::States states) -> void
7
+ def report: (IO io, Lrama::States states) -> void
8
+
9
+ private
10
+
11
+ # @rbs (IO io, Lrama::States states) -> void
12
+ def report_precedences: (IO io, Lrama::States states) -> void
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/lrama/reporter/profile/call_stack.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ module Profile
6
+ module CallStack
7
+ # See "Call-stack Profiling Lrama" in README.md for how to use.
8
+ #
9
+ # @rbs enabled: bool
10
+ # @rbs &: -> void
11
+ # @rbs return: StackProf::result | void
12
+ def self.report: (bool enabled) { () -> void } -> (StackProf::result | void)
13
+
14
+ # @rbs return: bool
15
+ def self.require_stackprof: () -> bool
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/lrama/reporter/profile/memory.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ module Profile
6
+ module Memory
7
+ # See "Memory Profiling Lrama" in README.md for how to use.
8
+ #
9
+ # @rbs enabled: bool
10
+ # @rbs &: -> void
11
+ # @rbs return: StackProf::result | void
12
+ def self.report: (bool enabled) { () -> void } -> (StackProf::result | void)
13
+
14
+ # @rbs return: bool
15
+ def self.require_memory_profiler: () -> bool
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/lrama/reporter/rules.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ class Rules
6
+ # @rbs (?rules: bool, **bool _) -> void
7
+ def initialize: (?rules: bool, **bool _) -> void
8
+
9
+ # @rbs (IO io, Lrama::States states) -> void
10
+ def report: (IO io, Lrama::States states) -> void
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,69 @@
1
+ # Generated from lib/lrama/reporter/states.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ class States
6
+ # @rbs (?itemsets: bool, ?lookaheads: bool, ?solved: bool, ?counterexamples: bool, ?verbose: bool, **bool _) -> void
7
+ def initialize: (?itemsets: bool, ?lookaheads: bool, ?solved: bool, ?counterexamples: bool, ?verbose: bool, **bool _) -> void
8
+
9
+ # @rbs (IO io, Lrama::States states, ielr: bool) -> void
10
+ def report: (IO io, Lrama::States states, ielr: bool) -> void
11
+
12
+ private
13
+
14
+ # @rbs (IO io, Array[Lrama::State] states) -> void
15
+ def report_split_states: (IO io, Array[Lrama::State] states) -> void
16
+
17
+ # @rbs (IO io, Lrama::State state) -> void
18
+ def report_state_header: (IO io, Lrama::State state) -> void
19
+
20
+ # @rbs (IO io, Lrama::State state) -> void
21
+ def report_items: (IO io, Lrama::State state) -> void
22
+
23
+ # @rbs (IO io, Lrama::State state) -> void
24
+ def report_conflicts: (IO io, Lrama::State state) -> void
25
+
26
+ # @rbs (IO io, Lrama::State state) -> void
27
+ def report_shifts: (IO io, Lrama::State state) -> void
28
+
29
+ # @rbs (IO io, Lrama::State state) -> void
30
+ def report_nonassoc_errors: (IO io, Lrama::State state) -> void
31
+
32
+ # @rbs (IO io, Lrama::State state) -> void
33
+ def report_reduces: (IO io, Lrama::State state) -> void
34
+
35
+ # @rbs (IO io, Lrama::State state) -> void
36
+ def report_nterm_transitions: (IO io, Lrama::State state) -> void
37
+
38
+ # @rbs (IO io, Lrama::State state) -> void
39
+ def report_conflict_resolutions: (IO io, Lrama::State state) -> void
40
+
41
+ # @rbs (IO io, Lrama::State state, Lrama::Counterexamples cex) -> void
42
+ def report_counterexamples: (IO io, Lrama::State state, Lrama::Counterexamples cex) -> void
43
+
44
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
45
+ def report_verbose_info: (IO io, Lrama::State state, Lrama::States states) -> void
46
+
47
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
48
+ def report_direct_read_sets: (IO io, Lrama::State state, Lrama::States states) -> void
49
+
50
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
51
+ def report_reads_relation: (IO io, Lrama::State state, Lrama::States states) -> void
52
+
53
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
54
+ def report_read_sets: (IO io, Lrama::State state, Lrama::States states) -> void
55
+
56
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
57
+ def report_includes_relation: (IO io, Lrama::State state, Lrama::States states) -> void
58
+
59
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
60
+ def report_lookback_relation: (IO io, Lrama::State state, Lrama::States states) -> void
61
+
62
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
63
+ def report_follow_sets: (IO io, Lrama::State state, Lrama::States states) -> void
64
+
65
+ # @rbs (IO io, Lrama::State state, Lrama::States states) -> void
66
+ def report_look_ahead_sets: (IO io, Lrama::State state, Lrama::States states) -> void
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/lrama/reporter/terms.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ class Terms
6
+ # @rbs (?terms: bool, **bool _) -> void
7
+ def initialize: (?terms: bool, **bool _) -> void
8
+
9
+ # @rbs (IO io, Lrama::States states) -> void
10
+ def report: (IO io, Lrama::States states) -> void
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # Generated from lib/lrama/reporter.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class Reporter
5
+ include Lrama::Tracer::Duration
6
+
7
+ # @rbs (**bool options) -> void
8
+ def initialize: (**bool options) -> void
9
+
10
+ # @rbs (File io, Lrama::States states) -> void
11
+ def report: (File io, Lrama::States states) -> void
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ # Generated from lib/lrama/state/action/goto.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class State
5
+ class Action
6
+ class Goto
7
+ @from_state: State
8
+
9
+ @next_sym: Grammar::Symbol
10
+
11
+ @to_items: Array[Item]
12
+
13
+ @to_state: State
14
+
15
+ attr_reader from_state: State
16
+
17
+ attr_reader next_sym: Grammar::Symbol
18
+
19
+ attr_reader to_items: Array[Item]
20
+
21
+ attr_reader to_state: State
22
+
23
+ # @rbs (State from_state, Grammar::Symbol next_sym, Array[Item] to_items, State to_state) -> void
24
+ def initialize: (State from_state, Grammar::Symbol next_sym, Array[Item] to_items, State to_state) -> void
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,49 @@
1
+ # Generated from lib/lrama/state/action/reduce.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class State
5
+ class Action
6
+ class Reduce
7
+ @item: Item
8
+
9
+ @look_ahead: Array[Grammar::Symbol]?
10
+
11
+ @look_ahead_sources: Hash[Grammar::Symbol, Array[Action::Goto]]?
12
+
13
+ @not_selected_symbols: Array[Grammar::Symbol]
14
+
15
+ attr_reader item: Item
16
+
17
+ attr_reader look_ahead: Array[Grammar::Symbol]?
18
+
19
+ attr_reader look_ahead_sources: Hash[Grammar::Symbol, Array[Action::Goto]]?
20
+
21
+ attr_reader not_selected_symbols: Array[Grammar::Symbol]
22
+
23
+ # https://www.gnu.org/software/bison/manual/html_node/Default-Reductions.html
24
+ attr_accessor default_reduction: bool
25
+
26
+ # @rbs (Item item) -> void
27
+ def initialize: (Item item) -> void
28
+
29
+ # @rbs () -> Grammar::Rule
30
+ def rule: () -> Grammar::Rule
31
+
32
+ # @rbs (Array[Grammar::Symbol] look_ahead) -> Array[Grammar::Symbol]
33
+ def look_ahead=: (Array[Grammar::Symbol] look_ahead) -> Array[Grammar::Symbol]
34
+
35
+ # @rbs (Hash[Grammar::Symbol, Array[Action::Goto]] sources) -> Hash[Grammar::Symbol, Array[Action::Goto]]
36
+ def look_ahead_sources=: (Hash[Grammar::Symbol, Array[Action::Goto]] sources) -> Hash[Grammar::Symbol, Array[Action::Goto]]
37
+
38
+ # @rbs (Grammar::Symbol sym) -> Array[Grammar::Symbol]
39
+ def add_not_selected_symbol: (Grammar::Symbol sym) -> Array[Grammar::Symbol]
40
+
41
+ # @rbs () -> (::Array[Grammar::Symbol?])
42
+ def selected_look_ahead: () -> ::Array[Grammar::Symbol?]
43
+
44
+ # @rbs () -> void
45
+ def clear_conflicts: () -> void
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,33 @@
1
+ # Generated from lib/lrama/state/action/shift.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class State
5
+ class Action
6
+ class Shift
7
+ @from_state: State
8
+
9
+ @next_sym: Grammar::Symbol
10
+
11
+ @to_items: Array[Item]
12
+
13
+ @to_state: State
14
+
15
+ attr_reader from_state: State
16
+
17
+ attr_reader next_sym: Grammar::Symbol
18
+
19
+ attr_reader to_items: Array[Item]
20
+
21
+ attr_reader to_state: State
22
+
23
+ attr_accessor not_selected: bool
24
+
25
+ # @rbs (State from_state, Grammar::Symbol next_sym, Array[Item] to_items, State to_state) -> void
26
+ def initialize: (State from_state, Grammar::Symbol next_sym, Array[Item] to_items, State to_state) -> void
27
+
28
+ # @rbs () -> void
29
+ def clear_conflicts: () -> void
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,45 @@
1
+ # Generated from lib/lrama/state/inadequacy_annotation.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class State
5
+ class InadequacyAnnotation
6
+ type action = Action::Shift | Action::Reduce
7
+
8
+ attr_accessor state: State
9
+
10
+ attr_accessor token: Grammar::Symbol
11
+
12
+ attr_accessor actions: Array[action]
13
+
14
+ attr_accessor contribution_matrix: Hash[action, Hash[Item, bool]]
15
+
16
+ # @rbs (State state, Grammar::Symbol token, Array[action] actions, Hash[action, Hash[Item, bool]] contribution_matrix) -> void
17
+ def initialize: (State state, Grammar::Symbol token, Array[action] actions, Hash[action, Hash[Item, bool]] contribution_matrix) -> void
18
+
19
+ # @rbs (Item item) -> bool
20
+ def contributed?: (Item item) -> bool
21
+
22
+ # @rbs (Array[Hash[action, Hash[Item, bool]]] another_matrixes) -> void
23
+ def merge_matrix: (Array[Hash[action, Hash[Item, bool]]] another_matrixes) -> void
24
+
25
+ # Definition 3.42 (dominant_contribution)
26
+ #
27
+ # @rbs (State::lookahead_set lookaheads) -> Array[action]?
28
+ def dominant_contribution: (State::lookahead_set lookaheads) -> Array[action]?
29
+
30
+ # @rbs (Array[action] actions) -> Array[action]
31
+ def resolve_conflict: (Array[action] actions) -> Array[action]
32
+
33
+ # @rbs () -> String
34
+ def to_s: () -> String
35
+
36
+ private
37
+
38
+ # @rbs () -> String
39
+ def actions_to_s: () -> String
40
+
41
+ # @rbs () -> String
42
+ def contribution_matrix_to_s: () -> String
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,75 @@
1
+ # Generated from lib/lrama/state/item.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class State
5
+ class Item
6
+ include Grammar::Rule::_DelegatedMethods
7
+
8
+ attr_accessor rule: Grammar::Rule
9
+
10
+ attr_accessor position: Integer
11
+
12
+ def initialize: (?rule: Grammar::Rule, ?position: Integer) -> void
13
+
14
+ extend Forwardable
15
+
16
+ # Optimization for States#setup_state
17
+ #
18
+ # @rbs () -> Integer
19
+ def hash: () -> Integer
20
+
21
+ # @rbs () -> Integer
22
+ def rule_id: () -> Integer
23
+
24
+ # @rbs () -> bool
25
+ def empty_rule?: () -> bool
26
+
27
+ # @rbs () -> Integer
28
+ def number_of_rest_symbols: () -> Integer
29
+
30
+ # @rbs () -> Grammar::Symbol
31
+ def next_sym: () -> Grammar::Symbol
32
+
33
+ # @rbs () -> Grammar::Symbol
34
+ def next_next_sym: () -> Grammar::Symbol
35
+
36
+ # @rbs () -> Grammar::Symbol
37
+ def previous_sym: () -> Grammar::Symbol
38
+
39
+ # @rbs () -> bool
40
+ def end_of_rule?: () -> bool
41
+
42
+ # @rbs () -> bool
43
+ def beginning_of_rule?: () -> bool
44
+
45
+ # @rbs () -> bool
46
+ def start_item?: () -> bool
47
+
48
+ # @rbs () -> State::Item
49
+ def new_by_next_position: () -> State::Item
50
+
51
+ # @rbs () -> Array[Grammar::Symbol]
52
+ def symbols_before_dot: () -> Array[Grammar::Symbol]
53
+
54
+ # @rbs () -> Array[Grammar::Symbol]
55
+ def symbols_after_dot: () -> Array[Grammar::Symbol]
56
+
57
+ # @rbs () -> Array[Grammar::Symbol]
58
+ def symbols_after_transition: () -> Array[Grammar::Symbol]
59
+
60
+ # @rbs () -> ::String
61
+ def to_s: () -> ::String
62
+
63
+ # @rbs () -> ::String
64
+ def display_name: () -> ::String
65
+
66
+ # Right after position
67
+ #
68
+ # @rbs () -> ::String
69
+ def display_rest: () -> ::String
70
+
71
+ # @rbs (State::Item other_item) -> bool
72
+ def predecessor_item_of?: (State::Item other_item) -> bool
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,19 @@
1
+ # Generated from lib/lrama/state/reduce_reduce_conflict.rb with RBS::Inline
2
+
3
+ module Lrama
4
+ class State
5
+ class ReduceReduceConflict
6
+ attr_reader symbols: Array[Grammar::Symbol]
7
+
8
+ attr_reader reduce1: State::Action::Reduce
9
+
10
+ attr_reader reduce2: State::Action::Reduce
11
+
12
+ # @rbs (symbols: Array[Grammar::Symbol], reduce1: State::Action::Reduce, reduce2: State::Action::Reduce) -> void
13
+ def initialize: (symbols: Array[Grammar::Symbol], reduce1: State::Action::Reduce, reduce2: State::Action::Reduce) -> void
14
+
15
+ # @rbs () -> :reduce_reduce
16
+ def type: () -> :reduce_reduce
17
+ end
18
+ end
19
+ end