@appthreat/atom-parsetools 1.3.0 → 1.4.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 (266) hide show
  1. package/README.md +111 -14
  2. package/package.json +2 -1
  3. package/plugins/composer/installed.php +6 -6
  4. package/plugins/rubyastgen/Gemfile +6 -4
  5. package/plugins/rubyastgen/Gemfile.lock +5 -8
  6. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/Gemfile +11 -0
  7. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/exe/ruby_ast_gen +55 -0
  8. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen/cli.rb +133 -0
  9. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen/node_handling.rb +449 -0
  10. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/lib/ruby_ast_gen/version.rb +1 -1
  11. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/lib/ruby_ast_gen.rb +888 -0
  12. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-4ac84327b3af/ruby_ast_gen.gemspec +25 -0
  13. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current.rb +1 -1
  14. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/version.rb +1 -1
  15. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ast-2.4.3.gemspec +29 -0
  16. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/bundler-2.6.9.gemspec +25 -0
  17. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/ostruct-0.6.3.gemspec +22 -0
  18. package/plugins/rubyastgen/bundle/ruby/4.0.0/specifications/parser-3.3.12.0.gemspec +37 -0
  19. package/rbastgen.js +102 -13
  20. package/scalasem.js +11 -2
  21. package/plugins/bin/bundler +0 -14
  22. package/plugins/bin/ruby_ast_gen +0 -14
  23. package/plugins/rubyastgen/bundle/bundler/setup.rb +0 -44
  24. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/exe/ruby_ast_gen +0 -63
  25. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/lib/ruby_ast_gen/node_handling.rb +0 -269
  26. package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/ruby_ast_gen-cc312ebf06b4/lib/ruby_ast_gen.rb +0 -218
  27. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/gem.build_complete +0 -0
  28. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/gem_make.out +0 -44
  29. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/mkmf.log +0 -74
  30. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/prism-1.9.0/prism/prism.so +0 -0
  31. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/gem.build_complete +0 -0
  32. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/gem_make.out +0 -18
  33. package/plugins/rubyastgen/bundle/ruby/4.0.0/extensions/x86_64-linux/4.0.0/racc-1.8.1/racc/cparse.so +0 -0
  34. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/BSDmakefile +0 -58
  35. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/Makefile +0 -116
  36. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/Makefile +0 -273
  37. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/api_node.c +0 -6945
  38. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/api_pack.c +0 -276
  39. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extconf.rb +0 -127
  40. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extension.c +0 -1427
  41. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/ext/prism/extension.h +0 -19
  42. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/ast.h +0 -8254
  43. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/defines.h +0 -260
  44. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/diagnostic.h +0 -458
  45. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/encoding.h +0 -283
  46. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/node.h +0 -129
  47. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/options.h +0 -488
  48. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/pack.h +0 -163
  49. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/parser.h +0 -936
  50. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/prettyprint.h +0 -34
  51. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/regexp.h +0 -43
  52. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/static_literals.h +0 -121
  53. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_buffer.h +0 -236
  54. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_char.h +0 -204
  55. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_constant_pool.h +0 -218
  56. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_integer.h +0 -130
  57. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_list.h +0 -103
  58. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_memchr.h +0 -29
  59. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_newline_list.h +0 -113
  60. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_string.h +0 -200
  61. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_strncasecmp.h +0 -32
  62. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/util/pm_strpbrk.h +0 -46
  63. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism/version.h +0 -29
  64. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/include/prism.h +0 -408
  65. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/compiler.rb +0 -801
  66. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/desugar_compiler.rb +0 -392
  67. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dispatcher.rb +0 -2210
  68. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dot_visitor.rb +0 -4767
  69. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/dsl.rb +0 -1003
  70. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/ffi.rb +0 -578
  71. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/inspect_visitor.rb +0 -2393
  72. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/lex_compat.rb +0 -911
  73. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/mutation_compiler.rb +0 -772
  74. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/node.rb +0 -19966
  75. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/node_ext.rb +0 -511
  76. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/pack.rb +0 -230
  77. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/comments.rb +0 -188
  78. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/errors.rb +0 -66
  79. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result/newlines.rb +0 -155
  80. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/parse_result.rb +0 -907
  81. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/pattern.rb +0 -269
  82. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/append_as_bytes.rb +0 -15
  83. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/byteindex.rb +0 -13
  84. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/scan_byte.rb +0 -14
  85. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/unpack1.rb +0 -14
  86. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/polyfill/warn.rb +0 -36
  87. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/prism.so +0 -0
  88. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/reflection.rb +0 -416
  89. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/relocation.rb +0 -505
  90. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/serialize.rb +0 -2400
  91. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/string_query.rb +0 -31
  92. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/builder.rb +0 -62
  93. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/compiler.rb +0 -2234
  94. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser/lexer.rb +0 -820
  95. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser.rb +0 -376
  96. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser_current.rb +0 -26
  97. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/parser_versions.rb +0 -36
  98. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/filter.rb +0 -53
  99. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/lexer.rb +0 -135
  100. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/sexp.rb +0 -126
  101. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper/shim.rb +0 -5
  102. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ripper.rb +0 -3520
  103. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation/ruby_parser.rb +0 -1964
  104. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/translation.rb +0 -18
  105. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism/visitor.rb +0 -813
  106. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/lib/prism.rb +0 -98
  107. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/compiler.rbi +0 -12
  108. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/dsl.rbi +0 -524
  109. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/inspect_visitor.rbi +0 -12
  110. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/node.rbi +0 -8750
  111. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/node_ext.rbi +0 -107
  112. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/parse_result.rbi +0 -404
  113. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/reflection.rbi +0 -58
  114. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/string_query.rbi +0 -12
  115. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/parser.rbi +0 -11
  116. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/parser_versions.rbi +0 -23
  117. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/translation/ripper.rbi +0 -15
  118. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism/visitor.rbi +0 -473
  119. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/rbi/prism.rbi +0 -63
  120. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/compiler.rbs +0 -9
  121. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dispatcher.rbs +0 -19
  122. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dot_visitor.rbs +0 -6
  123. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/dsl.rbs +0 -351
  124. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/inspect_visitor.rbs +0 -22
  125. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/lex_compat.rbs +0 -10
  126. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/mutation_compiler.rbs +0 -159
  127. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/node.rbs +0 -4042
  128. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/node_ext.rbs +0 -149
  129. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/pack.rbs +0 -43
  130. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/parse_result/comments.rbs +0 -38
  131. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/parse_result.rbs +0 -197
  132. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/pattern.rbs +0 -13
  133. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/reflection.rbs +0 -50
  134. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/relocation.rbs +0 -185
  135. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/serialize.rbs +0 -8
  136. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/string_query.rbs +0 -11
  137. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism/visitor.rbs +0 -169
  138. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/sig/prism.rbs +0 -272
  139. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/diagnostic.c +0 -854
  140. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/encoding.c +0 -5340
  141. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/node.c +0 -8685
  142. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/options.c +0 -338
  143. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/pack.c +0 -509
  144. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/prettyprint.c +0 -8957
  145. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/prism.c +0 -22679
  146. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/regexp.c +0 -790
  147. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/serialize.c +0 -2274
  148. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/static_literals.c +0 -617
  149. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/token_type.c +0 -703
  150. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_buffer.c +0 -357
  151. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_char.c +0 -318
  152. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_constant_pool.c +0 -342
  153. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_integer.c +0 -670
  154. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_list.c +0 -49
  155. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_memchr.c +0 -35
  156. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_newline_list.c +0 -125
  157. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_string.c +0 -381
  158. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_strncasecmp.c +0 -36
  159. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/prism-1.9.0/src/util/pm_strpbrk.c +0 -206
  160. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/BSDL +0 -22
  161. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/COPYING +0 -56
  162. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ChangeLog +0 -846
  163. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/README.ja.rdoc +0 -58
  164. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/README.rdoc +0 -60
  165. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/TODO +0 -5
  166. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/bin/racc +0 -320
  167. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/Makefile +0 -273
  168. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/cparse.c +0 -840
  169. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/ext/racc/cparse/extconf.rb +0 -8
  170. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/compat.rb +0 -33
  171. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
  172. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/debugflags.rb +0 -60
  173. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/exception.rb +0 -16
  174. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/grammar.rb +0 -1191
  175. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/grammarfileparser.rb +0 -667
  176. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/info.rb +0 -18
  177. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/iset.rb +0 -92
  178. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/logfilegenerator.rb +0 -212
  179. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parser-text.rb +0 -644
  180. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parser.rb +0 -630
  181. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/parserfilegenerator.rb +0 -473
  182. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/sourcetext.rb +0 -35
  183. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/state.rb +0 -976
  184. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/statetransitiontable.rb +0 -311
  185. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc/static.rb +0 -5
  186. package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/racc-1.8.1/lib/racc.rb +0 -6
  187. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/.rspec +0 -0
  188. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/bin/console +0 -0
  189. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/bin/setup +0 -0
  190. /package/plugins/rubyastgen/bundle/ruby/4.0.0/bundler/gems/{ruby_ast_gen-cc312ebf06b4 → ruby_ast_gen-4ac84327b3af}/update_version.rb +0 -0
  191. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-parse +0 -0
  192. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-rewrite +0 -0
  193. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/gauntlet_parser.rb +0 -0
  194. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/all.rb +0 -0
  195. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/node.rb +0 -0
  196. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/processor.rb +0 -0
  197. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/base.rb +0 -0
  198. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/builders/default.rb +0 -0
  199. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/clobbering_error.rb +0 -0
  200. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/color.rb +0 -0
  201. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/context.rb +0 -0
  202. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current_arg_stack.rb +0 -0
  203. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/deprecation.rb +0 -0
  204. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic/engine.rb +0 -0
  205. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic.rb +0 -0
  206. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/dedenter.rb +0 -0
  207. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/explanation.rb +0 -0
  208. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/literal.rb +0 -0
  209. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/stack_state.rb +0 -0
  210. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F0.rb +0 -0
  211. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F1.rb +0 -0
  212. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-strings.rb +0 -0
  213. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/macruby.rb +0 -0
  214. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/max_numparam_stack.rb +0 -0
  215. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/messages.rb +0 -0
  216. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/meta.rb +0 -0
  217. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rewriter.rb +0 -0
  218. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby18.rb +0 -0
  219. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby19.rb +0 -0
  220. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby20.rb +0 -0
  221. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby21.rb +0 -0
  222. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby22.rb +0 -0
  223. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby23.rb +0 -0
  224. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby24.rb +0 -0
  225. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby25.rb +0 -0
  226. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby26.rb +0 -0
  227. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby27.rb +0 -0
  228. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby30.rb +0 -0
  229. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby31.rb +0 -0
  230. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby32.rb +0 -0
  231. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby33.rb +0 -0
  232. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby34.rb +0 -0
  233. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rubymotion.rb +0 -0
  234. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_parse.rb +0 -0
  235. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_rewrite.rb +0 -0
  236. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner.rb +0 -0
  237. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/buffer.rb +0 -0
  238. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment/associator.rb +0 -0
  239. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment.rb +0 -0
  240. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/collection.rb +0 -0
  241. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/condition.rb +0 -0
  242. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/constant.rb +0 -0
  243. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/definition.rb +0 -0
  244. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/for.rb +0 -0
  245. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/heredoc.rb +0 -0
  246. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/index.rb +0 -0
  247. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/keyword.rb +0 -0
  248. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/method_definition.rb +0 -0
  249. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/objc_kwarg.rb +0 -0
  250. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/operator.rb +0 -0
  251. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/rescue_body.rb +0 -0
  252. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/send.rb +0 -0
  253. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/ternary.rb +0 -0
  254. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/variable.rb +0 -0
  255. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map.rb +0 -0
  256. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/range.rb +0 -0
  257. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter/action.rb +0 -0
  258. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter.rb +0 -0
  259. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter/action.rb +0 -0
  260. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter.rb +0 -0
  261. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/static_environment.rb +0 -0
  262. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/syntax_error.rb +0 -0
  263. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/tree_rewriter.rb +0 -0
  264. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/unknown_encoding_in_magic_comment_error.rb +0 -0
  265. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/variables_stack.rb +0 -0
  266. /package/plugins/rubyastgen/bundle/ruby/4.0.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser.rb +0 -0
