enclave 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (739) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +182 -0
  3. data/Rakefile +30 -0
  4. data/ext/enclave/enclave.c +390 -0
  5. data/ext/enclave/extconf.rb +33 -0
  6. data/ext/enclave/mruby/Makefile +63 -0
  7. data/ext/enclave/mruby/Rakefile +102 -0
  8. data/ext/enclave/mruby/benchmark/bm_ao_render.rb +309 -0
  9. data/ext/enclave/mruby/benchmark/bm_app_lc_fizzbuzz.rb +51 -0
  10. data/ext/enclave/mruby/benchmark/bm_fib.rb +6 -0
  11. data/ext/enclave/mruby/benchmark/bm_mandel_term.rb +34 -0
  12. data/ext/enclave/mruby/benchmark/bm_so_lists.rb +49 -0
  13. data/ext/enclave/mruby/benchmark/bm_so_mandelbrot.rb +65 -0
  14. data/ext/enclave/mruby/benchmark/vm_dispatch_bench.c +197 -0
  15. data/ext/enclave/mruby/benchmark/vm_optimization_bench.rb +513 -0
  16. data/ext/enclave/mruby/build/host/include/mrbconf.h +230 -0
  17. data/ext/enclave/mruby/build/host/include/mruby/array.h +303 -0
  18. data/ext/enclave/mruby/build/host/include/mruby/boxing_nan.h +169 -0
  19. data/ext/enclave/mruby/build/host/include/mruby/boxing_no.h +59 -0
  20. data/ext/enclave/mruby/build/host/include/mruby/boxing_word.h +248 -0
  21. data/ext/enclave/mruby/build/host/include/mruby/class.h +157 -0
  22. data/ext/enclave/mruby/build/host/include/mruby/common.h +127 -0
  23. data/ext/enclave/mruby/build/host/include/mruby/compile.h +187 -0
  24. data/ext/enclave/mruby/build/host/include/mruby/data.h +76 -0
  25. data/ext/enclave/mruby/build/host/include/mruby/debug.h +75 -0
  26. data/ext/enclave/mruby/build/host/include/mruby/dump.h +159 -0
  27. data/ext/enclave/mruby/build/host/include/mruby/endian.h +44 -0
  28. data/ext/enclave/mruby/build/host/include/mruby/error.h +168 -0
  29. data/ext/enclave/mruby/build/host/include/mruby/gc.h +77 -0
  30. data/ext/enclave/mruby/build/host/include/mruby/hash.h +234 -0
  31. data/ext/enclave/mruby/build/host/include/mruby/internal.h +278 -0
  32. data/ext/enclave/mruby/build/host/include/mruby/irep.h +142 -0
  33. data/ext/enclave/mruby/build/host/include/mruby/istruct.h +50 -0
  34. data/ext/enclave/mruby/build/host/include/mruby/khash.h +455 -0
  35. data/ext/enclave/mruby/build/host/include/mruby/mempool.h +19 -0
  36. data/ext/enclave/mruby/build/host/include/mruby/numeric.h +174 -0
  37. data/ext/enclave/mruby/build/host/include/mruby/object.h +44 -0
  38. data/ext/enclave/mruby/build/host/include/mruby/opcode.h +73 -0
  39. data/ext/enclave/mruby/build/host/include/mruby/ops.h +133 -0
  40. data/ext/enclave/mruby/build/host/include/mruby/presym/id.h +895 -0
  41. data/ext/enclave/mruby/build/host/include/mruby/presym/scanning.h +82 -0
  42. data/ext/enclave/mruby/build/host/include/mruby/presym/table.h +1787 -0
  43. data/ext/enclave/mruby/build/host/include/mruby/presym.h +65 -0
  44. data/ext/enclave/mruby/build/host/include/mruby/proc.h +184 -0
  45. data/ext/enclave/mruby/build/host/include/mruby/range.h +77 -0
  46. data/ext/enclave/mruby/build/host/include/mruby/re.h +16 -0
  47. data/ext/enclave/mruby/build/host/include/mruby/string.h +428 -0
  48. data/ext/enclave/mruby/build/host/include/mruby/throw.h +81 -0
  49. data/ext/enclave/mruby/build/host/include/mruby/value.h +471 -0
  50. data/ext/enclave/mruby/build/host/include/mruby/variable.h +108 -0
  51. data/ext/enclave/mruby/build/host/include/mruby/version.h +143 -0
  52. data/ext/enclave/mruby/build/host/include/mruby.h +1632 -0
  53. data/ext/enclave/mruby/build/host/mrbc/include/mruby/presym/id.h +281 -0
  54. data/ext/enclave/mruby/build/host/mrbc/include/mruby/presym/table.h +559 -0
  55. data/ext/enclave/mruby/build/host/mrbgems/gem_init.c +164 -0
  56. data/ext/enclave/mruby/build/host/mrbgems/mruby-array-ext/gem_init.c +650 -0
  57. data/ext/enclave/mruby/build/host/mrbgems/mruby-binding/gem_init.c +21 -0
  58. data/ext/enclave/mruby/build/host/mrbgems/mruby-catch/gem_init.c +86 -0
  59. data/ext/enclave/mruby/build/host/mrbgems/mruby-class-ext/gem_init.c +21 -0
  60. data/ext/enclave/mruby/build/host/mrbgems/mruby-compar-ext/gem_init.c +99 -0
  61. data/ext/enclave/mruby/build/host/mrbgems/mruby-complex/gem_init.c +362 -0
  62. data/ext/enclave/mruby/build/host/mrbgems/mruby-data/gem_init.c +21 -0
  63. data/ext/enclave/mruby/build/host/mrbgems/mruby-enum-chain/gem_init.c +229 -0
  64. data/ext/enclave/mruby/build/host/mrbgems/mruby-enum-ext/gem_init.c +1420 -0
  65. data/ext/enclave/mruby/build/host/mrbgems/mruby-enum-lazy/gem_init.c +602 -0
  66. data/ext/enclave/mruby/build/host/mrbgems/mruby-enumerator/gem_init.c +822 -0
  67. data/ext/enclave/mruby/build/host/mrbgems/mruby-eval/gem_init.c +21 -0
  68. data/ext/enclave/mruby/build/host/mrbgems/mruby-fiber/gem_init.c +21 -0
  69. data/ext/enclave/mruby/build/host/mrbgems/mruby-hash-ext/gem_init.c +591 -0
  70. data/ext/enclave/mruby/build/host/mrbgems/mruby-kernel-ext/gem_init.c +21 -0
  71. data/ext/enclave/mruby/build/host/mrbgems/mruby-math/gem_init.c +21 -0
  72. data/ext/enclave/mruby/build/host/mrbgems/mruby-metaprog/gem_init.c +21 -0
  73. data/ext/enclave/mruby/build/host/mrbgems/mruby-method/gem_init.c +153 -0
  74. data/ext/enclave/mruby/build/host/mrbgems/mruby-numeric-ext/gem_init.c +211 -0
  75. data/ext/enclave/mruby/build/host/mrbgems/mruby-object-ext/gem_init.c +94 -0
  76. data/ext/enclave/mruby/build/host/mrbgems/mruby-objectspace/gem_init.c +21 -0
  77. data/ext/enclave/mruby/build/host/mrbgems/mruby-pack/gem_init.c +21 -0
  78. data/ext/enclave/mruby/build/host/mrbgems/mruby-proc-binding/gem_init.c +21 -0
  79. data/ext/enclave/mruby/build/host/mrbgems/mruby-proc-ext/gem_init.c +237 -0
  80. data/ext/enclave/mruby/build/host/mrbgems/mruby-random/gem_init.c +21 -0
  81. data/ext/enclave/mruby/build/host/mrbgems/mruby-range-ext/gem_init.c +205 -0
  82. data/ext/enclave/mruby/build/host/mrbgems/mruby-rational/gem_init.c +147 -0
  83. data/ext/enclave/mruby/build/host/mrbgems/mruby-set/gem_init.c +487 -0
  84. data/ext/enclave/mruby/build/host/mrbgems/mruby-sprintf/gem_init.c +83 -0
  85. data/ext/enclave/mruby/build/host/mrbgems/mruby-string-ext/gem_init.c +220 -0
  86. data/ext/enclave/mruby/build/host/mrbgems/mruby-struct/gem_init.c +175 -0
  87. data/ext/enclave/mruby/build/host/mrbgems/mruby-symbol-ext/gem_init.c +153 -0
  88. data/ext/enclave/mruby/build/host/mrbgems/mruby-time/gem_init.c +21 -0
  89. data/ext/enclave/mruby/build/host/mrbgems/mruby-toplevel-ext/gem_init.c +78 -0
  90. data/ext/enclave/mruby/build/host/mrblib/mrblib.c +1758 -0
  91. data/ext/enclave/mruby/build_config/ArduinoDue.rb +72 -0
  92. data/ext/enclave/mruby/build_config/IntelEdison.rb +69 -0
  93. data/ext/enclave/mruby/build_config/IntelGalileo.rb +88 -0
  94. data/ext/enclave/mruby/build_config/RX630.rb +63 -0
  95. data/ext/enclave/mruby/build_config/android_arm64_v8a.rb +11 -0
  96. data/ext/enclave/mruby/build_config/android_armeabi_v7a_neon_hard.rb +13 -0
  97. data/ext/enclave/mruby/build_config/bench.rb +11 -0
  98. data/ext/enclave/mruby/build_config/boxing.rb +19 -0
  99. data/ext/enclave/mruby/build_config/chipKITMax32.rb +68 -0
  100. data/ext/enclave/mruby/build_config/ci/gcc-clang.rb +40 -0
  101. data/ext/enclave/mruby/build_config/ci/msvc.rb +20 -0
  102. data/ext/enclave/mruby/build_config/clang-asan.rb +11 -0
  103. data/ext/enclave/mruby/build_config/cosmopolitan.rb +86 -0
  104. data/ext/enclave/mruby/build_config/cross-32bit.rb +14 -0
  105. data/ext/enclave/mruby/build_config/cross-mingw-winetest.rb +90 -0
  106. data/ext/enclave/mruby/build_config/cross-mingw.rb +14 -0
  107. data/ext/enclave/mruby/build_config/default.rb +83 -0
  108. data/ext/enclave/mruby/build_config/dreamcast_shelf.rb +81 -0
  109. data/ext/enclave/mruby/build_config/emscripten-cxx.rb +12 -0
  110. data/ext/enclave/mruby/build_config/emscripten.rb +10 -0
  111. data/ext/enclave/mruby/build_config/gameboyadvance.rb +72 -0
  112. data/ext/enclave/mruby/build_config/helpers/wine_runner.rb +71 -0
  113. data/ext/enclave/mruby/build_config/host-cxx.rb +12 -0
  114. data/ext/enclave/mruby/build_config/host-debug.rb +20 -0
  115. data/ext/enclave/mruby/build_config/host-f32.rb +14 -0
  116. data/ext/enclave/mruby/build_config/host-gprof.rb +14 -0
  117. data/ext/enclave/mruby/build_config/host-m32.rb +15 -0
  118. data/ext/enclave/mruby/build_config/host-nofloat.rb +22 -0
  119. data/ext/enclave/mruby/build_config/host-shared.rb +36 -0
  120. data/ext/enclave/mruby/build_config/i586-pc-msdosdjgpp.rb +76 -0
  121. data/ext/enclave/mruby/build_config/luckfox_pico.rb +106 -0
  122. data/ext/enclave/mruby/build_config/milkv_duo.rb +106 -0
  123. data/ext/enclave/mruby/build_config/minimal.rb +4 -0
  124. data/ext/enclave/mruby/build_config/mrbc.rb +10 -0
  125. data/ext/enclave/mruby/build_config/nintendo_switch.rb +73 -0
  126. data/ext/enclave/mruby/build_config/nintendo_wii.rb +95 -0
  127. data/ext/enclave/mruby/build_config/no-float.rb +17 -0
  128. data/ext/enclave/mruby/build_config/playstationportable.rb +78 -0
  129. data/ext/enclave/mruby/build_config/serenity.rb +26 -0
  130. data/ext/enclave/mruby/build_config.rb +9 -0
  131. data/ext/enclave/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +5 -0
  132. data/ext/enclave/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +23 -0
  133. data/ext/enclave/mruby/examples/mrbgems/c_and_ruby_extension_example/test/example.rb +7 -0
  134. data/ext/enclave/mruby/examples/mrbgems/c_extension_example/src/example.c +23 -0
  135. data/ext/enclave/mruby/examples/mrbgems/c_extension_example/test/example.c +7 -0
  136. data/ext/enclave/mruby/examples/mrbgems/c_extension_example/test/example.rb +3 -0
  137. data/ext/enclave/mruby/examples/mrbgems/cdata_extension_example/src/example.c +77 -0
  138. data/ext/enclave/mruby/examples/mrbgems/cdata_extension_example/test/example.c +7 -0
  139. data/ext/enclave/mruby/examples/mrbgems/mruby-YOUR-bigint/core/bigint.c +70 -0
  140. data/ext/enclave/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +5 -0
  141. data/ext/enclave/mruby/examples/mrbgems/ruby_extension_example/test/example.rb +3 -0
  142. data/ext/enclave/mruby/include/mrbconf.h +230 -0
  143. data/ext/enclave/mruby/include/mruby/array.h +303 -0
  144. data/ext/enclave/mruby/include/mruby/boxing_nan.h +169 -0
  145. data/ext/enclave/mruby/include/mruby/boxing_no.h +59 -0
  146. data/ext/enclave/mruby/include/mruby/boxing_word.h +248 -0
  147. data/ext/enclave/mruby/include/mruby/class.h +157 -0
  148. data/ext/enclave/mruby/include/mruby/common.h +127 -0
  149. data/ext/enclave/mruby/include/mruby/compile.h +187 -0
  150. data/ext/enclave/mruby/include/mruby/data.h +76 -0
  151. data/ext/enclave/mruby/include/mruby/debug.h +75 -0
  152. data/ext/enclave/mruby/include/mruby/dump.h +159 -0
  153. data/ext/enclave/mruby/include/mruby/endian.h +44 -0
  154. data/ext/enclave/mruby/include/mruby/error.h +168 -0
  155. data/ext/enclave/mruby/include/mruby/gc.h +77 -0
  156. data/ext/enclave/mruby/include/mruby/hash.h +234 -0
  157. data/ext/enclave/mruby/include/mruby/internal.h +278 -0
  158. data/ext/enclave/mruby/include/mruby/irep.h +142 -0
  159. data/ext/enclave/mruby/include/mruby/istruct.h +50 -0
  160. data/ext/enclave/mruby/include/mruby/khash.h +455 -0
  161. data/ext/enclave/mruby/include/mruby/mempool.h +19 -0
  162. data/ext/enclave/mruby/include/mruby/numeric.h +174 -0
  163. data/ext/enclave/mruby/include/mruby/object.h +44 -0
  164. data/ext/enclave/mruby/include/mruby/opcode.h +73 -0
  165. data/ext/enclave/mruby/include/mruby/ops.h +133 -0
  166. data/ext/enclave/mruby/include/mruby/presym/scanning.h +82 -0
  167. data/ext/enclave/mruby/include/mruby/presym.h +65 -0
  168. data/ext/enclave/mruby/include/mruby/proc.h +184 -0
  169. data/ext/enclave/mruby/include/mruby/range.h +77 -0
  170. data/ext/enclave/mruby/include/mruby/re.h +16 -0
  171. data/ext/enclave/mruby/include/mruby/string.h +428 -0
  172. data/ext/enclave/mruby/include/mruby/throw.h +81 -0
  173. data/ext/enclave/mruby/include/mruby/value.h +471 -0
  174. data/ext/enclave/mruby/include/mruby/variable.h +108 -0
  175. data/ext/enclave/mruby/include/mruby/version.h +143 -0
  176. data/ext/enclave/mruby/include/mruby.h +1632 -0
  177. data/ext/enclave/mruby/lib/mruby/amalgam.rb +568 -0
  178. data/ext/enclave/mruby/lib/mruby/build/command.rb +383 -0
  179. data/ext/enclave/mruby/lib/mruby/build/load_gems.rb +383 -0
  180. data/ext/enclave/mruby/lib/mruby/build.rb +616 -0
  181. data/ext/enclave/mruby/lib/mruby/core_ext.rb +61 -0
  182. data/ext/enclave/mruby/lib/mruby/doc.rb +51 -0
  183. data/ext/enclave/mruby/lib/mruby/gem.rb +585 -0
  184. data/ext/enclave/mruby/lib/mruby/lockfile.rb +81 -0
  185. data/ext/enclave/mruby/lib/mruby/presym.rb +167 -0
  186. data/ext/enclave/mruby/lib/mruby/source.rb +32 -0
  187. data/ext/enclave/mruby/mrbgems/default-no-fpu.gembox +3 -0
  188. data/ext/enclave/mruby/mrbgems/default-no-stdio.gembox +4 -0
  189. data/ext/enclave/mruby/mrbgems/default.gembox +25 -0
  190. data/ext/enclave/mruby/mrbgems/full-core.gembox +6 -0
  191. data/ext/enclave/mruby/mrbgems/hal-posix-dir/mrbgem.rake +7 -0
  192. data/ext/enclave/mruby/mrbgems/hal-posix-dir/src/dir_hal.c +193 -0
  193. data/ext/enclave/mruby/mrbgems/hal-posix-io/mrbgem.rake +8 -0
  194. data/ext/enclave/mruby/mrbgems/hal-posix-io/src/io_hal.c +602 -0
  195. data/ext/enclave/mruby/mrbgems/hal-posix-socket/mrbgem.rake +8 -0
  196. data/ext/enclave/mruby/mrbgems/hal-posix-socket/src/socket_hal.c +158 -0
  197. data/ext/enclave/mruby/mrbgems/hal-posix-task/README.md +102 -0
  198. data/ext/enclave/mruby/mrbgems/hal-posix-task/mrbgem.rake +8 -0
  199. data/ext/enclave/mruby/mrbgems/hal-posix-task/src/task_hal.c +252 -0
  200. data/ext/enclave/mruby/mrbgems/hal-win-dir/mrbgem.rake +7 -0
  201. data/ext/enclave/mruby/mrbgems/hal-win-dir/src/dir_hal.c +249 -0
  202. data/ext/enclave/mruby/mrbgems/hal-win-io/mrbgem.rake +11 -0
  203. data/ext/enclave/mruby/mrbgems/hal-win-io/src/io_hal.c +646 -0
  204. data/ext/enclave/mruby/mrbgems/hal-win-socket/mrbgem.rake +12 -0
  205. data/ext/enclave/mruby/mrbgems/hal-win-socket/src/socket_hal.c +177 -0
  206. data/ext/enclave/mruby/mrbgems/hal-win-task/README.md +109 -0
  207. data/ext/enclave/mruby/mrbgems/hal-win-task/mrbgem.rake +11 -0
  208. data/ext/enclave/mruby/mrbgems/hal-win-task/src/task_hal.c +187 -0
  209. data/ext/enclave/mruby/mrbgems/math.gembox +12 -0
  210. data/ext/enclave/mruby/mrbgems/metaprog.gembox +21 -0
  211. data/ext/enclave/mruby/mrbgems/mruby-array-ext/README.md +87 -0
  212. data/ext/enclave/mruby/mrbgems/mruby-array-ext/mrbgem.rake +5 -0
  213. data/ext/enclave/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +784 -0
  214. data/ext/enclave/mruby/mrbgems/mruby-array-ext/src/array.c +1583 -0
  215. data/ext/enclave/mruby/mrbgems/mruby-array-ext/test/array.rb +849 -0
  216. data/ext/enclave/mruby/mrbgems/mruby-benchmark/README.md +257 -0
  217. data/ext/enclave/mruby/mrbgems/mruby-benchmark/mrbgem.rake +10 -0
  218. data/ext/enclave/mruby/mrbgems/mruby-benchmark/mrblib/benchmark.rb +131 -0
  219. data/ext/enclave/mruby/mrbgems/mruby-benchmark/test/benchmark.rb +244 -0
  220. data/ext/enclave/mruby/mrbgems/mruby-bigint/README-fgmp.md +154 -0
  221. data/ext/enclave/mruby/mrbgems/mruby-bigint/README.md +44 -0
  222. data/ext/enclave/mruby/mrbgems/mruby-bigint/core/bigint.c +6335 -0
  223. data/ext/enclave/mruby/mrbgems/mruby-bigint/core/bigint.h +117 -0
  224. data/ext/enclave/mruby/mrbgems/mruby-bigint/mrbgem.rake +10 -0
  225. data/ext/enclave/mruby/mrbgems/mruby-bigint/test/bigint.rb +157 -0
  226. data/ext/enclave/mruby/mrbgems/mruby-bin-config/README.md +46 -0
  227. data/ext/enclave/mruby/mrbgems/mruby-bin-config/mrbgem.rake +49 -0
  228. data/ext/enclave/mruby/mrbgems/mruby-bin-config/mruby-config +46 -0
  229. data/ext/enclave/mruby/mrbgems/mruby-bin-config/mruby-config.bat +92 -0
  230. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/README.md +63 -0
  231. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +283 -0
  232. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +703 -0
  233. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/mrbgem.rake +10 -0
  234. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +523 -0
  235. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.h +26 -0
  236. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +238 -0
  237. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.h +14 -0
  238. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +88 -0
  239. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +13 -0
  240. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apistring.c +34 -0
  241. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apistring.h +14 -0
  242. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +436 -0
  243. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +509 -0
  244. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +71 -0
  245. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +64 -0
  246. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +768 -0
  247. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +159 -0
  248. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +24 -0
  249. data/ext/enclave/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdberror.h +19 -0
  250. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/README.md +94 -0
  251. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +58 -0
  252. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +7 -0
  253. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +808 -0
  254. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_buffer.c +1035 -0
  255. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_buffer.h +185 -0
  256. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_completion.c +797 -0
  257. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_completion.h +132 -0
  258. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_editor.c +1118 -0
  259. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_editor.h +153 -0
  260. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_highlight.c +516 -0
  261. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_highlight.h +95 -0
  262. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_history.c +185 -0
  263. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_history.h +76 -0
  264. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_term.c +491 -0
  265. data/ext/enclave/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb_term.h +137 -0
  266. data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/README.md +58 -0
  267. data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/bintest/mrbc.rb +30 -0
  268. data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +15 -0
  269. data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +362 -0
  270. data/ext/enclave/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/stub.c +104 -0
  271. data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/README.md +47 -0
  272. data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +178 -0
  273. data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +7 -0
  274. data/ext/enclave/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +380 -0
  275. data/ext/enclave/mruby/mrbgems/mruby-bin-strip/README.md +38 -0
  276. data/ext/enclave/mruby/mrbgems/mruby-bin-strip/bintest/mruby_strip.rb +73 -0
  277. data/ext/enclave/mruby/mrbgems/mruby-bin-strip/mrbgem.rake +7 -0
  278. data/ext/enclave/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby_strip.c +139 -0
  279. data/ext/enclave/mruby/mrbgems/mruby-binding/README.md +256 -0
  280. data/ext/enclave/mruby/mrbgems/mruby-binding/mrbgem.rake +7 -0
  281. data/ext/enclave/mruby/mrbgems/mruby-binding/src/binding.c +518 -0
  282. data/ext/enclave/mruby/mrbgems/mruby-binding/test/binding.c +14 -0
  283. data/ext/enclave/mruby/mrbgems/mruby-binding/test/binding.rb +64 -0
  284. data/ext/enclave/mruby/mrbgems/mruby-catch/README.md +94 -0
  285. data/ext/enclave/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
  286. data/ext/enclave/mruby/mrbgems/mruby-catch/mrblib/catch.rb +29 -0
  287. data/ext/enclave/mruby/mrbgems/mruby-catch/src/catch.c +149 -0
  288. data/ext/enclave/mruby/mrbgems/mruby-catch/test/catch.rb +86 -0
  289. data/ext/enclave/mruby/mrbgems/mruby-class-ext/README.md +81 -0
  290. data/ext/enclave/mruby/mrbgems/mruby-class-ext/mrbgem.rake +5 -0
  291. data/ext/enclave/mruby/mrbgems/mruby-class-ext/src/class.c +377 -0
  292. data/ext/enclave/mruby/mrbgems/mruby-class-ext/test/class.rb +46 -0
  293. data/ext/enclave/mruby/mrbgems/mruby-class-ext/test/module.rb +109 -0
  294. data/ext/enclave/mruby/mrbgems/mruby-cmath/README.md +45 -0
  295. data/ext/enclave/mruby/mrbgems/mruby-cmath/mrbgem.rake +8 -0
  296. data/ext/enclave/mruby/mrbgems/mruby-cmath/src/cmath.c +426 -0
  297. data/ext/enclave/mruby/mrbgems/mruby-cmath/test/cmath.rb +41 -0
  298. data/ext/enclave/mruby/mrbgems/mruby-compar-ext/README.md +65 -0
  299. data/ext/enclave/mruby/mrbgems/mruby-compar-ext/mrbgem.rake +5 -0
  300. data/ext/enclave/mruby/mrbgems/mruby-compar-ext/mrblib/compar.rb +75 -0
  301. data/ext/enclave/mruby/mrbgems/mruby-compar-ext/test/compar.rb +21 -0
  302. data/ext/enclave/mruby/mrbgems/mruby-compiler/README.md +28 -0
  303. data/ext/enclave/mruby/mrbgems/mruby-compiler/core/codegen.c +7316 -0
  304. data/ext/enclave/mruby/mrbgems/mruby-compiler/core/keywords +52 -0
  305. data/ext/enclave/mruby/mrbgems/mruby-compiler/core/lex.def +207 -0
  306. data/ext/enclave/mruby/mrbgems/mruby-compiler/core/node.h +784 -0
  307. data/ext/enclave/mruby/mrbgems/mruby-compiler/core/parse.y +8977 -0
  308. data/ext/enclave/mruby/mrbgems/mruby-compiler/core/y.tab.c +16136 -0
  309. data/ext/enclave/mruby/mrbgems/mruby-compiler/mrbgem.rake +42 -0
  310. data/ext/enclave/mruby/mrbgems/mruby-complex/README.md +55 -0
  311. data/ext/enclave/mruby/mrbgems/mruby-complex/mrbgem.rake +7 -0
  312. data/ext/enclave/mruby/mrbgems/mruby-complex/mrblib/complex.rb +259 -0
  313. data/ext/enclave/mruby/mrbgems/mruby-complex/src/complex.c +597 -0
  314. data/ext/enclave/mruby/mrbgems/mruby-complex/test/complex.rb +174 -0
  315. data/ext/enclave/mruby/mrbgems/mruby-data/README.md +126 -0
  316. data/ext/enclave/mruby/mrbgems/mruby-data/mrbgem.rake +5 -0
  317. data/ext/enclave/mruby/mrbgems/mruby-data/src/data.c +550 -0
  318. data/ext/enclave/mruby/mrbgems/mruby-data/test/data.rb +76 -0
  319. data/ext/enclave/mruby/mrbgems/mruby-dir/README.md +53 -0
  320. data/ext/enclave/mruby/mrbgems/mruby-dir/include/dir_hal.h +79 -0
  321. data/ext/enclave/mruby/mrbgems/mruby-dir/mrbgem.rake +35 -0
  322. data/ext/enclave/mruby/mrbgems/mruby-dir/mrblib/dir.rb +124 -0
  323. data/ext/enclave/mruby/mrbgems/mruby-dir/src/dir.c +493 -0
  324. data/ext/enclave/mruby/mrbgems/mruby-dir/test/dir.rb +138 -0
  325. data/ext/enclave/mruby/mrbgems/mruby-dir/test/dirtest.c +125 -0
  326. data/ext/enclave/mruby/mrbgems/mruby-encoding/README.md +96 -0
  327. data/ext/enclave/mruby/mrbgems/mruby-encoding/mrbgem.rake +8 -0
  328. data/ext/enclave/mruby/mrbgems/mruby-encoding/src/encoding.c +128 -0
  329. data/ext/enclave/mruby/mrbgems/mruby-encoding/test/numeric.rb +27 -0
  330. data/ext/enclave/mruby/mrbgems/mruby-encoding/test/string.rb +30 -0
  331. data/ext/enclave/mruby/mrbgems/mruby-enum-chain/README.md +80 -0
  332. data/ext/enclave/mruby/mrbgems/mruby-enum-chain/mrbgem.rake +6 -0
  333. data/ext/enclave/mruby/mrbgems/mruby-enum-chain/mrblib/chain.rb +149 -0
  334. data/ext/enclave/mruby/mrbgems/mruby-enum-chain/test/enum_chain.rb +108 -0
  335. data/ext/enclave/mruby/mrbgems/mruby-enum-ext/README.md +487 -0
  336. data/ext/enclave/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +5 -0
  337. data/ext/enclave/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +938 -0
  338. data/ext/enclave/mruby/mrbgems/mruby-enum-ext/test/enum.rb +223 -0
  339. data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/README.md +91 -0
  340. data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake +7 -0
  341. data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +363 -0
  342. data/ext/enclave/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +59 -0
  343. data/ext/enclave/mruby/mrbgems/mruby-enumerator/README.md +89 -0
  344. data/ext/enclave/mruby/mrbgems/mruby-enumerator/mrbgem.rake +6 -0
  345. data/ext/enclave/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +861 -0
  346. data/ext/enclave/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +664 -0
  347. data/ext/enclave/mruby/mrbgems/mruby-errno/README.md +83 -0
  348. data/ext/enclave/mruby/mrbgems/mruby-errno/mrbgem.rake +5 -0
  349. data/ext/enclave/mruby/mrbgems/mruby-errno/mrblib/errno.rb +50 -0
  350. data/ext/enclave/mruby/mrbgems/mruby-errno/src/errno.c +335 -0
  351. data/ext/enclave/mruby/mrbgems/mruby-errno/src/gen.rb +18 -0
  352. data/ext/enclave/mruby/mrbgems/mruby-errno/src/known_errors.def +156 -0
  353. data/ext/enclave/mruby/mrbgems/mruby-errno/src/known_errors_def.cstub +780 -0
  354. data/ext/enclave/mruby/mrbgems/mruby-errno/test/errno.rb +57 -0
  355. data/ext/enclave/mruby/mrbgems/mruby-error/README.md +103 -0
  356. data/ext/enclave/mruby/mrbgems/mruby-error/mrbgem.rake +5 -0
  357. data/ext/enclave/mruby/mrbgems/mruby-error/src/exception.c +143 -0
  358. data/ext/enclave/mruby/mrbgems/mruby-error/test/exception.c +60 -0
  359. data/ext/enclave/mruby/mrbgems/mruby-error/test/exception.rb +55 -0
  360. data/ext/enclave/mruby/mrbgems/mruby-eval/README.md +26 -0
  361. data/ext/enclave/mruby/mrbgems/mruby-eval/mrbgem.rake +10 -0
  362. data/ext/enclave/mruby/mrbgems/mruby-eval/src/eval.c +437 -0
  363. data/ext/enclave/mruby/mrbgems/mruby-eval/test/binding.rb +81 -0
  364. data/ext/enclave/mruby/mrbgems/mruby-eval/test/eval.rb +185 -0
  365. data/ext/enclave/mruby/mrbgems/mruby-exit/mrbgem.rake +5 -0
  366. data/ext/enclave/mruby/mrbgems/mruby-exit/src/mruby_exit.c +83 -0
  367. data/ext/enclave/mruby/mrbgems/mruby-fiber/mrbgem.rake +5 -0
  368. data/ext/enclave/mruby/mrbgems/mruby-fiber/src/fiber.c +575 -0
  369. data/ext/enclave/mruby/mrbgems/mruby-fiber/test/fiber.rb +210 -0
  370. data/ext/enclave/mruby/mrbgems/mruby-fiber/test/fiber2.rb +155 -0
  371. data/ext/enclave/mruby/mrbgems/mruby-fiber/test/fibertest.c +87 -0
  372. data/ext/enclave/mruby/mrbgems/mruby-hash-ext/README.md +392 -0
  373. data/ext/enclave/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +6 -0
  374. data/ext/enclave/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +408 -0
  375. data/ext/enclave/mruby/mrbgems/mruby-hash-ext/src/hash_ext.c +392 -0
  376. data/ext/enclave/mruby/mrbgems/mruby-hash-ext/test/hash.rb +317 -0
  377. data/ext/enclave/mruby/mrbgems/mruby-io/README.md +198 -0
  378. data/ext/enclave/mruby/mrbgems/mruby-io/include/io_hal.h +451 -0
  379. data/ext/enclave/mruby/mrbgems/mruby-io/include/mruby/io.h +76 -0
  380. data/ext/enclave/mruby/mrbgems/mruby-io/mrbgem.rake +34 -0
  381. data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/file.rb +109 -0
  382. data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +24 -0
  383. data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/io.rb +303 -0
  384. data/ext/enclave/mruby/mrbgems/mruby-io/mrblib/kernel.rb +175 -0
  385. data/ext/enclave/mruby/mrbgems/mruby-io/src/file.c +1192 -0
  386. data/ext/enclave/mruby/mrbgems/mruby-io/src/file_test.c +403 -0
  387. data/ext/enclave/mruby/mrbgems/mruby-io/src/io.c +2260 -0
  388. data/ext/enclave/mruby/mrbgems/mruby-io/src/mruby_io_gem.c +21 -0
  389. data/ext/enclave/mruby/mrbgems/mruby-io/test/file.rb +415 -0
  390. data/ext/enclave/mruby/mrbgems/mruby-io/test/file_test.rb +112 -0
  391. data/ext/enclave/mruby/mrbgems/mruby-io/test/io.rb +668 -0
  392. data/ext/enclave/mruby/mrbgems/mruby-io/test/mruby_io_test.c +293 -0
  393. data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/README.md +165 -0
  394. data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/mrbgem.rake +5 -0
  395. data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +316 -0
  396. data/ext/enclave/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +134 -0
  397. data/ext/enclave/mruby/mrbgems/mruby-math/README.md +77 -0
  398. data/ext/enclave/mruby/mrbgems/mruby-math/mrbgem.rake +5 -0
  399. data/ext/enclave/mruby/mrbgems/mruby-math/src/math.c +753 -0
  400. data/ext/enclave/mruby/mrbgems/mruby-math/test/math.rb +201 -0
  401. data/ext/enclave/mruby/mrbgems/mruby-metaprog/README.md +123 -0
  402. data/ext/enclave/mruby/mrbgems/mruby-metaprog/mrbgem.rake +5 -0
  403. data/ext/enclave/mruby/mrbgems/mruby-metaprog/src/metaprog.c +739 -0
  404. data/ext/enclave/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +465 -0
  405. data/ext/enclave/mruby/mrbgems/mruby-method/README.md +66 -0
  406. data/ext/enclave/mruby/mrbgems/mruby-method/mrbgem.rake +7 -0
  407. data/ext/enclave/mruby/mrbgems/mruby-method/mrblib/method.rb +73 -0
  408. data/ext/enclave/mruby/mrbgems/mruby-method/src/method.c +890 -0
  409. data/ext/enclave/mruby/mrbgems/mruby-method/test/method.rb +514 -0
  410. data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/README.md +78 -0
  411. data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +5 -0
  412. data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/mrblib/numeric_ext.rb +125 -0
  413. data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +527 -0
  414. data/ext/enclave/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +137 -0
  415. data/ext/enclave/mruby/mrbgems/mruby-object-ext/README.md +144 -0
  416. data/ext/enclave/mruby/mrbgems/mruby-object-ext/mrbgem.rake +5 -0
  417. data/ext/enclave/mruby/mrbgems/mruby-object-ext/mrblib/object.rb +33 -0
  418. data/ext/enclave/mruby/mrbgems/mruby-object-ext/src/object.c +128 -0
  419. data/ext/enclave/mruby/mrbgems/mruby-object-ext/test/nil.rb +16 -0
  420. data/ext/enclave/mruby/mrbgems/mruby-object-ext/test/object.rb +67 -0
  421. data/ext/enclave/mruby/mrbgems/mruby-object-ext/test/object_ext.c +17 -0
  422. data/ext/enclave/mruby/mrbgems/mruby-objectspace/README.md +59 -0
  423. data/ext/enclave/mruby/mrbgems/mruby-objectspace/mrbgem.rake +5 -0
  424. data/ext/enclave/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +188 -0
  425. data/ext/enclave/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +60 -0
  426. data/ext/enclave/mruby/mrbgems/mruby-os-memsize/README.md +75 -0
  427. data/ext/enclave/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
  428. data/ext/enclave/mruby/mrbgems/mruby-os-memsize/src/memsize.c +271 -0
  429. data/ext/enclave/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
  430. data/ext/enclave/mruby/mrbgems/mruby-pack/README.md +140 -0
  431. data/ext/enclave/mruby/mrbgems/mruby-pack/mrbgem.rake +5 -0
  432. data/ext/enclave/mruby/mrbgems/mruby-pack/src/pack.c +2129 -0
  433. data/ext/enclave/mruby/mrbgems/mruby-pack/test/pack.rb +202 -0
  434. data/ext/enclave/mruby/mrbgems/mruby-proc-binding/README.md +140 -0
  435. data/ext/enclave/mruby/mrbgems/mruby-proc-binding/mrbgem.rake +10 -0
  436. data/ext/enclave/mruby/mrbgems/mruby-proc-binding/src/proc_binding.c +76 -0
  437. data/ext/enclave/mruby/mrbgems/mruby-proc-binding/test/proc_binding.c +14 -0
  438. data/ext/enclave/mruby/mrbgems/mruby-proc-binding/test/proc_binding.rb +22 -0
  439. data/ext/enclave/mruby/mrbgems/mruby-proc-ext/README.md +107 -0
  440. data/ext/enclave/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +5 -0
  441. data/ext/enclave/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +130 -0
  442. data/ext/enclave/mruby/mrbgems/mruby-proc-ext/src/proc.c +267 -0
  443. data/ext/enclave/mruby/mrbgems/mruby-proc-ext/test/proc.c +62 -0
  444. data/ext/enclave/mruby/mrbgems/mruby-proc-ext/test/proc.rb +130 -0
  445. data/ext/enclave/mruby/mrbgems/mruby-random/README.md +272 -0
  446. data/ext/enclave/mruby/mrbgems/mruby-random/mrbgem.rake +5 -0
  447. data/ext/enclave/mruby/mrbgems/mruby-random/src/random.c +608 -0
  448. data/ext/enclave/mruby/mrbgems/mruby-random/test/random.rb +151 -0
  449. data/ext/enclave/mruby/mrbgems/mruby-range-ext/README.md +93 -0
  450. data/ext/enclave/mruby/mrbgems/mruby-range-ext/mrbgem.rake +5 -0
  451. data/ext/enclave/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +155 -0
  452. data/ext/enclave/mruby/mrbgems/mruby-range-ext/src/range.c +236 -0
  453. data/ext/enclave/mruby/mrbgems/mruby-range-ext/test/range.rb +211 -0
  454. data/ext/enclave/mruby/mrbgems/mruby-rational/README.md +61 -0
  455. data/ext/enclave/mruby/mrbgems/mruby-rational/mrbgem.rake +7 -0
  456. data/ext/enclave/mruby/mrbgems/mruby-rational/mrblib/rational.rb +66 -0
  457. data/ext/enclave/mruby/mrbgems/mruby-rational/src/rational.c +1269 -0
  458. data/ext/enclave/mruby/mrbgems/mruby-rational/test/rational.rb +316 -0
  459. data/ext/enclave/mruby/mrbgems/mruby-set/LICENSE +24 -0
  460. data/ext/enclave/mruby/mrbgems/mruby-set/README.md +260 -0
  461. data/ext/enclave/mruby/mrbgems/mruby-set/mrbgem.rake +9 -0
  462. data/ext/enclave/mruby/mrbgems/mruby-set/mrblib/set.rb +325 -0
  463. data/ext/enclave/mruby/mrbgems/mruby-set/mruby-set.gem +6 -0
  464. data/ext/enclave/mruby/mrbgems/mruby-set/src/set.c +1535 -0
  465. data/ext/enclave/mruby/mrbgems/mruby-set/test/set.rb +764 -0
  466. data/ext/enclave/mruby/mrbgems/mruby-sleep/README.md +29 -0
  467. data/ext/enclave/mruby/mrbgems/mruby-sleep/example/sleep.rb +2 -0
  468. data/ext/enclave/mruby/mrbgems/mruby-sleep/mrbgem.rake +5 -0
  469. data/ext/enclave/mruby/mrbgems/mruby-sleep/src/sleep.c +187 -0
  470. data/ext/enclave/mruby/mrbgems/mruby-sleep/test/sleep_test.rb +29 -0
  471. data/ext/enclave/mruby/mrbgems/mruby-socket/README.md +56 -0
  472. data/ext/enclave/mruby/mrbgems/mruby-socket/include/socket_hal.h +83 -0
  473. data/ext/enclave/mruby/mrbgems/mruby-socket/mrbgem.rake +37 -0
  474. data/ext/enclave/mruby/mrbgems/mruby-socket/mrblib/socket.rb +1131 -0
  475. data/ext/enclave/mruby/mrbgems/mruby-socket/src/const.cstub +480 -0
  476. data/ext/enclave/mruby/mrbgems/mruby-socket/src/const.def +172 -0
  477. data/ext/enclave/mruby/mrbgems/mruby-socket/src/gen.rb +17 -0
  478. data/ext/enclave/mruby/mrbgems/mruby-socket/src/socket.c +1374 -0
  479. data/ext/enclave/mruby/mrbgems/mruby-socket/test/addrinfo.rb +91 -0
  480. data/ext/enclave/mruby/mrbgems/mruby-socket/test/basicsocket.rb +17 -0
  481. data/ext/enclave/mruby/mrbgems/mruby-socket/test/ipsocket.rb +44 -0
  482. data/ext/enclave/mruby/mrbgems/mruby-socket/test/socket.rb +38 -0
  483. data/ext/enclave/mruby/mrbgems/mruby-socket/test/sockettest.c +84 -0
  484. data/ext/enclave/mruby/mrbgems/mruby-socket/test/tcpsocket.rb +4 -0
  485. data/ext/enclave/mruby/mrbgems/mruby-socket/test/udpsocket.rb +16 -0
  486. data/ext/enclave/mruby/mrbgems/mruby-socket/test/unix.rb +130 -0
  487. data/ext/enclave/mruby/mrbgems/mruby-sprintf/README.md +235 -0
  488. data/ext/enclave/mruby/mrbgems/mruby-sprintf/mrbgem.rake +5 -0
  489. data/ext/enclave/mruby/mrbgems/mruby-sprintf/mrblib/string.rb +24 -0
  490. data/ext/enclave/mruby/mrbgems/mruby-sprintf/src/sprintf.c +1195 -0
  491. data/ext/enclave/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +92 -0
  492. data/ext/enclave/mruby/mrbgems/mruby-strftime/README.md +140 -0
  493. data/ext/enclave/mruby/mrbgems/mruby-strftime/mrbgem.rake +7 -0
  494. data/ext/enclave/mruby/mrbgems/mruby-strftime/src/strftime.c +119 -0
  495. data/ext/enclave/mruby/mrbgems/mruby-strftime/test/strftime.rb +152 -0
  496. data/ext/enclave/mruby/mrbgems/mruby-string-ext/README.md +886 -0
  497. data/ext/enclave/mruby/mrbgems/mruby-string-ext/mrbgem.rake +5 -0
  498. data/ext/enclave/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +166 -0
  499. data/ext/enclave/mruby/mrbgems/mruby-string-ext/src/string.c +2290 -0
  500. data/ext/enclave/mruby/mrbgems/mruby-string-ext/test/numeric.rb +27 -0
  501. data/ext/enclave/mruby/mrbgems/mruby-string-ext/test/range.rb +26 -0
  502. data/ext/enclave/mruby/mrbgems/mruby-string-ext/test/string.rb +765 -0
  503. data/ext/enclave/mruby/mrbgems/mruby-struct/README.md +105 -0
  504. data/ext/enclave/mruby/mrbgems/mruby-struct/mrbgem.rake +5 -0
  505. data/ext/enclave/mruby/mrbgems/mruby-struct/mrblib/struct.rb +69 -0
  506. data/ext/enclave/mruby/mrbgems/mruby-struct/src/struct.c +812 -0
  507. data/ext/enclave/mruby/mrbgems/mruby-struct/test/struct.rb +303 -0
  508. data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/README.md +50 -0
  509. data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +5 -0
  510. data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +72 -0
  511. data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +79 -0
  512. data/ext/enclave/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +55 -0
  513. data/ext/enclave/mruby/mrbgems/mruby-task/README.md +770 -0
  514. data/ext/enclave/mruby/mrbgems/mruby-task/examples/inspection.rb +65 -0
  515. data/ext/enclave/mruby/mrbgems/mruby-task/examples/priority.rb +41 -0
  516. data/ext/enclave/mruby/mrbgems/mruby-task/examples/producer_consumer.rb +58 -0
  517. data/ext/enclave/mruby/mrbgems/mruby-task/examples/simple.rb +27 -0
  518. data/ext/enclave/mruby/mrbgems/mruby-task/examples/statistics.rb +59 -0
  519. data/ext/enclave/mruby/mrbgems/mruby-task/examples/suspend_resume.rb +47 -0
  520. data/ext/enclave/mruby/mrbgems/mruby-task/examples/task_pass.rb +21 -0
  521. data/ext/enclave/mruby/mrbgems/mruby-task/include/task.h +143 -0
  522. data/ext/enclave/mruby/mrbgems/mruby-task/include/task_hal.h +162 -0
  523. data/ext/enclave/mruby/mrbgems/mruby-task/mrbgem.rake +36 -0
  524. data/ext/enclave/mruby/mrbgems/mruby-task/src/task.c +1573 -0
  525. data/ext/enclave/mruby/mrbgems/mruby-task/test/task.rb +185 -0
  526. data/ext/enclave/mruby/mrbgems/mruby-test/README.md +7 -0
  527. data/ext/enclave/mruby/mrbgems/mruby-test/driver.c +315 -0
  528. data/ext/enclave/mruby/mrbgems/mruby-test/mrbgem.rake +173 -0
  529. data/ext/enclave/mruby/mrbgems/mruby-test/vformat.c +151 -0
  530. data/ext/enclave/mruby/mrbgems/mruby-test-inline-struct/mrbgem.rake +5 -0
  531. data/ext/enclave/mruby/mrbgems/mruby-test-inline-struct/test/inline.c +92 -0
  532. data/ext/enclave/mruby/mrbgems/mruby-test-inline-struct/test/inline.rb +118 -0
  533. data/ext/enclave/mruby/mrbgems/mruby-time/README.md +102 -0
  534. data/ext/enclave/mruby/mrbgems/mruby-time/include/mruby/time.h +27 -0
  535. data/ext/enclave/mruby/mrbgems/mruby-time/mrbgem.rake +5 -0
  536. data/ext/enclave/mruby/mrbgems/mruby-time/src/time.c +1739 -0
  537. data/ext/enclave/mruby/mrbgems/mruby-time/test/time.rb +313 -0
  538. data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/README.md +32 -0
  539. data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +5 -0
  540. data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb +24 -0
  541. data/ext/enclave/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +23 -0
  542. data/ext/enclave/mruby/mrbgems/stdlib-ext.gembox +21 -0
  543. data/ext/enclave/mruby/mrbgems/stdlib-io.gembox +15 -0
  544. data/ext/enclave/mruby/mrbgems/stdlib.gembox +63 -0
  545. data/ext/enclave/mruby/mrblib/10error.rb +23 -0
  546. data/ext/enclave/mruby/mrblib/array.rb +102 -0
  547. data/ext/enclave/mruby/mrblib/compar.rb +102 -0
  548. data/ext/enclave/mruby/mrblib/enum.rb +358 -0
  549. data/ext/enclave/mruby/mrblib/hash.rb +276 -0
  550. data/ext/enclave/mruby/mrblib/kernel.rb +45 -0
  551. data/ext/enclave/mruby/mrblib/numeric.rb +160 -0
  552. data/ext/enclave/mruby/mrblib/range.rb +98 -0
  553. data/ext/enclave/mruby/mrblib/string.rb +173 -0
  554. data/ext/enclave/mruby/mrblib/symbol.rb +8 -0
  555. data/ext/enclave/mruby/oss-fuzz/mruby_fuzzer.c +18 -0
  556. data/ext/enclave/mruby/oss-fuzz/proto_to_ruby.h +55 -0
  557. data/ext/enclave/mruby/src/allocf.c +37 -0
  558. data/ext/enclave/mruby/src/array.c +2302 -0
  559. data/ext/enclave/mruby/src/backtrace.c +294 -0
  560. data/ext/enclave/mruby/src/cdump.c +498 -0
  561. data/ext/enclave/mruby/src/class.c +4394 -0
  562. data/ext/enclave/mruby/src/codedump.c +693 -0
  563. data/ext/enclave/mruby/src/debug.c +290 -0
  564. data/ext/enclave/mruby/src/dump.c +998 -0
  565. data/ext/enclave/mruby/src/enum.c +30 -0
  566. data/ext/enclave/mruby/src/error.c +937 -0
  567. data/ext/enclave/mruby/src/etc.c +421 -0
  568. data/ext/enclave/mruby/src/fmt_fp.c +372 -0
  569. data/ext/enclave/mruby/src/gc.c +1610 -0
  570. data/ext/enclave/mruby/src/hash.c +2355 -0
  571. data/ext/enclave/mruby/src/init.c +50 -0
  572. data/ext/enclave/mruby/src/kernel.c +718 -0
  573. data/ext/enclave/mruby/src/load.c +760 -0
  574. data/ext/enclave/mruby/src/mempool.c +225 -0
  575. data/ext/enclave/mruby/src/numeric.c +2420 -0
  576. data/ext/enclave/mruby/src/numops.c +112 -0
  577. data/ext/enclave/mruby/src/object.c +883 -0
  578. data/ext/enclave/mruby/src/print.c +136 -0
  579. data/ext/enclave/mruby/src/proc.c +572 -0
  580. data/ext/enclave/mruby/src/range.c +597 -0
  581. data/ext/enclave/mruby/src/readfloat.c +228 -0
  582. data/ext/enclave/mruby/src/readint.c +27 -0
  583. data/ext/enclave/mruby/src/readnum.c +43 -0
  584. data/ext/enclave/mruby/src/state.c +247 -0
  585. data/ext/enclave/mruby/src/string.c +3577 -0
  586. data/ext/enclave/mruby/src/symbol.c +1023 -0
  587. data/ext/enclave/mruby/src/value_array.h +28 -0
  588. data/ext/enclave/mruby/src/variable.c +1475 -0
  589. data/ext/enclave/mruby/src/version.c +17 -0
  590. data/ext/enclave/mruby/src/vm.c +3696 -0
  591. data/ext/enclave/mruby/tasks/amalgam.rake +34 -0
  592. data/ext/enclave/mruby/tasks/benchmark.rake +93 -0
  593. data/ext/enclave/mruby/tasks/bin.rake +23 -0
  594. data/ext/enclave/mruby/tasks/core.rake +12 -0
  595. data/ext/enclave/mruby/tasks/doc.rake +118 -0
  596. data/ext/enclave/mruby/tasks/install.rake +40 -0
  597. data/ext/enclave/mruby/tasks/libmruby.rake +90 -0
  598. data/ext/enclave/mruby/tasks/mrbgems.rake +152 -0
  599. data/ext/enclave/mruby/tasks/mrblib.rake +29 -0
  600. data/ext/enclave/mruby/tasks/presym.rake +57 -0
  601. data/ext/enclave/mruby/tasks/test.rake +84 -0
  602. data/ext/enclave/mruby/tasks/toolchains/android.rake +228 -0
  603. data/ext/enclave/mruby/tasks/toolchains/clang.rake +8 -0
  604. data/ext/enclave/mruby/tasks/toolchains/emscripten.rake +57 -0
  605. data/ext/enclave/mruby/tasks/toolchains/gcc.rake +74 -0
  606. data/ext/enclave/mruby/tasks/toolchains/openwrt.rake +32 -0
  607. data/ext/enclave/mruby/tasks/toolchains/visualcpp.rake +48 -0
  608. data/ext/enclave/mruby/test/assert.rb +404 -0
  609. data/ext/enclave/mruby/test/bintest.rb +55 -0
  610. data/ext/enclave/mruby/test/t/argumenterror.rb +37 -0
  611. data/ext/enclave/mruby/test/t/array.rb +478 -0
  612. data/ext/enclave/mruby/test/t/basicobject.rb +10 -0
  613. data/ext/enclave/mruby/test/t/bs_block.rb +621 -0
  614. data/ext/enclave/mruby/test/t/bs_literal.rb +38 -0
  615. data/ext/enclave/mruby/test/t/class.rb +505 -0
  616. data/ext/enclave/mruby/test/t/codegen.rb +196 -0
  617. data/ext/enclave/mruby/test/t/comparable.rb +79 -0
  618. data/ext/enclave/mruby/test/t/ensure.rb +36 -0
  619. data/ext/enclave/mruby/test/t/enumerable.rb +134 -0
  620. data/ext/enclave/mruby/test/t/exception.rb +425 -0
  621. data/ext/enclave/mruby/test/t/false.rb +31 -0
  622. data/ext/enclave/mruby/test/t/float.rb +296 -0
  623. data/ext/enclave/mruby/test/t/gc.rb +45 -0
  624. data/ext/enclave/mruby/test/t/hash.rb +976 -0
  625. data/ext/enclave/mruby/test/t/indexerror.rb +6 -0
  626. data/ext/enclave/mruby/test/t/integer.rb +247 -0
  627. data/ext/enclave/mruby/test/t/iterations.rb +61 -0
  628. data/ext/enclave/mruby/test/t/kernel.rb +462 -0
  629. data/ext/enclave/mruby/test/t/lang.rb +74 -0
  630. data/ext/enclave/mruby/test/t/literals.rb +386 -0
  631. data/ext/enclave/mruby/test/t/localjumperror.rb +13 -0
  632. data/ext/enclave/mruby/test/t/methods.rb +138 -0
  633. data/ext/enclave/mruby/test/t/module.rb +931 -0
  634. data/ext/enclave/mruby/test/t/nameerror.rb +28 -0
  635. data/ext/enclave/mruby/test/t/nil.rb +39 -0
  636. data/ext/enclave/mruby/test/t/nomethoderror.rb +22 -0
  637. data/ext/enclave/mruby/test/t/numeric.rb +114 -0
  638. data/ext/enclave/mruby/test/t/object.rb +10 -0
  639. data/ext/enclave/mruby/test/t/proc.rb +198 -0
  640. data/ext/enclave/mruby/test/t/range.rb +194 -0
  641. data/ext/enclave/mruby/test/t/rangeerror.rb +6 -0
  642. data/ext/enclave/mruby/test/t/regexperror.rb +4 -0
  643. data/ext/enclave/mruby/test/t/runtimeerror.rb +6 -0
  644. data/ext/enclave/mruby/test/t/standarderror.rb +6 -0
  645. data/ext/enclave/mruby/test/t/string.rb +981 -0
  646. data/ext/enclave/mruby/test/t/superclass.rb +46 -0
  647. data/ext/enclave/mruby/test/t/symbol.rb +30 -0
  648. data/ext/enclave/mruby/test/t/syntax.rb +1296 -0
  649. data/ext/enclave/mruby/test/t/true.rb +31 -0
  650. data/ext/enclave/mruby/test/t/typeerror.rb +6 -0
  651. data/ext/enclave/mruby/test/t/unicode.rb +39 -0
  652. data/ext/enclave/mruby/test/t/vformat.rb +57 -0
  653. data/ext/enclave/mruby/tools/lrama/LEGAL.md +12 -0
  654. data/ext/enclave/mruby/tools/lrama/MIT +21 -0
  655. data/ext/enclave/mruby/tools/lrama/NEWS.md +696 -0
  656. data/ext/enclave/mruby/tools/lrama/exe/lrama +7 -0
  657. data/ext/enclave/mruby/tools/lrama/lib/lrama/bitmap.rb +34 -0
  658. data/ext/enclave/mruby/tools/lrama/lib/lrama/command.rb +68 -0
  659. data/ext/enclave/mruby/tools/lrama/lib/lrama/context.rb +499 -0
  660. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/derivation.rb +66 -0
  661. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/example.rb +129 -0
  662. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/path.rb +29 -0
  663. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/production_path.rb +19 -0
  664. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/start_path.rb +23 -0
  665. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/state_item.rb +8 -0
  666. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/transition_path.rb +19 -0
  667. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples/triple.rb +23 -0
  668. data/ext/enclave/mruby/tools/lrama/lib/lrama/counterexamples.rb +298 -0
  669. data/ext/enclave/mruby/tools/lrama/lib/lrama/diagnostics.rb +36 -0
  670. data/ext/enclave/mruby/tools/lrama/lib/lrama/digraph.rb +83 -0
  671. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/auxiliary.rb +9 -0
  672. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/binding.rb +67 -0
  673. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/destructor_code.rb +42 -0
  674. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/initial_action_code.rb +36 -0
  675. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/no_reference_code.rb +30 -0
  676. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/printer_code.rb +42 -0
  677. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code/rule_action.rb +92 -0
  678. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/code.rb +53 -0
  679. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/counter.rb +17 -0
  680. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/destructor.rb +11 -0
  681. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/error_token.rb +11 -0
  682. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule/resolver.rb +62 -0
  683. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb +40 -0
  684. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule/rule.rb +24 -0
  685. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/parameterizing_rule.rb +5 -0
  686. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/percent_code.rb +14 -0
  687. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/precedence.rb +13 -0
  688. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/printer.rb +11 -0
  689. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/reference.rb +16 -0
  690. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/rule.rb +75 -0
  691. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/rule_builder.rb +255 -0
  692. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/stdlib.y +122 -0
  693. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/symbol.rb +105 -0
  694. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/symbols/resolver.rb +301 -0
  695. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/symbols.rb +3 -0
  696. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/type.rb +20 -0
  697. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar/union.rb +12 -0
  698. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar.rb +407 -0
  699. data/ext/enclave/mruby/tools/lrama/lib/lrama/grammar_validator.rb +37 -0
  700. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/grammar_file.rb +40 -0
  701. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/location.rb +115 -0
  702. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/char.rb +11 -0
  703. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/ident.rb +11 -0
  704. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/instantiate_rule.rb +30 -0
  705. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/tag.rb +16 -0
  706. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token/user_code.rb +83 -0
  707. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer/token.rb +70 -0
  708. data/ext/enclave/mruby/tools/lrama/lib/lrama/lexer.rb +191 -0
  709. data/ext/enclave/mruby/tools/lrama/lib/lrama/logger.rb +21 -0
  710. data/ext/enclave/mruby/tools/lrama/lib/lrama/option_parser.rb +169 -0
  711. data/ext/enclave/mruby/tools/lrama/lib/lrama/options.rb +28 -0
  712. data/ext/enclave/mruby/tools/lrama/lib/lrama/output.rb +459 -0
  713. data/ext/enclave/mruby/tools/lrama/lib/lrama/parser.rb +2144 -0
  714. data/ext/enclave/mruby/tools/lrama/lib/lrama/report/duration.rb +27 -0
  715. data/ext/enclave/mruby/tools/lrama/lib/lrama/report/profile.rb +16 -0
  716. data/ext/enclave/mruby/tools/lrama/lib/lrama/report.rb +4 -0
  717. data/ext/enclave/mruby/tools/lrama/lib/lrama/state/reduce.rb +37 -0
  718. data/ext/enclave/mruby/tools/lrama/lib/lrama/state/reduce_reduce_conflict.rb +11 -0
  719. data/ext/enclave/mruby/tools/lrama/lib/lrama/state/resolved_conflict.rb +31 -0
  720. data/ext/enclave/mruby/tools/lrama/lib/lrama/state/shift.rb +15 -0
  721. data/ext/enclave/mruby/tools/lrama/lib/lrama/state/shift_reduce_conflict.rb +11 -0
  722. data/ext/enclave/mruby/tools/lrama/lib/lrama/state.rb +433 -0
  723. data/ext/enclave/mruby/tools/lrama/lib/lrama/states/item.rb +91 -0
  724. data/ext/enclave/mruby/tools/lrama/lib/lrama/states.rb +595 -0
  725. data/ext/enclave/mruby/tools/lrama/lib/lrama/states_reporter.rb +362 -0
  726. data/ext/enclave/mruby/tools/lrama/lib/lrama/trace_reporter.rb +45 -0
  727. data/ext/enclave/mruby/tools/lrama/lib/lrama/version.rb +5 -0
  728. data/ext/enclave/mruby/tools/lrama/lib/lrama.rb +22 -0
  729. data/ext/enclave/mruby/tools/lrama/template/bison/_yacc.h +71 -0
  730. data/ext/enclave/mruby/tools/lrama/template/bison/yacc.c +2068 -0
  731. data/ext/enclave/mruby/tools/lrama/template/bison/yacc.h +40 -0
  732. data/ext/enclave/sandbox_build_config.rb +15 -0
  733. data/ext/enclave/sandbox_core.c +722 -0
  734. data/ext/enclave/sandbox_core.h +87 -0
  735. data/lib/enclave/result.rb +29 -0
  736. data/lib/enclave/tool.rb +38 -0
  737. data/lib/enclave/version.rb +3 -0
  738. data/lib/enclave.rb +73 -0
  739. metadata +819 -0
