lrama 0.6.11 → 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 (274) 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 +45 -0
  5. data/.github/workflows/test.yaml +57 -18
  6. data/.gitignore +1 -0
  7. data/.rdoc_options +2 -0
  8. data/Gemfile +6 -3
  9. data/NEWS.md +427 -32
  10. data/README.md +43 -95
  11. data/Rakefile +14 -1
  12. data/Steepfile +12 -4
  13. data/doc/Index.md +58 -0
  14. data/doc/development/compressed_state_table/parser.rb +2 -0
  15. data/doc/development/profiling.md +44 -0
  16. data/exe/lrama +1 -1
  17. data/lib/lrama/bitmap.rb +19 -3
  18. data/lib/lrama/command.rb +96 -43
  19. data/lib/lrama/context.rb +22 -24
  20. data/lib/lrama/counterexamples/derivation.rb +14 -4
  21. data/lib/lrama/counterexamples/example.rb +47 -22
  22. data/lib/lrama/counterexamples/node.rb +30 -0
  23. data/lib/lrama/counterexamples/path.rb +12 -14
  24. data/lib/lrama/counterexamples/state_item.rb +24 -1
  25. data/lib/lrama/counterexamples/triple.rb +27 -9
  26. data/lib/lrama/counterexamples.rb +216 -88
  27. data/lib/lrama/diagram.rb +77 -0
  28. data/lib/lrama/digraph.rb +52 -1
  29. data/lib/lrama/erb.rb +29 -0
  30. data/lib/lrama/grammar/auxiliary.rb +6 -1
  31. data/lib/lrama/grammar/binding.rb +60 -16
  32. data/lib/lrama/grammar/code/destructor_code.rb +11 -0
  33. data/lib/lrama/grammar/code/initial_action_code.rb +3 -0
  34. data/lib/lrama/grammar/code/no_reference_code.rb +3 -0
  35. data/lib/lrama/grammar/code/printer_code.rb +11 -0
  36. data/lib/lrama/grammar/code/rule_action.rb +17 -0
  37. data/lib/lrama/grammar/code.rb +16 -1
  38. data/lib/lrama/grammar/counter.rb +10 -0
  39. data/lib/lrama/grammar/destructor.rb +14 -1
  40. data/lib/lrama/grammar/error_token.rb +14 -1
  41. data/lib/lrama/grammar/inline/resolver.rb +80 -0
  42. data/lib/lrama/grammar/inline.rb +3 -0
  43. data/lib/lrama/grammar/{parameterizing_rule → parameterized}/resolver.rb +19 -8
  44. data/lib/lrama/grammar/{parameterizing_rule → parameterized}/rhs.rb +7 -2
  45. data/lib/lrama/grammar/parameterized/rule.rb +36 -0
  46. data/lib/lrama/grammar/parameterized.rb +5 -0
  47. data/lib/lrama/grammar/percent_code.rb +12 -1
  48. data/lib/lrama/grammar/precedence.rb +43 -1
  49. data/lib/lrama/grammar/printer.rb +9 -0
  50. data/lib/lrama/grammar/reference.rb +13 -0
  51. data/lib/lrama/grammar/rule.rb +69 -1
  52. data/lib/lrama/grammar/rule_builder.rb +84 -81
  53. data/lib/lrama/grammar/stdlib.y +68 -48
  54. data/lib/lrama/grammar/symbol.rb +63 -19
  55. data/lib/lrama/grammar/symbols/resolver.rb +64 -3
  56. data/lib/lrama/grammar/type.rb +13 -1
  57. data/lib/lrama/grammar/union.rb +12 -1
  58. data/lib/lrama/grammar.rb +236 -35
  59. data/lib/lrama/lexer/grammar_file.rb +8 -1
  60. data/lib/lrama/lexer/location.rb +42 -9
  61. data/lib/lrama/lexer/token/base.rb +73 -0
  62. data/lib/lrama/lexer/token/char.rb +16 -2
  63. data/lib/lrama/lexer/token/empty.rb +14 -0
  64. data/lib/lrama/lexer/token/ident.rb +3 -2
  65. data/lib/lrama/lexer/token/instantiate_rule.rb +8 -3
  66. data/lib/lrama/lexer/token/int.rb +14 -0
  67. data/lib/lrama/lexer/token/str.rb +11 -0
  68. data/lib/lrama/lexer/token/tag.rb +5 -3
  69. data/lib/lrama/lexer/token/token.rb +11 -0
  70. data/lib/lrama/lexer/token/user_code.rb +68 -38
  71. data/lib/lrama/lexer/token.rb +7 -45
  72. data/lib/lrama/lexer.rb +55 -28
  73. data/lib/lrama/logger.rb +16 -2
  74. data/lib/lrama/option_parser.rb +71 -15
  75. data/lib/lrama/options.rb +26 -7
  76. data/lib/lrama/output.rb +4 -11
  77. data/lib/lrama/parser.rb +858 -721
  78. data/lib/lrama/reporter/conflicts.rb +44 -0
  79. data/lib/lrama/reporter/grammar.rb +39 -0
  80. data/lib/lrama/reporter/precedences.rb +54 -0
  81. data/lib/lrama/reporter/profile/call_stack.rb +45 -0
  82. data/lib/lrama/reporter/profile/memory.rb +44 -0
  83. data/lib/lrama/reporter/profile.rb +4 -0
  84. data/lib/lrama/reporter/rules.rb +43 -0
  85. data/lib/lrama/reporter/states.rb +387 -0
  86. data/lib/lrama/reporter/terms.rb +44 -0
  87. data/lib/lrama/reporter.rb +39 -0
  88. data/lib/lrama/state/action/goto.rb +33 -0
  89. data/lib/lrama/state/action/reduce.rb +71 -0
  90. data/lib/lrama/state/action/shift.rb +39 -0
  91. data/lib/lrama/state/action.rb +5 -0
  92. data/lib/lrama/state/inadequacy_annotation.rb +140 -0
  93. data/lib/lrama/{states → state}/item.rb +40 -3
  94. data/lib/lrama/state/reduce_reduce_conflict.rb +14 -1
  95. data/lib/lrama/state/resolved_conflict.rb +38 -4
  96. data/lib/lrama/state/shift_reduce_conflict.rb +14 -1
  97. data/lib/lrama/state.rb +416 -28
  98. data/lib/lrama/states.rb +483 -144
  99. data/lib/lrama/tracer/actions.rb +22 -0
  100. data/lib/lrama/tracer/closure.rb +30 -0
  101. data/lib/lrama/tracer/duration.rb +38 -0
  102. data/lib/lrama/tracer/only_explicit_rules.rb +24 -0
  103. data/lib/lrama/tracer/rules.rb +23 -0
  104. data/lib/lrama/tracer/state.rb +33 -0
  105. data/lib/lrama/tracer.rb +51 -0
  106. data/lib/lrama/version.rb +2 -1
  107. data/lib/lrama/warnings/conflicts.rb +27 -0
  108. data/lib/lrama/warnings/implicit_empty.rb +29 -0
  109. data/lib/lrama/warnings/name_conflicts.rb +63 -0
  110. data/lib/lrama/warnings/redefined_rules.rb +23 -0
  111. data/lib/lrama/warnings/required.rb +23 -0
  112. data/lib/lrama/warnings/useless_precedence.rb +25 -0
  113. data/lib/lrama/warnings.rb +33 -0
  114. data/lib/lrama.rb +5 -5
  115. data/lrama.gemspec +1 -1
  116. data/parser.y +496 -404
  117. data/rbs_collection.lock.yaml +27 -3
  118. data/rbs_collection.yaml +2 -0
  119. data/sig/generated/lrama/bitmap.rbs +19 -0
  120. data/sig/generated/lrama/counterexamples/derivation.rbs +36 -0
  121. data/sig/generated/lrama/counterexamples/example.rbs +58 -0
  122. data/sig/generated/lrama/counterexamples/node.rbs +18 -0
  123. data/sig/generated/lrama/counterexamples/path.rbs +23 -0
  124. data/sig/generated/lrama/counterexamples/state_item.rbs +19 -0
  125. data/sig/generated/lrama/counterexamples/triple.rbs +32 -0
  126. data/sig/generated/lrama/counterexamples.rbs +98 -0
  127. data/sig/generated/lrama/diagram.rbs +34 -0
  128. data/sig/generated/lrama/digraph.rbs +59 -0
  129. data/sig/generated/lrama/erb.rbs +14 -0
  130. data/sig/generated/lrama/grammar/auxiliary.rbs +16 -0
  131. data/sig/generated/lrama/grammar/binding.rbs +40 -0
  132. data/sig/generated/lrama/grammar/code/destructor_code.rbs +26 -0
  133. data/sig/{lrama → generated/lrama}/grammar/code/initial_action_code.rbs +6 -0
  134. data/sig/{lrama → generated/lrama}/grammar/code/no_reference_code.rbs +6 -0
  135. data/sig/generated/lrama/grammar/code/printer_code.rbs +26 -0
  136. data/sig/generated/lrama/grammar/code/rule_action.rbs +63 -0
  137. data/sig/generated/lrama/grammar/code.rbs +38 -0
  138. data/sig/{lrama → generated/lrama}/grammar/counter.rbs +4 -0
  139. data/sig/generated/lrama/grammar/destructor.rbs +19 -0
  140. data/sig/generated/lrama/grammar/error_token.rbs +19 -0
  141. data/sig/generated/lrama/grammar/inline/resolver.rbs +26 -0
  142. data/sig/generated/lrama/grammar/parameterized/resolver.rbs +42 -0
  143. data/sig/generated/lrama/grammar/parameterized/rhs.rbs +21 -0
  144. data/sig/generated/lrama/grammar/parameterized/rule.rbs +28 -0
  145. data/sig/{lrama → generated/lrama}/grammar/percent_code.rbs +8 -0
  146. data/sig/generated/lrama/grammar/precedence.rbs +45 -0
  147. data/sig/{lrama/grammar/error_token.rbs → generated/lrama/grammar/printer.rbs} +8 -3
  148. data/sig/generated/lrama/grammar/reference.rbs +31 -0
  149. data/sig/generated/lrama/grammar/rule.rbs +83 -0
  150. data/sig/generated/lrama/grammar/rule_builder.rbs +91 -0
  151. data/sig/generated/lrama/grammar/symbol.rbs +89 -0
  152. data/sig/generated/lrama/grammar/symbols/resolver.rbs +131 -0
  153. data/sig/generated/lrama/grammar/type.rbs +21 -0
  154. data/sig/generated/lrama/grammar/union.rbs +17 -0
  155. data/sig/generated/lrama/grammar.rbs +289 -0
  156. data/sig/generated/lrama/lexer/grammar_file.rbs +28 -0
  157. data/sig/generated/lrama/lexer/location.rbs +61 -0
  158. data/sig/generated/lrama/lexer/token/base.rbs +53 -0
  159. data/sig/generated/lrama/lexer/token/char.rbs +17 -0
  160. data/sig/generated/lrama/lexer/token/empty.rbs +11 -0
  161. data/sig/generated/lrama/lexer/token/ident.rbs +10 -0
  162. data/sig/generated/lrama/lexer/token/instantiate_rule.rbs +22 -0
  163. data/sig/generated/lrama/lexer/token/int.rbs +13 -0
  164. data/sig/generated/lrama/lexer/token/str.rbs +10 -0
  165. data/sig/generated/lrama/lexer/token/tag.rbs +12 -0
  166. data/sig/generated/lrama/lexer/token/token.rbs +10 -0
  167. data/sig/{lrama → generated/lrama}/lexer/token/user_code.rbs +8 -3
  168. data/sig/generated/lrama/lexer/token.rbs +8 -0
  169. data/sig/generated/lrama/lexer.rbs +54 -0
  170. data/sig/generated/lrama/logger.rbs +20 -0
  171. data/sig/generated/lrama/option_parser.rbs +52 -0
  172. data/sig/{lrama → generated/lrama}/options.rbs +27 -2
  173. data/sig/generated/lrama/reporter/conflicts.rbs +18 -0
  174. data/sig/generated/lrama/reporter/grammar.rbs +13 -0
  175. data/sig/generated/lrama/reporter/precedences.rbs +15 -0
  176. data/sig/generated/lrama/reporter/profile/call_stack.rbs +19 -0
  177. data/sig/generated/lrama/reporter/profile/memory.rbs +19 -0
  178. data/sig/generated/lrama/reporter/rules.rbs +13 -0
  179. data/sig/generated/lrama/reporter/states.rbs +69 -0
  180. data/sig/generated/lrama/reporter/terms.rbs +13 -0
  181. data/sig/generated/lrama/reporter.rbs +13 -0
  182. data/sig/generated/lrama/state/action/goto.rbs +28 -0
  183. data/sig/generated/lrama/state/action/reduce.rbs +49 -0
  184. data/sig/generated/lrama/state/action/shift.rbs +33 -0
  185. data/sig/generated/lrama/state/inadequacy_annotation.rbs +45 -0
  186. data/sig/generated/lrama/state/item.rbs +75 -0
  187. data/sig/generated/lrama/state/reduce_reduce_conflict.rbs +19 -0
  188. data/sig/generated/lrama/state/resolved_conflict.rbs +38 -0
  189. data/sig/generated/lrama/state/shift_reduce_conflict.rbs +19 -0
  190. data/sig/generated/lrama/state.rbs +231 -0
  191. data/sig/generated/lrama/states.rbs +215 -0
  192. data/sig/generated/lrama/tracer/actions.rbs +13 -0
  193. data/sig/generated/lrama/tracer/closure.rbs +13 -0
  194. data/sig/generated/lrama/tracer/duration.rbs +18 -0
  195. data/sig/generated/lrama/tracer/only_explicit_rules.rbs +13 -0
  196. data/sig/generated/lrama/tracer/rules.rbs +13 -0
  197. data/sig/generated/lrama/tracer/state.rbs +16 -0
  198. data/sig/generated/lrama/tracer.rbs +23 -0
  199. data/sig/generated/lrama/version.rbs +5 -0
  200. data/sig/generated/lrama/warnings/conflicts.rbs +13 -0
  201. data/sig/generated/lrama/warnings/implicit_empty.rbs +17 -0
  202. data/sig/generated/lrama/warnings/name_conflicts.rbs +31 -0
  203. data/sig/generated/lrama/warnings/redefined_rules.rbs +13 -0
  204. data/sig/generated/lrama/warnings/required.rbs +13 -0
  205. data/sig/generated/lrama/warnings/useless_precedence.rbs +13 -0
  206. data/sig/generated/lrama/warnings.rbs +11 -0
  207. data/sig/railroad_diagrams/railroad_diagrams.rbs +16 -0
  208. data/template/bison/_yacc.h +8 -0
  209. data/template/diagram/diagram.html +102 -0
  210. metadata +142 -77
  211. data/lib/lrama/counterexamples/production_path.rb +0 -19
  212. data/lib/lrama/counterexamples/start_path.rb +0 -23
  213. data/lib/lrama/counterexamples/transition_path.rb +0 -19
  214. data/lib/lrama/diagnostics.rb +0 -36
  215. data/lib/lrama/grammar/parameterizing_rule/rule.rb +0 -24
  216. data/lib/lrama/grammar/parameterizing_rule.rb +0 -5
  217. data/lib/lrama/grammar_validator.rb +0 -37
  218. data/lib/lrama/report/duration.rb +0 -27
  219. data/lib/lrama/report/profile.rb +0 -16
  220. data/lib/lrama/report.rb +0 -4
  221. data/lib/lrama/state/reduce.rb +0 -37
  222. data/lib/lrama/state/shift.rb +0 -15
  223. data/lib/lrama/states_reporter.rb +0 -362
  224. data/lib/lrama/trace_reporter.rb +0 -30
  225. data/sig/lrama/bitmap.rbs +0 -7
  226. data/sig/lrama/counterexamples/derivation.rbs +0 -33
  227. data/sig/lrama/counterexamples/example.rbs +0 -45
  228. data/sig/lrama/counterexamples/path.rbs +0 -21
  229. data/sig/lrama/counterexamples/production_path.rbs +0 -11
  230. data/sig/lrama/counterexamples/start_path.rbs +0 -13
  231. data/sig/lrama/counterexamples/state_item.rbs +0 -10
  232. data/sig/lrama/counterexamples/transition_path.rbs +0 -11
  233. data/sig/lrama/counterexamples/triple.rbs +0 -20
  234. data/sig/lrama/counterexamples.rbs +0 -29
  235. data/sig/lrama/digraph.rbs +0 -23
  236. data/sig/lrama/grammar/auxiliary.rbs +0 -10
  237. data/sig/lrama/grammar/binding.rbs +0 -19
  238. data/sig/lrama/grammar/code/destructor_code.rbs +0 -14
  239. data/sig/lrama/grammar/code/printer_code.rbs +0 -14
  240. data/sig/lrama/grammar/code/rule_action.rbs +0 -19
  241. data/sig/lrama/grammar/code.rbs +0 -24
  242. data/sig/lrama/grammar/destructor.rbs +0 -13
  243. data/sig/lrama/grammar/parameterizing_rule/resolver.rbs +0 -24
  244. data/sig/lrama/grammar/parameterizing_rule/rhs.rbs +0 -14
  245. data/sig/lrama/grammar/parameterizing_rule/rule.rbs +0 -16
  246. data/sig/lrama/grammar/parameterizing_rule.rbs +0 -6
  247. data/sig/lrama/grammar/precedence.rbs +0 -13
  248. data/sig/lrama/grammar/printer.rbs +0 -13
  249. data/sig/lrama/grammar/reference.rbs +0 -22
  250. data/sig/lrama/grammar/rule.rbs +0 -45
  251. data/sig/lrama/grammar/rule_builder.rbs +0 -48
  252. data/sig/lrama/grammar/symbol.rbs +0 -38
  253. data/sig/lrama/grammar/symbols/resolver.rbs +0 -60
  254. data/sig/lrama/grammar/type.rbs +0 -11
  255. data/sig/lrama/grammar/union.rbs +0 -12
  256. data/sig/lrama/grammar.rbs +0 -108
  257. data/sig/lrama/lexer/grammar_file.rbs +0 -17
  258. data/sig/lrama/lexer/location.rbs +0 -26
  259. data/sig/lrama/lexer/token/char.rbs +0 -8
  260. data/sig/lrama/lexer/token/ident.rbs +0 -8
  261. data/sig/lrama/lexer/token/instantiate_rule.rbs +0 -14
  262. data/sig/lrama/lexer/token/tag.rbs +0 -9
  263. data/sig/lrama/lexer/token.rbs +0 -23
  264. data/sig/lrama/report/duration.rbs +0 -11
  265. data/sig/lrama/report/profile.rbs +0 -7
  266. data/sig/lrama/state/reduce.rbs +0 -20
  267. data/sig/lrama/state/reduce_reduce_conflict.rbs +0 -13
  268. data/sig/lrama/state/resolved_conflict.rbs +0 -14
  269. data/sig/lrama/state/shift.rbs +0 -14
  270. data/sig/lrama/state/shift_reduce_conflict.rbs +0 -13
  271. data/sig/lrama/state.rbs +0 -79
  272. data/sig/lrama/states/item.rbs +0 -30
  273. data/sig/lrama/states.rbs +0 -101
  274. data/sig/lrama/warning.rbs +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d566a5097f0fd579e70f94769cca4e68a8f0e810e10cd55556583b1c2653945