@@ -1,670 +0,0 @@
1
- #include "prism/util/pm_integer.h"
2
-
3
- /**
4
- * Pull out the length and values from the integer, regardless of the form in
5
- * which the length/values are stored.
6
- */
7
- #define INTEGER_EXTRACT(integer, length_variable, values_variable) \
8
- if ((integer)->values == NULL) { \
9
- length_variable = 1; \
10
- values_variable = &(integer)->value; \
11
- } else { \
12
- length_variable = (integer)->length; \
13
- values_variable = (integer)->values; \
14
- }
15
-
16
- /**
17
- * Adds two positive pm_integer_t with the given base.
18
- * Return pm_integer_t with values allocated. Not normalized.
19
- */
20
- static void
21
- big_add(pm_integer_t *destination, pm_integer_t *left, pm_integer_t *right, uint64_t base) {
22
- size_t left_length;
23
- uint32_t *left_values;
24
- INTEGER_EXTRACT(left, left_length, left_values)
25
-
26
- size_t right_length;
27
- uint32_t *right_values;
28
- INTEGER_EXTRACT(right, right_length, right_values)
29
-
30
- size_t length = left_length < right_length ? right_length : left_length;
31
- uint32_t *values = (uint32_t *) xmalloc(sizeof(uint32_t) * (length + 1));
32
- if (values == NULL) return;
33
-
34
- uint64_t carry = 0;
35
- for (size_t index = 0; index < length; index++) {
36
- uint64_t sum = carry + (index < left_length ? left_values[index] : 0) + (index < right_length ? right_values[index] : 0);
37
- values[index] = (uint32_t) (sum % base);
38
- carry = sum / base;
39
- }
40
-
41
- if (carry > 0) {
42
- values[length] = (uint32_t) carry;
43
- length++;
44
- }
45
-
46
- *destination = (pm_integer_t) { length, values, 0, false };
47
- }
48
-
49
- /**
50
- * Internal use for karatsuba_multiply. Calculates `a - b - c` with the given
51
- * base. Assume a, b, c, a - b - c all to be positive.
52
- * Return pm_integer_t with values allocated. Not normalized.
53
- */
54
- static void
55
- big_sub2(pm_integer_t *destination, pm_integer_t *a, pm_integer_t *b, pm_integer_t *c, uint64_t base) {
56
- size_t a_length;
57
- uint32_t *a_values;
58
- INTEGER_EXTRACT(a, a_length, a_values)
59
-
60
- size_t b_length;
61
- uint32_t *b_values;
62
- INTEGER_EXTRACT(b, b_length, b_values)
63
-
64
- size_t c_length;
65
- uint32_t *c_values;
66
- INTEGER_EXTRACT(c, c_length, c_values)
67
-
68
- uint32_t *values = (uint32_t*) xmalloc(sizeof(uint32_t) * a_length);
69
- int64_t carry = 0;
70
-
71
- for (size_t index = 0; index < a_length; index++) {
72
- int64_t sub = (
73
- carry +
74
- a_values[index] -
75
- (index < b_length ? b_values[index] : 0) -
76
- (index < c_length ? c_values[index] : 0)
77
- );
78
-
79
- if (sub >= 0) {
80
- values[index] = (uint32_t) sub;
81
- carry = 0;
82
- } else {
83
- sub += 2 * (int64_t) base;
84
- values[index] = (uint32_t) ((uint64_t) sub % base);
85
- carry = sub / (int64_t) base - 2;
86
- }
87
- }
88
-
89
- while (a_length > 1 && values[a_length - 1] == 0) a_length--;
90
- *destination = (pm_integer_t) { a_length, values, 0, false };
91
- }
92
-
93
- /**
94
- * Multiply two positive integers with the given base using karatsuba algorithm.
95
- * Return pm_integer_t with values allocated. Not normalized.
96
- */
97
- static void
98
- karatsuba_multiply(pm_integer_t *destination, pm_integer_t *left, pm_integer_t *right, uint64_t base) {
99
- size_t left_length;
100
- uint32_t *left_values;
101
- INTEGER_EXTRACT(left, left_length, left_values)
102
-
103
- size_t right_length;
104
- uint32_t *right_values;
105
- INTEGER_EXTRACT(right, right_length, right_values)
106
-
107
- if (left_length > right_length) {
108
- size_t temporary_length = left_length;
109
- left_length = right_length;
110
- right_length = temporary_length;
111
-
112
- uint32_t *temporary_values = left_values;
113
- left_values = right_values;
114
- right_values = temporary_values;
115
- }
116
-
117
- if (left_length <= 10) {
118
- size_t length = left_length + right_length;
119
- uint32_t *values = (uint32_t *) xcalloc(length, sizeof(uint32_t));
120
- if (values == NULL) return;
121
-
122
- for (size_t left_index = 0; left_index < left_length; left_index++) {
123
- uint32_t carry = 0;
124
- for (size_t right_index = 0; right_index < right_length; right_index++) {
125
- uint64_t product = (uint64_t) left_values[left_index] * right_values[right_index] + values[left_index + right_index] + carry;
126
- values[left_index + right_index] = (uint32_t) (product % base);
127
- carry = (uint32_t) (product / base);
128
- }
129
- values[left_index + right_length] = carry;
130
- }
131
-
132
- while (length > 1 && values[length - 1] == 0) length--;
133
- *destination = (pm_integer_t) { length, values, 0, false };
134
- return;
135
- }
136
-
137
- if (left_length * 2 <= right_length) {
138
- uint32_t *values = (uint32_t *) xcalloc(left_length + right_length, sizeof(uint32_t));
139
-
140
- for (size_t start_offset = 0; start_offset < right_length; start_offset += left_length) {
141
- size_t end_offset = start_offset + left_length;
142
- if (end_offset > right_length) end_offset = right_length;
143
-
144
- pm_integer_t sliced_left = {
145
- .length = left_length,
146
- .values = left_values,
147
- .value = 0,
148
- .negative = false
149
- };
150
-
151
- pm_integer_t sliced_right = {
152
- .length = end_offset - start_offset,
153
- .values = right_values + start_offset,
154
- .value = 0,
155
- .negative = false
156
- };
157
-
158
- pm_integer_t product;
159
- karatsuba_multiply(&product, &sliced_left, &sliced_right, base);
160
-
161
- uint32_t carry = 0;
162
- for (size_t index = 0; index < product.length; index++) {
163
- uint64_t sum = (uint64_t) values[start_offset + index] + product.values[index] + carry;
164
- values[start_offset + index] = (uint32_t) (sum % base);
165
- carry = (uint32_t) (sum / base);
166
- }
167
-
168
- if (carry > 0) values[start_offset + product.length] += carry;
169
- pm_integer_free(&product);
170
- }
171
-
172
- *destination = (pm_integer_t) { left_length + right_length, values, 0, false };
173
- return;
174
- }
175
-
176
- size_t half = left_length / 2;
177
- pm_integer_t x0 = { half, left_values, 0, false };
178
- pm_integer_t x1 = { left_length - half, left_values + half, 0, false };
179
- pm_integer_t y0 = { half, right_values, 0, false };
180
- pm_integer_t y1 = { right_length - half, right_values + half, 0, false };
181
-
182
- pm_integer_t z0 = { 0 };
183
- karatsuba_multiply(&z0, &x0, &y0, base);
184
-
185
- pm_integer_t z2 = { 0 };
186
- karatsuba_multiply(&z2, &x1, &y1, base);
187
-
188
- // For simplicity to avoid considering negative values,
189
- // use `z1 = (x0 + x1) * (y0 + y1) - z0 - z2` instead of original karatsuba algorithm.
190
- pm_integer_t x01 = { 0 };
191
- big_add(&x01, &x0, &x1, base);
192
-
193
- pm_integer_t y01 = { 0 };
194
- big_add(&y01, &y0, &y1, base);
195
-
196
- pm_integer_t xy = { 0 };
197
- karatsuba_multiply(&xy, &x01, &y01, base);
198
-
199
- pm_integer_t z1;
200
- big_sub2(&z1, &xy, &z0, &z2, base);
201
-
202
- size_t length = left_length + right_length;
203
- uint32_t *values = (uint32_t*) xcalloc(length, sizeof(uint32_t));
204
-
205
- assert(z0.values != NULL);
206
- memcpy(values, z0.values, sizeof(uint32_t) * z0.length);
207
-
208
- assert(z2.values != NULL);
209
- memcpy(values + 2 * half, z2.values, sizeof(uint32_t) * z2.length);
210
-
211
- uint32_t carry = 0;
212
- for(size_t index = 0; index < z1.length; index++) {
213
- uint64_t sum = (uint64_t) carry + values[index + half] + z1.values[index];
214
- values[index + half] = (uint32_t) (sum % base);
215
- carry = (uint32_t) (sum / base);
216
- }
217
-
218
- for(size_t index = half + z1.length; carry > 0; index++) {
219
- uint64_t sum = (uint64_t) carry + values[index];
220
- values[index] = (uint32_t) (sum % base);
221
- carry = (uint32_t) (sum / base);
222
- }
223
-
224
- while (length > 1 && values[length - 1] == 0) length--;
225
- pm_integer_free(&z0);
226
- pm_integer_free(&z1);
227
- pm_integer_free(&z2);
228
- pm_integer_free(&x01);
229
- pm_integer_free(&y01);
230
- pm_integer_free(&xy);
231
-
232
- *destination = (pm_integer_t) { length, values, 0, false };
233
- }
234
-
235
- /**
236
- * The values of a hexadecimal digit, where the index is the ASCII character.
237
- * Note that there's an odd exception here where _ is mapped to 0. This is
238
- * because it's possible for us to end up trying to parse a number that has
239
- * already had an error attached to it, and we want to provide _something_ to
240
- * the user.
241
- */
242
- static const int8_t pm_integer_parse_digit_values[256] = {
243
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
244
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x
245
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 1x
246
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 2x
247
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, // 3x
248
- -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 4x
249
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, // 5x
250
- -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 6x
251
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 7x
252
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 8x
253
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 9x
254
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // Ax
255
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // Bx
256
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // Cx
257
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // Dx
258
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // Ex
259
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // Fx
260
- };
261
-
262
- /**
263
- * Return the value of a hexadecimal digit in a uint8_t.
264
- */
265
- static uint8_t
266
- pm_integer_parse_digit(const uint8_t character) {
267
- int8_t value = pm_integer_parse_digit_values[character];
268
- assert(value != -1 && "invalid digit");
269
-
270
- return (uint8_t) value;
271
- }
272
-
273
- /**
274
- * Create a pm_integer_t from uint64_t with the given base. It is assumed that
275
- * the memory for the pm_integer_t pointer has been zeroed.
276
- */
277
- static void
278
- pm_integer_from_uint64(pm_integer_t *integer, uint64_t value, uint64_t base) {
279
- if (value < base) {
280
- integer->value = (uint32_t) value;
281
- return;
282
- }
283
-
284
- size_t length = 0;
285
- uint64_t length_value = value;
286
- while (length_value > 0) {
287
- length++;
288
- length_value /= base;
289
- }
290
-
291
- uint32_t *values = (uint32_t *) xmalloc(sizeof(uint32_t) * length);
292
- if (values == NULL) return;
293
-
294
- for (size_t value_index = 0; value_index < length; value_index++) {
295
- values[value_index] = (uint32_t) (value % base);
296
- value /= base;
297
- }
298
-
299
- integer->length = length;
300
- integer->values = values;
301
- }
302
-
303
- /**
304
- * Normalize pm_integer_t.
305
- * Heading zero values will be removed. If the integer fits into uint32_t,
306
- * values is set to NULL, length is set to 0, and value field will be used.
307
- */
308
- static void
309
- pm_integer_normalize(pm_integer_t *integer) {
310
- if (integer->values == NULL) {
311
- return;
312
- }
313
-
314
- while (integer->length > 1 && integer->values[integer->length - 1] == 0) {
315
- integer->length--;
316
- }
317
-
318
- if (integer->length > 1) {
319
- return;
320
- }
321
-
322
- uint32_t value = integer->values[0];
323
- bool negative = integer->negative && value != 0;
324
-
325
- pm_integer_free(integer);
326
- *integer = (pm_integer_t) { .values = NULL, .value = value, .length = 0, .negative = negative };
327
- }
328
-
329
- /**
330
- * Convert base of the integer.
331
- * In practice, it converts 10**9 to 1<<32 or 1<<32 to 10**9.
332
- */
333
- static void
334
- pm_integer_convert_base(pm_integer_t *destination, const pm_integer_t *source, uint64_t base_from, uint64_t base_to) {
335
- size_t source_length;
336
- const uint32_t *source_values;
337
- INTEGER_EXTRACT(source, source_length, source_values)
338
-
339
- size_t bigints_length = (source_length + 1) / 2;
340
- assert(bigints_length > 0);
341
-
342
- pm_integer_t *bigints = (pm_integer_t *) xcalloc(bigints_length, sizeof(pm_integer_t));
343
- if (bigints == NULL) return;
344
-
345
- for (size_t index = 0; index < source_length; index += 2) {
346
- uint64_t value = source_values[index] + base_from * (index + 1 < source_length ? source_values[index + 1] : 0);
347
- pm_integer_from_uint64(&bigints[index / 2], value, base_to);
348
- }
349
-
350
- pm_integer_t base = { 0 };
351
- pm_integer_from_uint64(&base, base_from, base_to);
352
-
353
- while (bigints_length > 1) {
354
- pm_integer_t next_base;
355
- karatsuba_multiply(&next_base, &base, &base, base_to);
356
-
357
- pm_integer_free(&base);
358
- base = next_base;
359
-
360
- size_t next_length = (bigints_length + 1) / 2;
361
- pm_integer_t *next_bigints = (pm_integer_t *) xcalloc(next_length, sizeof(pm_integer_t));
362
-
363
- for (size_t bigints_index = 0; bigints_index < bigints_length; bigints_index += 2) {
364
- if (bigints_index + 1 == bigints_length) {
365
- next_bigints[bigints_index / 2] = bigints[bigints_index];
366
- } else {
367
- pm_integer_t multiplied = { 0 };
368
- karatsuba_multiply(&multiplied, &base, &bigints[bigints_index + 1], base_to);
369
-
370
- big_add(&next_bigints[bigints_index / 2], &bigints[bigints_index], &multiplied, base_to);
371
- pm_integer_free(&bigints[bigints_index]);
372
- pm_integer_free(&bigints[bigints_index + 1]);
373
- pm_integer_free(&multiplied);
374
- }
375
- }
376
-
377
- xfree(bigints);
378
- bigints = next_bigints;
379
- bigints_length = next_length;
380
- }
381
-
382
- *destination = bigints[0];
383
- destination->negative = source->negative;
384
- pm_integer_normalize(destination);
385
-
386
- xfree(bigints);
387
- pm_integer_free(&base);
388
- }
389
-
390
- #undef INTEGER_EXTRACT
391
-
392
- /**
393
- * Convert digits to integer with the given power-of-two base.
394
- */
395
- static void
396
- pm_integer_parse_powof2(pm_integer_t *integer, uint32_t base, const uint8_t *digits, size_t digits_length) {
397
- size_t bit = 1;
398
- while (base > (uint32_t) (1 << bit)) bit++;
399
-
400
- size_t length = (digits_length * bit + 31) / 32;
401
- uint32_t *values = (uint32_t *) xcalloc(length, sizeof(uint32_t));
402
-
403
- for (size_t digit_index = 0; digit_index < digits_length; digit_index++) {
404
- size_t bit_position = bit * (digits_length - digit_index - 1);
405
- uint32_t value = digits[digit_index];
406
-
407
- size_t index = bit_position / 32;
408
- size_t shift = bit_position % 32;
409
-
410
- values[index] |= value << shift;
411
- if (32 - shift < bit) values[index + 1] |= value >> (32 - shift);
412
- }
413
-
414
- while (length > 1 && values[length - 1] == 0) length--;
415
- *integer = (pm_integer_t) { .length = length, .values = values, .value = 0, .negative = false };
416
- pm_integer_normalize(integer);
417
- }
418
-
419
- /**
420
- * Convert decimal digits to pm_integer_t.
421
- */
422
- static void
423
- pm_integer_parse_decimal(pm_integer_t *integer, const uint8_t *digits, size_t digits_length) {
424
- const size_t batch = 9;
425
- size_t length = (digits_length + batch - 1) / batch;
426
-
427
- uint32_t *values = (uint32_t *) xcalloc(length, sizeof(uint32_t));
428
- uint32_t value = 0;
429
-
430
- for (size_t digits_index = 0; digits_index < digits_length; digits_index++) {
431
- value = value * 10 + digits[digits_index];
432
-
433
- size_t reverse_index = digits_length - digits_index - 1;
434
- if (reverse_index % batch == 0) {
435
- values[reverse_index / batch] = value;
436
- value = 0;
437
- }
438
- }
439
-
440
- // Convert base from 10**9 to 1<<32.
441
- pm_integer_convert_base(integer, &((pm_integer_t) { .length = length, .values = values, .value = 0, .negative = false }), 1000000000, ((uint64_t) 1 << 32));
442
- xfree(values);
443
- }
444
-
445
- /**
446
- * Parse a large integer from a string that does not fit into uint32_t.
447
- */
448
- static void
449
- pm_integer_parse_big(pm_integer_t *integer, uint32_t multiplier, const uint8_t *start, const uint8_t *end) {
450
- // Allocate an array to store digits.
451
- uint8_t *digits = xmalloc(sizeof(uint8_t) * (size_t) (end - start));
452
- size_t digits_length = 0;
453
-
454
- for (; start < end; start++) {
455
- if (*start == '_') continue;
456
- digits[digits_length++] = pm_integer_parse_digit(*start);
457
- }
458
-
459
- // Construct pm_integer_t from the digits.
460
- if (multiplier == 10) {
461
- pm_integer_parse_decimal(integer, digits, digits_length);
462
- } else {
463
- pm_integer_parse_powof2(integer, multiplier, digits, digits_length);
464
- }
465
-
466
- xfree(digits);
467
- }
468
-
469
- /**
470
- * Parse an integer from a string. This assumes that the format of the integer
471
- * has already been validated, as internal validation checks are not performed
472
- * here.
473
- */
474
- void
475
- pm_integer_parse(pm_integer_t *integer, pm_integer_base_t base, const uint8_t *start, const uint8_t *end) {
476
- // Ignore unary +. Unary - is parsed differently and will not end up here.
477
- // Instead, it will modify the parsed integer later.
478
- if (*start == '+') start++;
479
-
480
- // Determine the multiplier from the base, and skip past any prefixes.
481
- uint32_t multiplier = 10;
482
- switch (base) {
483
- case PM_INTEGER_BASE_DEFAULT:
484
- while (*start == '0') start++; // 01 -> 1
485
- break;
486
- case PM_INTEGER_BASE_BINARY:
487
- start += 2; // 0b
488
- multiplier = 2;
489
- break;
490
- case PM_INTEGER_BASE_OCTAL:
491
- start++; // 0
492
- if (*start == '_' || *start == 'o' || *start == 'O') start++; // o
493
- multiplier = 8;
494
- break;
495
- case PM_INTEGER_BASE_DECIMAL:
496
- if (*start == '0' && (end - start) > 1) start += 2; // 0d
497
- break;
498
- case PM_INTEGER_BASE_HEXADECIMAL:
499
- start += 2; // 0x
500
- multiplier = 16;
501
- break;
502
- case PM_INTEGER_BASE_UNKNOWN:
503
- if (*start == '0' && (end - start) > 1) {
504
- switch (start[1]) {
505
- case '_': start += 2; multiplier = 8; break;
506
- case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': start++; multiplier = 8; break;
507
- case 'b': case 'B': start += 2; multiplier = 2; break;
508
- case 'o': case 'O': start += 2; multiplier = 8; break;
509
- case 'd': case 'D': start += 2; break;
510
- case 'x': case 'X': start += 2; multiplier = 16; break;
511
- default: assert(false && "unreachable"); break;
512
- }
513
- }
514
- break;
515
- }
516
-
517
- // It's possible that we've consumed everything at this point if there is an
518
- // invalid integer. If this is the case, we'll just return 0.
519
- if (start >= end) return;
520
-
521
- const uint8_t *cursor = start;
522
- uint64_t value = (uint64_t) pm_integer_parse_digit(*cursor++);
523
-
524
- for (; cursor < end; cursor++) {
525
- if (*cursor == '_') continue;
526
- value = value * multiplier + (uint64_t) pm_integer_parse_digit(*cursor);
527
-
528
- if (value > UINT32_MAX) {
529
- // If the integer is too large to fit into a single uint32_t, then
530
- // we'll parse it as a big integer.
531
- pm_integer_parse_big(integer, multiplier, start, end);
532
- return;
533
- }
534
- }
535
-
536
- integer->value = (uint32_t) value;
537
- }
538
-
539
- /**
540
- * Compare two integers. This function returns -1 if the left integer is less
541
- * than the right integer, 0 if they are equal, and 1 if the left integer is
542
- * greater than the right integer.
543
- */
544
- int
545
- pm_integer_compare(const pm_integer_t *left, const pm_integer_t *right) {
546
- if (left->negative != right->negative) return left->negative ? -1 : 1;
547
- int negative = left->negative ? -1 : 1;
548
-
549
- if (left->values == NULL && right->values == NULL) {
550
- if (left->value < right->value) return -1 * negative;
551
- if (left->value > right->value) return 1 * negative;
552
- return 0;
553
- }
554
-
555
- if (left->values == NULL || left->length < right->length) return -1 * negative;
556
- if (right->values == NULL || left->length > right->length) return 1 * negative;
557
-
558
- for (size_t index = 0; index < left->length; index++) {
559
- size_t value_index = left->length - index - 1;
560
- uint32_t left_value = left->values[value_index];
561
- uint32_t right_value = right->values[value_index];
562
-
563
- if (left_value < right_value) return -1 * negative;
564
- if (left_value > right_value) return 1 * negative;
565
- }
566
-
567
- return 0;
568
- }
569
-
570
- /**
571
- * Reduce a ratio of integers to its simplest form.
572
- */
573
- void pm_integers_reduce(pm_integer_t *numerator, pm_integer_t *denominator) {
574
- // If either the numerator or denominator do not fit into a 32-bit integer,
575
- // then this function is a no-op. In the future, we may consider reducing
576
- // even the larger numbers, but for now we're going to keep it simple.
577
- if (
578
- // If the numerator doesn't fit into a 32-bit integer, return early.
579
- numerator->length != 0 ||
580
- // If the denominator doesn't fit into a 32-bit integer, return early.
581
- denominator->length != 0 ||
582
- // If the numerator is 0, then return early.
583
- numerator->value == 0 ||
584
- // If the denominator is 1, then return early.
585
- denominator->value == 1
586
- ) return;
587
-
588
- // Find the greatest common divisor of the numerator and denominator.
589
- uint32_t divisor = numerator->value;
590
- uint32_t remainder = denominator->value;
591
-
592
- while (remainder != 0) {
593
- uint32_t temporary = remainder;
594
- remainder = divisor % remainder;
595
- divisor = temporary;
596
- }
597
-
598
- // Divide the numerator and denominator by the greatest common divisor.
599
- numerator->value /= divisor;
600
- denominator->value /= divisor;
601
- }
602
-
603
- /**
604
- * Convert an integer to a decimal string.
605
- */
606
- PRISM_EXPORTED_FUNCTION void
607
- pm_integer_string(pm_buffer_t *buffer, const pm_integer_t *integer) {
608
- if (integer->negative) {
609
- pm_buffer_append_byte(buffer, '-');
610
- }
611
-
612
- // If the integer fits into a single uint32_t, then we can just append the
613
- // value directly to the buffer.
614
- if (integer->values == NULL) {
615
- pm_buffer_append_format(buffer, "%" PRIu32, integer->value);
616
- return;
617
- }
618
-
619
- // If the integer is two uint32_t values, then we can | them together and
620
- // append the result to the buffer.
621
- if (integer->length == 2) {
622
- const uint64_t value = ((uint64_t) integer->values[0]) | ((uint64_t) integer->values[1] << 32);
623
- pm_buffer_append_format(buffer, "%" PRIu64, value);
624
- return;
625
- }
626
-
627
- // Otherwise, first we'll convert the base from 1<<32 to 10**9.
628
- pm_integer_t converted = { 0 };
629
- pm_integer_convert_base(&converted, integer, (uint64_t) 1 << 32, 1000000000);
630
-
631
- if (converted.values == NULL) {
632
- pm_buffer_append_format(buffer, "%" PRIu32, converted.value);
633
- pm_integer_free(&converted);
634
- return;
635
- }
636
-
637
- // Allocate a buffer that we'll copy the decimal digits into.
638
- size_t digits_length = converted.length * 9;
639
- char *digits = xcalloc(digits_length, sizeof(char));
640
- if (digits == NULL) return;
641
-
642
- // Pack bigdecimal to digits.
643
- for (size_t value_index = 0; value_index < converted.length; value_index++) {
644
- uint32_t value = converted.values[value_index];
645
-
646
- for (size_t digit_index = 0; digit_index < 9; digit_index++) {
647
- digits[digits_length - 9 * value_index - digit_index - 1] = (char) ('0' + value % 10);
648
- value /= 10;
649
- }
650
- }
651
-
652
- size_t start_offset = 0;
653
- while (start_offset < digits_length - 1 && digits[start_offset] == '0') start_offset++;
654
-
655
- // Finally, append the string to the buffer and free the digits.
656
- pm_buffer_append_string(buffer, digits + start_offset, digits_length - start_offset);
657
- xfree(digits);
658
- pm_integer_free(&converted);
659
- }
660
-
661
- /**
662
- * Free the internal memory of an integer. This memory will only be allocated if
663
- * the integer exceeds the size of a single uint32_t.
664
- */
665
- PRISM_EXPORTED_FUNCTION void
666
- pm_integer_free(pm_integer_t *integer) {
667
- if (integer->values) {
668
- xfree(integer->values);
669
- }
670
- }