debase-ruby_core_source 3.3.1 → 3.3.6

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 (435) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.idea/vcs.xml +28 -0
  4. data/CHANGELOG.md +8 -0
  5. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/addr2line.h +22 -0
  6. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/builtin.h +117 -0
  7. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/build_assert/build_assert.h +40 -0
  8. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/check_type/check_type.h +63 -0
  9. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/container_of/container_of.h +142 -0
  10. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/list/list.h +791 -0
  11. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ccan/str/str.h +17 -0
  12. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/constant.h +53 -0
  13. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/darray.h +246 -0
  14. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/debug_counter.h +423 -0
  15. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/dln.h +32 -0
  16. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/encindex.h +70 -0
  17. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/eval_intern.h +343 -0
  18. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/hrtime.h +227 -0
  19. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/id.h +343 -0
  20. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/id_table.h +39 -0
  21. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/insns.inc +251 -0
  22. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/insns_info.inc +9215 -0
  23. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/array.h +151 -0
  24. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/basic_operators.h +63 -0
  25. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/bignum.h +244 -0
  26. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/bits.h +568 -0
  27. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/class.h +277 -0
  28. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/cmdlineopt.h +65 -0
  29. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/compar.h +29 -0
  30. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/compile.h +34 -0
  31. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/compilers.h +107 -0
  32. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/complex.h +29 -0
  33. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/cont.h +35 -0
  34. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/dir.h +16 -0
  35. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/enc.h +19 -0
  36. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/encoding.h +35 -0
  37. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/enum.h +18 -0
  38. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/enumerator.h +21 -0
  39. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/error.h +216 -0
  40. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/eval.h +33 -0
  41. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/file.h +38 -0
  42. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/fixnum.h +184 -0
  43. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/gc.h +364 -0
  44. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/hash.h +191 -0
  45. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/imemo.h +240 -0
  46. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/inits.h +50 -0
  47. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/io.h +137 -0
  48. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/load.h +18 -0
  49. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/loadpath.h +16 -0
  50. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/math.h +23 -0
  51. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/missing.h +18 -0
  52. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/numeric.h +273 -0
  53. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/object.h +62 -0
  54. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/parse.h +108 -0
  55. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/proc.h +30 -0
  56. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/process.h +124 -0
  57. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/ractor.h +6 -0
  58. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/random.h +17 -0
  59. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/range.h +40 -0
  60. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/rational.h +71 -0
  61. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/re.h +28 -0
  62. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/ruby_parser.h +69 -0
  63. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/sanitizers.h +186 -0
  64. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/serial.h +23 -0
  65. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/signal.h +25 -0
  66. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/static_assert.h +16 -0
  67. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/string.h +160 -0
  68. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/struct.h +127 -0
  69. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/symbol.h +45 -0
  70. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/thread.h +78 -0
  71. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/time.h +34 -0
  72. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/transcode.h +23 -0
  73. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/util.h +27 -0
  74. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/variable.h +72 -0
  75. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/vm.h +136 -0
  76. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal/warnings.h +16 -0
  77. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/internal.h +112 -0
  78. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/iseq.h +338 -0
  79. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/known_errors.inc +791 -0
  80. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/method.h +254 -0
  81. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/node.h +128 -0
  82. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/node_name.inc +212 -0
  83. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/optinsn.inc +128 -0
  84. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/optunifs.inc +43 -0
  85. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parse.h +243 -0
  86. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_bits.h +564 -0
  87. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_node.h +32 -0
  88. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_st.h +162 -0
  89. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/parser_value.h +106 -0
  90. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/ast.h +4612 -0
  91. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/defines.h +94 -0
  92. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/diagnostic.h +297 -0
  93. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/encoding.h +248 -0
  94. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/extension.h +18 -0
  95. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/node.h +57 -0
  96. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/options.h +204 -0
  97. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/pack.h +152 -0
  98. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/parser.h +716 -0
  99. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/prettyprint.h +26 -0
  100. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/prism.h +272 -0
  101. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/regexp.h +33 -0
  102. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_buffer.h +146 -0
  103. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_char.h +205 -0
  104. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_constant_pool.h +191 -0
  105. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_list.h +97 -0
  106. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_memchr.h +29 -0
  107. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_newline_list.h +104 -0
  108. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_state_stack.h +42 -0
  109. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_string.h +150 -0
  110. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_string_list.h +44 -0
  111. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_strncasecmp.h +32 -0
  112. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/util/pm_strpbrk.h +43 -0
  113. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism/version.h +29 -0
  114. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/prism_compile.h +29 -0
  115. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/probes_helper.h +42 -0
  116. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ractor_core.h +393 -0
  117. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/regenc.h +254 -0
  118. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/regint.h +1006 -0
  119. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/regparse.h +371 -0
  120. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/revision.h +5 -0
  121. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/rjit.h +101 -0
  122. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/rjit_c.h +164 -0
  123. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ruby_assert.h +14 -0
  124. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/ruby_atomic.h +23 -0
  125. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/rubyparser.h +1405 -0
  126. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/shape.h +233 -0
  127. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/siphash.h +48 -0
  128. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/symbol.h +118 -0
  129. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/thread_none.h +21 -0
  130. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/thread_pthread.h +166 -0
  131. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/thread_win32.h +58 -0
  132. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/timev.h +58 -0
  133. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/transcode_data.h +138 -0
  134. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/variable.h +39 -0
  135. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/version.h +69 -0
  136. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm.inc +5436 -0
  137. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_call_iseq_optimized.inc +244 -0
  138. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_callinfo.h +614 -0
  139. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_core.h +2202 -0
  140. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_debug.h +122 -0
  141. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_exec.h +199 -0
  142. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_insnhelper.h +261 -0
  143. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_opts.h +67 -0
  144. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vm_sync.h +137 -0
  145. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/vmtc.inc +245 -0
  146. data/lib/debase/ruby_core_source/ruby-3.3.5-p100/yjit.h +72 -0
  147. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/addr2line.h +22 -0
  148. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/builtin.h +119 -0
  149. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/build_assert/build_assert.h +40 -0
  150. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/check_type/check_type.h +63 -0
  151. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/container_of/container_of.h +142 -0
  152. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/list/list.h +791 -0
  153. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ccan/str/str.h +17 -0
  154. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/constant.h +53 -0
  155. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/darray.h +191 -0
  156. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/debug_counter.h +423 -0
  157. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/dln.h +34 -0
  158. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/encindex.h +70 -0
  159. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/eval_intern.h +324 -0
  160. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/hrtime.h +237 -0
  161. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/id.h +343 -0
  162. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/id_table.h +39 -0
  163. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/insns.inc +259 -0
  164. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/insns_info.inc +9530 -0
  165. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/array.h +151 -0
  166. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/basic_operators.h +63 -0
  167. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/bignum.h +244 -0
  168. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/bits.h +568 -0
  169. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/class.h +283 -0
  170. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/cmdlineopt.h +65 -0
  171. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/compar.h +29 -0
  172. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/compile.h +34 -0
  173. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/compilers.h +107 -0
  174. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/complex.h +29 -0
  175. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/cont.h +35 -0
  176. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/dir.h +16 -0
  177. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/enc.h +19 -0
  178. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/encoding.h +36 -0
  179. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/enum.h +18 -0
  180. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/enumerator.h +21 -0
  181. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/error.h +216 -0
  182. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/eval.h +33 -0
  183. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/file.h +38 -0
  184. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/fixnum.h +184 -0
  185. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/gc.h +334 -0
  186. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/hash.h +191 -0
  187. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/imemo.h +260 -0
  188. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/inits.h +47 -0
  189. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/io.h +140 -0
  190. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/load.h +18 -0
  191. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/loadpath.h +16 -0
  192. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/math.h +23 -0
  193. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/missing.h +19 -0
  194. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/numeric.h +274 -0
  195. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/object.h +63 -0
  196. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/parse.h +117 -0
  197. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/proc.h +30 -0
  198. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/process.h +124 -0
  199. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/ractor.h +6 -0
  200. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/random.h +17 -0
  201. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/range.h +40 -0
  202. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/rational.h +71 -0
  203. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/re.h +28 -0
  204. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/ruby_parser.h +102 -0
  205. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/sanitizers.h +297 -0
  206. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/serial.h +23 -0
  207. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/signal.h +24 -0
  208. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/st.h +11 -0
  209. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/static_assert.h +16 -0
  210. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/string.h +182 -0
  211. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/struct.h +127 -0
  212. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/symbol.h +45 -0
  213. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/thread.h +79 -0
  214. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/time.h +34 -0
  215. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/transcode.h +23 -0
  216. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/util.h +27 -0
  217. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/variable.h +72 -0
  218. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/vm.h +137 -0
  219. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal/warnings.h +16 -0
  220. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/internal.h +108 -0
  221. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/iseq.h +340 -0
  222. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/known_errors.inc +1419 -0
  223. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/method.h +255 -0
  224. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/node.h +111 -0
  225. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/node_name.inc +224 -0
  226. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/optinsn.inc +128 -0
  227. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/optunifs.inc +43 -0
  228. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parse.h +243 -0
  229. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_bits.h +564 -0
  230. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_node.h +32 -0
  231. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_st.h +162 -0
  232. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/parser_value.h +106 -0
  233. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/ast.h +6245 -0
  234. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/defines.h +206 -0
  235. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/diagnostic.h +433 -0
  236. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/encoding.h +283 -0
  237. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/extension.h +19 -0
  238. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/node.h +150 -0
  239. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/options.h +305 -0
  240. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/pack.h +163 -0
  241. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/parser.h +891 -0
  242. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/prettyprint.h +34 -0
  243. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/prism.h +347 -0
  244. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/regexp.h +33 -0
  245. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/static_literals.h +120 -0
  246. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_buffer.h +218 -0
  247. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_char.h +205 -0
  248. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_constant_pool.h +226 -0
  249. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_integer.h +119 -0
  250. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_list.h +97 -0
  251. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_memchr.h +29 -0
  252. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_newline_list.h +102 -0
  253. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string.h +174 -0
  254. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_string_list.h +44 -0
  255. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_strncasecmp.h +32 -0
  256. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/util/pm_strpbrk.h +46 -0
  257. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism/version.h +29 -0
  258. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/prism_compile.h +88 -0
  259. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/probes_helper.h +42 -0
  260. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ractor_core.h +393 -0
  261. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/regenc.h +254 -0
  262. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/regint.h +1010 -0
  263. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/regparse.h +371 -0
  264. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/revision.h +5 -0
  265. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/rjit.h +101 -0
  266. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/rjit_c.h +165 -0
  267. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ruby_assert.h +14 -0
  268. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/ruby_atomic.h +23 -0
  269. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/rubyparser.h +1430 -0
  270. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/shape.h +233 -0
  271. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/siphash.h +48 -0
  272. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/symbol.h +118 -0
  273. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/thread_none.h +21 -0
  274. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/thread_pthread.h +166 -0
  275. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/thread_win32.h +58 -0
  276. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/timev.h +58 -0
  277. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/transcode_data.h +138 -0
  278. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/variable.h +39 -0
  279. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/version.h +69 -0
  280. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm.inc +5643 -0
  281. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_call_iseq_optimized.inc +244 -0
  282. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_callinfo.h +605 -0
  283. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_core.h +2236 -0
  284. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_debug.h +124 -0
  285. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_exec.h +199 -0
  286. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_insnhelper.h +272 -0
  287. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_opts.h +67 -0
  288. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vm_sync.h +137 -0
  289. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/vmtc.inc +253 -0
  290. data/lib/debase/ruby_core_source/ruby-3.4.0-preview1/yjit.h +79 -0
  291. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/addr2line.h +22 -0
  292. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/builtin.h +119 -0
  293. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/build_assert/build_assert.h +40 -0
  294. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/check_type/check_type.h +63 -0
  295. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/container_of/container_of.h +142 -0
  296. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/list/list.h +791 -0
  297. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ccan/str/str.h +17 -0
  298. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/constant.h +53 -0
  299. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/darray.h +209 -0
  300. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/debug_counter.h +423 -0
  301. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/dln.h +32 -0
  302. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/encindex.h +70 -0
  303. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/eval_intern.h +324 -0
  304. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/hrtime.h +237 -0
  305. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/id.h +347 -0
  306. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/id_table.h +39 -0
  307. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/insns.inc +265 -0
  308. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/insns_info.inc +9902 -0
  309. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/array.h +152 -0
  310. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/basic_operators.h +64 -0
  311. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/bignum.h +244 -0
  312. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/bits.h +568 -0
  313. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/class.h +283 -0
  314. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/cmdlineopt.h +65 -0
  315. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compar.h +29 -0
  316. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compile.h +34 -0
  317. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/compilers.h +107 -0
  318. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/complex.h +29 -0
  319. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/cont.h +35 -0
  320. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/dir.h +16 -0
  321. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enc.h +19 -0
  322. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/encoding.h +36 -0
  323. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enum.h +18 -0
  324. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/enumerator.h +21 -0
  325. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/error.h +218 -0
  326. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/eval.h +33 -0
  327. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/file.h +38 -0
  328. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/fixnum.h +184 -0
  329. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/gc.h +322 -0
  330. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/hash.h +192 -0
  331. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/imemo.h +261 -0
  332. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/inits.h +47 -0
  333. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/io.h +143 -0
  334. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/load.h +18 -0
  335. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/loadpath.h +16 -0
  336. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/math.h +23 -0
  337. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/missing.h +19 -0
  338. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/numeric.h +274 -0
  339. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/object.h +63 -0
  340. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/parse.h +129 -0
  341. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/proc.h +30 -0
  342. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/process.h +124 -0
  343. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/ractor.h +6 -0
  344. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/random.h +17 -0
  345. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/range.h +40 -0
  346. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/rational.h +71 -0
  347. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/re.h +28 -0
  348. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/ruby_parser.h +102 -0
  349. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/sanitizers.h +326 -0
  350. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/serial.h +23 -0
  351. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/signal.h +24 -0
  352. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/st.h +11 -0
  353. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/static_assert.h +16 -0
  354. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/string.h +186 -0
  355. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/struct.h +127 -0
  356. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/symbol.h +45 -0
  357. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/thread.h +85 -0
  358. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/time.h +34 -0
  359. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/transcode.h +23 -0
  360. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/util.h +27 -0
  361. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/variable.h +72 -0
  362. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/vm.h +137 -0
  363. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal/warnings.h +16 -0
  364. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/internal.h +108 -0
  365. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/iseq.h +340 -0
  366. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/known_errors.inc +1419 -0
  367. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/method.h +255 -0
  368. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/node.h +111 -0
  369. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/node_name.inc +224 -0
  370. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/optinsn.inc +128 -0
  371. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/optunifs.inc +43 -0
  372. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parse.h +244 -0
  373. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_bits.h +564 -0
  374. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_node.h +32 -0
  375. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_st.h +162 -0
  376. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/parser_value.h +106 -0
  377. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/ast.h +7524 -0
  378. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/defines.h +242 -0
  379. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/diagnostic.h +450 -0
  380. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/encoding.h +283 -0
  381. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/extension.h +19 -0
  382. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/node.h +129 -0
  383. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/options.h +396 -0
  384. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/pack.h +163 -0
  385. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/parser.h +933 -0
  386. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/prettyprint.h +34 -0
  387. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/prism.h +336 -0
  388. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/regexp.h +43 -0
  389. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/static_literals.h +121 -0
  390. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_buffer.h +218 -0
  391. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_char.h +204 -0
  392. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_constant_pool.h +218 -0
  393. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_integer.h +126 -0
  394. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_list.h +97 -0
  395. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_memchr.h +29 -0
  396. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_newline_list.h +113 -0
  397. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_string.h +190 -0
  398. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_strncasecmp.h +32 -0
  399. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/util/pm_strpbrk.h +46 -0
  400. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism/version.h +29 -0
  401. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/prism_compile.h +99 -0
  402. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/probes_helper.h +42 -0
  403. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ractor_core.h +382 -0
  404. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regenc.h +254 -0
  405. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regint.h +1006 -0
  406. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/regparse.h +371 -0
  407. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/revision.h +5 -0
  408. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit.h +101 -0
  409. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rjit_c.h +165 -0
  410. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_assert.h +14 -0
  411. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/ruby_atomic.h +23 -0
  412. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/rubyparser.h +1350 -0
  413. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/shape.h +234 -0
  414. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/siphash.h +48 -0
  415. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/symbol.h +123 -0
  416. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_none.h +21 -0
  417. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_pthread.h +168 -0
  418. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/thread_win32.h +58 -0
  419. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/timev.h +58 -0
  420. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/transcode_data.h +138 -0
  421. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/variable.h +39 -0
  422. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/version.h +69 -0
  423. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm.inc +5840 -0
  424. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_call_iseq_optimized.inc +244 -0
  425. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_callinfo.h +627 -0
  426. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_core.h +2222 -0
  427. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_debug.h +124 -0
  428. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_exec.h +199 -0
  429. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_insnhelper.h +277 -0
  430. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_opts.h +67 -0
  431. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vm_sync.h +137 -0
  432. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/vmtc.inc +259 -0
  433. data/lib/debase/ruby_core_source/ruby-3.4.0-preview2/yjit.h +79 -0
  434. data/lib/debase/ruby_core_source/version.rb +1 -1
  435. metadata +436 -6