4
- data.tar.gz: e5ab505df1a8fffe46a9f526456b593db786f36f0e998e7e3acbf5f68b76d9a9
3
+ metadata.gz: b9da05580a6b043f3aed0b59a8960a121b492fb12f206c305c158db5159a2ec0
4
+ data.tar.gz: 2021675193cc9cda3e60b0b8102f5105502abd9d7dd539d37748554d80ce09bb
5
5
  SHA512:
6
- metadata.gz: 753a7b6f0781f6b0bd2db8c98ef0e6171496d6fd8a2a16762b67dc471e34b4118b4439b89facc1915a364d4c4823edaef464d947cbda3d913ebd8eff87d91b76
7
- data.tar.gz: 7f953657c7050c7d527bf190d284e5b56b3df5b92c2034d5f4425f73be1e21208d1869a4ffe6c9091b4adf79671e71865000797ec2d7ed1ad66cfe5d1846cd7b
6
+ metadata.gz: 4bf20bb095d05dff1d433b1cbb28f6245e9abe162adbc26f19970344d9a1adcb582a43168c29709b765927ffebbc6272c6098561afeb9d536af778da42dfef81
7
+ data.tar.gz: 916d2dd4cb22e88b8bc543a8bc26b7246eada1beb7065d5ece965ffe143bcb06689480733e0ba969e5ba90a20e65af9ff7a288b4c27391b74224044d8d1e5452
data/.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ lib/lrama/parser.rb linguist-generated=true
2
+ sig/generated/** linguist-generated=true
@@ -6,7 +6,7 @@ jobs:
6
6
  name: CodeSpell
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
- - uses: actions/checkout@v4
9
+ - uses: actions/checkout@v6
10
10
  - name: CodeSpell
11
11
  uses: codespell-project/actions-codespell@master
12
12
  with:
@@ -0,0 +1,45 @@
1
+ name: Deploy Lrama documentation to GitHub Pages
2
+
3
+ on:
4
+ push:
5
+ branches: ["master"]
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ pages: write
11
+ id-token: write
12
+
13
+ concurrency:
14
+ group: "pages"
15
+ cancel-in-progress: true
16
+
17
+ jobs:
18
+ build:
19
+ runs-on: ubuntu-22.04
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@v6
23
+ - name: Setup Ruby
24
+ uses: ruby/setup-ruby@f26937343756480a8cb3ae1f623b9c8d89ed6984 # v1.196.0
25
+ with:
26
+ ruby-version: "3.3" # TODO: Temporarily avoids the error if 3.4 is specified. (https://github.com/ruby/lrama/actions/runs/17967414950/job/51102512657)
27
+ bundler-cache: true
28
+ - name: Setup Pages
29
+ id: pages
30
+ uses: actions/configure-pages@v5
31
+ - name: Build with Lrama
32
+ run: bundle exec rake rdoc
33
+ - name: Upload artifact
34
+ uses: actions/upload-pages-artifact@v4
35
+
36
+ deploy:
37
+ environment:
38
+ name: github-pages
39
+ url: ${{ steps.deployment.outputs.page_url }}
40
+ runs-on: ubuntu-22.04
41
+ needs: build
42
+ steps:
43
+ - name: Deploy to GitHub Pages
44
+ id: deployment
45
+ uses: actions/deploy-pages@v4
@@ -16,17 +16,19 @@ jobs:
16
16
 
17
17
  test:
18
18
  needs: ruby-versions
19
- runs-on: ubuntu-20.04
19
+ runs-on: ubuntu-22.04
20
20
  strategy:
21
21
  fail-fast: false
22
22
  matrix:
23
23
  ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
24
24
  steps:
25
- - uses: actions/checkout@v4
25
+ - uses: actions/checkout@v6
26
26
  - uses: ruby/setup-ruby@v1
27
27
  with:
28
28
  ruby-version: ${{ matrix.ruby }}
29
- bundler-cache: true
29
+ # NOTE: If this cache is present, the following will fail at Ruby 2.5:
30
+ # see: https://github.com/ruby/lrama/actions/runs/13088401502/job/36522284488
31
+ # bundler-cache: true
30
32
  - run: flex --help
31
33
  - run: bundle install
32
34
  - run: bundle exec rspec
@@ -40,11 +42,18 @@ jobs:
40
42
  run:
41
43
  shell: msys2 {0}
42
44
  steps:
43
- - uses: actions/checkout@v4
45
+ - uses: actions/checkout@v6
44
46
  - uses: ruby/setup-ruby@v1
45
47
  with:
46
48
  ruby-version: ${{ matrix.ruby }}
47
49
  bundler-cache: true
50
+ - name: Clean up existing MSYS2
51
+ run: |
52
+ if (Test-Path "$env:RUNNER_TEMP\msys64") {
53
+ Write-Host "Removing existing MSYS2 at $env:RUNNER_TEMP\msys64"
54
+ Remove-Item -Recurse -Force "$env:RUNNER_TEMP\msys64"
55
+ }
56
+ shell: powershell
48
57
  - uses: msys2/setup-msys2@v2
49
58
  id: setup-msys2
50
59
  with:
@@ -54,16 +63,35 @@ jobs:
54
63
  - run: flex --help
55
64
  - run: bundle install
56
65
  - run: bundle exec rspec
66
+ test-c:
67
+ needs: ruby-versions
68
+ runs-on: ubuntu-22.04
69
+ strategy:
70
+ fail-fast: false
71
+ matrix:
72
+ ruby: ['head']
73
+ compiler: ['cc', 'gcc', 'clang']
74
+ steps:
75
+ - uses: actions/checkout@v6
76
+ - uses: ruby/setup-ruby@v1
77
+ with:
78
+ ruby-version: ${{ matrix.ruby }}
79
+ bundler-cache: true
80
+ - run: flex --help
81
+ - run: bundle install
82
+ - run: bundle exec rspec
83
+ env:
84
+ COMPILER: ${{ matrix.compiler }}
57
85
  test-cpp:
58
86
  needs: ruby-versions
59
- runs-on: ubuntu-20.04
87
+ runs-on: ubuntu-22.04
60
88
  strategy:
61
89
  fail-fast: false
62
90
  matrix:
63
91
  ruby: ['head']
64
92
  compiler: ['g++', 'clang++']
65
93
  steps:
66
- - uses: actions/checkout@v4
94
+ - uses: actions/checkout@v6
67
95
  - uses: ruby/setup-ruby@v1
68
96
  with:
69
97
  ruby-version: ${{ matrix.ruby }}
@@ -74,13 +102,13 @@ jobs:
74
102
  env:
75
103
  COMPILER: ${{ matrix.compiler }}
76
104
  test-memory:
77
- runs-on: ubuntu-20.04
105
+ runs-on: ubuntu-22.04
78
106
  strategy:
79
107
  fail-fast: false
80
108
  matrix:
81
109
  ruby: ['head']
82
110
  steps:
83
- - uses: actions/checkout@v4
111
+ - uses: actions/checkout@v6
84
112
  - uses: ruby/setup-ruby@v1
85
113
  with:
86
114
  ruby-version: ${{ matrix.ruby }}
@@ -94,12 +122,12 @@ jobs:
94
122
  env:
95
123
  ENABEL_VALGRIND: 'true'
96
124
  check-misc:
97
- runs-on: ubuntu-20.04
125
+ runs-on: ubuntu-22.04
98
126
  strategy:
99
127
  matrix:
100
128
  ruby: ['head']
101
129
  steps:
102
- - uses: actions/checkout@v4
130
+ - uses: actions/checkout@v6
103
131
  - uses: ruby/setup-ruby@v1
104
132
  with:
105
133
  ruby-version: ${{ matrix.ruby }}
@@ -122,35 +150,46 @@ jobs:
122
150
  bundle exec rake build:parser
123
151
  git diff --color --no-ext-diff --ignore-submodules --exit-code lib/lrama/parser.rb
124
152
  steep-check:
125
- runs-on: ubuntu-20.04
153
+ runs-on: ubuntu-22.04
126
154
  strategy:
127
155
  fail-fast: false
128
156
  matrix:
129
- ruby: ['head']
157
+ # TODO: Temporarily uses ruby 3.4 to avoid "uninitialized constant RBS::Collection::Sources::Git::FileUtils (NameError)"
158
+ # ruby: ['head']
159
+ ruby: ['3.4']
130
160
  env:
131
161
  INSTALL_STEEP: 'true'
132
162
  steps:
133
- - uses: actions/checkout@v4
163
+ - uses: actions/checkout@v6
134
164
  - uses: ruby/setup-ruby@v1
135
165
  with:
136
166
  ruby-version: ${{ matrix.ruby }}
137
167
  bundler-cache: true
138
168
  - run: bundle install
169
+ - run: bundle exec rake rbs_inline
170
+ - name: Check for uncommitted changes
171
+ run: |
172
+ if [ -n "$(git status --porcelain)" ]; then
173
+ echo "Uncommitted changes detected after running rbs-inline."
174
+ echo "Please run 'bundle exec rake rbs_inline' and commit the changes generated by rbs-inline." >&2
175
+ exit 1
176
+ fi
177
+ shell: bash
139
178
  - run: bundle exec rbs collection install
140
179
  - run: bundle exec steep check
141
180
  test-ruby:
142
- runs-on: ubuntu-20.04
181
+ runs-on: ubuntu-22.04
143
182
  strategy:
144
183
  fail-fast: false
145
184
  matrix:
146
- # '3.0' is the oldest living ruby version and minimal BASERUBY version
147
- baseruby: ['head', '3.0']
185
+ # '3.1' is the oldest living ruby version and minimal BASERUBY version
186
+ baseruby: ['head', '3.1']
148
187
  ruby_branch: ['master']
149
188
  defaults:
150
189
  run:
151
190
  working-directory: ../ruby/build
152
191
  steps:
153
- - uses: actions/checkout@v4
192
+ - uses: actions/checkout@v6
154
193
  - uses: ruby/setup-ruby@v1
155
194
  with:
156
195
  ruby-version: ${{ matrix.baseruby }}
@@ -184,7 +223,7 @@ jobs:
184
223
  sudo apt-get install -q -y pkg-config${arch} || :
185
224
  - run: sudo apt-get --purge remove bison
186
225
  - run: ../autogen.sh
187
- - run: ../configure -C --disable-install-doc
226
+ - run: ../configure -C --disable-install-doc --with-parser=parse.y
188
227
  - run: make
189
228
  - run: make test-all RUN_OPTS="$RUN_OPTS" SPECOPTS="$SPECOPTS"
190
229
  env:
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
  /tmp/
11
11
  /vendor/bundle
12
12
  /.idea/
13
+ _site/
data/.rdoc_options ADDED
@@ -0,0 +1,2 @@
1
+ page_dir: doc
2
+ warn_missing_rdoc_ref: true
data/Gemfile CHANGED
@@ -4,17 +4,20 @@ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
6
 
7
+ gem "memory_profiler"
7
8
  gem "pry"
8
9
  gem "racc", "1.8.1"
10
+ gem "railroad_diagrams", "0.3.0"
9
11
  gem "rake"
12
+ gem "rdoc"
10
13
  gem "rspec"
11
14
  gem "simplecov", require: false
12
15
  gem "stackprof", platforms: [:ruby] # stackprof doesn't support Windows
13
- gem "memory_profiler"
14
16
 
15
17
  # Recent steep requires Ruby >= 3.0.0.
16
18
  # Then skip install on some CI jobs.
17
19
  if !ENV['GITHUB_ACTION'] || ENV['INSTALL_STEEP'] == 'true'
18
- gem "rbs", "3.7.0", require: false
19
- gem "steep", "1.9.1", require: false
20
+ gem "rbs", "3.9.5", require: false
21
+ gem "rbs-inline", require: false
22
+ gem "steep", "1.10.0", require: false
20
23
  end