@@ -0,0 +1,784 @@
1
+ /*
2
+ ** node.h - nodes of abstract syntax tree
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_COMPILER_NODE_H
8
+ #define MRUBY_COMPILER_NODE_H
9
+
10
+ enum node_type {
11
+ NODE_SCOPE,
12
+ NODE_BLOCK,
13
+ NODE_IF,
14
+ NODE_CASE,
15
+ NODE_WHILE,
16
+ NODE_UNTIL,
17
+ NODE_WHILE_MOD,
18
+ NODE_UNTIL_MOD,
19
+ NODE_FOR,
20
+ NODE_BREAK,
21
+ NODE_NEXT,
22
+ NODE_REDO,
23
+ NODE_RETRY,
24
+ NODE_STMTS,
25
+ NODE_BEGIN,
26
+ NODE_RESCUE,
27
+ NODE_ENSURE,
28
+ NODE_AND,
29
+ NODE_OR,
30
+ NODE_NOT,
31
+ NODE_MASGN,
32
+ NODE_MARG,
33
+ NODE_ASGN,
34
+ NODE_OP_ASGN,
35
+ NODE_CALL,
36
+ NODE_SUPER,
37
+ NODE_ZSUPER,
38
+ NODE_ARRAY,
39
+ NODE_ZARRAY,
40
+ NODE_HASH,
41
+ NODE_RETURN,
42
+ NODE_YIELD,
43
+ NODE_LVAR,
44
+ NODE_DVAR,
45
+ NODE_GVAR,
46
+ NODE_IVAR,
47
+ NODE_CONST,
48
+ NODE_CVAR,
49
+ NODE_NVAR,
50
+ NODE_NTH_REF,
51
+ NODE_BACK_REF,
52
+ NODE_INT,
53
+ NODE_BIGINT,
54
+ NODE_FLOAT,
55
+ NODE_NEGATE,
56
+ NODE_LAMBDA,
57
+ NODE_SYM,
58
+ NODE_STR,
59
+ NODE_XSTR,
60
+ NODE_REGX,
61
+ NODE_SPLAT,
62
+ NODE_BLOCK_ARG,
63
+ NODE_DEF,
64
+ NODE_SDEF,
65
+ NODE_ALIAS,
66
+ NODE_UNDEF,
67
+ NODE_CLASS,
68
+ NODE_MODULE,
69
+ NODE_SCLASS,
70
+ NODE_COLON2,
71
+ NODE_COLON3,
72
+ NODE_DOT2,
73
+ NODE_DOT3,
74
+ NODE_SELF,
75
+ NODE_NIL,
76
+ NODE_TRUE,
77
+ NODE_FALSE,
78
+ NODE_DEFINED,
79
+ NODE_POSTEXE,
80
+ NODE_DSYM,
81
+ NODE_HEREDOC,
82
+ NODE_WORDS,
83
+ NODE_SYMBOLS,
84
+ /* Pattern matching nodes */
85
+ NODE_CASE_MATCH, /* case/in pattern matching expression */
86
+ NODE_IN, /* in-clause node */
87
+ NODE_PAT_VALUE, /* value pattern (literal, constant) */
88
+ NODE_PAT_VAR, /* variable pattern */
89
+ NODE_PAT_PIN, /* pin operator ^var */
90
+ NODE_PAT_AS, /* as pattern (pattern => var) */
91
+ NODE_PAT_ALT, /* alternative pattern (pat1 | pat2) */
92
+ NODE_PAT_ARRAY, /* array pattern [a, b, *rest] */
93
+ NODE_PAT_FIND, /* find pattern [*pre, elem, *post] */
94
+ NODE_PAT_HASH, /* hash pattern {a:, b: x} */
95
+ NODE_MATCH_PAT, /* one-line pattern matching (expr in pat / expr => pat) */
96
+ NODE_LAST
97
+ };
98
+
99
+ #define STR_FUNC_PARSING 0x01
100
+ #define STR_FUNC_EXPAND 0x02
101
+ #define STR_FUNC_REGEXP 0x04
102
+ #define STR_FUNC_WORD 0x08
103
+ #define STR_FUNC_SYMBOL 0x10
104
+ #define STR_FUNC_ARRAY 0x20
105
+ #define STR_FUNC_HEREDOC 0x40
106
+ #define STR_FUNC_XQUOTE 0x80
107
+
108
+ enum mrb_string_type {
109
+ str_not_parsing = (0),
110
+ str_squote = (STR_FUNC_PARSING),
111
+ str_dquote = (STR_FUNC_PARSING|STR_FUNC_EXPAND),
112
+ str_regexp = (STR_FUNC_PARSING|STR_FUNC_REGEXP|STR_FUNC_EXPAND),
113
+ str_sword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY),
114
+ str_dword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
115
+ str_ssym = (STR_FUNC_PARSING|STR_FUNC_SYMBOL),
116
+ str_ssymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY),
117
+ str_dsymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
118
+ str_heredoc = (STR_FUNC_PARSING|STR_FUNC_HEREDOC),
119
+ str_xquote = (STR_FUNC_PARSING|STR_FUNC_XQUOTE|STR_FUNC_EXPAND),
120
+ };
121
+
122
+ /* heredoc structure */
123
+ struct mrb_parser_heredoc_info {
124
+ mrb_bool allow_indent:1;
125
+ mrb_bool remove_indent:1;
126
+ mrb_bool line_head:1;
127
+ size_t indent;
128
+ mrb_ast_node *indented;
129
+ enum mrb_string_type type;
130
+ const char *term;
131
+ int term_len;
132
+ mrb_ast_node *doc;
133
+ };
134
+
135
+ /* AST node structures - Head-only location optimization */
136
+
137
+ /* Structure nodes - only car/cdr, ignores location fields */
138
+ struct mrb_ast_node {
139
+ struct mrb_ast_node *car, *cdr;
140
+ /* No location fields - saves 4 bytes per structure node */
141
+ };
142
+
143
+ /* Variable-sized AST nodes */
144
+
145
+ /* Variable node header - common to all variable-sized nodes */
146
+ struct mrb_ast_var_header {
147
+ uint16_t lineno; /* Line number information */
148
+ uint16_t filename_index; /* File index information */
149
+ uint8_t node_type; /* NODE_INT, NODE_SYM, NODE_STR, etc. */
150
+ /* Total: 6 bytes header for all variable nodes */
151
+ };
152
+
153
+ /* Literal value nodes */
154
+
155
+ /* Variable-sized symbol node */
156
+ struct mrb_ast_sym_node {
157
+ struct mrb_ast_var_header header; /* 8 bytes */
158
+ mrb_sym symbol; /* Direct symbol reference */
159
+ /* Total: 12-16 bytes vs previous 20+ bytes + indirection */
160
+ };
161
+
162
+ /* Variable-sized string node with cons list */
163
+ struct mrb_ast_str_node {
164
+ struct mrb_ast_var_header header;
165
+ struct mrb_ast_node *list;
166
+ };
167
+
168
+ /* Variable-sized integer node */
169
+ struct mrb_ast_int_node {
170
+ struct mrb_ast_var_header header; /* 8 bytes */
171
+ int32_t value; /* Direct 32-bit integer storage */
172
+ };
173
+
174
+ /* Variable-sized big integer node */
175
+ struct mrb_ast_bigint_node {
176
+ struct mrb_ast_var_header header; /* 8 bytes */
177
+ char *string; /* String representation of big number */
178
+ int base; /* Number base (8, 10, 16) */
179
+ };
180
+
181
+ /* Variable-sized node for variables (lvar, ivar, etc.) */
182
+ struct mrb_ast_var_node {
183
+ struct mrb_ast_var_header header;
184
+ mrb_sym symbol;
185
+ };
186
+
187
+ /* Expression and operation nodes */
188
+
189
+ /* Variable-sized call node with inline argument storage */
190
+ struct mrb_ast_call_node {
191
+ struct mrb_ast_var_header header; /* 8 bytes */
192
+ struct mrb_ast_node *receiver; /* Receiver object */
193
+ mrb_sym method_name; /* Method name symbol */
194
+ uint8_t safe_call:1; /* Safe navigation (&.) */
195
+ struct mrb_ast_node *args; /* Arguments Information */
196
+ };
197
+
198
+ /* Variable-sized array node */
199
+ struct mrb_ast_array_node {
200
+ struct mrb_ast_var_header header; /* 8 bytes */
201
+ struct mrb_ast_node *elements; /* Elements list (cons list) */
202
+ };
203
+
204
+ /* Variable-sized hash node */
205
+ struct mrb_ast_hash_node {
206
+ struct mrb_ast_var_header header; /* 8 bytes */
207
+ struct mrb_ast_node *pairs; /* Key-value pairs (cons list) */
208
+ };
209
+
210
+ /* Control flow and definition nodes */
211
+
212
+ /* Variable-sized method definition node */
213
+ struct mrb_ast_def_node {
214
+ struct mrb_ast_var_header header; /* 8 bytes */
215
+ mrb_sym name; /* Method name */
216
+ struct mrb_ast_args *args; /* Method arguments */
217
+ struct mrb_ast_node *body; /* Method body */
218
+ struct mrb_ast_node *locals; /* Local Variables */
219
+ } ;
220
+
221
+ /* Variable-sized singleton method definition node */
222
+ struct mrb_ast_sdef_node {
223
+ struct mrb_ast_var_header header; /* 8 bytes */
224
+ mrb_sym name; /* Method name */
225
+ struct mrb_ast_args *args; /* Method arguments */
226
+ struct mrb_ast_node *body; /* Method body */
227
+ struct mrb_ast_node *locals; /* Local Variables */
228
+ struct mrb_ast_node *obj; /* receiver */
229
+ };
230
+
231
+ /* variable-sized class definition node */
232
+ struct mrb_ast_class_node {
233
+ struct mrb_ast_var_header header; /* 8 bytes */
234
+ struct mrb_ast_node *name; /* Class name (NODE_CONST or NODE_COLON2) */
235
+ struct mrb_ast_node *superclass; /* Superclass (can be NULL) */
236
+ struct mrb_ast_node *body; /* Class body */
237
+ };
238
+
239
+ /* Variable-sized module definition node */
240
+ struct mrb_ast_module_node {
241
+ struct mrb_ast_var_header header; /* 8 bytes */
242
+ struct mrb_ast_node *name; /* Module name (NODE_CONST or NODE_COLON2) */
243
+ struct mrb_ast_node *body; /* Module body */
244
+ };
245
+
246
+ /* Variable-sized singleton class definition node */
247
+ struct mrb_ast_sclass_node {
248
+ struct mrb_ast_var_header header; /* 8 bytes */
249
+ struct mrb_ast_node *obj; /* Object for singleton class */
250
+ struct mrb_ast_node *body; /* Singleton class body */
251
+ };
252
+
253
+ /* Variable-sized if node */
254
+ struct mrb_ast_if_node {
255
+ struct mrb_ast_var_header header; /* 8 bytes */
256
+ struct mrb_ast_node *condition; /* Condition expression */
257
+ struct mrb_ast_node *then_body; /* Then branch */
258
+ struct mrb_ast_node *else_body; /* Else branch (can be NULL) */
259
+ };
260
+
261
+ /* Variable-sized while node */
262
+ struct mrb_ast_while_node {
263
+ struct mrb_ast_var_header header; /* 8 bytes */
264
+ struct mrb_ast_node *condition; /* Loop condition */
265
+ struct mrb_ast_node *body; /* Loop body */
266
+ };
267
+
268
+ /* Variable-sized until node */
269
+ struct mrb_ast_until_node {
270
+ struct mrb_ast_var_header header; /* 8 bytes */
271
+ struct mrb_ast_node *condition; /* Loop condition */
272
+ struct mrb_ast_node *body; /* Loop body */
273
+ };
274
+
275
+ /* Variable-sized case node */
276
+ struct mrb_ast_case_node {
277
+ struct mrb_ast_var_header header; /* 8 bytes */
278
+ struct mrb_ast_node *value; /* Case value expression */
279
+ struct mrb_ast_node *body; /* When/else clauses (cons list) */
280
+ };
281
+
282
+ /* Pattern matching case node (case/in) */
283
+ struct mrb_ast_case_match_node {
284
+ struct mrb_ast_var_header header; /* 8 bytes */
285
+ struct mrb_ast_node *value; /* Case value expression */
286
+ struct mrb_ast_node *in_clauses; /* In clause list (cons list) */
287
+ };
288
+
289
+ /* In clause node */
290
+ struct mrb_ast_in_node {
291
+ struct mrb_ast_var_header header; /* 8 bytes */
292
+ struct mrb_ast_node *pattern; /* Pattern to match */
293
+ struct mrb_ast_node *guard; /* Guard expression (optional) */
294
+ struct mrb_ast_node *body; /* Body to execute on match */
295
+ mrb_bool guard_is_unless; /* TRUE if 'unless', FALSE if 'if' */
296
+ };
297
+
298
+ /* Value pattern node (literal, constant) */
299
+ struct mrb_ast_pat_value_node {
300
+ struct mrb_ast_var_header header; /* 8 bytes */
301
+ struct mrb_ast_node *value; /* Literal or constant node */
302
+ };
303
+
304
+ /* Variable pattern node */
305
+ struct mrb_ast_pat_var_node {
306
+ struct mrb_ast_var_header header; /* 8 bytes */
307
+ mrb_sym name; /* Variable name (0 for wildcard _) */
308
+ };
309
+
310
+ /* Pin pattern node (^var) */
311
+ struct mrb_ast_pat_pin_node {
312
+ struct mrb_ast_var_header header; /* 8 bytes */
313
+ mrb_sym name; /* Variable name to pin */
314
+ };
315
+
316
+ /* As pattern node (pattern => var) */
317
+ struct mrb_ast_pat_as_node {
318
+ struct mrb_ast_var_header header; /* 8 bytes */
319
+ struct mrb_ast_node *pattern; /* Pattern to match */
320
+ mrb_sym name; /* Variable to bind */
321
+ };
322
+
323
+ /* Alternative pattern node (pat1 | pat2) */
324
+ struct mrb_ast_pat_alt_node {
325
+ struct mrb_ast_var_header header; /* 8 bytes */
326
+ struct mrb_ast_node *left; /* Left pattern */
327
+ struct mrb_ast_node *right; /* Right pattern */
328
+ };
329
+
330
+ /* Array pattern node [a, b, *rest] */
331
+ struct mrb_ast_pat_array_node {
332
+ struct mrb_ast_var_header header; /* 8 bytes */
333
+ struct mrb_ast_node *pre; /* Pre-rest patterns (cons list) */
334
+ struct mrb_ast_node *rest; /* Rest pattern (NULL if none, -1 if anonymous) */
335
+ struct mrb_ast_node *post; /* Post-rest patterns (cons list) */
336
+ };
337
+
338
+ /* Find pattern node [*pre, elem, *post] - searches for elem anywhere in array */
339
+ struct mrb_ast_pat_find_node {
340
+ struct mrb_ast_var_header header; /* 8 bytes */
341
+ struct mrb_ast_node *pre; /* Pre rest pattern (NULL or -1 if anonymous) */
342
+ struct mrb_ast_node *elems; /* Middle patterns to find (cons list) */
343
+ struct mrb_ast_node *post; /* Post rest pattern (NULL or -1 if anonymous) */
344
+ };
345
+
346
+ /* Hash pattern node {a:, b: x} */
347
+ struct mrb_ast_pat_hash_node {
348
+ struct mrb_ast_var_header header; /* 8 bytes */
349
+ struct mrb_ast_node *pairs; /* Key-pattern pairs (cons list) */
350
+ struct mrb_ast_node *rest; /* Rest pattern (NULL if none, -1 if **nil) */
351
+ };
352
+
353
+ /* One-line pattern matching: expr in pattern / expr => pattern */
354
+ struct mrb_ast_match_pat_node {
355
+ struct mrb_ast_var_header header; /* 8 bytes */
356
+ struct mrb_ast_node *value; /* Expression to match */
357
+ struct mrb_ast_node *pattern; /* Pattern */
358
+ mrb_bool raise_on_fail; /* TRUE for =>, FALSE for in */
359
+ };
360
+
361
+ /* Variable-sized for node */
362
+ struct mrb_ast_for_node {
363
+ struct mrb_ast_var_header header; /* 8 bytes */
364
+ struct mrb_ast_node *var; /* Loop variable */
365
+ struct mrb_ast_node *iterable; /* Object to iterate over */
366
+ struct mrb_ast_node *body; /* Loop body */
367
+ };
368
+
369
+ /* Assignment Node Structures */
370
+
371
+ /* Variable-sized assignment node */
372
+ struct mrb_ast_asgn_node {
373
+ struct mrb_ast_var_header header; /* 8 bytes */
374
+ struct mrb_ast_node *lhs; /* Left-hand side (target) */
375
+ struct mrb_ast_node *rhs; /* Right-hand side (value) */
376
+ };
377
+
378
+ /* Variable-sized multiple assignment node */
379
+ struct mrb_ast_masgn_node {
380
+ struct mrb_ast_var_header header; /* 8 bytes */
381
+ struct mrb_ast_node *pre; /* Pre-splat variables (cons list) */
382
+ struct mrb_ast_node *rest; /* Splat variable (single node or -1) */
383
+ struct mrb_ast_node *post; /* Post-splat variables (cons list) */
384
+ struct mrb_ast_node *rhs; /* Right-hand side (values) */
385
+ };
386
+
387
+ /* Variable-sized operator assignment node */
388
+ struct mrb_ast_op_asgn_node {
389
+ struct mrb_ast_var_header header; /* 8 bytes */
390
+ struct mrb_ast_node *lhs; /* Left-hand side (target) */
391
+ mrb_sym op; /* Assignment operator (e.g., +=, -=, etc.) */
392
+ struct mrb_ast_node *rhs; /* Right-hand side (value) */
393
+ };
394
+
395
+ /* Expression Node Structures */
396
+
397
+ /* Variable-sized AND node */
398
+ struct mrb_ast_and_node {
399
+ struct mrb_ast_var_header header; /* 8 bytes */
400
+ struct mrb_ast_node *left; /* Left operand */
401
+ struct mrb_ast_node *right; /* Right operand */
402
+ };
403
+
404
+ /* Variable-sized OR node */
405
+ struct mrb_ast_or_node {
406
+ struct mrb_ast_var_header header; /* 8 bytes */
407
+ struct mrb_ast_node *left; /* Left operand */
408
+ struct mrb_ast_node *right; /* Right operand */
409
+ };
410
+
411
+ /* Variable-sized RETURN node */
412
+ struct mrb_ast_return_node {
413
+ struct mrb_ast_var_header header; /* 8 bytes */
414
+ struct mrb_ast_node *args; /* Return arguments (can be NULL) */
415
+ };
416
+
417
+ /* Variable-sized YIELD node */
418
+ struct mrb_ast_yield_node {
419
+ struct mrb_ast_var_header header; /* 8 bytes */
420
+ struct mrb_ast_node *args; /* Yield arguments (can be NULL) */
421
+ };
422
+
423
+ /* Variable-sized SUPER node */
424
+ struct mrb_ast_super_node {
425
+ struct mrb_ast_var_header header; /* 8 bytes */
426
+ struct mrb_ast_node *args; /* Super arguments (can be NULL) */
427
+ };
428
+
429
+ #define NODE_TYPE(n) ((enum node_type)(((struct mrb_ast_var_header*)(n))->node_type))
430
+
431
+ /* Type-safe casting macros */
432
+ #define var_header(n) ((struct mrb_ast_var_header*)(n))
433
+
434
+ /* Common type casting macros used by parser and codegen */
435
+ #define node_to_sym(x) ((mrb_sym)(intptr_t)(x))
436
+ #define sym_to_node(x) ((node*)(intptr_t)(x))
437
+ #define int_to_node(x) ((node*)(intptr_t)(x))
438
+ #define node_to_int(x) ((int)(intptr_t)(x))
439
+ #define node_to_type(x) ((enum node_type)(intptr_t)(x))
440
+ #define node_to_char(x) ((char)(intptr_t)(x))
441
+
442
+ /* Literal value node casting macros */
443
+ #define sym_node(n) ((struct mrb_ast_sym_node*)(n))
444
+ #define str_node(n) ((struct mrb_ast_str_node*)(n))
445
+ #define int_node(n) ((struct mrb_ast_int_node*)(n))
446
+ #define bigint_node(n) ((struct mrb_ast_bigint_node*)(n))
447
+ #define var_node(n) ((struct mrb_ast_var_node*)(n))
448
+
449
+ /* Expression and operation node casting macros */
450
+ #define call_node(n) ((struct mrb_ast_call_node*)(n))
451
+ #define array_node(n) ((struct mrb_ast_array_node*)(n))
452
+ #define hash_node(n) ((struct mrb_ast_hash_node*)(n))
453
+
454
+ /* Control flow and definition node casting macros */
455
+ #define def_node(n) ((struct mrb_ast_def_node*)(n))
456
+ #define class_node(n) ((struct mrb_ast_class_node*)(n))
457
+ #define module_node(n) ((struct mrb_ast_module_node*)(n))
458
+ #define sclass_node(n) ((struct mrb_ast_sclass_node*)(n))
459
+ #define if_node(n) ((struct mrb_ast_if_node*)(n))
460
+ #define while_node(n) ((struct mrb_ast_while_node*)(n))
461
+ #define until_node(n) ((struct mrb_ast_until_node*)(n))
462
+ #define case_node(n) ((struct mrb_ast_case_node*)(n))
463
+ #define case_match_node(n) ((struct mrb_ast_case_match_node*)(n))
464
+ #define in_node(n) ((struct mrb_ast_in_node*)(n))
465
+ #define pat_value_node(n) ((struct mrb_ast_pat_value_node*)(n))
466
+ #define pat_var_node(n) ((struct mrb_ast_pat_var_node*)(n))
467
+ #define pat_pin_node(n) ((struct mrb_ast_pat_pin_node*)(n))
468
+ #define pat_as_node(n) ((struct mrb_ast_pat_as_node*)(n))
469
+ #define pat_alt_node(n) ((struct mrb_ast_pat_alt_node*)(n))
470
+ #define pat_array_node(n) ((struct mrb_ast_pat_array_node*)(n))
471
+ #define pat_find_node(n) ((struct mrb_ast_pat_find_node*)(n))
472
+ #define pat_hash_node(n) ((struct mrb_ast_pat_hash_node*)(n))
473
+ #define match_pat_node(n) ((struct mrb_ast_match_pat_node*)(n))
474
+ #define for_node(n) ((struct mrb_ast_for_node*)(n))
475
+ #define asgn_node(n) ((struct mrb_ast_asgn_node*)(n))
476
+ #define masgn_node(n) ((struct mrb_ast_masgn_node*)(n))
477
+ #define op_asgn_node(n) ((struct mrb_ast_op_asgn_node*)(n))
478
+ #define and_node(n) ((struct mrb_ast_and_node*)(n))
479
+ #define or_node(n) ((struct mrb_ast_or_node*)(n))
480
+ #define return_node(n) ((struct mrb_ast_return_node*)(n))
481
+ #define yield_node(n) ((struct mrb_ast_yield_node*)(n))
482
+ #define super_node(n) ((struct mrb_ast_super_node*)(n))
483
+
484
+ /* Variable-sized literal node structures */
485
+
486
+ struct mrb_ast_dot2_node {
487
+ struct mrb_ast_var_header header;
488
+ struct mrb_ast_node *left;
489
+ struct mrb_ast_node *right;
490
+ };
491
+
492
+ struct mrb_ast_dot3_node {
493
+ struct mrb_ast_var_header header;
494
+ struct mrb_ast_node *left;
495
+ struct mrb_ast_node *right;
496
+ };
497
+
498
+ struct mrb_ast_float_node {
499
+ struct mrb_ast_var_header header;
500
+ const char *value;
501
+ };
502
+
503
+ /* Literal node casting macros */
504
+ #define dot2_node(n) ((struct mrb_ast_dot2_node*)(n))
505
+ #define dot3_node(n) ((struct mrb_ast_dot3_node*)(n))
506
+ #define float_node(n) ((struct mrb_ast_float_node*)(n))
507
+
508
+ /* Variable-sized simple node structures */
509
+ struct mrb_ast_self_node {
510
+ struct mrb_ast_var_header header;
511
+ };
512
+
513
+ struct mrb_ast_nil_node {
514
+ struct mrb_ast_var_header header;
515
+ };
516
+
517
+ struct mrb_ast_true_node {
518
+ struct mrb_ast_var_header header;
519
+ };
520
+
521
+ struct mrb_ast_false_node {
522
+ struct mrb_ast_var_header header;
523
+ };
524
+
525
+ struct mrb_ast_const_node {
526
+ struct mrb_ast_var_header header;
527
+ mrb_sym symbol;
528
+ };
529
+
530
+ /* Simple node casting macros */
531
+ #define self_node(n) ((struct mrb_ast_self_node*)(n))
532
+ #define nil_node(n) ((struct mrb_ast_nil_node*)(n))
533
+ #define true_node(n) ((struct mrb_ast_true_node*)(n))
534
+ #define false_node(n) ((struct mrb_ast_false_node*)(n))
535
+ #define const_node(n) ((struct mrb_ast_const_node*)(n))
536
+
537
+ /* Variable-sized advanced node structures */
538
+ struct mrb_ast_rescue_node {
539
+ struct mrb_ast_var_header header;
540
+ struct mrb_ast_node *body;
541
+ struct mrb_ast_node *rescue_clauses;
542
+ struct mrb_ast_node *else_clause;
543
+ };
544
+
545
+ struct mrb_ast_block_node {
546
+ struct mrb_ast_var_header header;
547
+ struct mrb_ast_node *locals;
548
+ struct mrb_ast_args *args;
549
+ struct mrb_ast_node *body;
550
+ };
551
+
552
+ /* Unified argument structure - eliminates args_tail_node allocation */
553
+ struct mrb_ast_args {
554
+ /* Core argument lists (parser builds these naturally) */
555
+ struct mrb_ast_node *mandatory_args; /* Cons list of mandatory arguments */
556
+ struct mrb_ast_node *optional_args; /* Cons list of optional arguments */
557
+ struct mrb_ast_node *post_mandatory_args; /* Cons list of post-mandatory arguments */
558
+ struct mrb_ast_node *keyword_args; /* Cons list of keyword arguments */
559
+
560
+ /* Special arguments (directly embedded) */
561
+ mrb_sym rest_arg; /* Rest argument symbol (0 = none) */
562
+ mrb_sym kwrest_arg; /* Keyword rest argument (0 = none) */
563
+ mrb_sym block_arg; /* Block argument symbol (0 = none) */
564
+ };
565
+
566
+ /* Call arguments structure - replaces cons-based new_callargs */
567
+ struct mrb_ast_callargs {
568
+ struct mrb_ast_node *regular_args; /* Cons list of regular arguments (preserves splat compatibility) */
569
+ struct mrb_ast_node *keyword_args; /* Keyword arguments hash node */
570
+ struct mrb_ast_node *block_arg; /* Block argument node */
571
+ };
572
+
573
+ /* Advanced node casting macros */
574
+ #define rescue_node(n) ((struct mrb_ast_rescue_node*)(n))
575
+ #define block_node(n) ((struct mrb_ast_block_node*)(n))
576
+ #define callargs_node(n) ((struct mrb_ast_callargs*)(n))
577
+
578
+ /* Control flow statement nodes */
579
+ struct mrb_ast_break_node {
580
+ struct mrb_ast_var_header header;
581
+ struct mrb_ast_node *value;
582
+ };
583
+
584
+ struct mrb_ast_next_node {
585
+ struct mrb_ast_var_header header;
586
+ struct mrb_ast_node *value;
587
+ };
588
+
589
+ struct mrb_ast_redo_node {
590
+ struct mrb_ast_var_header header;
591
+ };
592
+
593
+ struct mrb_ast_retry_node {
594
+ struct mrb_ast_var_header header;
595
+ };
596
+
597
+ #define break_node(n) ((struct mrb_ast_break_node*)(n))
598
+ #define next_node(n) ((struct mrb_ast_next_node*)(n))
599
+ #define redo_node(n) ((struct mrb_ast_redo_node*)(n))
600
+ #define retry_node(n) ((struct mrb_ast_retry_node*)(n))
601
+
602
+ /* String and regex variant nodes */
603
+ struct mrb_ast_xstr_node {
604
+ struct mrb_ast_var_header header;
605
+ struct mrb_ast_node *list;
606
+ };
607
+
608
+ struct mrb_ast_regx_node {
609
+ struct mrb_ast_var_header header;
610
+ struct mrb_ast_node *list;
611
+ const char *flags;
612
+ const char *encoding;
613
+ };
614
+
615
+ struct mrb_ast_heredoc_node {
616
+ struct mrb_ast_var_header header;
617
+ struct mrb_parser_heredoc_info info;
618
+ };
619
+
620
+ #define xstr_node(n) ((struct mrb_ast_xstr_node*)(n))
621
+ #define regx_node(n) ((struct mrb_ast_regx_node*)(n))
622
+ #define heredoc_node(n) ((struct mrb_ast_heredoc_node*)(n))
623
+ #define dsym_node(n) ((struct mrb_ast_str_node*)(n))
624
+
625
+ /* Reference and special variable nodes */
626
+ struct mrb_ast_nth_ref_node {
627
+ struct mrb_ast_var_header header;
628
+ int nth;
629
+ };
630
+
631
+ struct mrb_ast_back_ref_node {
632
+ struct mrb_ast_var_header header;
633
+ int type;
634
+ };
635
+
636
+ struct mrb_ast_nvar_node {
637
+ struct mrb_ast_var_header header;
638
+ int num;
639
+ };
640
+
641
+ struct mrb_ast_dvar_node {
642
+ struct mrb_ast_var_header header;
643
+ mrb_sym name;
644
+ };
645
+
646
+ #define nth_ref_node(n) ((struct mrb_ast_nth_ref_node*)(n))
647
+ #define back_ref_node(n) ((struct mrb_ast_back_ref_node*)(n))
648
+ #define nvar_node(n) ((struct mrb_ast_nvar_node*)(n))
649
+ #define dvar_node(n) ((struct mrb_ast_dvar_node*)(n))
650
+
651
+ /* Unary operator and scope resolution nodes */
652
+ struct mrb_ast_not_node {
653
+ struct mrb_ast_var_header header;
654
+ struct mrb_ast_node *operand;
655
+ };
656
+
657
+ struct mrb_ast_negate_node {
658
+ struct mrb_ast_var_header header;
659
+ struct mrb_ast_node *operand;
660
+ };
661
+
662
+ struct mrb_ast_colon2_node {
663
+ struct mrb_ast_var_header header;
664
+ struct mrb_ast_node *base;
665
+ mrb_sym name;
666
+ };
667
+
668
+ struct mrb_ast_colon3_node {
669
+ struct mrb_ast_var_header header;
670
+ mrb_sym name;
671
+ };
672
+
673
+ struct mrb_ast_defined_node {
674
+ struct mrb_ast_var_header header;
675
+ struct mrb_ast_node *expr;
676
+ };
677
+
678
+ #define not_node(n) ((struct mrb_ast_not_node*)(n))
679
+ #define negate_node(n) ((struct mrb_ast_negate_node*)(n))
680
+ #define colon2_node(n) ((struct mrb_ast_colon2_node*)(n))
681
+ #define colon3_node(n) ((struct mrb_ast_colon3_node*)(n))
682
+ #define defined_node(n) ((struct mrb_ast_defined_node*)(n))
683
+
684
+ /* Lambda nodes */
685
+ struct mrb_ast_lambda_node {
686
+ struct mrb_ast_var_header header;
687
+ struct mrb_ast_node *locals;
688
+ struct mrb_ast_args *args;
689
+ struct mrb_ast_node *body;
690
+ };
691
+
692
+ /* Array literal variant nodes */
693
+ struct mrb_ast_zarray_node {
694
+ struct mrb_ast_var_header header;
695
+ };
696
+
697
+ struct mrb_ast_words_node {
698
+ struct mrb_ast_var_header header;
699
+ struct mrb_ast_node *args;
700
+ };
701
+
702
+ struct mrb_ast_symbols_node {
703
+ struct mrb_ast_var_header header;
704
+ struct mrb_ast_node *args;
705
+ };
706
+
707
+ /* Argument and parameter nodes */
708
+
709
+ struct mrb_ast_splat_node {
710
+ struct mrb_ast_var_header header;
711
+ struct mrb_ast_node *value;
712
+ };
713
+
714
+ struct mrb_ast_block_arg_node {
715
+ struct mrb_ast_var_header header;
716
+ struct mrb_ast_node *value;
717
+ };
718
+
719
+ /* Structural and block nodes */
720
+
721
+ struct mrb_ast_scope_node {
722
+ struct mrb_ast_var_header header;
723
+ struct mrb_ast_node *locals;
724
+ struct mrb_ast_node *body;
725
+ };
726
+
727
+ struct mrb_ast_begin_node {
728
+ struct mrb_ast_var_header header;
729
+ struct mrb_ast_node *body;
730
+ };
731
+
732
+ struct mrb_ast_ensure_node {
733
+ struct mrb_ast_var_header header;
734
+ struct mrb_ast_node *body;
735
+ struct mrb_ast_node *ensure_clause;
736
+ };
737
+
738
+ struct mrb_ast_stmts_node {
739
+ struct mrb_ast_var_header header;
740
+ struct mrb_ast_node *stmts; /* Cons-list of statements */
741
+ };
742
+
743
+ struct mrb_ast_iter_node {
744
+ struct mrb_ast_var_header header;
745
+ struct mrb_ast_node *vars;
746
+ struct mrb_ast_node *body;
747
+ };
748
+
749
+ /* Declaration nodes */
750
+
751
+ struct mrb_ast_alias_node {
752
+ struct mrb_ast_var_header header;
753
+ mrb_sym new_name;
754
+ mrb_sym old_name;
755
+ };
756
+
757
+ struct mrb_ast_undef_node {
758
+ struct mrb_ast_var_header header;
759
+ struct mrb_ast_node *syms;
760
+ };
761
+
762
+ struct mrb_ast_postexe_node {
763
+ struct mrb_ast_var_header header;
764
+ struct mrb_ast_node *body;
765
+ };
766
+
767
+ #define zsuper_node(n) ((struct mrb_ast_super_node*)(n))
768
+ #define lambda_node(n) ((struct mrb_ast_lambda_node*)(n))
769
+ #define zarray_node(n) ((struct mrb_ast_zarray_node*)(n))
770
+ #define words_node(n) ((struct mrb_ast_words_node*)(n))
771
+ #define symbols_node(n) ((struct mrb_ast_symbols_node*)(n))
772
+ #define splat_node(n) ((struct mrb_ast_splat_node*)(n))
773
+ #define block_arg_node(n) ((struct mrb_ast_block_arg_node*)(n))
774
+ #define scope_node(n) ((struct mrb_ast_scope_node*)(n))
775
+ #define begin_node(n) ((struct mrb_ast_begin_node*)(n))
776
+ #define ensure_node(n) ((struct mrb_ast_ensure_node*)(n))
777
+ #define stmts_node(n) ((struct mrb_ast_stmts_node*)(n))
778
+ #define iter_node(n) ((struct mrb_ast_iter_node*)(n))
779
+ #define alias_node(n) ((struct mrb_ast_alias_node*)(n))
780
+ #define undef_node(n) ((struct mrb_ast_undef_node*)(n))
781
+ #define postexe_node(n) ((struct mrb_ast_postexe_node*)(n))
782
+ #define sdef_node(n) ((struct mrb_ast_sdef_node*)(n))
783
+
784
+ #endif /* MRUBY_COMPILER_NODE_H */