@@ -0,0 +1,4612 @@
1
+ /******************************************************************************/
2
+ /* This file is generated by the templates/template.rb script and should not */
3
+ /* be modified manually. See */
4
+ /* templates/include/prism/ast.h.erb */
5
+ /* if you are looking to modify the */
6
+ /* template */
7
+ /******************************************************************************/
8
+ /**
9
+ * @file ast.h
10
+ *
11
+ * The abstract syntax tree.
12
+ */
13
+ #ifndef PRISM_AST_H
14
+ #define PRISM_AST_H
15
+
16
+ #include "prism/defines.h"
17
+ #include "prism/util/pm_constant_pool.h"
18
+ #include "prism/util/pm_string.h"
19
+
20
+ #include <assert.h>
21
+ #include <stddef.h>
22
+ #include <stdint.h>
23
+
24
+ /**
25
+ * This enum represents every type of token in the Ruby source.
26
+ */
27
+ typedef enum pm_token_type {
28
+ /** final token in the file */
29
+ PM_TOKEN_EOF = 1,
30
+
31
+ /** a token that was expected but not found */
32
+ PM_TOKEN_MISSING,
33
+
34
+ /** a token that was not present but it is okay */
35
+ PM_TOKEN_NOT_PROVIDED,
36
+
37
+ /** & */
38
+ PM_TOKEN_AMPERSAND,
39
+
40
+ /** && */
41
+ PM_TOKEN_AMPERSAND_AMPERSAND,
42
+
43
+ /** &&= */
44
+ PM_TOKEN_AMPERSAND_AMPERSAND_EQUAL,
45
+
46
+ /** &. */
47
+ PM_TOKEN_AMPERSAND_DOT,
48
+
49
+ /** &= */
50
+ PM_TOKEN_AMPERSAND_EQUAL,
51
+
52
+ /** ` */
53
+ PM_TOKEN_BACKTICK,
54
+
55
+ /** a back reference */
56
+ PM_TOKEN_BACK_REFERENCE,
57
+
58
+ /** ! or !@ */
59
+ PM_TOKEN_BANG,
60
+
61
+ /** != */
62
+ PM_TOKEN_BANG_EQUAL,
63
+
64
+ /** !~ */
65
+ PM_TOKEN_BANG_TILDE,
66
+
67
+ /** { */
68
+ PM_TOKEN_BRACE_LEFT,
69
+
70
+ /** } */
71
+ PM_TOKEN_BRACE_RIGHT,
72
+
73
+ /** [ */
74
+ PM_TOKEN_BRACKET_LEFT,
75
+
76
+ /** [ for the beginning of an array */
77
+ PM_TOKEN_BRACKET_LEFT_ARRAY,
78
+
79
+ /** [] */
80
+ PM_TOKEN_BRACKET_LEFT_RIGHT,
81
+
82
+ /** []= */
83
+ PM_TOKEN_BRACKET_LEFT_RIGHT_EQUAL,
84
+
85
+ /** ] */
86
+ PM_TOKEN_BRACKET_RIGHT,
87
+
88
+ /** ^ */
89
+ PM_TOKEN_CARET,
90
+
91
+ /** ^= */
92
+ PM_TOKEN_CARET_EQUAL,
93
+
94
+ /** a character literal */
95
+ PM_TOKEN_CHARACTER_LITERAL,
96
+
97
+ /** a class variable */
98
+ PM_TOKEN_CLASS_VARIABLE,
99
+
100
+ /** : */
101
+ PM_TOKEN_COLON,
102
+
103
+ /** :: */
104
+ PM_TOKEN_COLON_COLON,
105
+
106
+ /** , */
107
+ PM_TOKEN_COMMA,
108
+
109
+ /** a comment */
110
+ PM_TOKEN_COMMENT,
111
+
112
+ /** a constant */
113
+ PM_TOKEN_CONSTANT,
114
+
115
+ /** the . call operator */
116
+ PM_TOKEN_DOT,
117
+
118
+ /** the .. range operator */
119
+ PM_TOKEN_DOT_DOT,
120
+
121
+ /** the ... range operator or forwarding parameter */
122
+ PM_TOKEN_DOT_DOT_DOT,
123
+
124
+ /** =begin */
125
+ PM_TOKEN_EMBDOC_BEGIN,
126
+
127
+ /** =end */
128
+ PM_TOKEN_EMBDOC_END,
129
+
130
+ /** a line inside of embedded documentation */
131
+ PM_TOKEN_EMBDOC_LINE,
132
+
133
+ /** #{ */
134
+ PM_TOKEN_EMBEXPR_BEGIN,
135
+
136
+ /** } */
137
+ PM_TOKEN_EMBEXPR_END,
138
+
139
+ /** # */
140
+ PM_TOKEN_EMBVAR,
141
+
142
+ /** = */
143
+ PM_TOKEN_EQUAL,
144
+
145
+ /** == */
146
+ PM_TOKEN_EQUAL_EQUAL,
147
+
148
+ /** === */
149
+ PM_TOKEN_EQUAL_EQUAL_EQUAL,
150
+
151
+ /** => */
152
+ PM_TOKEN_EQUAL_GREATER,
153
+
154
+ /** =~ */
155
+ PM_TOKEN_EQUAL_TILDE,
156
+
157
+ /** a floating point number */
158
+ PM_TOKEN_FLOAT,
159
+
160
+ /** a floating pointer number with an imaginary suffix */
161
+ PM_TOKEN_FLOAT_IMAGINARY,
162
+
163
+ /** a floating pointer number with a rational suffix */
164
+ PM_TOKEN_FLOAT_RATIONAL,
165
+
166
+ /** a floating pointer number with a rational and imaginary suffix */
167
+ PM_TOKEN_FLOAT_RATIONAL_IMAGINARY,
168
+
169
+ /** a global variable */
170
+ PM_TOKEN_GLOBAL_VARIABLE,
171
+
172
+ /** > */
173
+ PM_TOKEN_GREATER,
174
+
175
+ /** >= */
176
+ PM_TOKEN_GREATER_EQUAL,
177
+
178
+ /** >> */
179
+ PM_TOKEN_GREATER_GREATER,
180
+
181
+ /** >>= */
182
+ PM_TOKEN_GREATER_GREATER_EQUAL,
183
+
184
+ /** the end of a heredoc */
185
+ PM_TOKEN_HEREDOC_END,
186
+
187
+ /** the start of a heredoc */
188
+ PM_TOKEN_HEREDOC_START,
189
+
190
+ /** an identifier */
191
+ PM_TOKEN_IDENTIFIER,
192
+
193
+ /** an ignored newline */
194
+ PM_TOKEN_IGNORED_NEWLINE,
195
+
196
+ /** an instance variable */
197
+ PM_TOKEN_INSTANCE_VARIABLE,
198
+
199
+ /** an integer (any base) */
200
+ PM_TOKEN_INTEGER,
201
+
202
+ /** an integer with an imaginary suffix */
203
+ PM_TOKEN_INTEGER_IMAGINARY,
204
+
205
+ /** an integer with a rational suffix */
206
+ PM_TOKEN_INTEGER_RATIONAL,
207
+
208
+ /** an integer with a rational and imaginary suffix */
209
+ PM_TOKEN_INTEGER_RATIONAL_IMAGINARY,
210
+
211
+ /** alias */
212
+ PM_TOKEN_KEYWORD_ALIAS,
213
+
214
+ /** and */
215
+ PM_TOKEN_KEYWORD_AND,
216
+
217
+ /** begin */
218
+ PM_TOKEN_KEYWORD_BEGIN,
219
+
220
+ /** BEGIN */
221
+ PM_TOKEN_KEYWORD_BEGIN_UPCASE,
222
+
223
+ /** break */
224
+ PM_TOKEN_KEYWORD_BREAK,
225
+
226
+ /** case */
227
+ PM_TOKEN_KEYWORD_CASE,
228
+
229
+ /** class */
230
+ PM_TOKEN_KEYWORD_CLASS,
231
+
232
+ /** def */
233
+ PM_TOKEN_KEYWORD_DEF,
234
+
235
+ /** defined? */
236
+ PM_TOKEN_KEYWORD_DEFINED,
237
+
238
+ /** do */
239
+ PM_TOKEN_KEYWORD_DO,
240
+
241
+ /** do keyword for a predicate in a while, until, or for loop */
242
+ PM_TOKEN_KEYWORD_DO_LOOP,
243
+
244
+ /** else */
245
+ PM_TOKEN_KEYWORD_ELSE,
246
+
247
+ /** elsif */
248
+ PM_TOKEN_KEYWORD_ELSIF,
249
+
250
+ /** end */
251
+ PM_TOKEN_KEYWORD_END,
252
+
253
+ /** END */
254
+ PM_TOKEN_KEYWORD_END_UPCASE,
255
+
256
+ /** ensure */
257
+ PM_TOKEN_KEYWORD_ENSURE,
258
+
259
+ /** false */
260
+ PM_TOKEN_KEYWORD_FALSE,
261
+
262
+ /** for */
263
+ PM_TOKEN_KEYWORD_FOR,
264
+
265
+ /** if */
266
+ PM_TOKEN_KEYWORD_IF,
267
+
268
+ /** if in the modifier form */
269
+ PM_TOKEN_KEYWORD_IF_MODIFIER,
270
+
271
+ /** in */
272
+ PM_TOKEN_KEYWORD_IN,
273
+
274
+ /** module */
275
+ PM_TOKEN_KEYWORD_MODULE,
276
+
277
+ /** next */
278
+ PM_TOKEN_KEYWORD_NEXT,
279
+
280
+ /** nil */
281
+ PM_TOKEN_KEYWORD_NIL,
282
+
283
+ /** not */
284
+ PM_TOKEN_KEYWORD_NOT,
285
+
286
+ /** or */
287
+ PM_TOKEN_KEYWORD_OR,
288
+
289
+ /** redo */
290
+ PM_TOKEN_KEYWORD_REDO,
291
+
292
+ /** rescue */
293
+ PM_TOKEN_KEYWORD_RESCUE,
294
+
295
+ /** rescue in the modifier form */
296
+ PM_TOKEN_KEYWORD_RESCUE_MODIFIER,
297
+
298
+ /** retry */
299
+ PM_TOKEN_KEYWORD_RETRY,
300
+
301
+ /** return */
302
+ PM_TOKEN_KEYWORD_RETURN,
303
+
304
+ /** self */
305
+ PM_TOKEN_KEYWORD_SELF,
306
+
307
+ /** super */
308
+ PM_TOKEN_KEYWORD_SUPER,
309
+
310
+ /** then */
311
+ PM_TOKEN_KEYWORD_THEN,
312
+
313
+ /** true */
314
+ PM_TOKEN_KEYWORD_TRUE,
315
+
316
+ /** undef */
317
+ PM_TOKEN_KEYWORD_UNDEF,
318
+
319
+ /** unless */
320
+ PM_TOKEN_KEYWORD_UNLESS,
321
+
322
+ /** unless in the modifier form */
323
+ PM_TOKEN_KEYWORD_UNLESS_MODIFIER,
324
+
325
+ /** until */
326
+ PM_TOKEN_KEYWORD_UNTIL,
327
+
328
+ /** until in the modifier form */
329
+ PM_TOKEN_KEYWORD_UNTIL_MODIFIER,
330
+
331
+ /** when */
332
+ PM_TOKEN_KEYWORD_WHEN,
333
+
334
+ /** while */
335
+ PM_TOKEN_KEYWORD_WHILE,
336
+
337
+ /** while in the modifier form */
338
+ PM_TOKEN_KEYWORD_WHILE_MODIFIER,
339
+
340
+ /** yield */
341
+ PM_TOKEN_KEYWORD_YIELD,
342
+
343
+ /** __ENCODING__ */
344
+ PM_TOKEN_KEYWORD___ENCODING__,
345
+
346
+ /** __FILE__ */
347
+ PM_TOKEN_KEYWORD___FILE__,
348
+
349
+ /** __LINE__ */
350
+ PM_TOKEN_KEYWORD___LINE__,
351
+
352
+ /** a label */
353
+ PM_TOKEN_LABEL,
354
+
355
+ /** the end of a label */
356
+ PM_TOKEN_LABEL_END,
357
+
358
+ /** { */
359
+ PM_TOKEN_LAMBDA_BEGIN,
360
+
361
+ /** < */
362
+ PM_TOKEN_LESS,
363
+
364
+ /** <= */
365
+ PM_TOKEN_LESS_EQUAL,
366
+
367
+ /** <=> */
368
+ PM_TOKEN_LESS_EQUAL_GREATER,
369
+
370
+ /** << */
371
+ PM_TOKEN_LESS_LESS,
372
+
373
+ /** <<= */
374
+ PM_TOKEN_LESS_LESS_EQUAL,
375
+
376
+ /** a method name */
377
+ PM_TOKEN_METHOD_NAME,
378
+
379
+ /** - */
380
+ PM_TOKEN_MINUS,
381
+
382
+ /** -= */
383
+ PM_TOKEN_MINUS_EQUAL,
384
+
385
+ /** -> */
386
+ PM_TOKEN_MINUS_GREATER,
387
+
388
+ /** a newline character outside of other tokens */
389
+ PM_TOKEN_NEWLINE,
390
+
391
+ /** a numbered reference to a capture group in the previous regular expression match */
392
+ PM_TOKEN_NUMBERED_REFERENCE,
393
+
394
+ /** ( */
395
+ PM_TOKEN_PARENTHESIS_LEFT,
396
+
397
+ /** ( for a parentheses node */
398
+ PM_TOKEN_PARENTHESIS_LEFT_PARENTHESES,
399
+
400
+ /** ) */
401
+ PM_TOKEN_PARENTHESIS_RIGHT,
402
+
403
+ /** % */
404
+ PM_TOKEN_PERCENT,
405
+
406
+ /** %= */
407
+ PM_TOKEN_PERCENT_EQUAL,
408
+
409
+ /** %i */
410
+ PM_TOKEN_PERCENT_LOWER_I,
411
+
412
+ /** %w */
413
+ PM_TOKEN_PERCENT_LOWER_W,
414
+
415
+ /** %x */
416
+ PM_TOKEN_PERCENT_LOWER_X,
417
+
418
+ /** %I */
419
+ PM_TOKEN_PERCENT_UPPER_I,
420
+
421
+ /** %W */
422
+ PM_TOKEN_PERCENT_UPPER_W,
423
+
424
+ /** | */
425
+ PM_TOKEN_PIPE,
426
+
427
+ /** |= */
428
+ PM_TOKEN_PIPE_EQUAL,
429
+
430
+ /** || */
431
+ PM_TOKEN_PIPE_PIPE,
432
+
433
+ /** ||= */
434
+ PM_TOKEN_PIPE_PIPE_EQUAL,
435
+
436
+ /** + */
437
+ PM_TOKEN_PLUS,
438
+
439
+ /** += */
440
+ PM_TOKEN_PLUS_EQUAL,
441
+
442
+ /** ? */
443
+ PM_TOKEN_QUESTION_MARK,
444
+
445
+ /** the beginning of a regular expression */
446
+ PM_TOKEN_REGEXP_BEGIN,
447
+
448
+ /** the end of a regular expression */
449
+ PM_TOKEN_REGEXP_END,
450
+
451
+ /** ; */
452
+ PM_TOKEN_SEMICOLON,
453
+
454
+ /** / */
455
+ PM_TOKEN_SLASH,
456
+
457
+ /** /= */
458
+ PM_TOKEN_SLASH_EQUAL,
459
+
460
+ /** * */
461
+ PM_TOKEN_STAR,
462
+
463
+ /** *= */
464
+ PM_TOKEN_STAR_EQUAL,
465
+
466
+ /** ** */
467
+ PM_TOKEN_STAR_STAR,
468
+
469
+ /** **= */
470
+ PM_TOKEN_STAR_STAR_EQUAL,
471
+
472
+ /** the beginning of a string */
473
+ PM_TOKEN_STRING_BEGIN,
474
+
475
+ /** the contents of a string */
476
+ PM_TOKEN_STRING_CONTENT,
477
+
478
+ /** the end of a string */
479
+ PM_TOKEN_STRING_END,
480
+
481
+ /** the beginning of a symbol */
482
+ PM_TOKEN_SYMBOL_BEGIN,
483
+
484
+ /** ~ or ~@ */
485
+ PM_TOKEN_TILDE,
486
+
487
+ /** unary & */
488
+ PM_TOKEN_UAMPERSAND,
489
+
490
+ /** unary :: */
491
+ PM_TOKEN_UCOLON_COLON,
492
+
493
+ /** unary .. operator */
494
+ PM_TOKEN_UDOT_DOT,
495
+
496
+ /** unary ... operator */
497
+ PM_TOKEN_UDOT_DOT_DOT,
498
+
499
+ /** -@ */
500
+ PM_TOKEN_UMINUS,
501
+
502
+ /** -@ for a number */
503
+ PM_TOKEN_UMINUS_NUM,
504
+
505
+ /** +@ */
506
+ PM_TOKEN_UPLUS,
507
+
508
+ /** unary * */
509
+ PM_TOKEN_USTAR,
510
+
511
+ /** unary ** */
512
+ PM_TOKEN_USTAR_STAR,
513
+
514
+ /** a separator between words in a list */
515
+ PM_TOKEN_WORDS_SEP,
516
+
517
+ /** marker for the point in the file at which the parser should stop */
518
+ PM_TOKEN___END__,
519
+
520
+ /** The maximum token value. */
521
+ PM_TOKEN_MAXIMUM,
522
+ } pm_token_type_t;
523
+
524
+ /**
525
+ * This struct represents a token in the Ruby source. We use it to track both
526
+ * type and location information.
527
+ */
528
+ typedef struct {
529
+ /** The type of the token. */
530
+ pm_token_type_t type;
531
+
532
+ /** A pointer to the start location of the token in the source. */
533
+ const uint8_t *start;
534
+
535
+ /** A pointer to the end location of the token in the source. */
536
+ const uint8_t *end;
537
+ } pm_token_t;
538
+
539
+ /**
540
+ * This represents a range of bytes in the source string to which a node or
541
+ * token corresponds.
542
+ */
543
+ typedef struct {
544
+ /** A pointer to the start location of the range in the source. */
545
+ const uint8_t *start;
546
+
547
+ /** A pointer to the end location of the range in the source. */
548
+ const uint8_t *end;
549
+ } pm_location_t;
550
+
551
+ struct pm_node;
552
+
553
+ /**
554
+ * A list of nodes in the source, most often used for lists of children.
555
+ */
556
+ typedef struct pm_node_list {
557
+ /** The number of nodes in the list. */
558
+ size_t size;
559
+
560
+ /** The capacity of the list that has been allocated. */
561
+ size_t capacity;
562
+
563
+ /** The nodes in the list. */
564
+ struct pm_node **nodes;
565
+ } pm_node_list_t;
566
+
567
+ /**
568
+ * This enum represents every type of node in the Ruby syntax tree.
569
+ */
570
+ enum pm_node_type {
571
+ /** AliasGlobalVariableNode */
572
+ PM_ALIAS_GLOBAL_VARIABLE_NODE = 1,
573
+
574
+ /** AliasMethodNode */
575
+ PM_ALIAS_METHOD_NODE = 2,
576
+
577
+ /** AlternationPatternNode */
578
+ PM_ALTERNATION_PATTERN_NODE = 3,
579
+
580
+ /** AndNode */
581
+ PM_AND_NODE = 4,
582
+
583
+ /** ArgumentsNode */
584
+ PM_ARGUMENTS_NODE = 5,
585
+
586
+ /** ArrayNode */
587
+ PM_ARRAY_NODE = 6,
588
+
589
+ /** ArrayPatternNode */
590
+ PM_ARRAY_PATTERN_NODE = 7,
591
+
592
+ /** AssocNode */
593
+ PM_ASSOC_NODE = 8,
594
+
595
+ /** AssocSplatNode */
596
+ PM_ASSOC_SPLAT_NODE = 9,
597
+
598
+ /** BackReferenceReadNode */
599
+ PM_BACK_REFERENCE_READ_NODE = 10,
600
+
601
+ /** BeginNode */
602
+ PM_BEGIN_NODE = 11,
603
+
604
+ /** BlockArgumentNode */
605
+ PM_BLOCK_ARGUMENT_NODE = 12,
606
+
607
+ /** BlockLocalVariableNode */
608
+ PM_BLOCK_LOCAL_VARIABLE_NODE = 13,
609
+
610
+ /** BlockNode */
611
+ PM_BLOCK_NODE = 14,
612
+
613
+ /** BlockParameterNode */
614
+ PM_BLOCK_PARAMETER_NODE = 15,
615
+
616
+ /** BlockParametersNode */
617
+ PM_BLOCK_PARAMETERS_NODE = 16,
618
+
619
+ /** BreakNode */
620
+ PM_BREAK_NODE = 17,
621
+
622
+ /** CallAndWriteNode */
623
+ PM_CALL_AND_WRITE_NODE = 18,
624
+
625
+ /** CallNode */
626
+ PM_CALL_NODE = 19,
627
+
628
+ /** CallOperatorWriteNode */
629
+ PM_CALL_OPERATOR_WRITE_NODE = 20,
630
+
631
+ /** CallOrWriteNode */
632
+ PM_CALL_OR_WRITE_NODE = 21,
633
+
634
+ /** CallTargetNode */
635
+ PM_CALL_TARGET_NODE = 22,
636
+
637
+ /** CapturePatternNode */
638
+ PM_CAPTURE_PATTERN_NODE = 23,
639
+
640
+ /** CaseMatchNode */
641
+ PM_CASE_MATCH_NODE = 24,
642
+
643
+ /** CaseNode */
644
+ PM_CASE_NODE = 25,
645
+
646
+ /** ClassNode */
647
+ PM_CLASS_NODE = 26,
648
+
649
+ /** ClassVariableAndWriteNode */
650
+ PM_CLASS_VARIABLE_AND_WRITE_NODE = 27,
651
+
652
+ /** ClassVariableOperatorWriteNode */
653
+ PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE = 28,
654
+
655
+ /** ClassVariableOrWriteNode */
656
+ PM_CLASS_VARIABLE_OR_WRITE_NODE = 29,
657
+
658
+ /** ClassVariableReadNode */
659
+ PM_CLASS_VARIABLE_READ_NODE = 30,
660
+
661
+ /** ClassVariableTargetNode */
662
+ PM_CLASS_VARIABLE_TARGET_NODE = 31,
663
+
664
+ /** ClassVariableWriteNode */
665
+ PM_CLASS_VARIABLE_WRITE_NODE = 32,
666
+
667
+ /** ConstantAndWriteNode */
668
+ PM_CONSTANT_AND_WRITE_NODE = 33,
669
+
670
+ /** ConstantOperatorWriteNode */
671
+ PM_CONSTANT_OPERATOR_WRITE_NODE = 34,
672
+
673
+ /** ConstantOrWriteNode */
674
+ PM_CONSTANT_OR_WRITE_NODE = 35,
675
+
676
+ /** ConstantPathAndWriteNode */
677
+ PM_CONSTANT_PATH_AND_WRITE_NODE = 36,
678
+
679
+ /** ConstantPathNode */
680
+ PM_CONSTANT_PATH_NODE = 37,
681
+
682
+ /** ConstantPathOperatorWriteNode */
683
+ PM_CONSTANT_PATH_OPERATOR_WRITE_NODE = 38,
684
+
685
+ /** ConstantPathOrWriteNode */
686
+ PM_CONSTANT_PATH_OR_WRITE_NODE = 39,
687
+
688
+ /** ConstantPathTargetNode */
689
+ PM_CONSTANT_PATH_TARGET_NODE = 40,
690
+
691
+ /** ConstantPathWriteNode */
692
+ PM_CONSTANT_PATH_WRITE_NODE = 41,
693
+
694
+ /** ConstantReadNode */
695
+ PM_CONSTANT_READ_NODE = 42,
696
+
697
+ /** ConstantTargetNode */
698
+ PM_CONSTANT_TARGET_NODE = 43,
699
+
700
+ /** ConstantWriteNode */
701
+ PM_CONSTANT_WRITE_NODE = 44,
702
+
703
+ /** DefNode */
704
+ PM_DEF_NODE = 45,
705
+
706
+ /** DefinedNode */
707
+ PM_DEFINED_NODE = 46,
708
+
709
+ /** ElseNode */
710
+ PM_ELSE_NODE = 47,
711
+
712
+ /** EmbeddedStatementsNode */
713
+ PM_EMBEDDED_STATEMENTS_NODE = 48,
714
+
715
+ /** EmbeddedVariableNode */
716
+ PM_EMBEDDED_VARIABLE_NODE = 49,
717
+
718
+ /** EnsureNode */
719
+ PM_ENSURE_NODE = 50,
720
+
721
+ /** FalseNode */
722
+ PM_FALSE_NODE = 51,
723
+
724
+ /** FindPatternNode */
725
+ PM_FIND_PATTERN_NODE = 52,
726
+
727
+ /** FlipFlopNode */
728
+ PM_FLIP_FLOP_NODE = 53,
729
+
730
+ /** FloatNode */
731
+ PM_FLOAT_NODE = 54,
732
+
733
+ /** ForNode */
734
+ PM_FOR_NODE = 55,
735
+
736
+ /** ForwardingArgumentsNode */
737
+ PM_FORWARDING_ARGUMENTS_NODE = 56,
738
+
739
+ /** ForwardingParameterNode */
740
+ PM_FORWARDING_PARAMETER_NODE = 57,
741
+
742
+ /** ForwardingSuperNode */
743
+ PM_FORWARDING_SUPER_NODE = 58,
744
+
745
+ /** GlobalVariableAndWriteNode */
746
+ PM_GLOBAL_VARIABLE_AND_WRITE_NODE = 59,
747
+
748
+ /** GlobalVariableOperatorWriteNode */
749
+ PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE = 60,
750
+
751
+ /** GlobalVariableOrWriteNode */
752
+ PM_GLOBAL_VARIABLE_OR_WRITE_NODE = 61,
753
+
754
+ /** GlobalVariableReadNode */
755
+ PM_GLOBAL_VARIABLE_READ_NODE = 62,
756
+
757
+ /** GlobalVariableTargetNode */
758
+ PM_GLOBAL_VARIABLE_TARGET_NODE = 63,
759
+
760
+ /** GlobalVariableWriteNode */
761
+ PM_GLOBAL_VARIABLE_WRITE_NODE = 64,
762
+
763
+ /** HashNode */
764
+ PM_HASH_NODE = 65,
765
+
766
+ /** HashPatternNode */
767
+ PM_HASH_PATTERN_NODE = 66,
768
+
769
+ /** IfNode */
770
+ PM_IF_NODE = 67,
771
+
772
+ /** ImaginaryNode */
773
+ PM_IMAGINARY_NODE = 68,
774
+
775
+ /** ImplicitNode */
776
+ PM_IMPLICIT_NODE = 69,
777
+
778
+ /** ImplicitRestNode */
779
+ PM_IMPLICIT_REST_NODE = 70,
780
+
781
+ /** InNode */
782
+ PM_IN_NODE = 71,
783
+
784
+ /** IndexAndWriteNode */
785
+ PM_INDEX_AND_WRITE_NODE = 72,
786
+
787
+ /** IndexOperatorWriteNode */
788
+ PM_INDEX_OPERATOR_WRITE_NODE = 73,
789
+
790
+ /** IndexOrWriteNode */
791
+ PM_INDEX_OR_WRITE_NODE = 74,
792
+
793
+ /** IndexTargetNode */
794
+ PM_INDEX_TARGET_NODE = 75,
795
+
796
+ /** InstanceVariableAndWriteNode */
797
+ PM_INSTANCE_VARIABLE_AND_WRITE_NODE = 76,
798
+
799
+ /** InstanceVariableOperatorWriteNode */
800
+ PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE = 77,
801
+
802
+ /** InstanceVariableOrWriteNode */
803
+ PM_INSTANCE_VARIABLE_OR_WRITE_NODE = 78,
804
+
805
+ /** InstanceVariableReadNode */
806
+ PM_INSTANCE_VARIABLE_READ_NODE = 79,
807
+
808
+ /** InstanceVariableTargetNode */
809
+ PM_INSTANCE_VARIABLE_TARGET_NODE = 80,
810
+
811
+ /** InstanceVariableWriteNode */
812
+ PM_INSTANCE_VARIABLE_WRITE_NODE = 81,
813
+
814
+ /** IntegerNode */
815
+ PM_INTEGER_NODE = 82,
816
+
817
+ /** InterpolatedMatchLastLineNode */
818
+ PM_INTERPOLATED_MATCH_LAST_LINE_NODE = 83,
819
+
820
+ /** InterpolatedRegularExpressionNode */
821
+ PM_INTERPOLATED_REGULAR_EXPRESSION_NODE = 84,
822
+
823
+ /** InterpolatedStringNode */
824
+ PM_INTERPOLATED_STRING_NODE = 85,
825
+
826
+ /** InterpolatedSymbolNode */
827
+ PM_INTERPOLATED_SYMBOL_NODE = 86,
828
+
829
+ /** InterpolatedXStringNode */
830
+ PM_INTERPOLATED_X_STRING_NODE = 87,
831
+
832
+ /** KeywordHashNode */
833
+ PM_KEYWORD_HASH_NODE = 88,
834
+
835
+ /** KeywordRestParameterNode */
836
+ PM_KEYWORD_REST_PARAMETER_NODE = 89,
837
+
838
+ /** LambdaNode */
839
+ PM_LAMBDA_NODE = 90,
840
+
841
+ /** LocalVariableAndWriteNode */
842
+ PM_LOCAL_VARIABLE_AND_WRITE_NODE = 91,
843
+
844
+ /** LocalVariableOperatorWriteNode */
845
+ PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE = 92,
846
+
847
+ /** LocalVariableOrWriteNode */
848
+ PM_LOCAL_VARIABLE_OR_WRITE_NODE = 93,
849
+
850
+ /** LocalVariableReadNode */
851
+ PM_LOCAL_VARIABLE_READ_NODE = 94,
852
+
853
+ /** LocalVariableTargetNode */
854
+ PM_LOCAL_VARIABLE_TARGET_NODE = 95,
855
+
856
+ /** LocalVariableWriteNode */
857
+ PM_LOCAL_VARIABLE_WRITE_NODE = 96,
858
+
859
+ /** MatchLastLineNode */
860
+ PM_MATCH_LAST_LINE_NODE = 97,
861
+
862
+ /** MatchPredicateNode */
863
+ PM_MATCH_PREDICATE_NODE = 98,
864
+
865
+ /** MatchRequiredNode */
866
+ PM_MATCH_REQUIRED_NODE = 99,
867
+
868
+ /** MatchWriteNode */
869
+ PM_MATCH_WRITE_NODE = 100,
870
+
871
+ /** MissingNode */
872
+ PM_MISSING_NODE = 101,
873
+
874
+ /** ModuleNode */
875
+ PM_MODULE_NODE = 102,
876
+
877
+ /** MultiTargetNode */
878
+ PM_MULTI_TARGET_NODE = 103,
879
+
880
+ /** MultiWriteNode */
881
+ PM_MULTI_WRITE_NODE = 104,
882
+
883
+ /** NextNode */
884
+ PM_NEXT_NODE = 105,
885
+
886
+ /** NilNode */
887
+ PM_NIL_NODE = 106,
888
+
889
+ /** NoKeywordsParameterNode */
890
+ PM_NO_KEYWORDS_PARAMETER_NODE = 107,
891
+
892
+ /** NumberedParametersNode */
893
+ PM_NUMBERED_PARAMETERS_NODE = 108,
894
+
895
+ /** NumberedReferenceReadNode */
896
+ PM_NUMBERED_REFERENCE_READ_NODE = 109,
897
+
898
+ /** OptionalKeywordParameterNode */
899
+ PM_OPTIONAL_KEYWORD_PARAMETER_NODE = 110,
900
+
901
+ /** OptionalParameterNode */
902
+ PM_OPTIONAL_PARAMETER_NODE = 111,
903
+
904
+ /** OrNode */
905
+ PM_OR_NODE = 112,
906
+
907
+ /** ParametersNode */
908
+ PM_PARAMETERS_NODE = 113,
909
+
910
+ /** ParenthesesNode */
911
+ PM_PARENTHESES_NODE = 114,
912
+
913
+ /** PinnedExpressionNode */
914
+ PM_PINNED_EXPRESSION_NODE = 115,
915
+
916
+ /** PinnedVariableNode */
917
+ PM_PINNED_VARIABLE_NODE = 116,
918
+
919
+ /** PostExecutionNode */
920
+ PM_POST_EXECUTION_NODE = 117,
921
+
922
+ /** PreExecutionNode */
923
+ PM_PRE_EXECUTION_NODE = 118,
924
+
925
+ /** ProgramNode */
926
+ PM_PROGRAM_NODE = 119,
927
+
928
+ /** RangeNode */
929
+ PM_RANGE_NODE = 120,
930
+
931
+ /** RationalNode */
932
+ PM_RATIONAL_NODE = 121,
933
+
934
+ /** RedoNode */
935
+ PM_REDO_NODE = 122,
936
+
937
+ /** RegularExpressionNode */
938
+ PM_REGULAR_EXPRESSION_NODE = 123,
939
+
940
+ /** RequiredKeywordParameterNode */
941
+ PM_REQUIRED_KEYWORD_PARAMETER_NODE = 124,
942
+
943
+ /** RequiredParameterNode */
944
+ PM_REQUIRED_PARAMETER_NODE = 125,
945
+
946
+ /** RescueModifierNode */
947
+ PM_RESCUE_MODIFIER_NODE = 126,
948
+
949
+ /** RescueNode */
950
+ PM_RESCUE_NODE = 127,
951
+
952
+ /** RestParameterNode */
953
+ PM_REST_PARAMETER_NODE = 128,
954
+
955
+ /** RetryNode */
956
+ PM_RETRY_NODE = 129,
957
+
958
+ /** ReturnNode */
959
+ PM_RETURN_NODE = 130,
960
+
961
+ /** SelfNode */
962
+ PM_SELF_NODE = 131,
963
+
964
+ /** SingletonClassNode */
965
+ PM_SINGLETON_CLASS_NODE = 132,
966
+
967
+ /** SourceEncodingNode */
968
+ PM_SOURCE_ENCODING_NODE = 133,
969
+
970
+ /** SourceFileNode */
971
+ PM_SOURCE_FILE_NODE = 134,
972
+
973
+ /** SourceLineNode */
974
+ PM_SOURCE_LINE_NODE = 135,
975
+
976
+ /** SplatNode */
977
+ PM_SPLAT_NODE = 136,
978
+
979
+ /** StatementsNode */
980
+ PM_STATEMENTS_NODE = 137,
981
+
982
+ /** StringNode */
983
+ PM_STRING_NODE = 138,
984
+
985
+ /** SuperNode */
986
+ PM_SUPER_NODE = 139,
987
+
988
+ /** SymbolNode */
989
+ PM_SYMBOL_NODE = 140,
990
+
991
+ /** TrueNode */
992
+ PM_TRUE_NODE = 141,
993
+
994
+ /** UndefNode */
995
+ PM_UNDEF_NODE = 142,
996
+
997
+ /** UnlessNode */
998
+ PM_UNLESS_NODE = 143,
999
+
1000
+ /** UntilNode */
1001
+ PM_UNTIL_NODE = 144,
1002
+
1003
+ /** WhenNode */
1004
+ PM_WHEN_NODE = 145,
1005
+
1006
+ /** WhileNode */
1007
+ PM_WHILE_NODE = 146,
1008
+
1009
+ /** XStringNode */
1010
+ PM_X_STRING_NODE = 147,
1011
+
1012
+ /** YieldNode */
1013
+ PM_YIELD_NODE = 148,
1014
+
1015
+ /** A special kind of node used for compilation. */
1016
+ PM_SCOPE_NODE
1017
+ };
1018
+
1019
+ /**
1020
+ * This is the type of node embedded in the node struct. We explicitly control
1021
+ * the size of it here to avoid having the variable-width enum.
1022
+ */
1023
+ typedef uint16_t pm_node_type_t;
1024
+
1025
+ /**
1026
+ * These are the flags embedded in the node struct. We explicitly control the
1027
+ * size of it here to avoid having the variable-width enum.
1028
+ */
1029
+ typedef uint16_t pm_node_flags_t;
1030
+
1031
+ /**
1032
+ * We store the flags enum in every node in the tree. Some flags are common to
1033
+ * all nodes (the ones listed below). Others are specific to certain node types.
1034
+ */
1035
+ #define PM_NODE_FLAG_BITS (sizeof(pm_node_flags_t) * 8)
1036
+
1037
+ static const pm_node_flags_t PM_NODE_FLAG_NEWLINE = (1 << (PM_NODE_FLAG_BITS - 1));
1038
+ static const pm_node_flags_t PM_NODE_FLAG_STATIC_LITERAL = (1 << (PM_NODE_FLAG_BITS - 2));
1039
+ static const pm_node_flags_t PM_NODE_FLAG_COMMON_MASK = (1 << (PM_NODE_FLAG_BITS - 1)) | (1 << (PM_NODE_FLAG_BITS - 2));
1040
+
1041
+ /**
1042
+ * Cast the type to an enum to allow the compiler to provide exhaustiveness
1043
+ * checking.
1044
+ */
1045
+ #define PM_NODE_TYPE(node) ((enum pm_node_type) node->type)
1046
+
1047
+ /**
1048
+ * Return true if the type of the given node matches the given type.
1049
+ */
1050
+ #define PM_NODE_TYPE_P(node, type) (PM_NODE_TYPE(node) == (type))
1051
+
1052
+ /**
1053
+ * Return true if the given flag is set on the given node.
1054
+ */
1055
+ #define PM_NODE_FLAG_P(node, flag) ((((pm_node_t *)(node))->flags & (flag)) != 0)
1056
+
1057
+ /**
1058
+ * This is the base structure that represents a node in the syntax tree. It is
1059
+ * embedded into every node type.
1060
+ */
1061
+ typedef struct pm_node {
1062
+ /**
1063
+ * This represents the type of the node. It somewhat maps to the nodes that
1064
+ * existed in the original grammar and ripper, but it's not a 1:1 mapping.
1065
+ */
1066
+ pm_node_type_t type;
1067
+
1068
+ /**
1069
+ * This represents any flags on the node. Some are common to all nodes, and
1070
+ * some are specific to the type of node.
1071
+ */
1072
+ pm_node_flags_t flags;
1073
+
1074
+ /**
1075
+ * This is the location of the node in the source. It's a range of bytes
1076
+ * containing a start and an end.
1077
+ */
1078
+ pm_location_t location;
1079
+ } pm_node_t;
1080
+
1081
+ /**
1082
+ * AliasGlobalVariableNode
1083
+ *
1084
+ * Type: PM_ALIAS_GLOBAL_VARIABLE_NODE
1085
+ *
1086
+ * @extends pm_node_t
1087
+ */
1088
+ typedef struct pm_alias_global_variable_node {
1089
+ /** The embedded base node. */
1090
+ pm_node_t base;
1091
+
1092
+ /** AliasGlobalVariableNode#new_name */
1093
+ struct pm_node *new_name;
1094
+
1095
+ /** AliasGlobalVariableNode#old_name */
1096
+ struct pm_node *old_name;
1097
+
1098
+ /** AliasGlobalVariableNode#keyword_loc */
1099
+ pm_location_t keyword_loc;
1100
+ } pm_alias_global_variable_node_t;
1101
+
1102
+ /**
1103
+ * AliasMethodNode
1104
+ *
1105
+ * Type: PM_ALIAS_METHOD_NODE
1106
+ *
1107
+ * @extends pm_node_t
1108
+ */
1109
+ typedef struct pm_alias_method_node {
1110
+ /** The embedded base node. */
1111
+ pm_node_t base;
1112
+
1113
+ /** AliasMethodNode#new_name */
1114
+ struct pm_node *new_name;
1115
+
1116
+ /** AliasMethodNode#old_name */
1117
+ struct pm_node *old_name;
1118
+
1119
+ /** AliasMethodNode#keyword_loc */
1120
+ pm_location_t keyword_loc;
1121
+ } pm_alias_method_node_t;
1122
+
1123
+ /**
1124
+ * AlternationPatternNode
1125
+ *
1126
+ * Type: PM_ALTERNATION_PATTERN_NODE
1127
+ *
1128
+ * @extends pm_node_t
1129
+ */
1130
+ typedef struct pm_alternation_pattern_node {
1131
+ /** The embedded base node. */
1132
+ pm_node_t base;
1133
+
1134
+ /** AlternationPatternNode#left */
1135
+ struct pm_node *left;
1136
+
1137
+ /** AlternationPatternNode#right */
1138
+ struct pm_node *right;
1139
+
1140
+ /** AlternationPatternNode#operator_loc */
1141
+ pm_location_t operator_loc;
1142
+ } pm_alternation_pattern_node_t;
1143
+
1144
+ /**
1145
+ * AndNode
1146
+ *
1147
+ * Type: PM_AND_NODE
1148
+ *
1149
+ * @extends pm_node_t
1150
+ */
1151
+ typedef struct pm_and_node {
1152
+ /** The embedded base node. */
1153
+ pm_node_t base;
1154
+
1155
+ /** AndNode#left */
1156
+ struct pm_node *left;
1157
+
1158
+ /** AndNode#right */
1159
+ struct pm_node *right;
1160
+
1161
+ /** AndNode#operator_loc */
1162
+ pm_location_t operator_loc;
1163
+ } pm_and_node_t;
1164
+
1165
+ /**
1166
+ * ArgumentsNode
1167
+ *
1168
+ * Type: PM_ARGUMENTS_NODE
1169
+ * Flags:
1170
+ * PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT
1171
+ *
1172
+ * @extends pm_node_t
1173
+ */
1174
+ typedef struct pm_arguments_node {
1175
+ /** The embedded base node. */
1176
+ pm_node_t base;
1177
+
1178
+ /** ArgumentsNode#arguments */
1179
+ struct pm_node_list arguments;
1180
+ } pm_arguments_node_t;
1181
+
1182
+ /**
1183
+ * ArrayNode
1184
+ *
1185
+ * Type: PM_ARRAY_NODE
1186
+ * Flags:
1187
+ * PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT
1188
+ *
1189
+ * @extends pm_node_t
1190
+ */
1191
+ typedef struct pm_array_node {
1192
+ /** The embedded base node. */
1193
+ pm_node_t base;
1194
+
1195
+ /** ArrayNode#elements */
1196
+ struct pm_node_list elements;
1197
+
1198
+ /** ArrayNode#opening_loc */
1199
+ pm_location_t opening_loc;
1200
+
1201
+ /** ArrayNode#closing_loc */
1202
+ pm_location_t closing_loc;
1203
+ } pm_array_node_t;
1204
+
1205
+ /**
1206
+ * ArrayPatternNode
1207
+ *
1208
+ * Type: PM_ARRAY_PATTERN_NODE
1209
+ *
1210
+ * @extends pm_node_t
1211
+ */
1212
+ typedef struct pm_array_pattern_node {
1213
+ /** The embedded base node. */
1214
+ pm_node_t base;
1215
+
1216
+ /** ArrayPatternNode#constant */
1217
+ struct pm_node *constant;
1218
+
1219
+ /** ArrayPatternNode#requireds */
1220
+ struct pm_node_list requireds;
1221
+
1222
+ /** ArrayPatternNode#rest */
1223
+ struct pm_node *rest;
1224
+
1225
+ /** ArrayPatternNode#posts */
1226
+ struct pm_node_list posts;
1227
+
1228
+ /** ArrayPatternNode#opening_loc */
1229
+ pm_location_t opening_loc;
1230
+
1231
+ /** ArrayPatternNode#closing_loc */
1232
+ pm_location_t closing_loc;
1233
+ } pm_array_pattern_node_t;
1234
+
1235
+ /**
1236
+ * AssocNode
1237
+ *
1238
+ * Type: PM_ASSOC_NODE
1239
+ *
1240
+ * @extends pm_node_t
1241
+ */
1242
+ typedef struct pm_assoc_node {
1243
+ /** The embedded base node. */
1244
+ pm_node_t base;
1245
+
1246
+ /** AssocNode#key */
1247
+ struct pm_node *key;
1248
+
1249
+ /** AssocNode#value */
1250
+ struct pm_node *value;
1251
+
1252
+ /** AssocNode#operator_loc */
1253
+ pm_location_t operator_loc;
1254
+ } pm_assoc_node_t;
1255
+
1256
+ /**
1257
+ * AssocSplatNode
1258
+ *
1259
+ * Type: PM_ASSOC_SPLAT_NODE
1260
+ *
1261
+ * @extends pm_node_t
1262
+ */
1263
+ typedef struct pm_assoc_splat_node {
1264
+ /** The embedded base node. */
1265
+ pm_node_t base;
1266
+
1267
+ /** AssocSplatNode#value */
1268
+ struct pm_node *value;
1269
+
1270
+ /** AssocSplatNode#operator_loc */
1271
+ pm_location_t operator_loc;
1272
+ } pm_assoc_splat_node_t;
1273
+
1274
+ /**
1275
+ * BackReferenceReadNode
1276
+ *
1277
+ * Type: PM_BACK_REFERENCE_READ_NODE
1278
+ *
1279
+ * @extends pm_node_t
1280
+ */
1281
+ typedef struct pm_back_reference_read_node {
1282
+ /** The embedded base node. */
1283
+ pm_node_t base;
1284
+
1285
+ /** BackReferenceReadNode#name */
1286
+ pm_constant_id_t name;
1287
+ } pm_back_reference_read_node_t;
1288
+
1289
+ /**
1290
+ * BeginNode
1291
+ *
1292
+ * Type: PM_BEGIN_NODE
1293
+ *
1294
+ * @extends pm_node_t
1295
+ */
1296
+ typedef struct pm_begin_node {
1297
+ /** The embedded base node. */
1298
+ pm_node_t base;
1299
+
1300
+ /** BeginNode#begin_keyword_loc */
1301
+ pm_location_t begin_keyword_loc;
1302
+
1303
+ /** BeginNode#statements */
1304
+ struct pm_statements_node *statements;
1305
+
1306
+ /** BeginNode#rescue_clause */
1307
+ struct pm_rescue_node *rescue_clause;
1308
+
1309
+ /** BeginNode#else_clause */
1310
+ struct pm_else_node *else_clause;
1311
+
1312
+ /** BeginNode#ensure_clause */
1313
+ struct pm_ensure_node *ensure_clause;
1314
+
1315
+ /** BeginNode#end_keyword_loc */
1316
+ pm_location_t end_keyword_loc;
1317
+ } pm_begin_node_t;
1318
+
1319
+ /**
1320
+ * BlockArgumentNode
1321
+ *
1322
+ * Type: PM_BLOCK_ARGUMENT_NODE
1323
+ *
1324
+ * @extends pm_node_t
1325
+ */
1326
+ typedef struct pm_block_argument_node {
1327
+ /** The embedded base node. */
1328
+ pm_node_t base;
1329
+
1330
+ /** BlockArgumentNode#expression */
1331
+ struct pm_node *expression;
1332
+
1333
+ /** BlockArgumentNode#operator_loc */
1334
+ pm_location_t operator_loc;
1335
+ } pm_block_argument_node_t;
1336
+
1337
+ /**
1338
+ * BlockLocalVariableNode
1339
+ *
1340
+ * Type: PM_BLOCK_LOCAL_VARIABLE_NODE
1341
+ *
1342
+ * @extends pm_node_t
1343
+ */
1344
+ typedef struct pm_block_local_variable_node {
1345
+ /** The embedded base node. */
1346
+ pm_node_t base;
1347
+
1348
+ /** BlockLocalVariableNode#name */
1349
+ pm_constant_id_t name;
1350
+ } pm_block_local_variable_node_t;
1351
+
1352
+ /**
1353
+ * BlockNode
1354
+ *
1355
+ * Type: PM_BLOCK_NODE
1356
+ *
1357
+ * @extends pm_node_t
1358
+ */
1359
+ typedef struct pm_block_node {
1360
+ /** The embedded base node. */
1361
+ pm_node_t base;
1362
+
1363
+ /** BlockNode#locals */
1364
+ pm_constant_id_list_t locals;
1365
+
1366
+ /** BlockNode#locals_body_index */
1367
+ uint32_t locals_body_index;
1368
+
1369
+ /** BlockNode#parameters */
1370
+ struct pm_node *parameters;
1371
+
1372
+ /** BlockNode#body */
1373
+ struct pm_node *body;
1374
+
1375
+ /** BlockNode#opening_loc */
1376
+ pm_location_t opening_loc;
1377
+
1378
+ /** BlockNode#closing_loc */
1379
+ pm_location_t closing_loc;
1380
+ } pm_block_node_t;
1381
+
1382
+ /**
1383
+ * BlockParameterNode
1384
+ *
1385
+ * Type: PM_BLOCK_PARAMETER_NODE
1386
+ *
1387
+ * @extends pm_node_t
1388
+ */
1389
+ typedef struct pm_block_parameter_node {
1390
+ /** The embedded base node. */
1391
+ pm_node_t base;
1392
+
1393
+ /** BlockParameterNode#name */
1394
+ pm_constant_id_t name;
1395
+
1396
+ /** BlockParameterNode#name_loc */
1397
+ pm_location_t name_loc;
1398
+
1399
+ /** BlockParameterNode#operator_loc */
1400
+ pm_location_t operator_loc;
1401
+ } pm_block_parameter_node_t;
1402
+
1403
+ /**
1404
+ * BlockParametersNode
1405
+ *
1406
+ * Type: PM_BLOCK_PARAMETERS_NODE
1407
+ *
1408
+ * @extends pm_node_t
1409
+ */
1410
+ typedef struct pm_block_parameters_node {
1411
+ /** The embedded base node. */
1412
+ pm_node_t base;
1413
+
1414
+ /** BlockParametersNode#parameters */
1415
+ struct pm_parameters_node *parameters;
1416
+
1417
+ /** BlockParametersNode#locals */
1418
+ struct pm_node_list locals;
1419
+
1420
+ /** BlockParametersNode#opening_loc */
1421
+ pm_location_t opening_loc;
1422
+
1423
+ /** BlockParametersNode#closing_loc */
1424
+ pm_location_t closing_loc;
1425
+ } pm_block_parameters_node_t;
1426
+
1427
+ /**
1428
+ * BreakNode
1429
+ *
1430
+ * Type: PM_BREAK_NODE
1431
+ *
1432
+ * @extends pm_node_t
1433
+ */
1434
+ typedef struct pm_break_node {
1435
+ /** The embedded base node. */
1436
+ pm_node_t base;
1437
+
1438
+ /** BreakNode#arguments */
1439
+ struct pm_arguments_node *arguments;
1440
+
1441
+ /** BreakNode#keyword_loc */
1442
+ pm_location_t keyword_loc;
1443
+ } pm_break_node_t;
1444
+
1445
+ /**
1446
+ * CallAndWriteNode
1447
+ *
1448
+ * Type: PM_CALL_AND_WRITE_NODE
1449
+ * Flags:
1450
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1451
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1452
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1453
+ *
1454
+ * @extends pm_node_t
1455
+ */
1456
+ typedef struct pm_call_and_write_node {
1457
+ /** The embedded base node. */
1458
+ pm_node_t base;
1459
+
1460
+ /** CallAndWriteNode#receiver */
1461
+ struct pm_node *receiver;
1462
+
1463
+ /** CallAndWriteNode#call_operator_loc */
1464
+ pm_location_t call_operator_loc;
1465
+
1466
+ /** CallAndWriteNode#message_loc */
1467
+ pm_location_t message_loc;
1468
+
1469
+ /** CallAndWriteNode#read_name */
1470
+ pm_constant_id_t read_name;
1471
+
1472
+ /** CallAndWriteNode#write_name */
1473
+ pm_constant_id_t write_name;
1474
+
1475
+ /** CallAndWriteNode#operator_loc */
1476
+ pm_location_t operator_loc;
1477
+
1478
+ /** CallAndWriteNode#value */
1479
+ struct pm_node *value;
1480
+ } pm_call_and_write_node_t;
1481
+
1482
+ /**
1483
+ * CallNode
1484
+ *
1485
+ * Type: PM_CALL_NODE
1486
+ * Flags:
1487
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1488
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1489
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1490
+ *
1491
+ * @extends pm_node_t
1492
+ */
1493
+ typedef struct pm_call_node {
1494
+ /** The embedded base node. */
1495
+ pm_node_t base;
1496
+
1497
+ /** CallNode#receiver */
1498
+ struct pm_node *receiver;
1499
+
1500
+ /** CallNode#call_operator_loc */
1501
+ pm_location_t call_operator_loc;
1502
+
1503
+ /** CallNode#name */
1504
+ pm_constant_id_t name;
1505
+
1506
+ /** CallNode#message_loc */
1507
+ pm_location_t message_loc;
1508
+
1509
+ /** CallNode#opening_loc */
1510
+ pm_location_t opening_loc;
1511
+
1512
+ /** CallNode#arguments */
1513
+ struct pm_arguments_node *arguments;
1514
+
1515
+ /** CallNode#closing_loc */
1516
+ pm_location_t closing_loc;
1517
+
1518
+ /** CallNode#block */
1519
+ struct pm_node *block;
1520
+ } pm_call_node_t;
1521
+
1522
+ /**
1523
+ * CallOperatorWriteNode
1524
+ *
1525
+ * Type: PM_CALL_OPERATOR_WRITE_NODE
1526
+ * Flags:
1527
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1528
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1529
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1530
+ *
1531
+ * @extends pm_node_t
1532
+ */
1533
+ typedef struct pm_call_operator_write_node {
1534
+ /** The embedded base node. */
1535
+ pm_node_t base;
1536
+
1537
+ /** CallOperatorWriteNode#receiver */
1538
+ struct pm_node *receiver;
1539
+
1540
+ /** CallOperatorWriteNode#call_operator_loc */
1541
+ pm_location_t call_operator_loc;
1542
+
1543
+ /** CallOperatorWriteNode#message_loc */
1544
+ pm_location_t message_loc;
1545
+
1546
+ /** CallOperatorWriteNode#read_name */
1547
+ pm_constant_id_t read_name;
1548
+
1549
+ /** CallOperatorWriteNode#write_name */
1550
+ pm_constant_id_t write_name;
1551
+
1552
+ /** CallOperatorWriteNode#operator */
1553
+ pm_constant_id_t operator;
1554
+
1555
+ /** CallOperatorWriteNode#operator_loc */
1556
+ pm_location_t operator_loc;
1557
+
1558
+ /** CallOperatorWriteNode#value */
1559
+ struct pm_node *value;
1560
+ } pm_call_operator_write_node_t;
1561
+
1562
+ /**
1563
+ * CallOrWriteNode
1564
+ *
1565
+ * Type: PM_CALL_OR_WRITE_NODE
1566
+ * Flags:
1567
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1568
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1569
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1570
+ *
1571
+ * @extends pm_node_t
1572
+ */
1573
+ typedef struct pm_call_or_write_node {
1574
+ /** The embedded base node. */
1575
+ pm_node_t base;
1576
+
1577
+ /** CallOrWriteNode#receiver */
1578
+ struct pm_node *receiver;
1579
+
1580
+ /** CallOrWriteNode#call_operator_loc */
1581
+ pm_location_t call_operator_loc;
1582
+
1583
+ /** CallOrWriteNode#message_loc */
1584
+ pm_location_t message_loc;
1585
+
1586
+ /** CallOrWriteNode#read_name */
1587
+ pm_constant_id_t read_name;
1588
+
1589
+ /** CallOrWriteNode#write_name */
1590
+ pm_constant_id_t write_name;
1591
+
1592
+ /** CallOrWriteNode#operator_loc */
1593
+ pm_location_t operator_loc;
1594
+
1595
+ /** CallOrWriteNode#value */
1596
+ struct pm_node *value;
1597
+ } pm_call_or_write_node_t;
1598
+
1599
+ /**
1600
+ * CallTargetNode
1601
+ *
1602
+ * Type: PM_CALL_TARGET_NODE
1603
+ * Flags:
1604
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
1605
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
1606
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
1607
+ *
1608
+ * @extends pm_node_t
1609
+ */
1610
+ typedef struct pm_call_target_node {
1611
+ /** The embedded base node. */
1612
+ pm_node_t base;
1613
+
1614
+ /** CallTargetNode#receiver */
1615
+ struct pm_node *receiver;
1616
+
1617
+ /** CallTargetNode#call_operator_loc */
1618
+ pm_location_t call_operator_loc;
1619
+
1620
+ /** CallTargetNode#name */
1621
+ pm_constant_id_t name;
1622
+
1623
+ /** CallTargetNode#message_loc */
1624
+ pm_location_t message_loc;
1625
+ } pm_call_target_node_t;
1626
+
1627
+ /**
1628
+ * CapturePatternNode
1629
+ *
1630
+ * Type: PM_CAPTURE_PATTERN_NODE
1631
+ *
1632
+ * @extends pm_node_t
1633
+ */
1634
+ typedef struct pm_capture_pattern_node {
1635
+ /** The embedded base node. */
1636
+ pm_node_t base;
1637
+
1638
+ /** CapturePatternNode#value */
1639
+ struct pm_node *value;
1640
+
1641
+ /** CapturePatternNode#target */
1642
+ struct pm_node *target;
1643
+
1644
+ /** CapturePatternNode#operator_loc */
1645
+ pm_location_t operator_loc;
1646
+ } pm_capture_pattern_node_t;
1647
+
1648
+ /**
1649
+ * CaseMatchNode
1650
+ *
1651
+ * Type: PM_CASE_MATCH_NODE
1652
+ *
1653
+ * @extends pm_node_t
1654
+ */
1655
+ typedef struct pm_case_match_node {
1656
+ /** The embedded base node. */
1657
+ pm_node_t base;
1658
+
1659
+ /** CaseMatchNode#predicate */
1660
+ struct pm_node *predicate;
1661
+
1662
+ /** CaseMatchNode#conditions */
1663
+ struct pm_node_list conditions;
1664
+
1665
+ /** CaseMatchNode#consequent */
1666
+ struct pm_else_node *consequent;
1667
+
1668
+ /** CaseMatchNode#case_keyword_loc */
1669
+ pm_location_t case_keyword_loc;
1670
+
1671
+ /** CaseMatchNode#end_keyword_loc */
1672
+ pm_location_t end_keyword_loc;
1673
+ } pm_case_match_node_t;
1674
+
1675
+ /**
1676
+ * CaseNode
1677
+ *
1678
+ * Type: PM_CASE_NODE
1679
+ *
1680
+ * @extends pm_node_t
1681
+ */
1682
+ typedef struct pm_case_node {
1683
+ /** The embedded base node. */
1684
+ pm_node_t base;
1685
+
1686
+ /** CaseNode#predicate */
1687
+ struct pm_node *predicate;
1688
+
1689
+ /** CaseNode#conditions */
1690
+ struct pm_node_list conditions;
1691
+
1692
+ /** CaseNode#consequent */
1693
+ struct pm_else_node *consequent;
1694
+
1695
+ /** CaseNode#case_keyword_loc */
1696
+ pm_location_t case_keyword_loc;
1697
+
1698
+ /** CaseNode#end_keyword_loc */
1699
+ pm_location_t end_keyword_loc;
1700
+ } pm_case_node_t;
1701
+
1702
+ /**
1703
+ * ClassNode
1704
+ *
1705
+ * Type: PM_CLASS_NODE
1706
+ *
1707
+ * @extends pm_node_t
1708
+ */
1709
+ typedef struct pm_class_node {
1710
+ /** The embedded base node. */
1711
+ pm_node_t base;
1712
+
1713
+ /** ClassNode#locals */
1714
+ pm_constant_id_list_t locals;
1715
+
1716
+ /** ClassNode#class_keyword_loc */
1717
+ pm_location_t class_keyword_loc;
1718
+
1719
+ /** ClassNode#constant_path */
1720
+ struct pm_node *constant_path;
1721
+
1722
+ /** ClassNode#inheritance_operator_loc */
1723
+ pm_location_t inheritance_operator_loc;
1724
+
1725
+ /** ClassNode#superclass */
1726
+ struct pm_node *superclass;
1727
+
1728
+ /** ClassNode#body */
1729
+ struct pm_node *body;
1730
+
1731
+ /** ClassNode#end_keyword_loc */
1732
+ pm_location_t end_keyword_loc;
1733
+
1734
+ /** ClassNode#name */
1735
+ pm_constant_id_t name;
1736
+ } pm_class_node_t;
1737
+
1738
+ /**
1739
+ * ClassVariableAndWriteNode
1740
+ *
1741
+ * Type: PM_CLASS_VARIABLE_AND_WRITE_NODE
1742
+ *
1743
+ * @extends pm_node_t
1744
+ */
1745
+ typedef struct pm_class_variable_and_write_node {
1746
+ /** The embedded base node. */
1747
+ pm_node_t base;
1748
+
1749
+ /** ClassVariableAndWriteNode#name */
1750
+ pm_constant_id_t name;
1751
+
1752
+ /** ClassVariableAndWriteNode#name_loc */
1753
+ pm_location_t name_loc;
1754
+
1755
+ /** ClassVariableAndWriteNode#operator_loc */
1756
+ pm_location_t operator_loc;
1757
+
1758
+ /** ClassVariableAndWriteNode#value */
1759
+ struct pm_node *value;
1760
+ } pm_class_variable_and_write_node_t;
1761
+
1762
+ /**
1763
+ * ClassVariableOperatorWriteNode
1764
+ *
1765
+ * Type: PM_CLASS_VARIABLE_OPERATOR_WRITE_NODE
1766
+ *
1767
+ * @extends pm_node_t
1768
+ */
1769
+ typedef struct pm_class_variable_operator_write_node {
1770
+ /** The embedded base node. */
1771
+ pm_node_t base;
1772
+
1773
+ /** ClassVariableOperatorWriteNode#name */
1774
+ pm_constant_id_t name;
1775
+
1776
+ /** ClassVariableOperatorWriteNode#name_loc */
1777
+ pm_location_t name_loc;
1778
+
1779
+ /** ClassVariableOperatorWriteNode#operator_loc */
1780
+ pm_location_t operator_loc;
1781
+
1782
+ /** ClassVariableOperatorWriteNode#value */
1783
+ struct pm_node *value;
1784
+
1785
+ /** ClassVariableOperatorWriteNode#operator */
1786
+ pm_constant_id_t operator;
1787
+ } pm_class_variable_operator_write_node_t;
1788
+
1789
+ /**
1790
+ * ClassVariableOrWriteNode
1791
+ *
1792
+ * Type: PM_CLASS_VARIABLE_OR_WRITE_NODE
1793
+ *
1794
+ * @extends pm_node_t
1795
+ */
1796
+ typedef struct pm_class_variable_or_write_node {
1797
+ /** The embedded base node. */
1798
+ pm_node_t base;
1799
+
1800
+ /** ClassVariableOrWriteNode#name */
1801
+ pm_constant_id_t name;
1802
+
1803
+ /** ClassVariableOrWriteNode#name_loc */
1804
+ pm_location_t name_loc;
1805
+
1806
+ /** ClassVariableOrWriteNode#operator_loc */
1807
+ pm_location_t operator_loc;
1808
+
1809
+ /** ClassVariableOrWriteNode#value */
1810
+ struct pm_node *value;
1811
+ } pm_class_variable_or_write_node_t;
1812
+
1813
+ /**
1814
+ * ClassVariableReadNode
1815
+ *
1816
+ * Type: PM_CLASS_VARIABLE_READ_NODE
1817
+ *
1818
+ * @extends pm_node_t
1819
+ */
1820
+ typedef struct pm_class_variable_read_node {
1821
+ /** The embedded base node. */
1822
+ pm_node_t base;
1823
+
1824
+ /** ClassVariableReadNode#name */
1825
+ pm_constant_id_t name;
1826
+ } pm_class_variable_read_node_t;
1827
+
1828
+ /**
1829
+ * ClassVariableTargetNode
1830
+ *
1831
+ * Type: PM_CLASS_VARIABLE_TARGET_NODE
1832
+ *
1833
+ * @extends pm_node_t
1834
+ */
1835
+ typedef struct pm_class_variable_target_node {
1836
+ /** The embedded base node. */
1837
+ pm_node_t base;
1838
+
1839
+ /** ClassVariableTargetNode#name */
1840
+ pm_constant_id_t name;
1841
+ } pm_class_variable_target_node_t;
1842
+
1843
+ /**
1844
+ * ClassVariableWriteNode
1845
+ *
1846
+ * Type: PM_CLASS_VARIABLE_WRITE_NODE
1847
+ *
1848
+ * @extends pm_node_t
1849
+ */
1850
+ typedef struct pm_class_variable_write_node {
1851
+ /** The embedded base node. */
1852
+ pm_node_t base;
1853
+
1854
+ /** ClassVariableWriteNode#name */
1855
+ pm_constant_id_t name;
1856
+
1857
+ /** ClassVariableWriteNode#name_loc */
1858
+ pm_location_t name_loc;
1859
+
1860
+ /** ClassVariableWriteNode#value */
1861
+ struct pm_node *value;
1862
+
1863
+ /** ClassVariableWriteNode#operator_loc */
1864
+ pm_location_t operator_loc;
1865
+ } pm_class_variable_write_node_t;
1866
+
1867
+ /**
1868
+ * ConstantAndWriteNode
1869
+ *
1870
+ * Type: PM_CONSTANT_AND_WRITE_NODE
1871
+ *
1872
+ * @extends pm_node_t
1873
+ */
1874
+ typedef struct pm_constant_and_write_node {
1875
+ /** The embedded base node. */
1876
+ pm_node_t base;
1877
+
1878
+ /** ConstantAndWriteNode#name */
1879
+ pm_constant_id_t name;
1880
+
1881
+ /** ConstantAndWriteNode#name_loc */
1882
+ pm_location_t name_loc;
1883
+
1884
+ /** ConstantAndWriteNode#operator_loc */
1885
+ pm_location_t operator_loc;
1886
+
1887
+ /** ConstantAndWriteNode#value */
1888
+ struct pm_node *value;
1889
+ } pm_constant_and_write_node_t;
1890
+
1891
+ /**
1892
+ * ConstantOperatorWriteNode
1893
+ *
1894
+ * Type: PM_CONSTANT_OPERATOR_WRITE_NODE
1895
+ *
1896
+ * @extends pm_node_t
1897
+ */
1898
+ typedef struct pm_constant_operator_write_node {
1899
+ /** The embedded base node. */
1900
+ pm_node_t base;
1901
+
1902
+ /** ConstantOperatorWriteNode#name */
1903
+ pm_constant_id_t name;
1904
+
1905
+ /** ConstantOperatorWriteNode#name_loc */
1906
+ pm_location_t name_loc;
1907
+
1908
+ /** ConstantOperatorWriteNode#operator_loc */
1909
+ pm_location_t operator_loc;
1910
+
1911
+ /** ConstantOperatorWriteNode#value */
1912
+ struct pm_node *value;
1913
+
1914
+ /** ConstantOperatorWriteNode#operator */
1915
+ pm_constant_id_t operator;
1916
+ } pm_constant_operator_write_node_t;
1917
+
1918
+ /**
1919
+ * ConstantOrWriteNode
1920
+ *
1921
+ * Type: PM_CONSTANT_OR_WRITE_NODE
1922
+ *
1923
+ * @extends pm_node_t
1924
+ */
1925
+ typedef struct pm_constant_or_write_node {
1926
+ /** The embedded base node. */
1927
+ pm_node_t base;
1928
+
1929
+ /** ConstantOrWriteNode#name */
1930
+ pm_constant_id_t name;
1931
+
1932
+ /** ConstantOrWriteNode#name_loc */
1933
+ pm_location_t name_loc;
1934
+
1935
+ /** ConstantOrWriteNode#operator_loc */
1936
+ pm_location_t operator_loc;
1937
+
1938
+ /** ConstantOrWriteNode#value */
1939
+ struct pm_node *value;
1940
+ } pm_constant_or_write_node_t;
1941
+
1942
+ /**
1943
+ * ConstantPathAndWriteNode
1944
+ *
1945
+ * Type: PM_CONSTANT_PATH_AND_WRITE_NODE
1946
+ *
1947
+ * @extends pm_node_t
1948
+ */
1949
+ typedef struct pm_constant_path_and_write_node {
1950
+ /** The embedded base node. */
1951
+ pm_node_t base;
1952
+
1953
+ /** ConstantPathAndWriteNode#target */
1954
+ struct pm_constant_path_node *target;
1955
+
1956
+ /** ConstantPathAndWriteNode#operator_loc */
1957
+ pm_location_t operator_loc;
1958
+
1959
+ /** ConstantPathAndWriteNode#value */
1960
+ struct pm_node *value;
1961
+ } pm_constant_path_and_write_node_t;
1962
+
1963
+ /**
1964
+ * ConstantPathNode
1965
+ *
1966
+ * Type: PM_CONSTANT_PATH_NODE
1967
+ *
1968
+ * @extends pm_node_t
1969
+ */
1970
+ typedef struct pm_constant_path_node {
1971
+ /** The embedded base node. */
1972
+ pm_node_t base;
1973
+
1974
+ /** ConstantPathNode#parent */
1975
+ struct pm_node *parent;
1976
+
1977
+ /** ConstantPathNode#child */
1978
+ struct pm_node *child;
1979
+
1980
+ /** ConstantPathNode#delimiter_loc */
1981
+ pm_location_t delimiter_loc;
1982
+ } pm_constant_path_node_t;
1983
+
1984
+ /**
1985
+ * ConstantPathOperatorWriteNode
1986
+ *
1987
+ * Type: PM_CONSTANT_PATH_OPERATOR_WRITE_NODE
1988
+ *
1989
+ * @extends pm_node_t
1990
+ */
1991
+ typedef struct pm_constant_path_operator_write_node {
1992
+ /** The embedded base node. */
1993
+ pm_node_t base;
1994
+
1995
+ /** ConstantPathOperatorWriteNode#target */
1996
+ struct pm_constant_path_node *target;
1997
+
1998
+ /** ConstantPathOperatorWriteNode#operator_loc */
1999
+ pm_location_t operator_loc;
2000
+
2001
+ /** ConstantPathOperatorWriteNode#value */
2002
+ struct pm_node *value;
2003
+
2004
+ /** ConstantPathOperatorWriteNode#operator */
2005
+ pm_constant_id_t operator;
2006
+ } pm_constant_path_operator_write_node_t;
2007
+
2008
+ /**
2009
+ * ConstantPathOrWriteNode
2010
+ *
2011
+ * Type: PM_CONSTANT_PATH_OR_WRITE_NODE
2012
+ *
2013
+ * @extends pm_node_t
2014
+ */
2015
+ typedef struct pm_constant_path_or_write_node {
2016
+ /** The embedded base node. */
2017
+ pm_node_t base;
2018
+
2019
+ /** ConstantPathOrWriteNode#target */
2020
+ struct pm_constant_path_node *target;
2021
+
2022
+ /** ConstantPathOrWriteNode#operator_loc */
2023
+ pm_location_t operator_loc;
2024
+
2025
+ /** ConstantPathOrWriteNode#value */
2026
+ struct pm_node *value;
2027
+ } pm_constant_path_or_write_node_t;
2028
+
2029
+ /**
2030
+ * ConstantPathTargetNode
2031
+ *
2032
+ * Type: PM_CONSTANT_PATH_TARGET_NODE
2033
+ *
2034
+ * @extends pm_node_t
2035
+ */
2036
+ typedef struct pm_constant_path_target_node {
2037
+ /** The embedded base node. */
2038
+ pm_node_t base;
2039
+
2040
+ /** ConstantPathTargetNode#parent */
2041
+ struct pm_node *parent;
2042
+
2043
+ /** ConstantPathTargetNode#child */
2044
+ struct pm_node *child;
2045
+
2046
+ /** ConstantPathTargetNode#delimiter_loc */
2047
+ pm_location_t delimiter_loc;
2048
+ } pm_constant_path_target_node_t;
2049
+
2050
+ /**
2051
+ * ConstantPathWriteNode
2052
+ *
2053
+ * Type: PM_CONSTANT_PATH_WRITE_NODE
2054
+ *
2055
+ * @extends pm_node_t
2056
+ */
2057
+ typedef struct pm_constant_path_write_node {
2058
+ /** The embedded base node. */
2059
+ pm_node_t base;
2060
+
2061
+ /** ConstantPathWriteNode#target */
2062
+ struct pm_constant_path_node *target;
2063
+
2064
+ /** ConstantPathWriteNode#operator_loc */
2065
+ pm_location_t operator_loc;
2066
+
2067
+ /** ConstantPathWriteNode#value */
2068
+ struct pm_node *value;
2069
+ } pm_constant_path_write_node_t;
2070
+
2071
+ /**
2072
+ * ConstantReadNode
2073
+ *
2074
+ * Type: PM_CONSTANT_READ_NODE
2075
+ *
2076
+ * @extends pm_node_t
2077
+ */
2078
+ typedef struct pm_constant_read_node {
2079
+ /** The embedded base node. */
2080
+ pm_node_t base;
2081
+
2082
+ /** ConstantReadNode#name */
2083
+ pm_constant_id_t name;
2084
+ } pm_constant_read_node_t;
2085
+
2086
+ /**
2087
+ * ConstantTargetNode
2088
+ *
2089
+ * Type: PM_CONSTANT_TARGET_NODE
2090
+ *
2091
+ * @extends pm_node_t
2092
+ */
2093
+ typedef struct pm_constant_target_node {
2094
+ /** The embedded base node. */
2095
+ pm_node_t base;
2096
+
2097
+ /** ConstantTargetNode#name */
2098
+ pm_constant_id_t name;
2099
+ } pm_constant_target_node_t;
2100
+
2101
+ /**
2102
+ * ConstantWriteNode
2103
+ *
2104
+ * Type: PM_CONSTANT_WRITE_NODE
2105
+ *
2106
+ * @extends pm_node_t
2107
+ */
2108
+ typedef struct pm_constant_write_node {
2109
+ /** The embedded base node. */
2110
+ pm_node_t base;
2111
+
2112
+ /** ConstantWriteNode#name */
2113
+ pm_constant_id_t name;
2114
+
2115
+ /** ConstantWriteNode#name_loc */
2116
+ pm_location_t name_loc;
2117
+
2118
+ /** ConstantWriteNode#value */
2119
+ struct pm_node *value;
2120
+
2121
+ /** ConstantWriteNode#operator_loc */
2122
+ pm_location_t operator_loc;
2123
+ } pm_constant_write_node_t;
2124
+
2125
+ /**
2126
+ * DefNode
2127
+ *
2128
+ * Type: PM_DEF_NODE
2129
+ *
2130
+ * @extends pm_node_t
2131
+ */
2132
+ typedef struct pm_def_node {
2133
+ /** The embedded base node. */
2134
+ pm_node_t base;
2135
+
2136
+ /** DefNode#name */
2137
+ pm_constant_id_t name;
2138
+
2139
+ /** DefNode#name_loc */
2140
+ pm_location_t name_loc;
2141
+
2142
+ /** DefNode#receiver */
2143
+ struct pm_node *receiver;
2144
+
2145
+ /** DefNode#parameters */
2146
+ struct pm_parameters_node *parameters;
2147
+
2148
+ /** DefNode#body */
2149
+ struct pm_node *body;
2150
+
2151
+ /** DefNode#locals */
2152
+ pm_constant_id_list_t locals;
2153
+
2154
+ /** DefNode#locals_body_index */
2155
+ uint32_t locals_body_index;
2156
+
2157
+ /** DefNode#def_keyword_loc */
2158
+ pm_location_t def_keyword_loc;
2159
+
2160
+ /** DefNode#operator_loc */
2161
+ pm_location_t operator_loc;
2162
+
2163
+ /** DefNode#lparen_loc */
2164
+ pm_location_t lparen_loc;
2165
+
2166
+ /** DefNode#rparen_loc */
2167
+ pm_location_t rparen_loc;
2168
+
2169
+ /** DefNode#equal_loc */
2170
+ pm_location_t equal_loc;
2171
+
2172
+ /** DefNode#end_keyword_loc */
2173
+ pm_location_t end_keyword_loc;
2174
+ } pm_def_node_t;
2175
+
2176
+ /**
2177
+ * DefinedNode
2178
+ *
2179
+ * Type: PM_DEFINED_NODE
2180
+ *
2181
+ * @extends pm_node_t
2182
+ */
2183
+ typedef struct pm_defined_node {
2184
+ /** The embedded base node. */
2185
+ pm_node_t base;
2186
+
2187
+ /** DefinedNode#lparen_loc */
2188
+ pm_location_t lparen_loc;
2189
+
2190
+ /** DefinedNode#value */
2191
+ struct pm_node *value;
2192
+
2193
+ /** DefinedNode#rparen_loc */
2194
+ pm_location_t rparen_loc;
2195
+
2196
+ /** DefinedNode#keyword_loc */
2197
+ pm_location_t keyword_loc;
2198
+ } pm_defined_node_t;
2199
+
2200
+ /**
2201
+ * ElseNode
2202
+ *
2203
+ * Type: PM_ELSE_NODE
2204
+ *
2205
+ * @extends pm_node_t
2206
+ */
2207
+ typedef struct pm_else_node {
2208
+ /** The embedded base node. */
2209
+ pm_node_t base;
2210
+
2211
+ /** ElseNode#else_keyword_loc */
2212
+ pm_location_t else_keyword_loc;
2213
+
2214
+ /** ElseNode#statements */
2215
+ struct pm_statements_node *statements;
2216
+
2217
+ /** ElseNode#end_keyword_loc */
2218
+ pm_location_t end_keyword_loc;
2219
+ } pm_else_node_t;
2220
+
2221
+ /**
2222
+ * EmbeddedStatementsNode
2223
+ *
2224
+ * Type: PM_EMBEDDED_STATEMENTS_NODE
2225
+ *
2226
+ * @extends pm_node_t
2227
+ */
2228
+ typedef struct pm_embedded_statements_node {
2229
+ /** The embedded base node. */
2230
+ pm_node_t base;
2231
+
2232
+ /** EmbeddedStatementsNode#opening_loc */
2233
+ pm_location_t opening_loc;
2234
+
2235
+ /** EmbeddedStatementsNode#statements */
2236
+ struct pm_statements_node *statements;
2237
+
2238
+ /** EmbeddedStatementsNode#closing_loc */
2239
+ pm_location_t closing_loc;
2240
+ } pm_embedded_statements_node_t;
2241
+
2242
+ /**
2243
+ * EmbeddedVariableNode
2244
+ *
2245
+ * Type: PM_EMBEDDED_VARIABLE_NODE
2246
+ *
2247
+ * @extends pm_node_t
2248
+ */
2249
+ typedef struct pm_embedded_variable_node {
2250
+ /** The embedded base node. */
2251
+ pm_node_t base;
2252
+
2253
+ /** EmbeddedVariableNode#operator_loc */
2254
+ pm_location_t operator_loc;
2255
+
2256
+ /** EmbeddedVariableNode#variable */
2257
+ struct pm_node *variable;
2258
+ } pm_embedded_variable_node_t;
2259
+
2260
+ /**
2261
+ * EnsureNode
2262
+ *
2263
+ * Type: PM_ENSURE_NODE
2264
+ *
2265
+ * @extends pm_node_t
2266
+ */
2267
+ typedef struct pm_ensure_node {
2268
+ /** The embedded base node. */
2269
+ pm_node_t base;
2270
+
2271
+ /** EnsureNode#ensure_keyword_loc */
2272
+ pm_location_t ensure_keyword_loc;
2273
+
2274
+ /** EnsureNode#statements */
2275
+ struct pm_statements_node *statements;
2276
+
2277
+ /** EnsureNode#end_keyword_loc */
2278
+ pm_location_t end_keyword_loc;
2279
+ } pm_ensure_node_t;
2280
+
2281
+ /**
2282
+ * FalseNode
2283
+ *
2284
+ * Type: PM_FALSE_NODE
2285
+ *
2286
+ * @extends pm_node_t
2287
+ */
2288
+ typedef struct pm_false_node {
2289
+ /** The embedded base node. */
2290
+ pm_node_t base;
2291
+ } pm_false_node_t;
2292
+
2293
+ /**
2294
+ * FindPatternNode
2295
+ *
2296
+ * Type: PM_FIND_PATTERN_NODE
2297
+ *
2298
+ * @extends pm_node_t
2299
+ */
2300
+ typedef struct pm_find_pattern_node {
2301
+ /** The embedded base node. */
2302
+ pm_node_t base;
2303
+
2304
+ /** FindPatternNode#constant */
2305
+ struct pm_node *constant;
2306
+
2307
+ /** FindPatternNode#left */
2308
+ struct pm_node *left;
2309
+
2310
+ /** FindPatternNode#requireds */
2311
+ struct pm_node_list requireds;
2312
+
2313
+ /** FindPatternNode#right */
2314
+ struct pm_node *right;
2315
+
2316
+ /** FindPatternNode#opening_loc */
2317
+ pm_location_t opening_loc;
2318
+
2319
+ /** FindPatternNode#closing_loc */
2320
+ pm_location_t closing_loc;
2321
+ } pm_find_pattern_node_t;
2322
+
2323
+ /**
2324
+ * FlipFlopNode
2325
+ *
2326
+ * Type: PM_FLIP_FLOP_NODE
2327
+ * Flags:
2328
+ * PM_RANGE_FLAGS_EXCLUDE_END
2329
+ *
2330
+ * @extends pm_node_t
2331
+ */
2332
+ typedef struct pm_flip_flop_node {
2333
+ /** The embedded base node. */
2334
+ pm_node_t base;
2335
+
2336
+ /** FlipFlopNode#left */
2337
+ struct pm_node *left;
2338
+
2339
+ /** FlipFlopNode#right */
2340
+ struct pm_node *right;
2341
+
2342
+ /** FlipFlopNode#operator_loc */
2343
+ pm_location_t operator_loc;
2344
+ } pm_flip_flop_node_t;
2345
+
2346
+ /**
2347
+ * FloatNode
2348
+ *
2349
+ * Type: PM_FLOAT_NODE
2350
+ *
2351
+ * @extends pm_node_t
2352
+ */
2353
+ typedef struct pm_float_node {
2354
+ /** The embedded base node. */
2355
+ pm_node_t base;
2356
+ } pm_float_node_t;
2357
+
2358
+ /**
2359
+ * ForNode
2360
+ *
2361
+ * Type: PM_FOR_NODE
2362
+ *
2363
+ * @extends pm_node_t
2364
+ */
2365
+ typedef struct pm_for_node {
2366
+ /** The embedded base node. */
2367
+ pm_node_t base;
2368
+
2369
+ /** ForNode#index */
2370
+ struct pm_node *index;
2371
+
2372
+ /** ForNode#collection */
2373
+ struct pm_node *collection;
2374
+
2375
+ /** ForNode#statements */
2376
+ struct pm_statements_node *statements;
2377
+
2378
+ /** ForNode#for_keyword_loc */
2379
+ pm_location_t for_keyword_loc;
2380
+
2381
+ /** ForNode#in_keyword_loc */
2382
+ pm_location_t in_keyword_loc;
2383
+
2384
+ /** ForNode#do_keyword_loc */
2385
+ pm_location_t do_keyword_loc;
2386
+
2387
+ /** ForNode#end_keyword_loc */
2388
+ pm_location_t end_keyword_loc;
2389
+ } pm_for_node_t;
2390
+
2391
+ /**
2392
+ * ForwardingArgumentsNode
2393
+ *
2394
+ * Type: PM_FORWARDING_ARGUMENTS_NODE
2395
+ *
2396
+ * @extends pm_node_t
2397
+ */
2398
+ typedef struct pm_forwarding_arguments_node {
2399
+ /** The embedded base node. */
2400
+ pm_node_t base;
2401
+ } pm_forwarding_arguments_node_t;
2402
+
2403
+ /**
2404
+ * ForwardingParameterNode
2405
+ *
2406
+ * Type: PM_FORWARDING_PARAMETER_NODE
2407
+ *
2408
+ * @extends pm_node_t
2409
+ */
2410
+ typedef struct pm_forwarding_parameter_node {
2411
+ /** The embedded base node. */
2412
+ pm_node_t base;
2413
+ } pm_forwarding_parameter_node_t;
2414
+
2415
+ /**
2416
+ * ForwardingSuperNode
2417
+ *
2418
+ * Type: PM_FORWARDING_SUPER_NODE
2419
+ *
2420
+ * @extends pm_node_t
2421
+ */
2422
+ typedef struct pm_forwarding_super_node {
2423
+ /** The embedded base node. */
2424
+ pm_node_t base;
2425
+
2426
+ /** ForwardingSuperNode#block */
2427
+ struct pm_block_node *block;
2428
+ } pm_forwarding_super_node_t;
2429
+
2430
+ /**
2431
+ * GlobalVariableAndWriteNode
2432
+ *
2433
+ * Type: PM_GLOBAL_VARIABLE_AND_WRITE_NODE
2434
+ *
2435
+ * @extends pm_node_t
2436
+ */
2437
+ typedef struct pm_global_variable_and_write_node {
2438
+ /** The embedded base node. */
2439
+ pm_node_t base;
2440
+
2441
+ /** GlobalVariableAndWriteNode#name */
2442
+ pm_constant_id_t name;
2443
+
2444
+ /** GlobalVariableAndWriteNode#name_loc */
2445
+ pm_location_t name_loc;
2446
+
2447
+ /** GlobalVariableAndWriteNode#operator_loc */
2448
+ pm_location_t operator_loc;
2449
+
2450
+ /** GlobalVariableAndWriteNode#value */
2451
+ struct pm_node *value;
2452
+ } pm_global_variable_and_write_node_t;
2453
+
2454
+ /**
2455
+ * GlobalVariableOperatorWriteNode
2456
+ *
2457
+ * Type: PM_GLOBAL_VARIABLE_OPERATOR_WRITE_NODE
2458
+ *
2459
+ * @extends pm_node_t
2460
+ */
2461
+ typedef struct pm_global_variable_operator_write_node {
2462
+ /** The embedded base node. */
2463
+ pm_node_t base;
2464
+
2465
+ /** GlobalVariableOperatorWriteNode#name */
2466
+ pm_constant_id_t name;
2467
+
2468
+ /** GlobalVariableOperatorWriteNode#name_loc */
2469
+ pm_location_t name_loc;
2470
+
2471
+ /** GlobalVariableOperatorWriteNode#operator_loc */
2472
+ pm_location_t operator_loc;
2473
+
2474
+ /** GlobalVariableOperatorWriteNode#value */
2475
+ struct pm_node *value;
2476
+
2477
+ /** GlobalVariableOperatorWriteNode#operator */
2478
+ pm_constant_id_t operator;
2479
+ } pm_global_variable_operator_write_node_t;
2480
+
2481
+ /**
2482
+ * GlobalVariableOrWriteNode
2483
+ *
2484
+ * Type: PM_GLOBAL_VARIABLE_OR_WRITE_NODE
2485
+ *
2486
+ * @extends pm_node_t
2487
+ */
2488
+ typedef struct pm_global_variable_or_write_node {
2489
+ /** The embedded base node. */
2490
+ pm_node_t base;
2491
+
2492
+ /** GlobalVariableOrWriteNode#name */
2493
+ pm_constant_id_t name;
2494
+
2495
+ /** GlobalVariableOrWriteNode#name_loc */
2496
+ pm_location_t name_loc;
2497
+
2498
+ /** GlobalVariableOrWriteNode#operator_loc */
2499
+ pm_location_t operator_loc;
2500
+
2501
+ /** GlobalVariableOrWriteNode#value */
2502
+ struct pm_node *value;
2503
+ } pm_global_variable_or_write_node_t;
2504
+
2505
+ /**
2506
+ * GlobalVariableReadNode
2507
+ *
2508
+ * Type: PM_GLOBAL_VARIABLE_READ_NODE
2509
+ *
2510
+ * @extends pm_node_t
2511
+ */
2512
+ typedef struct pm_global_variable_read_node {
2513
+ /** The embedded base node. */
2514
+ pm_node_t base;
2515
+
2516
+ /** GlobalVariableReadNode#name */
2517
+ pm_constant_id_t name;
2518
+ } pm_global_variable_read_node_t;
2519
+
2520
+ /**
2521
+ * GlobalVariableTargetNode
2522
+ *
2523
+ * Type: PM_GLOBAL_VARIABLE_TARGET_NODE
2524
+ *
2525
+ * @extends pm_node_t
2526
+ */
2527
+ typedef struct pm_global_variable_target_node {
2528
+ /** The embedded base node. */
2529
+ pm_node_t base;
2530
+
2531
+ /** GlobalVariableTargetNode#name */
2532
+ pm_constant_id_t name;
2533
+ } pm_global_variable_target_node_t;
2534
+
2535
+ /**
2536
+ * GlobalVariableWriteNode
2537
+ *
2538
+ * Type: PM_GLOBAL_VARIABLE_WRITE_NODE
2539
+ *
2540
+ * @extends pm_node_t
2541
+ */
2542
+ typedef struct pm_global_variable_write_node {
2543
+ /** The embedded base node. */
2544
+ pm_node_t base;
2545
+
2546
+ /** GlobalVariableWriteNode#name */
2547
+ pm_constant_id_t name;
2548
+
2549
+ /** GlobalVariableWriteNode#name_loc */
2550
+ pm_location_t name_loc;
2551
+
2552
+ /** GlobalVariableWriteNode#value */
2553
+ struct pm_node *value;
2554
+
2555
+ /** GlobalVariableWriteNode#operator_loc */
2556
+ pm_location_t operator_loc;
2557
+ } pm_global_variable_write_node_t;
2558
+
2559
+ /**
2560
+ * HashNode
2561
+ *
2562
+ * Type: PM_HASH_NODE
2563
+ *
2564
+ * @extends pm_node_t
2565
+ */
2566
+ typedef struct pm_hash_node {
2567
+ /** The embedded base node. */
2568
+ pm_node_t base;
2569
+
2570
+ /** HashNode#opening_loc */
2571
+ pm_location_t opening_loc;
2572
+
2573
+ /** HashNode#elements */
2574
+ struct pm_node_list elements;
2575
+
2576
+ /** HashNode#closing_loc */
2577
+ pm_location_t closing_loc;
2578
+ } pm_hash_node_t;
2579
+
2580
+ /**
2581
+ * HashPatternNode
2582
+ *
2583
+ * Type: PM_HASH_PATTERN_NODE
2584
+ *
2585
+ * @extends pm_node_t
2586
+ */
2587
+ typedef struct pm_hash_pattern_node {
2588
+ /** The embedded base node. */
2589
+ pm_node_t base;
2590
+
2591
+ /** HashPatternNode#constant */
2592
+ struct pm_node *constant;
2593
+
2594
+ /** HashPatternNode#elements */
2595
+ struct pm_node_list elements;
2596
+
2597
+ /** HashPatternNode#rest */
2598
+ struct pm_node *rest;
2599
+
2600
+ /** HashPatternNode#opening_loc */
2601
+ pm_location_t opening_loc;
2602
+
2603
+ /** HashPatternNode#closing_loc */
2604
+ pm_location_t closing_loc;
2605
+ } pm_hash_pattern_node_t;
2606
+
2607
+ /**
2608
+ * IfNode
2609
+ *
2610
+ * Type: PM_IF_NODE
2611
+ *
2612
+ * @extends pm_node_t
2613
+ */
2614
+ typedef struct pm_if_node {
2615
+ /** The embedded base node. */
2616
+ pm_node_t base;
2617
+
2618
+ /** IfNode#if_keyword_loc */
2619
+ pm_location_t if_keyword_loc;
2620
+
2621
+ /** IfNode#predicate */
2622
+ struct pm_node *predicate;
2623
+
2624
+ /** IfNode#then_keyword_loc */
2625
+ pm_location_t then_keyword_loc;
2626
+
2627
+ /** IfNode#statements */
2628
+ struct pm_statements_node *statements;
2629
+
2630
+ /** IfNode#consequent */
2631
+ struct pm_node *consequent;
2632
+
2633
+ /** IfNode#end_keyword_loc */
2634
+ pm_location_t end_keyword_loc;
2635
+ } pm_if_node_t;
2636
+
2637
+ /**
2638
+ * ImaginaryNode
2639
+ *
2640
+ * Type: PM_IMAGINARY_NODE
2641
+ *
2642
+ * @extends pm_node_t
2643
+ */
2644
+ typedef struct pm_imaginary_node {
2645
+ /** The embedded base node. */
2646
+ pm_node_t base;
2647
+
2648
+ /** ImaginaryNode#numeric */
2649
+ struct pm_node *numeric;
2650
+ } pm_imaginary_node_t;
2651
+
2652
+ /**
2653
+ * ImplicitNode
2654
+ *
2655
+ * Type: PM_IMPLICIT_NODE
2656
+ *
2657
+ * @extends pm_node_t
2658
+ */
2659
+ typedef struct pm_implicit_node {
2660
+ /** The embedded base node. */
2661
+ pm_node_t base;
2662
+
2663
+ /** ImplicitNode#value */
2664
+ struct pm_node *value;
2665
+ } pm_implicit_node_t;
2666
+
2667
+ /**
2668
+ * ImplicitRestNode
2669
+ *
2670
+ * Type: PM_IMPLICIT_REST_NODE
2671
+ *
2672
+ * @extends pm_node_t
2673
+ */
2674
+ typedef struct pm_implicit_rest_node {
2675
+ /** The embedded base node. */
2676
+ pm_node_t base;
2677
+ } pm_implicit_rest_node_t;
2678
+
2679
+ /**
2680
+ * InNode
2681
+ *
2682
+ * Type: PM_IN_NODE
2683
+ *
2684
+ * @extends pm_node_t
2685
+ */
2686
+ typedef struct pm_in_node {
2687
+ /** The embedded base node. */
2688
+ pm_node_t base;
2689
+
2690
+ /** InNode#pattern */
2691
+ struct pm_node *pattern;
2692
+
2693
+ /** InNode#statements */
2694
+ struct pm_statements_node *statements;
2695
+
2696
+ /** InNode#in_loc */
2697
+ pm_location_t in_loc;
2698
+
2699
+ /** InNode#then_loc */
2700
+ pm_location_t then_loc;
2701
+ } pm_in_node_t;
2702
+
2703
+ /**
2704
+ * IndexAndWriteNode
2705
+ *
2706
+ * Type: PM_INDEX_AND_WRITE_NODE
2707
+ * Flags:
2708
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2709
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2710
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
2711
+ *
2712
+ * @extends pm_node_t
2713
+ */
2714
+ typedef struct pm_index_and_write_node {
2715
+ /** The embedded base node. */
2716
+ pm_node_t base;
2717
+
2718
+ /** IndexAndWriteNode#receiver */
2719
+ struct pm_node *receiver;
2720
+
2721
+ /** IndexAndWriteNode#call_operator_loc */
2722
+ pm_location_t call_operator_loc;
2723
+
2724
+ /** IndexAndWriteNode#opening_loc */
2725
+ pm_location_t opening_loc;
2726
+
2727
+ /** IndexAndWriteNode#arguments */
2728
+ struct pm_arguments_node *arguments;
2729
+
2730
+ /** IndexAndWriteNode#closing_loc */
2731
+ pm_location_t closing_loc;
2732
+
2733
+ /** IndexAndWriteNode#block */
2734
+ struct pm_node *block;
2735
+
2736
+ /** IndexAndWriteNode#operator_loc */
2737
+ pm_location_t operator_loc;
2738
+
2739
+ /** IndexAndWriteNode#value */
2740
+ struct pm_node *value;
2741
+ } pm_index_and_write_node_t;
2742
+
2743
+ /**
2744
+ * IndexOperatorWriteNode
2745
+ *
2746
+ * Type: PM_INDEX_OPERATOR_WRITE_NODE
2747
+ * Flags:
2748
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2749
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2750
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
2751
+ *
2752
+ * @extends pm_node_t
2753
+ */
2754
+ typedef struct pm_index_operator_write_node {
2755
+ /** The embedded base node. */
2756
+ pm_node_t base;
2757
+
2758
+ /** IndexOperatorWriteNode#receiver */
2759
+ struct pm_node *receiver;
2760
+
2761
+ /** IndexOperatorWriteNode#call_operator_loc */
2762
+ pm_location_t call_operator_loc;
2763
+
2764
+ /** IndexOperatorWriteNode#opening_loc */
2765
+ pm_location_t opening_loc;
2766
+
2767
+ /** IndexOperatorWriteNode#arguments */
2768
+ struct pm_arguments_node *arguments;
2769
+
2770
+ /** IndexOperatorWriteNode#closing_loc */
2771
+ pm_location_t closing_loc;
2772
+
2773
+ /** IndexOperatorWriteNode#block */
2774
+ struct pm_node *block;
2775
+
2776
+ /** IndexOperatorWriteNode#operator */
2777
+ pm_constant_id_t operator;
2778
+
2779
+ /** IndexOperatorWriteNode#operator_loc */
2780
+ pm_location_t operator_loc;
2781
+
2782
+ /** IndexOperatorWriteNode#value */
2783
+ struct pm_node *value;
2784
+ } pm_index_operator_write_node_t;
2785
+
2786
+ /**
2787
+ * IndexOrWriteNode
2788
+ *
2789
+ * Type: PM_INDEX_OR_WRITE_NODE
2790
+ * Flags:
2791
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2792
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2793
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
2794
+ *
2795
+ * @extends pm_node_t
2796
+ */
2797
+ typedef struct pm_index_or_write_node {
2798
+ /** The embedded base node. */
2799
+ pm_node_t base;
2800
+
2801
+ /** IndexOrWriteNode#receiver */
2802
+ struct pm_node *receiver;
2803
+
2804
+ /** IndexOrWriteNode#call_operator_loc */
2805
+ pm_location_t call_operator_loc;
2806
+
2807
+ /** IndexOrWriteNode#opening_loc */
2808
+ pm_location_t opening_loc;
2809
+
2810
+ /** IndexOrWriteNode#arguments */
2811
+ struct pm_arguments_node *arguments;
2812
+
2813
+ /** IndexOrWriteNode#closing_loc */
2814
+ pm_location_t closing_loc;
2815
+
2816
+ /** IndexOrWriteNode#block */
2817
+ struct pm_node *block;
2818
+
2819
+ /** IndexOrWriteNode#operator_loc */
2820
+ pm_location_t operator_loc;
2821
+
2822
+ /** IndexOrWriteNode#value */
2823
+ struct pm_node *value;
2824
+ } pm_index_or_write_node_t;
2825
+
2826
+ /**
2827
+ * IndexTargetNode
2828
+ *
2829
+ * Type: PM_INDEX_TARGET_NODE
2830
+ * Flags:
2831
+ * PM_CALL_NODE_FLAGS_SAFE_NAVIGATION
2832
+ * PM_CALL_NODE_FLAGS_VARIABLE_CALL
2833
+ * PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE
2834
+ *
2835
+ * @extends pm_node_t
2836
+ */
2837
+ typedef struct pm_index_target_node {
2838
+ /** The embedded base node. */
2839
+ pm_node_t base;
2840
+
2841
+ /** IndexTargetNode#receiver */
2842
+ struct pm_node *receiver;
2843
+
2844
+ /** IndexTargetNode#opening_loc */
2845
+ pm_location_t opening_loc;
2846
+
2847
+ /** IndexTargetNode#arguments */
2848
+ struct pm_arguments_node *arguments;
2849
+
2850
+ /** IndexTargetNode#closing_loc */
2851
+ pm_location_t closing_loc;
2852
+
2853
+ /** IndexTargetNode#block */
2854
+ struct pm_node *block;
2855
+ } pm_index_target_node_t;
2856
+
2857
+ /**
2858
+ * InstanceVariableAndWriteNode
2859
+ *
2860
+ * Type: PM_INSTANCE_VARIABLE_AND_WRITE_NODE
2861
+ *
2862
+ * @extends pm_node_t
2863
+ */
2864
+ typedef struct pm_instance_variable_and_write_node {
2865
+ /** The embedded base node. */
2866
+ pm_node_t base;
2867
+
2868
+ /** InstanceVariableAndWriteNode#name */
2869
+ pm_constant_id_t name;
2870
+
2871
+ /** InstanceVariableAndWriteNode#name_loc */
2872
+ pm_location_t name_loc;
2873
+
2874
+ /** InstanceVariableAndWriteNode#operator_loc */
2875
+ pm_location_t operator_loc;
2876
+
2877
+ /** InstanceVariableAndWriteNode#value */
2878
+ struct pm_node *value;
2879
+ } pm_instance_variable_and_write_node_t;
2880
+
2881
+ /**
2882
+ * InstanceVariableOperatorWriteNode
2883
+ *
2884
+ * Type: PM_INSTANCE_VARIABLE_OPERATOR_WRITE_NODE
2885
+ *
2886
+ * @extends pm_node_t
2887
+ */
2888
+ typedef struct pm_instance_variable_operator_write_node {
2889
+ /** The embedded base node. */
2890
+ pm_node_t base;
2891
+
2892
+ /** InstanceVariableOperatorWriteNode#name */
2893
+ pm_constant_id_t name;
2894
+
2895
+ /** InstanceVariableOperatorWriteNode#name_loc */
2896
+ pm_location_t name_loc;
2897
+
2898
+ /** InstanceVariableOperatorWriteNode#operator_loc */
2899
+ pm_location_t operator_loc;
2900
+
2901
+ /** InstanceVariableOperatorWriteNode#value */
2902
+ struct pm_node *value;
2903
+
2904
+ /** InstanceVariableOperatorWriteNode#operator */
2905
+ pm_constant_id_t operator;
2906
+ } pm_instance_variable_operator_write_node_t;
2907
+
2908
+ /**
2909
+ * InstanceVariableOrWriteNode
2910
+ *
2911
+ * Type: PM_INSTANCE_VARIABLE_OR_WRITE_NODE
2912
+ *
2913
+ * @extends pm_node_t
2914
+ */
2915
+ typedef struct pm_instance_variable_or_write_node {
2916
+ /** The embedded base node. */
2917
+ pm_node_t base;
2918
+
2919
+ /** InstanceVariableOrWriteNode#name */
2920
+ pm_constant_id_t name;
2921
+
2922
+ /** InstanceVariableOrWriteNode#name_loc */
2923
+ pm_location_t name_loc;
2924
+
2925
+ /** InstanceVariableOrWriteNode#operator_loc */
2926
+ pm_location_t operator_loc;
2927
+
2928
+ /** InstanceVariableOrWriteNode#value */
2929
+ struct pm_node *value;
2930
+ } pm_instance_variable_or_write_node_t;
2931
+
2932
+ /**
2933
+ * InstanceVariableReadNode
2934
+ *
2935
+ * Type: PM_INSTANCE_VARIABLE_READ_NODE
2936
+ *
2937
+ * @extends pm_node_t
2938
+ */
2939
+ typedef struct pm_instance_variable_read_node {
2940
+ /** The embedded base node. */
2941
+ pm_node_t base;
2942
+
2943
+ /** InstanceVariableReadNode#name */
2944
+ pm_constant_id_t name;
2945
+ } pm_instance_variable_read_node_t;
2946
+
2947
+ /**
2948
+ * InstanceVariableTargetNode
2949
+ *
2950
+ * Type: PM_INSTANCE_VARIABLE_TARGET_NODE
2951
+ *
2952
+ * @extends pm_node_t
2953
+ */
2954
+ typedef struct pm_instance_variable_target_node {
2955
+ /** The embedded base node. */
2956
+ pm_node_t base;
2957
+
2958
+ /** InstanceVariableTargetNode#name */
2959
+ pm_constant_id_t name;
2960
+ } pm_instance_variable_target_node_t;
2961
+
2962
+ /**
2963
+ * InstanceVariableWriteNode
2964
+ *
2965
+ * Type: PM_INSTANCE_VARIABLE_WRITE_NODE
2966
+ *
2967
+ * @extends pm_node_t
2968
+ */
2969
+ typedef struct pm_instance_variable_write_node {
2970
+ /** The embedded base node. */
2971
+ pm_node_t base;
2972
+
2973
+ /** InstanceVariableWriteNode#name */
2974
+ pm_constant_id_t name;
2975
+
2976
+ /** InstanceVariableWriteNode#name_loc */
2977
+ pm_location_t name_loc;
2978
+
2979
+ /** InstanceVariableWriteNode#value */
2980
+ struct pm_node *value;
2981
+
2982
+ /** InstanceVariableWriteNode#operator_loc */
2983
+ pm_location_t operator_loc;
2984
+ } pm_instance_variable_write_node_t;
2985
+
2986
+ /**
2987
+ * IntegerNode
2988
+ *
2989
+ * Type: PM_INTEGER_NODE
2990
+ * Flags:
2991
+ * PM_INTEGER_BASE_FLAGS_BINARY
2992
+ * PM_INTEGER_BASE_FLAGS_DECIMAL
2993
+ * PM_INTEGER_BASE_FLAGS_OCTAL
2994
+ * PM_INTEGER_BASE_FLAGS_HEXADECIMAL
2995
+ *
2996
+ * @extends pm_node_t
2997
+ */
2998
+ typedef struct pm_integer_node {
2999
+ /** The embedded base node. */
3000
+ pm_node_t base;
3001
+ } pm_integer_node_t;
3002
+
3003
+ /**
3004
+ * InterpolatedMatchLastLineNode
3005
+ *
3006
+ * Type: PM_INTERPOLATED_MATCH_LAST_LINE_NODE
3007
+ * Flags:
3008
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
3009
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
3010
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
3011
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
3012
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
3013
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
3014
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
3015
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3016
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
3017
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
3018
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
3019
+ *
3020
+ * @extends pm_node_t
3021
+ */
3022
+ typedef struct pm_interpolated_match_last_line_node {
3023
+ /** The embedded base node. */
3024
+ pm_node_t base;
3025
+
3026
+ /** InterpolatedMatchLastLineNode#opening_loc */
3027
+ pm_location_t opening_loc;
3028
+
3029
+ /** InterpolatedMatchLastLineNode#parts */
3030
+ struct pm_node_list parts;
3031
+
3032
+ /** InterpolatedMatchLastLineNode#closing_loc */
3033
+ pm_location_t closing_loc;
3034
+ } pm_interpolated_match_last_line_node_t;
3035
+
3036
+ /**
3037
+ * InterpolatedRegularExpressionNode
3038
+ *
3039
+ * Type: PM_INTERPOLATED_REGULAR_EXPRESSION_NODE
3040
+ * Flags:
3041
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
3042
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
3043
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
3044
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
3045
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
3046
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
3047
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
3048
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3049
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
3050
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
3051
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
3052
+ *
3053
+ * @extends pm_node_t
3054
+ */
3055
+ typedef struct pm_interpolated_regular_expression_node {
3056
+ /** The embedded base node. */
3057
+ pm_node_t base;
3058
+
3059
+ /** InterpolatedRegularExpressionNode#opening_loc */
3060
+ pm_location_t opening_loc;
3061
+
3062
+ /** InterpolatedRegularExpressionNode#parts */
3063
+ struct pm_node_list parts;
3064
+
3065
+ /** InterpolatedRegularExpressionNode#closing_loc */
3066
+ pm_location_t closing_loc;
3067
+ } pm_interpolated_regular_expression_node_t;
3068
+
3069
+ /**
3070
+ * InterpolatedStringNode
3071
+ *
3072
+ * Type: PM_INTERPOLATED_STRING_NODE
3073
+ *
3074
+ * @extends pm_node_t
3075
+ */
3076
+ typedef struct pm_interpolated_string_node {
3077
+ /** The embedded base node. */
3078
+ pm_node_t base;
3079
+
3080
+ /** InterpolatedStringNode#opening_loc */
3081
+ pm_location_t opening_loc;
3082
+
3083
+ /** InterpolatedStringNode#parts */
3084
+ struct pm_node_list parts;
3085
+
3086
+ /** InterpolatedStringNode#closing_loc */
3087
+ pm_location_t closing_loc;
3088
+ } pm_interpolated_string_node_t;
3089
+
3090
+ /**
3091
+ * InterpolatedSymbolNode
3092
+ *
3093
+ * Type: PM_INTERPOLATED_SYMBOL_NODE
3094
+ *
3095
+ * @extends pm_node_t
3096
+ */
3097
+ typedef struct pm_interpolated_symbol_node {
3098
+ /** The embedded base node. */
3099
+ pm_node_t base;
3100
+
3101
+ /** InterpolatedSymbolNode#opening_loc */
3102
+ pm_location_t opening_loc;
3103
+
3104
+ /** InterpolatedSymbolNode#parts */
3105
+ struct pm_node_list parts;
3106
+
3107
+ /** InterpolatedSymbolNode#closing_loc */
3108
+ pm_location_t closing_loc;
3109
+ } pm_interpolated_symbol_node_t;
3110
+
3111
+ /**
3112
+ * InterpolatedXStringNode
3113
+ *
3114
+ * Type: PM_INTERPOLATED_X_STRING_NODE
3115
+ *
3116
+ * @extends pm_node_t
3117
+ */
3118
+ typedef struct pm_interpolated_x_string_node {
3119
+ /** The embedded base node. */
3120
+ pm_node_t base;
3121
+
3122
+ /** InterpolatedXStringNode#opening_loc */
3123
+ pm_location_t opening_loc;
3124
+
3125
+ /** InterpolatedXStringNode#parts */
3126
+ struct pm_node_list parts;
3127
+
3128
+ /** InterpolatedXStringNode#closing_loc */
3129
+ pm_location_t closing_loc;
3130
+ } pm_interpolated_x_string_node_t;
3131
+
3132
+ /**
3133
+ * KeywordHashNode
3134
+ *
3135
+ * Type: PM_KEYWORD_HASH_NODE
3136
+ * Flags:
3137
+ * PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS
3138
+ *
3139
+ * @extends pm_node_t
3140
+ */
3141
+ typedef struct pm_keyword_hash_node {
3142
+ /** The embedded base node. */
3143
+ pm_node_t base;
3144
+
3145
+ /** KeywordHashNode#elements */
3146
+ struct pm_node_list elements;
3147
+ } pm_keyword_hash_node_t;
3148
+
3149
+ /**
3150
+ * KeywordRestParameterNode
3151
+ *
3152
+ * Type: PM_KEYWORD_REST_PARAMETER_NODE
3153
+ *
3154
+ * @extends pm_node_t
3155
+ */
3156
+ typedef struct pm_keyword_rest_parameter_node {
3157
+ /** The embedded base node. */
3158
+ pm_node_t base;
3159
+
3160
+ /** KeywordRestParameterNode#name */
3161
+ pm_constant_id_t name;
3162
+
3163
+ /** KeywordRestParameterNode#name_loc */
3164
+ pm_location_t name_loc;
3165
+
3166
+ /** KeywordRestParameterNode#operator_loc */
3167
+ pm_location_t operator_loc;
3168
+ } pm_keyword_rest_parameter_node_t;
3169
+
3170
+ /**
3171
+ * LambdaNode
3172
+ *
3173
+ * Type: PM_LAMBDA_NODE
3174
+ *
3175
+ * @extends pm_node_t
3176
+ */
3177
+ typedef struct pm_lambda_node {
3178
+ /** The embedded base node. */
3179
+ pm_node_t base;
3180
+
3181
+ /** LambdaNode#locals */
3182
+ pm_constant_id_list_t locals;
3183
+
3184
+ /** LambdaNode#locals_body_index */
3185
+ uint32_t locals_body_index;
3186
+
3187
+ /** LambdaNode#operator_loc */
3188
+ pm_location_t operator_loc;
3189
+
3190
+ /** LambdaNode#opening_loc */
3191
+ pm_location_t opening_loc;
3192
+
3193
+ /** LambdaNode#closing_loc */
3194
+ pm_location_t closing_loc;
3195
+
3196
+ /** LambdaNode#parameters */
3197
+ struct pm_node *parameters;
3198
+
3199
+ /** LambdaNode#body */
3200
+ struct pm_node *body;
3201
+ } pm_lambda_node_t;
3202
+
3203
+ /**
3204
+ * LocalVariableAndWriteNode
3205
+ *
3206
+ * Type: PM_LOCAL_VARIABLE_AND_WRITE_NODE
3207
+ *
3208
+ * @extends pm_node_t
3209
+ */
3210
+ typedef struct pm_local_variable_and_write_node {
3211
+ /** The embedded base node. */
3212
+ pm_node_t base;
3213
+
3214
+ /** LocalVariableAndWriteNode#name_loc */
3215
+ pm_location_t name_loc;
3216
+
3217
+ /** LocalVariableAndWriteNode#operator_loc */
3218
+ pm_location_t operator_loc;
3219
+
3220
+ /** LocalVariableAndWriteNode#value */
3221
+ struct pm_node *value;
3222
+
3223
+ /** LocalVariableAndWriteNode#name */
3224
+ pm_constant_id_t name;
3225
+
3226
+ /** LocalVariableAndWriteNode#depth */
3227
+ uint32_t depth;
3228
+ } pm_local_variable_and_write_node_t;
3229
+
3230
+ /**
3231
+ * LocalVariableOperatorWriteNode
3232
+ *
3233
+ * Type: PM_LOCAL_VARIABLE_OPERATOR_WRITE_NODE
3234
+ *
3235
+ * @extends pm_node_t
3236
+ */
3237
+ typedef struct pm_local_variable_operator_write_node {
3238
+ /** The embedded base node. */
3239
+ pm_node_t base;
3240
+
3241
+ /** LocalVariableOperatorWriteNode#name_loc */
3242
+ pm_location_t name_loc;
3243
+
3244
+ /** LocalVariableOperatorWriteNode#operator_loc */
3245
+ pm_location_t operator_loc;
3246
+
3247
+ /** LocalVariableOperatorWriteNode#value */
3248
+ struct pm_node *value;
3249
+
3250
+ /** LocalVariableOperatorWriteNode#name */
3251
+ pm_constant_id_t name;
3252
+
3253
+ /** LocalVariableOperatorWriteNode#operator */
3254
+ pm_constant_id_t operator;
3255
+
3256
+ /** LocalVariableOperatorWriteNode#depth */
3257
+ uint32_t depth;
3258
+ } pm_local_variable_operator_write_node_t;
3259
+
3260
+ /**
3261
+ * LocalVariableOrWriteNode
3262
+ *
3263
+ * Type: PM_LOCAL_VARIABLE_OR_WRITE_NODE
3264
+ *
3265
+ * @extends pm_node_t
3266
+ */
3267
+ typedef struct pm_local_variable_or_write_node {
3268
+ /** The embedded base node. */
3269
+ pm_node_t base;
3270
+
3271
+ /** LocalVariableOrWriteNode#name_loc */
3272
+ pm_location_t name_loc;
3273
+
3274
+ /** LocalVariableOrWriteNode#operator_loc */
3275
+ pm_location_t operator_loc;
3276
+
3277
+ /** LocalVariableOrWriteNode#value */
3278
+ struct pm_node *value;
3279
+
3280
+ /** LocalVariableOrWriteNode#name */
3281
+ pm_constant_id_t name;
3282
+
3283
+ /** LocalVariableOrWriteNode#depth */
3284
+ uint32_t depth;
3285
+ } pm_local_variable_or_write_node_t;
3286
+
3287
+ /**
3288
+ * LocalVariableReadNode
3289
+ *
3290
+ * Type: PM_LOCAL_VARIABLE_READ_NODE
3291
+ *
3292
+ * @extends pm_node_t
3293
+ */
3294
+ typedef struct pm_local_variable_read_node {
3295
+ /** The embedded base node. */
3296
+ pm_node_t base;
3297
+
3298
+ /** LocalVariableReadNode#name */
3299
+ pm_constant_id_t name;
3300
+
3301
+ /** LocalVariableReadNode#depth */
3302
+ uint32_t depth;
3303
+ } pm_local_variable_read_node_t;
3304
+
3305
+ /**
3306
+ * LocalVariableTargetNode
3307
+ *
3308
+ * Type: PM_LOCAL_VARIABLE_TARGET_NODE
3309
+ *
3310
+ * @extends pm_node_t
3311
+ */
3312
+ typedef struct pm_local_variable_target_node {
3313
+ /** The embedded base node. */
3314
+ pm_node_t base;
3315
+
3316
+ /** LocalVariableTargetNode#name */
3317
+ pm_constant_id_t name;
3318
+
3319
+ /** LocalVariableTargetNode#depth */
3320
+ uint32_t depth;
3321
+ } pm_local_variable_target_node_t;
3322
+
3323
+ /**
3324
+ * LocalVariableWriteNode
3325
+ *
3326
+ * Type: PM_LOCAL_VARIABLE_WRITE_NODE
3327
+ *
3328
+ * @extends pm_node_t
3329
+ */
3330
+ typedef struct pm_local_variable_write_node {
3331
+ /** The embedded base node. */
3332
+ pm_node_t base;
3333
+
3334
+ /** LocalVariableWriteNode#name */
3335
+ pm_constant_id_t name;
3336
+
3337
+ /** LocalVariableWriteNode#depth */
3338
+ uint32_t depth;
3339
+
3340
+ /** LocalVariableWriteNode#name_loc */
3341
+ pm_location_t name_loc;
3342
+
3343
+ /** LocalVariableWriteNode#value */
3344
+ struct pm_node *value;
3345
+
3346
+ /** LocalVariableWriteNode#operator_loc */
3347
+ pm_location_t operator_loc;
3348
+ } pm_local_variable_write_node_t;
3349
+
3350
+ /**
3351
+ * MatchLastLineNode
3352
+ *
3353
+ * Type: PM_MATCH_LAST_LINE_NODE
3354
+ * Flags:
3355
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
3356
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
3357
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
3358
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
3359
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
3360
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
3361
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
3362
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3363
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
3364
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
3365
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
3366
+ *
3367
+ * @extends pm_node_t
3368
+ */
3369
+ typedef struct pm_match_last_line_node {
3370
+ /** The embedded base node. */
3371
+ pm_node_t base;
3372
+
3373
+ /** MatchLastLineNode#opening_loc */
3374
+ pm_location_t opening_loc;
3375
+
3376
+ /** MatchLastLineNode#content_loc */
3377
+ pm_location_t content_loc;
3378
+
3379
+ /** MatchLastLineNode#closing_loc */
3380
+ pm_location_t closing_loc;
3381
+
3382
+ /** MatchLastLineNode#unescaped */
3383
+ pm_string_t unescaped;
3384
+ } pm_match_last_line_node_t;
3385
+
3386
+ /**
3387
+ * MatchPredicateNode
3388
+ *
3389
+ * Type: PM_MATCH_PREDICATE_NODE
3390
+ *
3391
+ * @extends pm_node_t
3392
+ */
3393
+ typedef struct pm_match_predicate_node {
3394
+ /** The embedded base node. */
3395
+ pm_node_t base;
3396
+
3397
+ /** MatchPredicateNode#value */
3398
+ struct pm_node *value;
3399
+
3400
+ /** MatchPredicateNode#pattern */
3401
+ struct pm_node *pattern;
3402
+
3403
+ /** MatchPredicateNode#operator_loc */
3404
+ pm_location_t operator_loc;
3405
+ } pm_match_predicate_node_t;
3406
+
3407
+ /**
3408
+ * MatchRequiredNode
3409
+ *
3410
+ * Type: PM_MATCH_REQUIRED_NODE
3411
+ *
3412
+ * @extends pm_node_t
3413
+ */
3414
+ typedef struct pm_match_required_node {
3415
+ /** The embedded base node. */
3416
+ pm_node_t base;
3417
+
3418
+ /** MatchRequiredNode#value */
3419
+ struct pm_node *value;
3420
+
3421
+ /** MatchRequiredNode#pattern */
3422
+ struct pm_node *pattern;
3423
+
3424
+ /** MatchRequiredNode#operator_loc */
3425
+ pm_location_t operator_loc;
3426
+ } pm_match_required_node_t;
3427
+
3428
+ /**
3429
+ * MatchWriteNode
3430
+ *
3431
+ * Type: PM_MATCH_WRITE_NODE
3432
+ *
3433
+ * @extends pm_node_t
3434
+ */
3435
+ typedef struct pm_match_write_node {
3436
+ /** The embedded base node. */
3437
+ pm_node_t base;
3438
+
3439
+ /** MatchWriteNode#call */
3440
+ struct pm_call_node *call;
3441
+
3442
+ /** MatchWriteNode#targets */
3443
+ struct pm_node_list targets;
3444
+ } pm_match_write_node_t;
3445
+
3446
+ /**
3447
+ * MissingNode
3448
+ *
3449
+ * Type: PM_MISSING_NODE
3450
+ *
3451
+ * @extends pm_node_t
3452
+ */
3453
+ typedef struct pm_missing_node {
3454
+ /** The embedded base node. */
3455
+ pm_node_t base;
3456
+ } pm_missing_node_t;
3457
+
3458
+ /**
3459
+ * ModuleNode
3460
+ *
3461
+ * Type: PM_MODULE_NODE
3462
+ *
3463
+ * @extends pm_node_t
3464
+ */
3465
+ typedef struct pm_module_node {
3466
+ /** The embedded base node. */
3467
+ pm_node_t base;
3468
+
3469
+ /** ModuleNode#locals */
3470
+ pm_constant_id_list_t locals;
3471
+
3472
+ /** ModuleNode#module_keyword_loc */
3473
+ pm_location_t module_keyword_loc;
3474
+
3475
+ /** ModuleNode#constant_path */
3476
+ struct pm_node *constant_path;
3477
+
3478
+ /** ModuleNode#body */
3479
+ struct pm_node *body;
3480
+
3481
+ /** ModuleNode#end_keyword_loc */
3482
+ pm_location_t end_keyword_loc;
3483
+
3484
+ /** ModuleNode#name */
3485
+ pm_constant_id_t name;
3486
+ } pm_module_node_t;
3487
+
3488
+ /**
3489
+ * MultiTargetNode
3490
+ *
3491
+ * Type: PM_MULTI_TARGET_NODE
3492
+ *
3493
+ * @extends pm_node_t
3494
+ */
3495
+ typedef struct pm_multi_target_node {
3496
+ /** The embedded base node. */
3497
+ pm_node_t base;
3498
+
3499
+ /** MultiTargetNode#lefts */
3500
+ struct pm_node_list lefts;
3501
+
3502
+ /** MultiTargetNode#rest */
3503
+ struct pm_node *rest;
3504
+
3505
+ /** MultiTargetNode#rights */
3506
+ struct pm_node_list rights;
3507
+
3508
+ /** MultiTargetNode#lparen_loc */
3509
+ pm_location_t lparen_loc;
3510
+
3511
+ /** MultiTargetNode#rparen_loc */
3512
+ pm_location_t rparen_loc;
3513
+ } pm_multi_target_node_t;
3514
+
3515
+ /**
3516
+ * MultiWriteNode
3517
+ *
3518
+ * Type: PM_MULTI_WRITE_NODE
3519
+ *
3520
+ * @extends pm_node_t
3521
+ */
3522
+ typedef struct pm_multi_write_node {
3523
+ /** The embedded base node. */
3524
+ pm_node_t base;
3525
+
3526
+ /** MultiWriteNode#lefts */
3527
+ struct pm_node_list lefts;
3528
+
3529
+ /** MultiWriteNode#rest */
3530
+ struct pm_node *rest;
3531
+
3532
+ /** MultiWriteNode#rights */
3533
+ struct pm_node_list rights;
3534
+
3535
+ /** MultiWriteNode#lparen_loc */
3536
+ pm_location_t lparen_loc;
3537
+
3538
+ /** MultiWriteNode#rparen_loc */
3539
+ pm_location_t rparen_loc;
3540
+
3541
+ /** MultiWriteNode#operator_loc */
3542
+ pm_location_t operator_loc;
3543
+
3544
+ /** MultiWriteNode#value */
3545
+ struct pm_node *value;
3546
+ } pm_multi_write_node_t;
3547
+
3548
+ /**
3549
+ * NextNode
3550
+ *
3551
+ * Type: PM_NEXT_NODE
3552
+ *
3553
+ * @extends pm_node_t
3554
+ */
3555
+ typedef struct pm_next_node {
3556
+ /** The embedded base node. */
3557
+ pm_node_t base;
3558
+
3559
+ /** NextNode#arguments */
3560
+ struct pm_arguments_node *arguments;
3561
+
3562
+ /** NextNode#keyword_loc */
3563
+ pm_location_t keyword_loc;
3564
+ } pm_next_node_t;
3565
+
3566
+ /**
3567
+ * NilNode
3568
+ *
3569
+ * Type: PM_NIL_NODE
3570
+ *
3571
+ * @extends pm_node_t
3572
+ */
3573
+ typedef struct pm_nil_node {
3574
+ /** The embedded base node. */
3575
+ pm_node_t base;
3576
+ } pm_nil_node_t;
3577
+
3578
+ /**
3579
+ * NoKeywordsParameterNode
3580
+ *
3581
+ * Type: PM_NO_KEYWORDS_PARAMETER_NODE
3582
+ *
3583
+ * @extends pm_node_t
3584
+ */
3585
+ typedef struct pm_no_keywords_parameter_node {
3586
+ /** The embedded base node. */
3587
+ pm_node_t base;
3588
+
3589
+ /** NoKeywordsParameterNode#operator_loc */
3590
+ pm_location_t operator_loc;
3591
+
3592
+ /** NoKeywordsParameterNode#keyword_loc */
3593
+ pm_location_t keyword_loc;
3594
+ } pm_no_keywords_parameter_node_t;
3595
+
3596
+ /**
3597
+ * NumberedParametersNode
3598
+ *
3599
+ * Type: PM_NUMBERED_PARAMETERS_NODE
3600
+ *
3601
+ * @extends pm_node_t
3602
+ */
3603
+ typedef struct pm_numbered_parameters_node {
3604
+ /** The embedded base node. */
3605
+ pm_node_t base;
3606
+
3607
+ /** NumberedParametersNode#maximum */
3608
+ uint8_t maximum;
3609
+ } pm_numbered_parameters_node_t;
3610
+
3611
+ /**
3612
+ * NumberedReferenceReadNode
3613
+ *
3614
+ * Type: PM_NUMBERED_REFERENCE_READ_NODE
3615
+ *
3616
+ * @extends pm_node_t
3617
+ */
3618
+ typedef struct pm_numbered_reference_read_node {
3619
+ /** The embedded base node. */
3620
+ pm_node_t base;
3621
+
3622
+ /** NumberedReferenceReadNode#number */
3623
+ uint32_t number;
3624
+ } pm_numbered_reference_read_node_t;
3625
+
3626
+ /**
3627
+ * OptionalKeywordParameterNode
3628
+ *
3629
+ * Type: PM_OPTIONAL_KEYWORD_PARAMETER_NODE
3630
+ *
3631
+ * @extends pm_node_t
3632
+ */
3633
+ typedef struct pm_optional_keyword_parameter_node {
3634
+ /** The embedded base node. */
3635
+ pm_node_t base;
3636
+
3637
+ /** OptionalKeywordParameterNode#name */
3638
+ pm_constant_id_t name;
3639
+
3640
+ /** OptionalKeywordParameterNode#name_loc */
3641
+ pm_location_t name_loc;
3642
+
3643
+ /** OptionalKeywordParameterNode#value */
3644
+ struct pm_node *value;
3645
+ } pm_optional_keyword_parameter_node_t;
3646
+
3647
+ /**
3648
+ * OptionalParameterNode
3649
+ *
3650
+ * Type: PM_OPTIONAL_PARAMETER_NODE
3651
+ *
3652
+ * @extends pm_node_t
3653
+ */
3654
+ typedef struct pm_optional_parameter_node {
3655
+ /** The embedded base node. */
3656
+ pm_node_t base;
3657
+
3658
+ /** OptionalParameterNode#name */
3659
+ pm_constant_id_t name;
3660
+
3661
+ /** OptionalParameterNode#name_loc */
3662
+ pm_location_t name_loc;
3663
+
3664
+ /** OptionalParameterNode#operator_loc */
3665
+ pm_location_t operator_loc;
3666
+
3667
+ /** OptionalParameterNode#value */
3668
+ struct pm_node *value;
3669
+ } pm_optional_parameter_node_t;
3670
+
3671
+ /**
3672
+ * OrNode
3673
+ *
3674
+ * Type: PM_OR_NODE
3675
+ *
3676
+ * @extends pm_node_t
3677
+ */
3678
+ typedef struct pm_or_node {
3679
+ /** The embedded base node. */
3680
+ pm_node_t base;
3681
+
3682
+ /** OrNode#left */
3683
+ struct pm_node *left;
3684
+
3685
+ /** OrNode#right */
3686
+ struct pm_node *right;
3687
+
3688
+ /** OrNode#operator_loc */
3689
+ pm_location_t operator_loc;
3690
+ } pm_or_node_t;
3691
+
3692
+ /**
3693
+ * ParametersNode
3694
+ *
3695
+ * Type: PM_PARAMETERS_NODE
3696
+ *
3697
+ * @extends pm_node_t
3698
+ */
3699
+ typedef struct pm_parameters_node {
3700
+ /** The embedded base node. */
3701
+ pm_node_t base;
3702
+
3703
+ /** ParametersNode#requireds */
3704
+ struct pm_node_list requireds;
3705
+
3706
+ /** ParametersNode#optionals */
3707
+ struct pm_node_list optionals;
3708
+
3709
+ /** ParametersNode#rest */
3710
+ struct pm_node *rest;
3711
+
3712
+ /** ParametersNode#posts */
3713
+ struct pm_node_list posts;
3714
+
3715
+ /** ParametersNode#keywords */
3716
+ struct pm_node_list keywords;
3717
+
3718
+ /** ParametersNode#keyword_rest */
3719
+ struct pm_node *keyword_rest;
3720
+
3721
+ /** ParametersNode#block */
3722
+ struct pm_block_parameter_node *block;
3723
+ } pm_parameters_node_t;
3724
+
3725
+ /**
3726
+ * ParenthesesNode
3727
+ *
3728
+ * Type: PM_PARENTHESES_NODE
3729
+ *
3730
+ * @extends pm_node_t
3731
+ */
3732
+ typedef struct pm_parentheses_node {
3733
+ /** The embedded base node. */
3734
+ pm_node_t base;
3735
+
3736
+ /** ParenthesesNode#body */
3737
+ struct pm_node *body;
3738
+
3739
+ /** ParenthesesNode#opening_loc */
3740
+ pm_location_t opening_loc;
3741
+
3742
+ /** ParenthesesNode#closing_loc */
3743
+ pm_location_t closing_loc;
3744
+ } pm_parentheses_node_t;
3745
+
3746
+ /**
3747
+ * PinnedExpressionNode
3748
+ *
3749
+ * Type: PM_PINNED_EXPRESSION_NODE
3750
+ *
3751
+ * @extends pm_node_t
3752
+ */
3753
+ typedef struct pm_pinned_expression_node {
3754
+ /** The embedded base node. */
3755
+ pm_node_t base;
3756
+
3757
+ /** PinnedExpressionNode#expression */
3758
+ struct pm_node *expression;
3759
+
3760
+ /** PinnedExpressionNode#operator_loc */
3761
+ pm_location_t operator_loc;
3762
+
3763
+ /** PinnedExpressionNode#lparen_loc */
3764
+ pm_location_t lparen_loc;
3765
+
3766
+ /** PinnedExpressionNode#rparen_loc */
3767
+ pm_location_t rparen_loc;
3768
+ } pm_pinned_expression_node_t;
3769
+
3770
+ /**
3771
+ * PinnedVariableNode
3772
+ *
3773
+ * Type: PM_PINNED_VARIABLE_NODE
3774
+ *
3775
+ * @extends pm_node_t
3776
+ */
3777
+ typedef struct pm_pinned_variable_node {
3778
+ /** The embedded base node. */
3779
+ pm_node_t base;
3780
+
3781
+ /** PinnedVariableNode#variable */
3782
+ struct pm_node *variable;
3783
+
3784
+ /** PinnedVariableNode#operator_loc */
3785
+ pm_location_t operator_loc;
3786
+ } pm_pinned_variable_node_t;
3787
+
3788
+ /**
3789
+ * PostExecutionNode
3790
+ *
3791
+ * Type: PM_POST_EXECUTION_NODE
3792
+ *
3793
+ * @extends pm_node_t
3794
+ */
3795
+ typedef struct pm_post_execution_node {
3796
+ /** The embedded base node. */
3797
+ pm_node_t base;
3798
+
3799
+ /** PostExecutionNode#statements */
3800
+ struct pm_statements_node *statements;
3801
+
3802
+ /** PostExecutionNode#keyword_loc */
3803
+ pm_location_t keyword_loc;
3804
+
3805
+ /** PostExecutionNode#opening_loc */
3806
+ pm_location_t opening_loc;
3807
+
3808
+ /** PostExecutionNode#closing_loc */
3809
+ pm_location_t closing_loc;
3810
+ } pm_post_execution_node_t;
3811
+
3812
+ /**
3813
+ * PreExecutionNode
3814
+ *
3815
+ * Type: PM_PRE_EXECUTION_NODE
3816
+ *
3817
+ * @extends pm_node_t
3818
+ */
3819
+ typedef struct pm_pre_execution_node {
3820
+ /** The embedded base node. */
3821
+ pm_node_t base;
3822
+
3823
+ /** PreExecutionNode#statements */
3824
+ struct pm_statements_node *statements;
3825
+
3826
+ /** PreExecutionNode#keyword_loc */
3827
+ pm_location_t keyword_loc;
3828
+
3829
+ /** PreExecutionNode#opening_loc */
3830
+ pm_location_t opening_loc;
3831
+
3832
+ /** PreExecutionNode#closing_loc */
3833
+ pm_location_t closing_loc;
3834
+ } pm_pre_execution_node_t;
3835
+
3836
+ /**
3837
+ * ProgramNode
3838
+ *
3839
+ * Type: PM_PROGRAM_NODE
3840
+ *
3841
+ * @extends pm_node_t
3842
+ */
3843
+ typedef struct pm_program_node {
3844
+ /** The embedded base node. */
3845
+ pm_node_t base;
3846
+
3847
+ /** ProgramNode#locals */
3848
+ pm_constant_id_list_t locals;
3849
+
3850
+ /** ProgramNode#statements */
3851
+ struct pm_statements_node *statements;
3852
+ } pm_program_node_t;
3853
+
3854
+ /**
3855
+ * RangeNode
3856
+ *
3857
+ * Type: PM_RANGE_NODE
3858
+ * Flags:
3859
+ * PM_RANGE_FLAGS_EXCLUDE_END
3860
+ *
3861
+ * @extends pm_node_t
3862
+ */
3863
+ typedef struct pm_range_node {
3864
+ /** The embedded base node. */
3865
+ pm_node_t base;
3866
+
3867
+ /** RangeNode#left */
3868
+ struct pm_node *left;
3869
+
3870
+ /** RangeNode#right */
3871
+ struct pm_node *right;
3872
+
3873
+ /** RangeNode#operator_loc */
3874
+ pm_location_t operator_loc;
3875
+ } pm_range_node_t;
3876
+
3877
+ /**
3878
+ * RationalNode
3879
+ *
3880
+ * Type: PM_RATIONAL_NODE
3881
+ *
3882
+ * @extends pm_node_t
3883
+ */
3884
+ typedef struct pm_rational_node {
3885
+ /** The embedded base node. */
3886
+ pm_node_t base;
3887
+
3888
+ /** RationalNode#numeric */
3889
+ struct pm_node *numeric;
3890
+ } pm_rational_node_t;
3891
+
3892
+ /**
3893
+ * RedoNode
3894
+ *
3895
+ * Type: PM_REDO_NODE
3896
+ *
3897
+ * @extends pm_node_t
3898
+ */
3899
+ typedef struct pm_redo_node {
3900
+ /** The embedded base node. */
3901
+ pm_node_t base;
3902
+ } pm_redo_node_t;
3903
+
3904
+ /**
3905
+ * RegularExpressionNode
3906
+ *
3907
+ * Type: PM_REGULAR_EXPRESSION_NODE
3908
+ * Flags:
3909
+ * PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE
3910
+ * PM_REGULAR_EXPRESSION_FLAGS_EXTENDED
3911
+ * PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE
3912
+ * PM_REGULAR_EXPRESSION_FLAGS_ONCE
3913
+ * PM_REGULAR_EXPRESSION_FLAGS_EUC_JP
3914
+ * PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT
3915
+ * PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J
3916
+ * PM_REGULAR_EXPRESSION_FLAGS_UTF_8
3917
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING
3918
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING
3919
+ * PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING
3920
+ *
3921
+ * @extends pm_node_t
3922
+ */
3923
+ typedef struct pm_regular_expression_node {
3924
+ /** The embedded base node. */
3925
+ pm_node_t base;
3926
+
3927
+ /** RegularExpressionNode#opening_loc */
3928
+ pm_location_t opening_loc;
3929
+
3930
+ /** RegularExpressionNode#content_loc */
3931
+ pm_location_t content_loc;
3932
+
3933
+ /** RegularExpressionNode#closing_loc */
3934
+ pm_location_t closing_loc;
3935
+
3936
+ /** RegularExpressionNode#unescaped */
3937
+ pm_string_t unescaped;
3938
+ } pm_regular_expression_node_t;
3939
+
3940
+ /**
3941
+ * RequiredKeywordParameterNode
3942
+ *
3943
+ * Type: PM_REQUIRED_KEYWORD_PARAMETER_NODE
3944
+ *
3945
+ * @extends pm_node_t
3946
+ */
3947
+ typedef struct pm_required_keyword_parameter_node {
3948
+ /** The embedded base node. */
3949
+ pm_node_t base;
3950
+
3951
+ /** RequiredKeywordParameterNode#name */
3952
+ pm_constant_id_t name;
3953
+
3954
+ /** RequiredKeywordParameterNode#name_loc */
3955
+ pm_location_t name_loc;
3956
+ } pm_required_keyword_parameter_node_t;
3957
+
3958
+ /**
3959
+ * RequiredParameterNode
3960
+ *
3961
+ * Type: PM_REQUIRED_PARAMETER_NODE
3962
+ *
3963
+ * @extends pm_node_t
3964
+ */
3965
+ typedef struct pm_required_parameter_node {
3966
+ /** The embedded base node. */
3967
+ pm_node_t base;
3968
+
3969
+ /** RequiredParameterNode#name */
3970
+ pm_constant_id_t name;
3971
+ } pm_required_parameter_node_t;
3972
+
3973
+ /**
3974
+ * RescueModifierNode
3975
+ *
3976
+ * Type: PM_RESCUE_MODIFIER_NODE
3977
+ *
3978
+ * @extends pm_node_t
3979
+ */
3980
+ typedef struct pm_rescue_modifier_node {
3981
+ /** The embedded base node. */
3982
+ pm_node_t base;
3983
+
3984
+ /** RescueModifierNode#expression */
3985
+ struct pm_node *expression;
3986
+
3987
+ /** RescueModifierNode#keyword_loc */
3988
+ pm_location_t keyword_loc;
3989
+
3990
+ /** RescueModifierNode#rescue_expression */
3991
+ struct pm_node *rescue_expression;
3992
+ } pm_rescue_modifier_node_t;
3993
+
3994
+ /**
3995
+ * RescueNode
3996
+ *
3997
+ * Type: PM_RESCUE_NODE
3998
+ *
3999
+ * @extends pm_node_t
4000
+ */
4001
+ typedef struct pm_rescue_node {
4002
+ /** The embedded base node. */
4003
+ pm_node_t base;
4004
+
4005
+ /** RescueNode#keyword_loc */
4006
+ pm_location_t keyword_loc;
4007
+
4008
+ /** RescueNode#exceptions */
4009
+ struct pm_node_list exceptions;
4010
+
4011
+ /** RescueNode#operator_loc */
4012
+ pm_location_t operator_loc;
4013
+
4014
+ /** RescueNode#reference */
4015
+ struct pm_node *reference;
4016
+
4017
+ /** RescueNode#statements */
4018
+ struct pm_statements_node *statements;
4019
+
4020
+ /** RescueNode#consequent */
4021
+ struct pm_rescue_node *consequent;
4022
+ } pm_rescue_node_t;
4023
+
4024
+ /**
4025
+ * RestParameterNode
4026
+ *
4027
+ * Type: PM_REST_PARAMETER_NODE
4028
+ *
4029
+ * @extends pm_node_t
4030
+ */
4031
+ typedef struct pm_rest_parameter_node {
4032
+ /** The embedded base node. */
4033
+ pm_node_t base;
4034
+
4035
+ /** RestParameterNode#name */
4036
+ pm_constant_id_t name;
4037
+
4038
+ /** RestParameterNode#name_loc */
4039
+ pm_location_t name_loc;
4040
+
4041
+ /** RestParameterNode#operator_loc */
4042
+ pm_location_t operator_loc;
4043
+ } pm_rest_parameter_node_t;
4044
+
4045
+ /**
4046
+ * RetryNode
4047
+ *
4048
+ * Type: PM_RETRY_NODE
4049
+ *
4050
+ * @extends pm_node_t
4051
+ */
4052
+ typedef struct pm_retry_node {
4053
+ /** The embedded base node. */
4054
+ pm_node_t base;
4055
+ } pm_retry_node_t;
4056
+
4057
+ /**
4058
+ * ReturnNode
4059
+ *
4060
+ * Type: PM_RETURN_NODE
4061
+ *
4062
+ * @extends pm_node_t
4063
+ */
4064
+ typedef struct pm_return_node {
4065
+ /** The embedded base node. */
4066
+ pm_node_t base;
4067
+
4068
+ /** ReturnNode#keyword_loc */
4069
+ pm_location_t keyword_loc;
4070
+
4071
+ /** ReturnNode#arguments */
4072
+ struct pm_arguments_node *arguments;
4073
+ } pm_return_node_t;
4074
+
4075
+ /**
4076
+ * SelfNode
4077
+ *
4078
+ * Type: PM_SELF_NODE
4079
+ *
4080
+ * @extends pm_node_t
4081
+ */
4082
+ typedef struct pm_self_node {
4083
+ /** The embedded base node. */
4084
+ pm_node_t base;
4085
+ } pm_self_node_t;
4086
+
4087
+ /**
4088
+ * SingletonClassNode
4089
+ *
4090
+ * Type: PM_SINGLETON_CLASS_NODE
4091
+ *
4092
+ * @extends pm_node_t
4093
+ */
4094
+ typedef struct pm_singleton_class_node {
4095
+ /** The embedded base node. */
4096
+ pm_node_t base;
4097
+
4098
+ /** SingletonClassNode#locals */
4099
+ pm_constant_id_list_t locals;
4100
+
4101
+ /** SingletonClassNode#class_keyword_loc */
4102
+ pm_location_t class_keyword_loc;
4103
+
4104
+ /** SingletonClassNode#operator_loc */
4105
+ pm_location_t operator_loc;
4106
+
4107
+ /** SingletonClassNode#expression */
4108
+ struct pm_node *expression;
4109
+
4110
+ /** SingletonClassNode#body */
4111
+ struct pm_node *body;
4112
+
4113
+ /** SingletonClassNode#end_keyword_loc */
4114
+ pm_location_t end_keyword_loc;
4115
+ } pm_singleton_class_node_t;
4116
+
4117
+ /**
4118
+ * SourceEncodingNode
4119
+ *
4120
+ * Type: PM_SOURCE_ENCODING_NODE
4121
+ *
4122
+ * @extends pm_node_t
4123
+ */
4124
+ typedef struct pm_source_encoding_node {
4125
+ /** The embedded base node. */
4126
+ pm_node_t base;
4127
+ } pm_source_encoding_node_t;
4128
+
4129
+ /**
4130
+ * SourceFileNode
4131
+ *
4132
+ * Type: PM_SOURCE_FILE_NODE
4133
+ *
4134
+ * @extends pm_node_t
4135
+ */
4136
+ typedef struct pm_source_file_node {
4137
+ /** The embedded base node. */
4138
+ pm_node_t base;
4139
+
4140
+ /** SourceFileNode#filepath */
4141
+ pm_string_t filepath;
4142
+ } pm_source_file_node_t;
4143
+
4144
+ /**
4145
+ * SourceLineNode
4146
+ *
4147
+ * Type: PM_SOURCE_LINE_NODE
4148
+ *
4149
+ * @extends pm_node_t
4150
+ */
4151
+ typedef struct pm_source_line_node {
4152
+ /** The embedded base node. */
4153
+ pm_node_t base;
4154
+ } pm_source_line_node_t;
4155
+
4156
+ /**
4157
+ * SplatNode
4158
+ *
4159
+ * Type: PM_SPLAT_NODE
4160
+ *
4161
+ * @extends pm_node_t
4162
+ */
4163
+ typedef struct pm_splat_node {
4164
+ /** The embedded base node. */
4165
+ pm_node_t base;
4166
+
4167
+ /** SplatNode#operator_loc */
4168
+ pm_location_t operator_loc;
4169
+
4170
+ /** SplatNode#expression */
4171
+ struct pm_node *expression;
4172
+ } pm_splat_node_t;
4173
+
4174
+ /**
4175
+ * StatementsNode
4176
+ *
4177
+ * Type: PM_STATEMENTS_NODE
4178
+ *
4179
+ * @extends pm_node_t
4180
+ */
4181
+ typedef struct pm_statements_node {
4182
+ /** The embedded base node. */
4183
+ pm_node_t base;
4184
+
4185
+ /** StatementsNode#body */
4186
+ struct pm_node_list body;
4187
+ } pm_statements_node_t;
4188
+
4189
+ /**
4190
+ * StringNode
4191
+ *
4192
+ * Type: PM_STRING_NODE
4193
+ * Flags:
4194
+ * PM_STRING_FLAGS_FORCED_UTF8_ENCODING
4195
+ * PM_STRING_FLAGS_FORCED_BINARY_ENCODING
4196
+ * PM_STRING_FLAGS_FROZEN
4197
+ *
4198
+ * @extends pm_node_t
4199
+ */
4200
+ typedef struct pm_string_node {
4201
+ /** The embedded base node. */
4202
+ pm_node_t base;
4203
+
4204
+ /** StringNode#opening_loc */
4205
+ pm_location_t opening_loc;
4206
+
4207
+ /** StringNode#content_loc */
4208
+ pm_location_t content_loc;
4209
+
4210
+ /** StringNode#closing_loc */
4211
+ pm_location_t closing_loc;
4212
+
4213
+ /** StringNode#unescaped */
4214
+ pm_string_t unescaped;
4215
+ } pm_string_node_t;
4216
+
4217
+ /**
4218
+ * SuperNode
4219
+ *
4220
+ * Type: PM_SUPER_NODE
4221
+ *
4222
+ * @extends pm_node_t
4223
+ */
4224
+ typedef struct pm_super_node {
4225
+ /** The embedded base node. */
4226
+ pm_node_t base;
4227
+
4228
+ /** SuperNode#keyword_loc */
4229
+ pm_location_t keyword_loc;
4230
+
4231
+ /** SuperNode#lparen_loc */
4232
+ pm_location_t lparen_loc;
4233
+
4234
+ /** SuperNode#arguments */
4235
+ struct pm_arguments_node *arguments;
4236
+
4237
+ /** SuperNode#rparen_loc */
4238
+ pm_location_t rparen_loc;
4239
+
4240
+ /** SuperNode#block */
4241
+ struct pm_node *block;
4242
+ } pm_super_node_t;
4243
+
4244
+ /**
4245
+ * SymbolNode
4246
+ *
4247
+ * Type: PM_SYMBOL_NODE
4248
+ * Flags:
4249
+ * PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING
4250
+ * PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING
4251
+ * PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING
4252
+ *
4253
+ * @extends pm_node_t
4254
+ */
4255
+ typedef struct pm_symbol_node {
4256
+ /** The embedded base node. */
4257
+ pm_node_t base;
4258
+
4259
+ /** SymbolNode#opening_loc */
4260
+ pm_location_t opening_loc;
4261
+
4262
+ /** SymbolNode#value_loc */
4263
+ pm_location_t value_loc;
4264
+
4265
+ /** SymbolNode#closing_loc */
4266
+ pm_location_t closing_loc;
4267
+
4268
+ /** SymbolNode#unescaped */
4269
+ pm_string_t unescaped;
4270
+ } pm_symbol_node_t;
4271
+
4272
+ /**
4273
+ * TrueNode
4274
+ *
4275
+ * Type: PM_TRUE_NODE
4276
+ *
4277
+ * @extends pm_node_t
4278
+ */
4279
+ typedef struct pm_true_node {
4280
+ /** The embedded base node. */
4281
+ pm_node_t base;
4282
+ } pm_true_node_t;
4283
+
4284
+ /**
4285
+ * UndefNode
4286
+ *
4287
+ * Type: PM_UNDEF_NODE
4288
+ *
4289
+ * @extends pm_node_t
4290
+ */
4291
+ typedef struct pm_undef_node {
4292
+ /** The embedded base node. */
4293
+ pm_node_t base;
4294
+
4295
+ /** UndefNode#names */
4296
+ struct pm_node_list names;
4297
+
4298
+ /** UndefNode#keyword_loc */
4299
+ pm_location_t keyword_loc;
4300
+ } pm_undef_node_t;
4301
+
4302
+ /**
4303
+ * UnlessNode
4304
+ *
4305
+ * Type: PM_UNLESS_NODE
4306
+ *
4307
+ * @extends pm_node_t
4308
+ */
4309
+ typedef struct pm_unless_node {
4310
+ /** The embedded base node. */
4311
+ pm_node_t base;
4312
+
4313
+ /** UnlessNode#keyword_loc */
4314
+ pm_location_t keyword_loc;
4315
+
4316
+ /** UnlessNode#predicate */
4317
+ struct pm_node *predicate;
4318
+
4319
+ /** UnlessNode#then_keyword_loc */
4320
+ pm_location_t then_keyword_loc;
4321
+
4322
+ /** UnlessNode#statements */
4323
+ struct pm_statements_node *statements;
4324
+
4325
+ /** UnlessNode#consequent */
4326
+ struct pm_else_node *consequent;
4327
+
4328
+ /** UnlessNode#end_keyword_loc */
4329
+ pm_location_t end_keyword_loc;
4330
+ } pm_unless_node_t;
4331
+
4332
+ /**
4333
+ * UntilNode
4334
+ *
4335
+ * Type: PM_UNTIL_NODE
4336
+ * Flags:
4337
+ * PM_LOOP_FLAGS_BEGIN_MODIFIER
4338
+ *
4339
+ * @extends pm_node_t
4340
+ */
4341
+ typedef struct pm_until_node {
4342
+ /** The embedded base node. */
4343
+ pm_node_t base;
4344
+
4345
+ /** UntilNode#keyword_loc */
4346
+ pm_location_t keyword_loc;
4347
+
4348
+ /** UntilNode#closing_loc */
4349
+ pm_location_t closing_loc;
4350
+
4351
+ /** UntilNode#predicate */
4352
+ struct pm_node *predicate;
4353
+
4354
+ /** UntilNode#statements */
4355
+ struct pm_statements_node *statements;
4356
+ } pm_until_node_t;
4357
+
4358
+ /**
4359
+ * WhenNode
4360
+ *
4361
+ * Type: PM_WHEN_NODE
4362
+ *
4363
+ * @extends pm_node_t
4364
+ */
4365
+ typedef struct pm_when_node {
4366
+ /** The embedded base node. */
4367
+ pm_node_t base;
4368
+
4369
+ /** WhenNode#keyword_loc */
4370
+ pm_location_t keyword_loc;
4371
+
4372
+ /** WhenNode#conditions */
4373
+ struct pm_node_list conditions;
4374
+
4375
+ /** WhenNode#statements */
4376
+ struct pm_statements_node *statements;
4377
+ } pm_when_node_t;
4378
+
4379
+ /**
4380
+ * WhileNode
4381
+ *
4382
+ * Type: PM_WHILE_NODE
4383
+ * Flags:
4384
+ * PM_LOOP_FLAGS_BEGIN_MODIFIER
4385
+ *
4386
+ * @extends pm_node_t
4387
+ */
4388
+ typedef struct pm_while_node {
4389
+ /** The embedded base node. */
4390
+ pm_node_t base;
4391
+
4392
+ /** WhileNode#keyword_loc */
4393
+ pm_location_t keyword_loc;
4394
+
4395
+ /** WhileNode#closing_loc */
4396
+ pm_location_t closing_loc;
4397
+
4398
+ /** WhileNode#predicate */
4399
+ struct pm_node *predicate;
4400
+
4401
+ /** WhileNode#statements */
4402
+ struct pm_statements_node *statements;
4403
+ } pm_while_node_t;
4404
+
4405
+ /**
4406
+ * XStringNode
4407
+ *
4408
+ * Type: PM_X_STRING_NODE
4409
+ * Flags:
4410
+ * PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING
4411
+ * PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING
4412
+ *
4413
+ * @extends pm_node_t
4414
+ */
4415
+ typedef struct pm_x_string_node {
4416
+ /** The embedded base node. */
4417
+ pm_node_t base;
4418
+
4419
+ /** XStringNode#opening_loc */
4420
+ pm_location_t opening_loc;
4421
+
4422
+ /** XStringNode#content_loc */
4423
+ pm_location_t content_loc;
4424
+
4425
+ /** XStringNode#closing_loc */
4426
+ pm_location_t closing_loc;
4427
+
4428
+ /** XStringNode#unescaped */
4429
+ pm_string_t unescaped;
4430
+ } pm_x_string_node_t;
4431
+
4432
+ /**
4433
+ * YieldNode
4434
+ *
4435
+ * Type: PM_YIELD_NODE
4436
+ *
4437
+ * @extends pm_node_t
4438
+ */
4439
+ typedef struct pm_yield_node {
4440
+ /** The embedded base node. */
4441
+ pm_node_t base;
4442
+
4443
+ /** YieldNode#keyword_loc */
4444
+ pm_location_t keyword_loc;
4445
+
4446
+ /** YieldNode#lparen_loc */
4447
+ pm_location_t lparen_loc;
4448
+
4449
+ /** YieldNode#arguments */
4450
+ struct pm_arguments_node *arguments;
4451
+
4452
+ /** YieldNode#rparen_loc */
4453
+ pm_location_t rparen_loc;
4454
+ } pm_yield_node_t;
4455
+
4456
+ /**
4457
+ * Flags for arguments nodes.
4458
+ */
4459
+ typedef enum pm_arguments_node_flags {
4460
+ /** if arguments contain keyword splat */
4461
+ PM_ARGUMENTS_NODE_FLAGS_CONTAINS_KEYWORD_SPLAT = 1,
4462
+ } pm_arguments_node_flags_t;
4463
+
4464
+ /**
4465
+ * Flags for array nodes.
4466
+ */
4467
+ typedef enum pm_array_node_flags {
4468
+ /** if array contains splat nodes */
4469
+ PM_ARRAY_NODE_FLAGS_CONTAINS_SPLAT = 1,
4470
+ } pm_array_node_flags_t;
4471
+
4472
+ /**
4473
+ * Flags for call nodes.
4474
+ */
4475
+ typedef enum pm_call_node_flags {
4476
+ /** &. operator */
4477
+ PM_CALL_NODE_FLAGS_SAFE_NAVIGATION = 1,
4478
+
4479
+ /** a call that could have been a local variable */
4480
+ PM_CALL_NODE_FLAGS_VARIABLE_CALL = 2,
4481
+
4482
+ /** a call that is an attribute write, so the value being written should be returned */
4483
+ PM_CALL_NODE_FLAGS_ATTRIBUTE_WRITE = 4,
4484
+ } pm_call_node_flags_t;
4485
+
4486
+ /**
4487
+ * Flags for nodes that have unescaped content.
4488
+ */
4489
+ typedef enum pm_encoding_flags {
4490
+ /** internal bytes forced the encoding to UTF-8 */
4491
+ PM_ENCODING_FLAGS_FORCED_UTF8_ENCODING = 1,
4492
+
4493
+ /** internal bytes forced the encoding to binary */
4494
+ PM_ENCODING_FLAGS_FORCED_BINARY_ENCODING = 2,
4495
+ } pm_encoding_flags_t;
4496
+
4497
+ /**
4498
+ * Flags for integer nodes that correspond to the base of the integer.
4499
+ */
4500
+ typedef enum pm_integer_base_flags {
4501
+ /** 0b prefix */
4502
+ PM_INTEGER_BASE_FLAGS_BINARY = 1,
4503
+
4504
+ /** 0d or no prefix */
4505
+ PM_INTEGER_BASE_FLAGS_DECIMAL = 2,
4506
+
4507
+ /** 0o or 0 prefix */
4508
+ PM_INTEGER_BASE_FLAGS_OCTAL = 4,
4509
+
4510
+ /** 0x prefix */
4511
+ PM_INTEGER_BASE_FLAGS_HEXADECIMAL = 8,
4512
+ } pm_integer_base_flags_t;
4513
+
4514
+ /**
4515
+ * Flags for keyword hash nodes.
4516
+ */
4517
+ typedef enum pm_keyword_hash_node_flags {
4518
+ /** a keyword hash which only has `AssocNode` elements all with static literal keys, which means the elements can be treated as keyword arguments */
4519
+ PM_KEYWORD_HASH_NODE_FLAGS_STATIC_KEYS = 1,
4520
+ } pm_keyword_hash_node_flags_t;
4521
+
4522
+ /**
4523
+ * Flags for while and until loop nodes.
4524
+ */
4525
+ typedef enum pm_loop_flags {
4526
+ /** a loop after a begin statement, so the body is executed first before the condition */
4527
+ PM_LOOP_FLAGS_BEGIN_MODIFIER = 1,
4528
+ } pm_loop_flags_t;
4529
+
4530
+ /**
4531
+ * Flags for range and flip-flop nodes.
4532
+ */
4533
+ typedef enum pm_range_flags {
4534
+ /** ... operator */
4535
+ PM_RANGE_FLAGS_EXCLUDE_END = 1,
4536
+ } pm_range_flags_t;
4537
+
4538
+ /**
4539
+ * Flags for regular expression and match last line nodes.
4540
+ */
4541
+ typedef enum pm_regular_expression_flags {
4542
+ /** i - ignores the case of characters when matching */
4543
+ PM_REGULAR_EXPRESSION_FLAGS_IGNORE_CASE = 1,
4544
+
4545
+ /** x - ignores whitespace and allows comments in regular expressions */
4546
+ PM_REGULAR_EXPRESSION_FLAGS_EXTENDED = 2,
4547
+
4548
+ /** m - allows $ to match the end of lines within strings */
4549
+ PM_REGULAR_EXPRESSION_FLAGS_MULTI_LINE = 4,
4550
+
4551
+ /** o - only interpolates values into the regular expression once */
4552
+ PM_REGULAR_EXPRESSION_FLAGS_ONCE = 8,
4553
+
4554
+ /** e - forces the EUC-JP encoding */
4555
+ PM_REGULAR_EXPRESSION_FLAGS_EUC_JP = 16,
4556
+
4557
+ /** n - forces the ASCII-8BIT encoding */
4558
+ PM_REGULAR_EXPRESSION_FLAGS_ASCII_8BIT = 32,
4559
+
4560
+ /** s - forces the Windows-31J encoding */
4561
+ PM_REGULAR_EXPRESSION_FLAGS_WINDOWS_31J = 64,
4562
+
4563
+ /** u - forces the UTF-8 encoding */
4564
+ PM_REGULAR_EXPRESSION_FLAGS_UTF_8 = 128,
4565
+
4566
+ /** internal bytes forced the encoding to UTF-8 */
4567
+ PM_REGULAR_EXPRESSION_FLAGS_FORCED_UTF8_ENCODING = 256,
4568
+
4569
+ /** internal bytes forced the encoding to binary */
4570
+ PM_REGULAR_EXPRESSION_FLAGS_FORCED_BINARY_ENCODING = 512,
4571
+
4572
+ /** internal bytes forced the encoding to US-ASCII */
4573
+ PM_REGULAR_EXPRESSION_FLAGS_FORCED_US_ASCII_ENCODING = 1024,
4574
+ } pm_regular_expression_flags_t;
4575
+
4576
+ /**
4577
+ * Flags for string nodes.
4578
+ */
4579
+ typedef enum pm_string_flags {
4580
+ /** internal bytes forced the encoding to UTF-8 */
4581
+ PM_STRING_FLAGS_FORCED_UTF8_ENCODING = 1,
4582
+
4583
+ /** internal bytes forced the encoding to binary */
4584
+ PM_STRING_FLAGS_FORCED_BINARY_ENCODING = 2,
4585
+
4586
+ /** frozen by virtue of a `frozen_string_literal` comment */
4587
+ PM_STRING_FLAGS_FROZEN = 4,
4588
+ } pm_string_flags_t;
4589
+
4590
+ /**
4591
+ * Flags for symbol nodes.
4592
+ */
4593
+ typedef enum pm_symbol_flags {
4594
+ /** internal bytes forced the encoding to UTF-8 */
4595
+ PM_SYMBOL_FLAGS_FORCED_UTF8_ENCODING = 1,
4596
+
4597
+ /** internal bytes forced the encoding to binary */
4598
+ PM_SYMBOL_FLAGS_FORCED_BINARY_ENCODING = 2,
4599
+
4600
+ /** internal bytes forced the encoding to US-ASCII */
4601
+ PM_SYMBOL_FLAGS_FORCED_US_ASCII_ENCODING = 4,
4602
+ } pm_symbol_flags_t;
4603
+
4604
+ /**
4605
+ * When we're serializing to Java, we want to skip serializing the location
4606
+ * fields as they won't be used by JRuby or TruffleRuby. This boolean allows us
4607
+ * to specify that through the environment. It will never be true except for in
4608
+ * those build systems.
4609
+ */
4610
+ #define PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS false
4611
+
4612
+ #endif