opal-wedge 0.9.0.dev

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 (830) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.gitmodules +7 -0
  4. data/.inch.yml +19 -0
  5. data/.jshintrc +48 -0
  6. data/.rspec +3 -0
  7. data/.spectator +2 -0
  8. data/.spectator-mspec +3 -0
  9. data/.travis.yml +60 -0
  10. data/.yardopts +6 -0
  11. data/CHANGELOG.md +571 -0
  12. data/CODE_OF_CONDUCT.md +15 -0
  13. data/CONTRIBUTING.md +192 -0
  14. data/Gemfile +26 -0
  15. data/Guardfile +77 -0
  16. data/LICENSE +19 -0
  17. data/README.md +167 -0
  18. data/Rakefile +15 -0
  19. data/benchmark/benchmarks +103 -0
  20. data/benchmark/bm_array_intersection_numbers.rb +7 -0
  21. data/benchmark/bm_array_intersection_objects.rb +7 -0
  22. data/benchmark/bm_array_intersection_strings.rb +7 -0
  23. data/benchmark/bm_array_minus_numbers.rb +7 -0
  24. data/benchmark/bm_array_minus_objects.rb +7 -0
  25. data/benchmark/bm_array_minus_strings.rb +7 -0
  26. data/benchmark/bm_array_union_numbers.rb +7 -0
  27. data/benchmark/bm_array_union_objects.rb +7 -0
  28. data/benchmark/bm_array_union_strings.rb +7 -0
  29. data/benchmark/bm_array_uniq_bang_numbers.rb +5 -0
  30. data/benchmark/bm_array_uniq_bang_objects.rb +5 -0
  31. data/benchmark/bm_array_uniq_bang_strings.rb +5 -0
  32. data/benchmark/bm_array_uniq_numbers.rb +5 -0
  33. data/benchmark/bm_array_uniq_objects.rb +5 -0
  34. data/benchmark/bm_array_uniq_strings.rb +5 -0
  35. data/benchmark/bm_dispatch_bind_table.rb +57 -0
  36. data/benchmark/bm_dispatch_code_gen.rb +65 -0
  37. data/benchmark/bm_dispatch_code_gen_if.rb +64 -0
  38. data/benchmark/bm_dispatch_hardcoded.rb +44 -0
  39. data/benchmark/bm_dispatch_send.rb +38 -0
  40. data/benchmark/bm_dispatch_send_table.rb +57 -0
  41. data/benchmark/bm_hash_assoc_object.rb +11 -0
  42. data/benchmark/bm_hash_assoc_string.rb +9 -0
  43. data/benchmark/bm_hash_clone_object.rb +9 -0
  44. data/benchmark/bm_hash_clone_string.rb +9 -0
  45. data/benchmark/bm_hash_delete_object.rb +11 -0
  46. data/benchmark/bm_hash_delete_string.rb +9 -0
  47. data/benchmark/bm_hash_each_key_object.rb +9 -0
  48. data/benchmark/bm_hash_each_key_string.rb +9 -0
  49. data/benchmark/bm_hash_each_object.rb +9 -0
  50. data/benchmark/bm_hash_each_string.rb +9 -0
  51. data/benchmark/bm_hash_each_value_object.rb +9 -0
  52. data/benchmark/bm_hash_each_value_string.rb +9 -0
  53. data/benchmark/bm_hash_element_reference_object.rb +11 -0
  54. data/benchmark/bm_hash_element_reference_string.rb +9 -0
  55. data/benchmark/bm_hash_element_set_object.rb +5 -0
  56. data/benchmark/bm_hash_element_set_string.rb +5 -0
  57. data/benchmark/bm_hash_equal_value_object.rb +14 -0
  58. data/benchmark/bm_hash_equal_value_string.rb +11 -0
  59. data/benchmark/bm_hash_fetch_object.rb +11 -0
  60. data/benchmark/bm_hash_fetch_string.rb +9 -0
  61. data/benchmark/bm_hash_flatten_object.rb +9 -0
  62. data/benchmark/bm_hash_flatten_string.rb +9 -0
  63. data/benchmark/bm_hash_has_key_object.rb +11 -0
  64. data/benchmark/bm_hash_has_key_string.rb +9 -0
  65. data/benchmark/bm_hash_has_value_object.rb +9 -0
  66. data/benchmark/bm_hash_has_value_string.rb +9 -0
  67. data/benchmark/bm_hash_hash_object.rb +9 -0
  68. data/benchmark/bm_hash_hash_string.rb +9 -0
  69. data/benchmark/bm_hash_inspect_object.rb +9 -0
  70. data/benchmark/bm_hash_inspect_string.rb +9 -0
  71. data/benchmark/bm_hash_invert_object.rb +9 -0
  72. data/benchmark/bm_hash_invert_string.rb +9 -0
  73. data/benchmark/bm_hash_keep_if_object.rb +9 -0
  74. data/benchmark/bm_hash_keep_if_string.rb +9 -0
  75. data/benchmark/bm_hash_key_object.rb +9 -0
  76. data/benchmark/bm_hash_key_string.rb +9 -0
  77. data/benchmark/bm_hash_keys_object.rb +9 -0
  78. data/benchmark/bm_hash_keys_string.rb +9 -0
  79. data/benchmark/bm_hash_literal_mixed_large.rb +3 -0
  80. data/benchmark/bm_hash_literal_mixed_small.rb +3 -0
  81. data/benchmark/bm_hash_literal_object_large.rb +4 -0
  82. data/benchmark/bm_hash_literal_object_small.rb +3 -0
  83. data/benchmark/bm_hash_literal_string_large.rb +4 -0
  84. data/benchmark/bm_hash_literal_string_small.rb +3 -0
  85. data/benchmark/bm_hash_merge_object.rb +22 -0
  86. data/benchmark/bm_hash_merge_string.rb +18 -0
  87. data/benchmark/bm_hash_rassoc_object.rb +9 -0
  88. data/benchmark/bm_hash_rassoc_string.rb +9 -0
  89. data/benchmark/bm_hash_rehash_object.rb +9 -0
  90. data/benchmark/bm_hash_rehash_string.rb +9 -0
  91. data/benchmark/bm_hash_reject_bang_object.rb +9 -0
  92. data/benchmark/bm_hash_reject_bang_string.rb +9 -0
  93. data/benchmark/bm_hash_reject_object.rb +9 -0
  94. data/benchmark/bm_hash_reject_string.rb +9 -0
  95. data/benchmark/bm_hash_replace_object.rb +18 -0
  96. data/benchmark/bm_hash_replace_string.rb +14 -0
  97. data/benchmark/bm_hash_select_bang_object.rb +9 -0
  98. data/benchmark/bm_hash_select_bang_string.rb +9 -0
  99. data/benchmark/bm_hash_select_object.rb +9 -0
  100. data/benchmark/bm_hash_select_string.rb +9 -0
  101. data/benchmark/bm_hash_shift_object.rb +10 -0
  102. data/benchmark/bm_hash_shift_string.rb +10 -0
  103. data/benchmark/bm_hash_to_a_object.rb +9 -0
  104. data/benchmark/bm_hash_to_a_string.rb +9 -0
  105. data/benchmark/bm_hash_to_h_object.rb +10 -0
  106. data/benchmark/bm_hash_to_h_string.rb +10 -0
  107. data/benchmark/bm_hash_values_object.rb +9 -0
  108. data/benchmark/bm_hash_values_string.rb +9 -0
  109. data/benchmark/run.rb +37 -0
  110. data/bin/opal +27 -0
  111. data/bin/opal-build +77 -0
  112. data/bin/opal-mspec +10 -0
  113. data/bin/opal-repl +72 -0
  114. data/config.ru +14 -0
  115. data/docs/compiler_directives.md +127 -0
  116. data/examples/rack/.gitignore +1 -0
  117. data/examples/rack/Gemfile +3 -0
  118. data/examples/rack/app/application.rb +13 -0
  119. data/examples/rack/app/user.rb +22 -0
  120. data/examples/rack/config.ru +20 -0
  121. data/examples/rack/index.html.erb +10 -0
  122. data/examples/sinatra/Gemfile +5 -0
  123. data/examples/sinatra/app/application.rb +7 -0
  124. data/examples/sinatra/config.ru +38 -0
  125. data/lib/mspec/opal/main.rb.erb +9 -0
  126. data/lib/mspec/opal/new.html.erb +1 -0
  127. data/lib/mspec/opal/rake_task.rb +248 -0
  128. data/lib/mspec/opal/runner.rb +281 -0
  129. data/lib/mspec/opal/special_calls.rb +44 -0
  130. data/lib/mspec/opal/sprockets.js +57 -0
  131. data/lib/opal-wedge.rb +4 -0
  132. data/lib/opal.rb +11 -0
  133. data/lib/opal/builder.rb +161 -0
  134. data/lib/opal/builder_processors.rb +149 -0
  135. data/lib/opal/cli.rb +162 -0
  136. data/lib/opal/cli_options.rb +158 -0
  137. data/lib/opal/cli_runners.rb +11 -0
  138. data/lib/opal/cli_runners/apple_script.rb +65 -0
  139. data/lib/opal/cli_runners/nodejs.rb +63 -0
  140. data/lib/opal/cli_runners/phantom.js +44 -0
  141. data/lib/opal/cli_runners/phantomjs.rb +28 -0
  142. data/lib/opal/cli_runners/server.rb +56 -0
  143. data/lib/opal/compiler.rb +381 -0
  144. data/lib/opal/config.rb +48 -0
  145. data/lib/opal/erb.rb +84 -0
  146. data/lib/opal/fragment.rb +53 -0
  147. data/lib/opal/hike_path_finder.rb +18 -0
  148. data/lib/opal/nodes.rb +26 -0
  149. data/lib/opal/nodes/arglist.rb +56 -0
  150. data/lib/opal/nodes/array.rb +54 -0
  151. data/lib/opal/nodes/base.rb +151 -0
  152. data/lib/opal/nodes/call.rb +290 -0
  153. data/lib/opal/nodes/call_special.rb +252 -0
  154. data/lib/opal/nodes/case.rb +96 -0
  155. data/lib/opal/nodes/class.rb +42 -0
  156. data/lib/opal/nodes/constants.rb +78 -0
  157. data/lib/opal/nodes/def.rb +281 -0
  158. data/lib/opal/nodes/defined.rb +113 -0
  159. data/lib/opal/nodes/definitions.rb +168 -0
  160. data/lib/opal/nodes/for.rb +48 -0
  161. data/lib/opal/nodes/hash.rb +67 -0
  162. data/lib/opal/nodes/helpers.rb +116 -0
  163. data/lib/opal/nodes/if.rb +81 -0
  164. data/lib/opal/nodes/iter.rb +136 -0
  165. data/lib/opal/nodes/literal.rb +247 -0
  166. data/lib/opal/nodes/logic.rb +217 -0
  167. data/lib/opal/nodes/masgn.rb +62 -0
  168. data/lib/opal/nodes/module.rb +45 -0
  169. data/lib/opal/nodes/rescue.rb +143 -0
  170. data/lib/opal/nodes/runtime_helpers.rb +45 -0
  171. data/lib/opal/nodes/scope.rb +281 -0
  172. data/lib/opal/nodes/singleton_class.rb +26 -0
  173. data/lib/opal/nodes/super.rb +97 -0
  174. data/lib/opal/nodes/top.rb +103 -0
  175. data/lib/opal/nodes/variables.rb +191 -0
  176. data/lib/opal/nodes/while.rb +65 -0
  177. data/lib/opal/nodes/yield.rb +95 -0
  178. data/lib/opal/parser.rb +742 -0
  179. data/lib/opal/parser/grammar.rb +5723 -0
  180. data/lib/opal/parser/grammar.y +1787 -0
  181. data/lib/opal/parser/keywords.rb +66 -0
  182. data/lib/opal/parser/lexer.rb +1260 -0
  183. data/lib/opal/parser/parser_scope.rb +28 -0
  184. data/lib/opal/parser/sexp.rb +81 -0
  185. data/lib/opal/path_reader.rb +35 -0
  186. data/lib/opal/paths.rb +55 -0
  187. data/lib/opal/regexp_anchors.rb +5 -0
  188. data/lib/opal/source_map.rb +70 -0
  189. data/lib/opal/sprockets.rb +3 -0
  190. data/lib/opal/sprockets/cache_key_fix.rb +17 -0
  191. data/lib/opal/sprockets/environment.rb +31 -0
  192. data/lib/opal/sprockets/erb.rb +23 -0
  193. data/lib/opal/sprockets/path_reader.rb +36 -0
  194. data/lib/opal/sprockets/processor.rb +167 -0
  195. data/lib/opal/sprockets/server.rb +160 -0
  196. data/lib/opal/sprockets/source_map_header_patch.rb +41 -0
  197. data/lib/opal/sprockets/source_map_server.rb +115 -0
  198. data/lib/opal/util.rb +69 -0
  199. data/lib/opal/version.rb +5 -0
  200. data/lib/tilt/opal.rb +54 -0
  201. data/opal.gemspec +37 -0
  202. data/opal/README.md +6 -0
  203. data/opal/corelib/array.rb +2073 -0
  204. data/opal/corelib/array/inheritance.rb +127 -0
  205. data/opal/corelib/basic_object.rb +82 -0
  206. data/opal/corelib/boolean.rb +47 -0
  207. data/opal/corelib/class.rb +55 -0
  208. data/opal/corelib/comparable.rb +57 -0
  209. data/opal/corelib/complex.rb +3 -0
  210. data/opal/corelib/dir.rb +20 -0
  211. data/opal/corelib/enumerable.rb +1138 -0
  212. data/opal/corelib/enumerator.rb +426 -0
  213. data/opal/corelib/error.rb +77 -0
  214. data/opal/corelib/file.rb +59 -0
  215. data/opal/corelib/hash.rb +951 -0
  216. data/opal/corelib/helpers.rb +102 -0
  217. data/opal/corelib/io.rb +73 -0
  218. data/opal/corelib/kernel.rb +1124 -0
  219. data/opal/corelib/main.rb +7 -0
  220. data/opal/corelib/match_data.rb +128 -0
  221. data/opal/corelib/method.rb +62 -0
  222. data/opal/corelib/module.rb +553 -0
  223. data/opal/corelib/nil_class.rb +57 -0
  224. data/opal/corelib/numeric.rb +564 -0
  225. data/opal/corelib/proc.rb +105 -0
  226. data/opal/corelib/process.rb +27 -0
  227. data/opal/corelib/range.rb +116 -0
  228. data/opal/corelib/rational.rb +3 -0
  229. data/opal/corelib/regexp.rb +203 -0
  230. data/opal/corelib/runtime.js +1637 -0
  231. data/opal/corelib/string.rb +1762 -0
  232. data/opal/corelib/string/inheritance.rb +117 -0
  233. data/opal/corelib/struct.rb +159 -0
  234. data/opal/corelib/time.rb +746 -0
  235. data/opal/corelib/variables.rb +28 -0
  236. data/opal/opal.rb +33 -0
  237. data/spec/README.md +8 -0
  238. data/spec/filters/bugs/array.rb +77 -0
  239. data/spec/filters/bugs/basicobject.rb +33 -0
  240. data/spec/filters/bugs/class.rb +15 -0
  241. data/spec/filters/bugs/comparable.rb +4 -0
  242. data/spec/filters/bugs/date.rb +173 -0
  243. data/spec/filters/bugs/enumerable.rb +62 -0
  244. data/spec/filters/bugs/enumerator.rb +45 -0
  245. data/spec/filters/bugs/exception.rb +84 -0
  246. data/spec/filters/bugs/fixnum.rb +35 -0
  247. data/spec/filters/bugs/float.rb +100 -0
  248. data/spec/filters/bugs/hash.rb +17 -0
  249. data/spec/filters/bugs/integer.rb +63 -0
  250. data/spec/filters/bugs/kernel.rb +395 -0
  251. data/spec/filters/bugs/language.rb +246 -0
  252. data/spec/filters/bugs/math.rb +89 -0
  253. data/spec/filters/bugs/method.rb +5 -0
  254. data/spec/filters/bugs/module.rb +372 -0
  255. data/spec/filters/bugs/nil.rb +7 -0
  256. data/spec/filters/bugs/numeric.rb +123 -0
  257. data/spec/filters/bugs/proc.rb +65 -0
  258. data/spec/filters/bugs/range.rb +148 -0
  259. data/spec/filters/bugs/regexp.rb +252 -0
  260. data/spec/filters/bugs/set.rb +51 -0
  261. data/spec/filters/bugs/singleton.rb +6 -0
  262. data/spec/filters/bugs/string.rb +99 -0
  263. data/spec/filters/bugs/strscan.rb +106 -0
  264. data/spec/filters/bugs/struct.rb +22 -0
  265. data/spec/filters/bugs/time.rb +28 -0
  266. data/spec/filters/bugs/unboundmethod.rb +22 -0
  267. data/spec/filters/unsupported/array.rb +176 -0
  268. data/spec/filters/unsupported/basicobject.rb +12 -0
  269. data/spec/filters/unsupported/class.rb +4 -0
  270. data/spec/filters/unsupported/delegator.rb +5 -0
  271. data/spec/filters/unsupported/enumerable.rb +8 -0
  272. data/spec/filters/unsupported/enumerator.rb +13 -0
  273. data/spec/filters/unsupported/fixnum.rb +15 -0
  274. data/spec/filters/unsupported/float.rb +6 -0
  275. data/spec/filters/unsupported/hash.rb +55 -0
  276. data/spec/filters/unsupported/integer.rb +3 -0
  277. data/spec/filters/unsupported/kernel.rb +22 -0
  278. data/spec/filters/unsupported/language.rb +31 -0
  279. data/spec/filters/unsupported/matchdata.rb +33 -0
  280. data/spec/filters/unsupported/math.rb +3 -0
  281. data/spec/filters/unsupported/module.rb +36 -0
  282. data/spec/filters/unsupported/pathname.rb +3 -0
  283. data/spec/filters/unsupported/regexp.rb +94 -0
  284. data/spec/filters/unsupported/set.rb +4 -0
  285. data/spec/filters/unsupported/singleton.rb +6 -0
  286. data/spec/filters/unsupported/string.rb +538 -0
  287. data/spec/filters/unsupported/struct.rb +3 -0
  288. data/spec/filters/unsupported/time.rb +208 -0
  289. data/spec/lib/builder_processors_spec.rb +27 -0
  290. data/spec/lib/builder_spec.rb +72 -0
  291. data/spec/lib/cli_spec.rb +150 -0
  292. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +87 -0
  293. data/spec/lib/compiler_spec.rb +131 -0
  294. data/spec/lib/dependency_resolver_spec.rb +40 -0
  295. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +4 -0
  296. data/spec/lib/fixtures/file_with_directives.js +2 -0
  297. data/spec/lib/fixtures/jst_file.js.jst +1 -0
  298. data/spec/lib/fixtures/no_requires.rb +1 -0
  299. data/spec/lib/fixtures/opal_file.rb +2 -0
  300. data/spec/lib/fixtures/require_tree_test.rb +3 -0
  301. data/spec/lib/fixtures/required_file.js +1 -0
  302. data/spec/lib/fixtures/required_tree_test/required_file1.rb +1 -0
  303. data/spec/lib/fixtures/required_tree_test/required_file2.rb +1 -0
  304. data/spec/lib/fixtures/requires.rb +7 -0
  305. data/spec/lib/fixtures/source_map.rb +1 -0
  306. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +1 -0
  307. data/spec/lib/fixtures/sprockets_file.js.rb +3 -0
  308. data/spec/lib/fixtures/sprockets_require_tree_test.rb +3 -0
  309. data/spec/lib/hike_path_finder_spec.rb +23 -0
  310. data/spec/lib/lexer_spec.rb +110 -0
  311. data/spec/lib/parser/alias_spec.rb +26 -0
  312. data/spec/lib/parser/and_spec.rb +13 -0
  313. data/spec/lib/parser/attrasgn_spec.rb +28 -0
  314. data/spec/lib/parser/begin_spec.rb +42 -0
  315. data/spec/lib/parser/block_spec.rb +12 -0
  316. data/spec/lib/parser/break_spec.rb +17 -0
  317. data/spec/lib/parser/call_spec.rb +165 -0
  318. data/spec/lib/parser/class_spec.rb +35 -0
  319. data/spec/lib/parser/comments_spec.rb +11 -0
  320. data/spec/lib/parser/def_spec.rb +80 -0
  321. data/spec/lib/parser/if_spec.rb +26 -0
  322. data/spec/lib/parser/iter_spec.rb +59 -0
  323. data/spec/lib/parser/lambda_spec.rb +64 -0
  324. data/spec/lib/parser/literal_spec.rb +118 -0
  325. data/spec/lib/parser/masgn_spec.rb +37 -0
  326. data/spec/lib/parser/module_spec.rb +27 -0
  327. data/spec/lib/parser/not_spec.rb +21 -0
  328. data/spec/lib/parser/op_asgn1_spec.rb +23 -0
  329. data/spec/lib/parser/op_asgn2_spec.rb +23 -0
  330. data/spec/lib/parser/or_spec.rb +13 -0
  331. data/spec/lib/parser/return_spec.rb +17 -0
  332. data/spec/lib/parser/sclass_spec.rb +21 -0
  333. data/spec/lib/parser/string_spec.rb +276 -0
  334. data/spec/lib/parser/super_spec.rb +20 -0
  335. data/spec/lib/parser/unary_spec.rb +48 -0
  336. data/spec/lib/parser/undef_spec.rb +15 -0
  337. data/spec/lib/parser/unless_spec.rb +13 -0
  338. data/spec/lib/parser/variables_spec.rb +92 -0
  339. data/spec/lib/parser/while_spec.rb +15 -0
  340. data/spec/lib/parser/yield_spec.rb +20 -0
  341. data/spec/lib/path_reader_spec.rb +36 -0
  342. data/spec/lib/shared/path_finder_shared.rb +19 -0
  343. data/spec/lib/shared/path_reader_shared.rb +31 -0
  344. data/spec/lib/spec_helper.rb +9 -0
  345. data/spec/lib/sprockets/erb_spec.rb +38 -0
  346. data/spec/lib/sprockets/path_reader_spec.rb +41 -0
  347. data/spec/lib/sprockets/processor_spec.rb +67 -0
  348. data/spec/lib/sprockets/server_spec.rb +102 -0
  349. data/spec/lib/tilt/opal_spec.rb +37 -0
  350. data/spec/opal/compiler/irb_spec.rb +44 -0
  351. data/spec/opal/core/array/intersection_spec.rb +38 -0
  352. data/spec/opal/core/array/minus_spec.rb +38 -0
  353. data/spec/opal/core/array/select_spec.rb +14 -0
  354. data/spec/opal/core/array/set_range_to_array_spec.rb +7 -0
  355. data/spec/opal/core/array/union_spec.rb +38 -0
  356. data/spec/opal/core/array/uniq_spec.rb +49 -0
  357. data/spec/opal/core/date_spec.rb +177 -0
  358. data/spec/opal/core/enumerable/all_break_spec.rb +5 -0
  359. data/spec/opal/core/enumerable/any_break_spec.rb +5 -0
  360. data/spec/opal/core/enumerable/collect_break_spec.rb +13 -0
  361. data/spec/opal/core/enumerable/count_break_spec.rb +5 -0
  362. data/spec/opal/core/enumerable/detect_break_spec.rb +5 -0
  363. data/spec/opal/core/enumerable/drop_while_break_spec.rb +5 -0
  364. data/spec/opal/core/enumerable/each_slice_break.rb +6 -0
  365. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +5 -0
  366. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +5 -0
  367. data/spec/opal/core/enumerable/find_all_break_spec.rb +5 -0
  368. data/spec/opal/core/enumerable/find_index_break_spec.rb +5 -0
  369. data/spec/opal/core/enumerable/grep_break_spec.rb +5 -0
  370. data/spec/opal/core/enumerable/max_break_spec.rb +5 -0
  371. data/spec/opal/core/enumerable/max_by_break_spec.rb +5 -0
  372. data/spec/opal/core/enumerable/min_break_spec.rb +5 -0
  373. data/spec/opal/core/enumerable/min_by_break_spec.rb +5 -0
  374. data/spec/opal/core/enumerable/none_break_spec.rb +5 -0
  375. data/spec/opal/core/enumerable/one_break_spec.rb +5 -0
  376. data/spec/opal/core/enumerable/reduce_break_spec.rb +5 -0
  377. data/spec/opal/core/enumerable/take_while_break_spec.rb +5 -0
  378. data/spec/opal/core/exception_spec.rb +13 -0
  379. data/spec/opal/core/fixtures/class.rb +124 -0
  380. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  381. data/spec/opal/core/fixtures/constants.rb +33 -0
  382. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +1 -0
  383. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +1 -0
  384. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +1 -0
  385. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +1 -0
  386. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +1 -0
  387. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +1 -0
  388. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +1 -0
  389. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +1 -0
  390. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +1 -0
  391. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +1 -0
  392. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +1 -0
  393. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +3 -0
  394. data/spec/opal/core/hash/has_value_spec.rb +13 -0
  395. data/spec/opal/core/hash/internals_spec.rb +332 -0
  396. data/spec/opal/core/kernel/Array_spec.rb +10 -0
  397. data/spec/opal/core/kernel/block_given_spec.rb +30 -0
  398. data/spec/opal/core/kernel/class_spec.rb +6 -0
  399. data/spec/opal/core/kernel/define_singleton_method_spec.rb +21 -0
  400. data/spec/opal/core/kernel/equal_value_spec.rb +12 -0
  401. data/spec/opal/core/kernel/extend_spec.rb +21 -0
  402. data/spec/opal/core/kernel/format_spec.rb +122 -0
  403. data/spec/opal/core/kernel/freeze_spec.rb +15 -0
  404. data/spec/opal/core/kernel/instance_eval_spec.rb +28 -0
  405. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +15 -0
  406. data/spec/opal/core/kernel/instance_variable_get_spec.rb +14 -0
  407. data/spec/opal/core/kernel/instance_variable_set_spec.rb +10 -0
  408. data/spec/opal/core/kernel/loop_spec.rb +23 -0
  409. data/spec/opal/core/kernel/match_spec.rb +5 -0
  410. data/spec/opal/core/kernel/method_spec.rb +31 -0
  411. data/spec/opal/core/kernel/methods_spec.rb +25 -0
  412. data/spec/opal/core/kernel/nil_spec.rb +7 -0
  413. data/spec/opal/core/kernel/p_spec.rb +15 -0
  414. data/spec/opal/core/kernel/printf_spec.rb +11 -0
  415. data/spec/opal/core/kernel/proc_spec.rb +13 -0
  416. data/spec/opal/core/kernel/rand_spec.rb +23 -0
  417. data/spec/opal/core/kernel/require_tree_spec.rb +18 -0
  418. data/spec/opal/core/kernel/respond_to_spec.rb +41 -0
  419. data/spec/opal/core/kernel/send_spec.rb +56 -0
  420. data/spec/opal/core/kernel/sprintf_spec.rb +5 -0
  421. data/spec/opal/core/language/block_spec.rb +538 -0
  422. data/spec/opal/core/language/fixtures/array.rb +11 -0
  423. data/spec/opal/core/language/fixtures/block.rb +57 -0
  424. data/spec/opal/core/language/fixtures/break.rb +240 -0
  425. data/spec/opal/core/language/fixtures/ensure.rb +72 -0
  426. data/spec/opal/core/language/fixtures/literal_lambda.rb +7 -0
  427. data/spec/opal/core/language/fixtures/metaclass.rb +33 -0
  428. data/spec/opal/core/language/fixtures/module.rb +24 -0
  429. data/spec/opal/core/language/fixtures/next.rb +128 -0
  430. data/spec/opal/core/language/fixtures/return.rb +118 -0
  431. data/spec/opal/core/language/fixtures/send.rb +110 -0
  432. data/spec/opal/core/language/fixtures/send_1.9.rb +22 -0
  433. data/spec/opal/core/language/fixtures/super.rb +308 -0
  434. data/spec/opal/core/language/fixtures/variables.rb +58 -0
  435. data/spec/opal/core/language/fixtures/yield.rb +28 -0
  436. data/spec/opal/core/language/predefined_spec.rb +138 -0
  437. data/spec/opal/core/language/proc_spec.rb +263 -0
  438. data/spec/opal/core/language/regexp_spec.rb +20 -0
  439. data/spec/opal/core/language/send_spec.rb +225 -0
  440. data/spec/opal/core/language/string_spec.rb +44 -0
  441. data/spec/opal/core/language/variables_spec.rb +1366 -0
  442. data/spec/opal/core/language/versions/array_1.9.rb +39 -0
  443. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  444. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  445. data/spec/opal/core/language/versions/case_1.9.rb +20 -0
  446. data/spec/opal/core/language/versions/def_2_0_spec.rb +62 -0
  447. data/spec/opal/core/language/versions/hash_1.9.rb +18 -0
  448. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +143 -0
  449. data/spec/opal/core/language/versions/not_1.9.rb +22 -0
  450. data/spec/opal/core/language/versions/send_1.9.rb +241 -0
  451. data/spec/opal/core/language/versions/symbol_1.9.rb +15 -0
  452. data/spec/opal/core/language/versions/variables_1.9.rb +8 -0
  453. data/spec/opal/core/language_spec.rb +23 -0
  454. data/spec/opal/core/method/to_proc_spec.rb +28 -0
  455. data/spec/opal/core/module/alias_method_spec.rb +28 -0
  456. data/spec/opal/core/module/ancestors_spec.rb +11 -0
  457. data/spec/opal/core/module/append_features_spec.rb +14 -0
  458. data/spec/opal/core/module/attr_accessor_spec.rb +26 -0
  459. data/spec/opal/core/module/const_defined_spec.rb +85 -0
  460. data/spec/opal/core/module/const_get_spec.rb +85 -0
  461. data/spec/opal/core/module/const_missing_spec.rb +17 -0
  462. data/spec/opal/core/module/const_set_spec.rb +64 -0
  463. data/spec/opal/core/module/constants_spec.rb +49 -0
  464. data/spec/opal/core/module/fixtures/classes.rb +434 -0
  465. data/spec/opal/core/module/method_defined_spec.rb +48 -0
  466. data/spec/opal/core/module/module_function_spec.rb +25 -0
  467. data/spec/opal/core/module/name_spec.rb +52 -0
  468. data/spec/opal/core/module/public_method_defined_spec.rb +18 -0
  469. data/spec/opal/core/module/remove_const_spec.rb +22 -0
  470. data/spec/opal/core/module/undef_method_spec.rb +66 -0
  471. data/spec/opal/core/numeric/bit_and_spec.rb +7 -0
  472. data/spec/opal/core/numeric/bit_or_spec.rb +8 -0
  473. data/spec/opal/core/numeric/bit_xor_spec.rb +6 -0
  474. data/spec/opal/core/numeric/ceil_spec.rb +8 -0
  475. data/spec/opal/core/numeric/chr_spec.rb +8 -0
  476. data/spec/opal/core/numeric/comparison_spec.rb +24 -0
  477. data/spec/opal/core/numeric/complement_spec.rb +8 -0
  478. data/spec/opal/core/numeric/divide_spec.rb +10 -0
  479. data/spec/opal/core/numeric/eql_spec.rb +9 -0
  480. data/spec/opal/core/numeric/exponent_spec.rb +33 -0
  481. data/spec/opal/core/numeric/floor_spec.rb +8 -0
  482. data/spec/opal/core/numeric/gt_spec.rb +11 -0
  483. data/spec/opal/core/numeric/gte_spec.rb +12 -0
  484. data/spec/opal/core/numeric/integer_spec.rb +9 -0
  485. data/spec/opal/core/numeric/left_shift_spec.rb +21 -0
  486. data/spec/opal/core/numeric/lt_spec.rb +11 -0
  487. data/spec/opal/core/numeric/lte_spec.rb +12 -0
  488. data/spec/opal/core/numeric/minus_spec.rb +8 -0
  489. data/spec/opal/core/numeric/modulo_spec.rb +19 -0
  490. data/spec/opal/core/numeric/multiply_spec.rb +9 -0
  491. data/spec/opal/core/numeric/next_spec.rb +9 -0
  492. data/spec/opal/core/numeric/ord_spec.rb +9 -0
  493. data/spec/opal/core/numeric/plus_spec.rb +8 -0
  494. data/spec/opal/core/numeric/pred_spec.rb +7 -0
  495. data/spec/opal/core/numeric/right_shift_spec.rb +25 -0
  496. data/spec/opal/core/numeric/step_spec.rb +11 -0
  497. data/spec/opal/core/numeric/succ_spec.rb +9 -0
  498. data/spec/opal/core/numeric/times_spec.rb +36 -0
  499. data/spec/opal/core/numeric/to_f_spec.rb +7 -0
  500. data/spec/opal/core/numeric/to_i_spec.rb +7 -0
  501. data/spec/opal/core/numeric/to_json_spec.rb +8 -0
  502. data/spec/opal/core/numeric/to_s_spec.rb +26 -0
  503. data/spec/opal/core/numeric/uminus_spec.rb +9 -0
  504. data/spec/opal/core/numeric/upto_spec.rb +19 -0
  505. data/spec/opal/core/numeric/zero_spec.rb +7 -0
  506. data/spec/opal/core/object_id_spec.rb +56 -0
  507. data/spec/opal/core/proc/call_spec.rb +21 -0
  508. data/spec/opal/core/proc/element_reference_spec.rb +21 -0
  509. data/spec/opal/core/proc/proc_tricks_spec.rb +7 -0
  510. data/spec/opal/core/runtime/begin_spec.rb +39 -0
  511. data/spec/opal/core/runtime/block_send_spec.rb +28 -0
  512. data/spec/opal/core/runtime/block_spec.rb +23 -0
  513. data/spec/opal/core/runtime/bridged_classes_spec.rb +111 -0
  514. data/spec/opal/core/runtime/constants_spec.rb +13 -0
  515. data/spec/opal/core/runtime/donate_spec.rb +53 -0
  516. data/spec/opal/core/runtime/eval_spec.rb +5 -0
  517. data/spec/opal/core/runtime/main_methods_spec.rb +27 -0
  518. data/spec/opal/core/runtime/method_missing_spec.rb +62 -0
  519. data/spec/opal/core/runtime/method_spec.rb +31 -0
  520. data/spec/opal/core/runtime/operator_call_spec.rb +13 -0
  521. data/spec/opal/core/runtime/paren_spec.rb +14 -0
  522. data/spec/opal/core/runtime/rescue_spec.rb +38 -0
  523. data/spec/opal/core/runtime/return_spec.rb +38 -0
  524. data/spec/opal/core/runtime/send_spec.rb +34 -0
  525. data/spec/opal/core/runtime/singleton_class_spec.rb +13 -0
  526. data/spec/opal/core/runtime/super_spec.rb +212 -0
  527. data/spec/opal/core/runtime/truthy_spec.rb +23 -0
  528. data/spec/opal/core/runtime/variables_spec.rb +20 -0
  529. data/spec/opal/core/runtime_spec.rb +58 -0
  530. data/spec/opal/core/source_map_spec.rb +15 -0
  531. data/spec/opal/core/string_spec.rb +11 -0
  532. data/spec/opal/stdlib/erb/erb_spec.rb +30 -0
  533. data/spec/opal/stdlib/erb/inline_block.opalerb +3 -0
  534. data/spec/opal/stdlib/erb/quoted.opalerb +1 -0
  535. data/spec/opal/stdlib/erb/simple.opalerb +1 -0
  536. data/spec/opal/stdlib/js_spec.rb +66 -0
  537. data/spec/opal/stdlib/json/ext_spec.rb +48 -0
  538. data/spec/opal/stdlib/json/parse_spec.rb +33 -0
  539. data/spec/opal/stdlib/native/alias_native_spec.rb +27 -0
  540. data/spec/opal/stdlib/native/each_spec.rb +13 -0
  541. data/spec/opal/stdlib/native/element_reference_spec.rb +16 -0
  542. data/spec/opal/stdlib/native/exposure_spec.rb +33 -0
  543. data/spec/opal/stdlib/native/ext_spec.rb +19 -0
  544. data/spec/opal/stdlib/native/initialize_spec.rb +17 -0
  545. data/spec/opal/stdlib/native/method_missing_spec.rb +51 -0
  546. data/spec/opal/stdlib/native/native_alias_spec.rb +19 -0
  547. data/spec/opal/stdlib/native/native_class_spec.rb +18 -0
  548. data/spec/opal/stdlib/native/native_module_spec.rb +13 -0
  549. data/spec/opal/stdlib/native/native_reader_spec.rb +22 -0
  550. data/spec/opal/stdlib/native/native_writer_spec.rb +30 -0
  551. data/spec/opal/stdlib/native/new_spec.rb +8 -0
  552. data/spec/opal/stdlib/promise/always_spec.rb +30 -0
  553. data/spec/opal/stdlib/promise/error_spec.rb +15 -0
  554. data/spec/opal/stdlib/promise/rescue_spec.rb +44 -0
  555. data/spec/opal/stdlib/promise/then_spec.rb +71 -0
  556. data/spec/opal/stdlib/promise/trace_spec.rb +52 -0
  557. data/spec/opal/stdlib/promise/value_spec.rb +15 -0
  558. data/spec/opal/stdlib/promise/when_spec.rb +34 -0
  559. data/spec/opal/stdlib/template/paths_spec.rb +10 -0
  560. data/spec/opal/stdlib/thread/mutex_spec.rb +40 -0
  561. data/spec/opal/stdlib/thread/thread_queue_spec.rb +32 -0
  562. data/spec/opal/stdlib/thread/thread_spec.rb +60 -0
  563. data/spec/rubyspecs +144 -0
  564. data/spec/spec_helper.rb +53 -0
  565. data/spec/support/mspec_rspec_adapter.rb +33 -0
  566. data/spec/support/parser_helpers.rb +37 -0
  567. data/stdlib/README.md +3 -0
  568. data/stdlib/base64.rb +152 -0
  569. data/stdlib/benchmark.rb +557 -0
  570. data/stdlib/buffer.rb +41 -0
  571. data/stdlib/buffer/array.rb +66 -0
  572. data/stdlib/buffer/view.rb +70 -0
  573. data/stdlib/date.rb +248 -0
  574. data/stdlib/delegate.rb +29 -0
  575. data/stdlib/dir.rb +1 -0
  576. data/stdlib/encoding.rb +170 -0
  577. data/stdlib/enumerator.rb +1 -0
  578. data/stdlib/erb.rb +16 -0
  579. data/stdlib/file.rb +1 -0
  580. data/stdlib/fileutils.rb +0 -0
  581. data/stdlib/forwardable.rb +71 -0
  582. data/stdlib/iconv.rb +0 -0
  583. data/stdlib/js.rb +56 -0
  584. data/stdlib/json.rb +190 -0
  585. data/stdlib/math.rb +370 -0
  586. data/stdlib/native.rb +530 -0
  587. data/stdlib/nodejs.rb +7 -0
  588. data/stdlib/nodejs/dir.rb +13 -0
  589. data/stdlib/nodejs/file.rb +98 -0
  590. data/stdlib/nodejs/fileutils.rb +26 -0
  591. data/stdlib/nodejs/io.rb +2 -0
  592. data/stdlib/nodejs/irb.rb +45 -0
  593. data/stdlib/nodejs/kernel.rb +33 -0
  594. data/stdlib/nodejs/node_modules/.bin/js-yaml +140 -0
  595. data/stdlib/nodejs/node_modules/glob/LICENSE +15 -0
  596. data/stdlib/nodejs/node_modules/glob/README.md +357 -0
  597. data/stdlib/nodejs/node_modules/glob/common.js +177 -0
  598. data/stdlib/nodejs/node_modules/glob/glob.js +649 -0
  599. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/.eslintrc +17 -0
  600. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/LICENSE +15 -0
  601. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/README.md +37 -0
  602. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/inflight.js +44 -0
  603. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE +15 -0
  604. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +36 -0
  605. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +52 -0
  606. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +51 -0
  607. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +33 -0
  608. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/package.json +61 -0
  609. data/stdlib/nodejs/node_modules/glob/node_modules/inflight/test.js +97 -0
  610. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  611. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/README.md +42 -0
  612. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  613. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  614. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/package.json +51 -0
  615. data/stdlib/nodejs/node_modules/glob/node_modules/inherits/test.js +25 -0
  616. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.npmignore +1 -0
  617. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/.travis.yml +4 -0
  618. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/LICENSE +23 -0
  619. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/README.md +216 -0
  620. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/benchmark.js +15 -0
  621. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/browser.js +1181 -0
  622. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/minimatch.js +845 -0
  623. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +2 -0
  624. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.travis.yml +3 -0
  625. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +121 -0
  626. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  627. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  628. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  629. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +4 -0
  630. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  631. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  632. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  633. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  634. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +73 -0
  635. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  636. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
  637. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  638. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  639. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  640. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  641. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +83 -0
  642. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  643. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +75 -0
  644. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-comparison.js +32 -0
  645. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/bash-results.txt +1075 -0
  646. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/cases.txt +182 -0
  647. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/dollar.js +9 -0
  648. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/empty-option.js +10 -0
  649. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/generate.sh +24 -0
  650. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/negative-increment.js +15 -0
  651. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/nested.js +16 -0
  652. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/order.js +10 -0
  653. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/pad.js +13 -0
  654. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/same-type.js +7 -0
  655. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/test/sequence.js +50 -0
  656. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/package.json +60 -0
  657. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/basic.js +399 -0
  658. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/brace-expand.js +45 -0
  659. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/defaults.js +274 -0
  660. data/stdlib/nodejs/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js +8 -0
  661. data/stdlib/nodejs/node_modules/glob/node_modules/once/LICENSE +27 -0
  662. data/stdlib/nodejs/node_modules/glob/node_modules/once/README.md +51 -0
  663. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE +15 -0
  664. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  665. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +52 -0
  666. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  667. data/stdlib/nodejs/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  668. data/stdlib/nodejs/node_modules/glob/node_modules/once/once.js +21 -0
  669. data/stdlib/nodejs/node_modules/glob/node_modules/once/package.json +60 -0
  670. data/stdlib/nodejs/node_modules/glob/node_modules/once/test/once.js +23 -0
  671. data/stdlib/nodejs/node_modules/glob/package.json +72 -0
  672. data/stdlib/nodejs/node_modules/glob/sync.js +409 -0
  673. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +277 -0
  674. data/stdlib/nodejs/node_modules/js-yaml/LICENSE +21 -0
  675. data/stdlib/nodejs/node_modules/js-yaml/README.md +288 -0
  676. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +140 -0
  677. data/stdlib/nodejs/node_modules/js-yaml/bower.json +23 -0
  678. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.js +3666 -0
  679. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +3 -0
  680. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +102 -0
  681. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +18 -0
  682. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +31 -0
  683. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +22 -0
  684. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +18 -0
  685. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +197 -0
  686. data/stdlib/nodejs/node_modules/js-yaml/index.js +7 -0
  687. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +39 -0
  688. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +62 -0
  689. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +554 -0
  690. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +25 -0
  691. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +1581 -0
  692. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +78 -0
  693. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +103 -0
  694. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +18 -0
  695. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +25 -0
  696. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +28 -0
  697. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +17 -0
  698. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +25 -0
  699. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +61 -0
  700. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +133 -0
  701. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +37 -0
  702. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +110 -0
  703. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +183 -0
  704. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +85 -0
  705. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +84 -0
  706. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +27 -0
  707. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +8 -0
  708. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +12 -0
  709. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +36 -0
  710. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +56 -0
  711. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +61 -0
  712. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +8 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +33 -0
  714. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +8 -0
  715. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +98 -0
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esparse +117 -0
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/.bin/esvalidate +177 -0
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +115 -0
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/LICENSE +21 -0
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +239 -0
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +36 -0
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +22 -0
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +59 -0
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +13 -0
  725. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +33 -0
  726. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +28 -0
  727. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +23 -0
  728. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +49 -0
  729. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +35 -0
  730. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +270 -0
  731. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +1 -0
  732. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +146 -0
  733. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +55 -0
  734. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +47 -0
  735. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +40 -0
  736. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +48 -0
  737. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +50 -0
  738. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +43 -0
  739. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +27 -0
  740. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +26 -0
  741. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +148 -0
  742. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +50 -0
  743. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +481 -0
  744. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +14 -0
  745. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +50 -0
  746. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +54 -0
  747. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +75 -0
  748. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +1168 -0
  749. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +18 -0
  750. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +88 -0
  751. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +798 -0
  752. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +77 -0
  753. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +2 -0
  754. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +8 -0
  755. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +825 -0
  756. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +33 -0
  757. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +11 -0
  758. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +10 -0
  759. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +26 -0
  760. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +673 -0
  761. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  762. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +107 -0
  763. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +23 -0
  764. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +22 -0
  765. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +69 -0
  766. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +6 -0
  767. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +1415 -0
  768. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +62 -0
  769. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +73 -0
  770. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +117 -0
  771. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +177 -0
  772. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +3908 -0
  773. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +69 -0
  774. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +239 -0
  775. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +422 -0
  776. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +66 -0
  777. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +387 -0
  778. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +20238 -0
  779. data/stdlib/nodejs/node_modules/js-yaml/package.json +83 -0
  780. data/stdlib/nodejs/package.json +6 -0
  781. data/stdlib/nodejs/require.rb +30 -0
  782. data/stdlib/nodejs/rubygems.rb +68 -0
  783. data/stdlib/nodejs/yaml.rb +11 -0
  784. data/stdlib/observer.rb +202 -0
  785. data/stdlib/opal-parser.rb +54 -0
  786. data/stdlib/opal-source-maps.rb +2 -0
  787. data/stdlib/ostruct.rb +69 -0
  788. data/stdlib/pathname.rb +55 -0
  789. data/stdlib/phantomjs.rb +3 -0
  790. data/stdlib/pp.rb +35 -0
  791. data/stdlib/promise.rb +427 -0
  792. data/stdlib/racc/parser.rb +215 -0
  793. data/stdlib/rbconfig.rb +18 -0
  794. data/stdlib/securerandom.rb +12 -0
  795. data/stdlib/set.rb +170 -0
  796. data/stdlib/singleton.rb +40 -0
  797. data/stdlib/source_map.rb +5 -0
  798. data/stdlib/source_map/map.rb +220 -0
  799. data/stdlib/source_map/mapping.rb +26 -0
  800. data/stdlib/source_map/offset.rb +88 -0
  801. data/stdlib/source_map/version.rb +3 -0
  802. data/stdlib/source_map/vlq.rb +98 -0
  803. data/stdlib/sourcemap.rb +1 -0
  804. data/stdlib/stringio.rb +181 -0
  805. data/stdlib/strscan.rb +166 -0
  806. data/stdlib/template.rb +46 -0
  807. data/stdlib/thread.rb +164 -0
  808. data/stdlib/time.rb +9 -0
  809. data/stdlib/yaml.rb +1 -0
  810. data/tasks/benchmarking.rake +88 -0
  811. data/tasks/building.rake +58 -0
  812. data/tasks/documenting.rake +37 -0
  813. data/tasks/github.rake +19 -0
  814. data/tasks/linting.rake +18 -0
  815. data/tasks/testing.rake +125 -0
  816. data/vendored-minitest/minitest.rb +780 -0
  817. data/vendored-minitest/minitest/assertions.rb +662 -0
  818. data/vendored-minitest/minitest/autorun.rb +12 -0
  819. data/vendored-minitest/minitest/benchmark.rb +426 -0
  820. data/vendored-minitest/minitest/expectations.rb +281 -0
  821. data/vendored-minitest/minitest/hell.rb +11 -0
  822. data/vendored-minitest/minitest/mock.rb +220 -0
  823. data/vendored-minitest/minitest/parallel.rb +65 -0
  824. data/vendored-minitest/minitest/pride.rb +4 -0
  825. data/vendored-minitest/minitest/pride_plugin.rb +142 -0
  826. data/vendored-minitest/minitest/spec.rb +310 -0
  827. data/vendored-minitest/minitest/test.rb +293 -0
  828. data/vendored-minitest/minitest/unit.rb +45 -0
  829. data/vendored-minitest/test/unit.rb +28 -0
  830. metadata +1058 -0
@@ -0,0 +1,1787 @@
1
+ class Opal::Parser
2
+
3
+ token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS
4
+ kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT
5
+ kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER
6
+ kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD
7
+ kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__
8
+ k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT
9
+ tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT
10
+ tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ tGEQ tLEQ tANDOP
11
+ tOROP tMATCH tNMATCH tJSDOT tDOT tDOT2 tDOT3 tAREF tASET tLSHFT tRSHFT
12
+ tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN tLPAREN2 tRPAREN tLPAREN_ARG
13
+ ARRAY_BEG tRBRACK tLBRACE tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2
14
+ tTILDE tPERCENT tDIVIDE tPLUS tMINUS tLT tGT tPIPE tBANG tCARET
15
+ tLCURLY tRCURLY tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG
16
+ tWORDS_BEG tAWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END tSTRING
17
+ tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG
18
+ tLBRACK2 tLBRACK tJSLBRACK tDSTAR
19
+
20
+ prechigh
21
+ right tBANG tTILDE tUPLUS
22
+ right tPOW
23
+ right tUMINUS_NUM tUMINUS
24
+ left tSTAR2 tDIVIDE tPERCENT
25
+ left tPLUS tMINUS
26
+ left tLSHFT tRSHFT
27
+ left tAMPER2
28
+ left tPIPE tCARET
29
+ left tGT tGEQ tLT tLEQ
30
+ nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH
31
+ left tANDOP
32
+ left tOROP
33
+ nonassoc tDOT2 tDOT3
34
+ right tEH tCOLON
35
+ left kRESCUE_MOD
36
+ right tEQL tOP_ASGN
37
+ nonassoc kDEFINED
38
+ right kNOT
39
+ left kOR kAND
40
+ nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD
41
+ nonassoc tLBRACE_ARG
42
+ nonassoc tLOWEST
43
+ preclow
44
+
45
+ rule
46
+
47
+ program: top_compstmt
48
+
49
+ top_compstmt: top_stmts opt_terms
50
+ {
51
+ result = new_compstmt val[0]
52
+ }
53
+
54
+ top_stmts: # none
55
+ {
56
+ result = new_block
57
+ }
58
+ | top_stmt
59
+ {
60
+ result = new_block val[0]
61
+ }
62
+ | top_stmts terms top_stmt
63
+ {
64
+ val[0] << val[2]
65
+ result = val[0]
66
+ }
67
+
68
+ top_stmt: stmt
69
+ | klBEGIN tLCURLY top_compstmt tRCURLY
70
+ {
71
+ result = val[2]
72
+ }
73
+
74
+ bodystmt: compstmt opt_rescue opt_else opt_ensure
75
+ {
76
+ result = new_body(val[0], val[1], val[2], val[3])
77
+ }
78
+
79
+ compstmt: stmts opt_terms
80
+ {
81
+ result = new_compstmt val[0]
82
+ }
83
+
84
+ stmts: # none
85
+ {
86
+ result = new_block
87
+ }
88
+ | stmt
89
+ {
90
+ result = new_block val[0]
91
+ }
92
+ | stmts terms stmt
93
+ {
94
+ val[0] << val[2]
95
+ result = val[0]
96
+ }
97
+
98
+ stmt: kALIAS fitem
99
+ {
100
+ lexer.lex_state = :expr_fname
101
+ }
102
+ fitem
103
+ {
104
+ result = new_alias(val[0], val[1], val[3])
105
+ }
106
+ | kALIAS tGVAR tGVAR
107
+ {
108
+ result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym)
109
+ }
110
+ | kALIAS tGVAR tBACK_REF
111
+ | kALIAS tGVAR tNTH_REF
112
+ {
113
+ result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym)
114
+ }
115
+ | kUNDEF undef_list
116
+ {
117
+ result = val[1]
118
+ }
119
+ | stmt kIF_MOD expr_value
120
+ {
121
+ result = new_if(val[1], val[2], val[0], nil)
122
+ }
123
+ | stmt kUNLESS_MOD expr_value
124
+ {
125
+ result = new_if(val[1], val[2], nil, val[0])
126
+ }
127
+ | stmt kWHILE_MOD expr_value
128
+ {
129
+ result = new_while(val[1], val[2], val[0])
130
+ }
131
+ | stmt kUNTIL_MOD expr_value
132
+ {
133
+ result = new_until(val[1], val[2], val[0])
134
+ }
135
+ | stmt kRESCUE_MOD stmt
136
+ {
137
+ result = new_rescue_mod(val[1], val[0], val[2])
138
+ }
139
+ | klEND tLCURLY compstmt tRCURLY
140
+ | lhs tEQL command_call
141
+ {
142
+ result = new_assign(val[0], val[1], val[2])
143
+ }
144
+ | mlhs tEQL command_call
145
+ {
146
+ result = s(:masgn, val[0], s(:to_ary, val[2]))
147
+ }
148
+ | var_lhs tOP_ASGN command_call
149
+ {
150
+ result = new_op_asgn val[1], val[0], val[2]
151
+ }
152
+ | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN command_call
153
+ | primary_value tJSLBRACK aref_args tRBRACK tOP_ASGN command_call
154
+ | primary_value tDOT tIDENTIFIER tOP_ASGN command_call
155
+ {
156
+ result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4])
157
+ }
158
+ | primary_value tDOT tCONSTANT tOP_ASGN command_call
159
+ | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call
160
+ | backref tOP_ASGN command_call
161
+ | lhs tEQL mrhs
162
+ {
163
+ result = new_assign val[0], val[1], s(:svalue, val[2])
164
+ }
165
+ | mlhs tEQL arg_value
166
+ {
167
+ result = s(:masgn, val[0], s(:to_ary, val[2]))
168
+ }
169
+ | mlhs tEQL mrhs
170
+ {
171
+ result = s(:masgn, val[0], val[2])
172
+ }
173
+ | expr
174
+
175
+ expr: command_call
176
+ | expr kAND expr
177
+ {
178
+ result = s(:and, val[0], val[2])
179
+ }
180
+ | expr kOR expr
181
+ {
182
+ result = s(:or, val[0], val[2])
183
+ }
184
+ | kNOT expr
185
+ {
186
+ result = new_unary_call(['!', []], val[1])
187
+ }
188
+ | tBANG command_call
189
+ {
190
+ result = new_unary_call(val[0], val[1])
191
+ }
192
+ | arg
193
+
194
+ expr_value: expr
195
+
196
+ command_call: command
197
+ | block_command
198
+ | kRETURN call_args
199
+ {
200
+ result = new_return(val[0], val[1])
201
+ }
202
+ | kBREAK call_args
203
+ {
204
+ result = new_break(val[0], val[1])
205
+ }
206
+ | kNEXT call_args
207
+ {
208
+ result = new_next(val[0], val[1])
209
+ }
210
+
211
+ block_command: block_call
212
+ | block_call tJSDOT operation2 command_args
213
+ | block_call tDOT operation2 command_args
214
+ | block_call tCOLON2 operation2 command_args
215
+
216
+ cmd_brace_block: tLBRACE_ARG opt_block_var compstmt tRCURLY
217
+
218
+ command: operation command_args =tLOWEST
219
+ {
220
+ result = new_call(nil, val[0], val[1])
221
+ }
222
+ | operation command_args cmd_brace_block
223
+ | primary_value tJSDOT operation2 command_args =tLOWEST
224
+ {
225
+ result = new_js_call(val[0], val[2], val[3])
226
+ }
227
+ | primary_value tJSDOT operation2 command_args cmd_brace_block
228
+ | primary_value tDOT operation2 command_args =tLOWEST
229
+ {
230
+ result = new_call(val[0], val[2], val[3])
231
+ }
232
+ | primary_value tDOT operation2 command_args cmd_brace_block
233
+ | primary_value tCOLON2 operation2 command_args =tLOWEST
234
+ {
235
+ result = new_call(val[0], val[2], val[3])
236
+ }
237
+ | primary_value tCOLON2 operation2 command_args cmd_brace_block
238
+ | kSUPER command_args
239
+ {
240
+ result = new_super(val[0], val[1])
241
+ }
242
+ | kYIELD command_args
243
+ {
244
+ result = new_yield val[1]
245
+ }
246
+
247
+ mlhs: mlhs_basic
248
+ {
249
+ result = val[0]
250
+ }
251
+ | tLPAREN mlhs_entry tRPAREN
252
+ {
253
+ result = val[1]
254
+ }
255
+
256
+ mlhs_entry: mlhs_basic
257
+ {
258
+ result = val[0]
259
+ }
260
+ | tLPAREN mlhs_entry tRPAREN
261
+ {
262
+ result = val[1]
263
+ }
264
+
265
+ mlhs_basic: mlhs_head
266
+ {
267
+ result = val[0]
268
+ }
269
+ | mlhs_head mlhs_item
270
+ {
271
+ result = val[0] << val[1]
272
+ }
273
+ | mlhs_head tSTAR mlhs_node
274
+ {
275
+ result = val[0] << s(:splat, val[2])
276
+ }
277
+ | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post
278
+ | mlhs_head tSTAR
279
+ {
280
+ result = val[0] << s(:splat)
281
+ }
282
+ | mlhs_head tSTAR tCOMMA mlhs_post
283
+ | tSTAR mlhs_node
284
+ {
285
+ result = s(:array, s(:splat, val[1]))
286
+ }
287
+ | tSTAR
288
+ {
289
+ result = s(:array, s(:splat))
290
+ }
291
+ | tSTAR tCOMMA mlhs_post
292
+
293
+ mlhs_item: mlhs_node
294
+ {
295
+ result = val[0]
296
+ }
297
+ | tLPAREN mlhs_entry tRPAREN
298
+ {
299
+ result = val[1]
300
+ }
301
+
302
+ mlhs_head: mlhs_item tCOMMA
303
+ {
304
+ result = s(:array, val[0])
305
+ }
306
+ | mlhs_head mlhs_item tCOMMA
307
+ {
308
+ result = val[0] << val[1]
309
+ }
310
+
311
+ mlhs_post: mlhs_item
312
+ | mlhs_post tCOMMA mlhs_item
313
+
314
+ mlhs_node: variable
315
+ {
316
+ result = new_assignable val[0]
317
+ }
318
+ | primary_value tLBRACK2 aref_args tRBRACK
319
+ {
320
+ args = val[2] ? val[2] : []
321
+ result = s(:attrasgn, val[0], :[]=, s(:arglist, *args))
322
+ }
323
+ | primary_value tDOT tIDENTIFIER
324
+ {
325
+ result = new_call val[0], val[2], []
326
+ }
327
+ | primary_value tCOLON2 tIDENTIFIER
328
+ | primary_value tDOT tCONSTANT
329
+ | primary_value tCOLON2 tCONSTANT
330
+ | tCOLON3 tCONSTANT
331
+ | backref
332
+
333
+ lhs: variable
334
+ {
335
+ result = new_assignable val[0]
336
+ }
337
+ | primary_value tJSLBRACK aref_args tRBRACK
338
+ {
339
+ result = new_js_attrasgn(val[0], val[2])
340
+ }
341
+ | primary_value tLBRACK2 aref_args tRBRACK
342
+ {
343
+ result = new_attrasgn(val[0], :[]=, val[2])
344
+ }
345
+ | primary_value tDOT tIDENTIFIER
346
+ {
347
+ result = new_attrasgn(val[0], op_to_setter(val[2]))
348
+ }
349
+ | primary_value tCOLON2 tIDENTIFIER
350
+ {
351
+ result = new_attrasgn(val[0], op_to_setter(val[2]))
352
+ }
353
+ | primary_value tDOT tCONSTANT
354
+ {
355
+ result = new_attrasgn(val[0], op_to_setter(val[2]))
356
+ }
357
+ | primary_value tCOLON2 tCONSTANT
358
+ {
359
+ result = new_colon2(val[0], val[1], val[2])
360
+ }
361
+ | tCOLON3 tCONSTANT
362
+ {
363
+ result = new_colon3(val[0], val[1])
364
+ }
365
+ | backref
366
+
367
+ cname: tCONSTANT
368
+
369
+ cpath: tCOLON3 cname
370
+ {
371
+ result = new_colon3(val[0], val[1])
372
+ }
373
+ | cname
374
+ {
375
+ result = new_const(val[0])
376
+ }
377
+ | primary_value tCOLON2 cname
378
+ {
379
+ result = new_colon2(val[0], val[1], val[2])
380
+ }
381
+
382
+ fname: tIDENTIFIER
383
+ | tCONSTANT
384
+ | tFID
385
+ | op
386
+ {
387
+ lexer.lex_state = :expr_end
388
+ result = val[0]
389
+ }
390
+ | reswords
391
+ {
392
+ lexer.lex_state = :expr_end
393
+ result = val[0]
394
+ }
395
+
396
+ fitem: fname
397
+ {
398
+ result = new_sym(val[0])
399
+ }
400
+ | symbol
401
+
402
+ undef_list: fitem
403
+ {
404
+ result = s(:undef, val[0])
405
+ }
406
+ | undef_list tCOMMA fitem
407
+ {
408
+ result = val[0] << val[2]
409
+ }
410
+
411
+ op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ
412
+ | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ
413
+ | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2
414
+ | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE
415
+ | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2
416
+
417
+ reswords: k__LINE__ | k__FILE__ | klBEGIN | klEND | kALIAS | kAND
418
+ | kBEGIN | kBREAK | kCASE | kCLASS | kDEF | kDEFINED
419
+ | kDO | kELSE | kELSIF | kEND | kENSURE | kFALSE
420
+ | kFOR | kIN | kMODULE | kNEXT | kNIL | kNOT
421
+ | kOR | kREDO | kRESCUE | kRETRY | kRETURN | kSELF
422
+ | kSUPER | kTHEN | kTRUE | kUNDEF | kWHEN | kYIELD
423
+ | kIF_MOD | kUNLESS_MOD | kWHILE_MOD | kUNTIL_MOD | kRESCUE_MOD
424
+ | kIF | kWHILE | kUNTIL | kUNLESS
425
+
426
+ arg: lhs tEQL arg
427
+ {
428
+ result = new_assign(val[0], val[1], val[2])
429
+ }
430
+ | lhs tEQL arg kRESCUE_MOD arg
431
+ {
432
+ result = new_assign val[0], val[1], s(:rescue_mod, val[2], val[4])
433
+ }
434
+ | var_lhs tOP_ASGN arg
435
+ {
436
+ result = new_op_asgn val[1], val[0], val[2]
437
+ }
438
+ | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN arg
439
+ {
440
+ result = new_op_asgn1(val[0], val[2], val[4], val[5])
441
+ }
442
+ | primary_value tJSLBRACK aref_args tRBRACK tOP_ASGN arg
443
+ {
444
+ raise ".JS[...] #{val[4]} is not supported"
445
+ }
446
+ | primary_value tDOT tIDENTIFIER tOP_ASGN arg
447
+ {
448
+ result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4])
449
+ }
450
+ | primary_value tDOT tCONSTANT tOP_ASGN arg
451
+ | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg
452
+ | primary_value tCOLON2 tCONSTANT tOP_ASGN arg
453
+ | tCOLON3 tCONSTANT tOP_ASGN arg
454
+ | backref tOP_ASGN arg
455
+ | arg tDOT2 arg
456
+ {
457
+ result = new_irange(val[0], val[1], val[2])
458
+ }
459
+ | arg tDOT3 arg
460
+ {
461
+ result = new_erange(val[0], val[1], val[2])
462
+ }
463
+ | arg tPLUS arg
464
+ {
465
+ result = new_binary_call(val[0], val[1], val[2])
466
+ }
467
+ | arg tMINUS arg
468
+ {
469
+ result = new_binary_call(val[0], val[1], val[2])
470
+ }
471
+ | arg tSTAR2 arg
472
+ {
473
+ result = new_binary_call(val[0], val[1], val[2])
474
+ }
475
+ | arg tDIVIDE arg
476
+ {
477
+ result = new_binary_call(val[0], val[1], val[2])
478
+ }
479
+ | arg tPERCENT arg
480
+ {
481
+ result = new_binary_call(val[0], val[1], val[2])
482
+ }
483
+ | arg tPOW arg
484
+ {
485
+ result = new_binary_call(val[0], val[1], val[2])
486
+ }
487
+ | '-@NUM' tINTEGER tPOW arg
488
+ {
489
+ result = new_call new_binary_call(new_int(val[1]), val[2], val[3]), [:"-@", []], []
490
+ }
491
+ | '-@NUM' tFLOAT tPOW arg
492
+ {
493
+ result = new_call new_binary_call(new_float(val[1]), val[2], val[3]), [:"-@", []], []
494
+ }
495
+ | tUPLUS arg
496
+ {
497
+ result = new_call val[1], [:"+@", []], []
498
+ if [:int, :float].include? val[1].type
499
+ result = val[1]
500
+ end
501
+ }
502
+ | tUMINUS arg
503
+ {
504
+ result = new_call val[1], [:"-@", []], []
505
+ if val[1].type == :int
506
+ val[1][1] = -val[1][1]
507
+ result = val[1]
508
+ elsif val[1].type == :float
509
+ val[1][1] = -val[1][1].to_f
510
+ result = val[1]
511
+ end
512
+ }
513
+ | arg tPIPE arg
514
+ {
515
+ result = new_binary_call(val[0], val[1], val[2])
516
+ }
517
+ | arg tCARET arg
518
+ {
519
+ result = new_binary_call(val[0], val[1], val[2])
520
+ }
521
+ | arg tAMPER2 arg
522
+ {
523
+ result = new_binary_call(val[0], val[1], val[2])
524
+ }
525
+ | arg tCMP arg
526
+ {
527
+ result = new_binary_call(val[0], val[1], val[2])
528
+ }
529
+ | arg tGT arg
530
+ {
531
+ result = new_binary_call(val[0], val[1], val[2])
532
+ }
533
+ | arg tGEQ arg
534
+ {
535
+ result = new_binary_call(val[0], val[1], val[2])
536
+ }
537
+ | arg tLT arg
538
+ {
539
+ result = new_binary_call(val[0], val[1], val[2])
540
+ }
541
+ | arg tLEQ arg
542
+ {
543
+ result = new_binary_call(val[0], val[1], val[2])
544
+ }
545
+ | arg tEQ arg
546
+ {
547
+ result = new_binary_call(val[0], val[1], val[2])
548
+ }
549
+ | arg tEQQ arg
550
+ {
551
+ result = new_binary_call(val[0], val[1], val[2])
552
+ }
553
+ | arg tNEQ arg
554
+ {
555
+ result = new_binary_call(val[0], val[1], val[2])
556
+ }
557
+ | arg tMATCH arg
558
+ {
559
+ result = new_binary_call(val[0], val[1], val[2])
560
+ }
561
+ | arg tNMATCH arg
562
+ {
563
+ result = new_not(val[1], new_binary_call(
564
+ val[0], ['=~', []], val[2]))
565
+ }
566
+ | tBANG arg
567
+ {
568
+ result = new_unary_call(val[0], val[1])
569
+ }
570
+ | tTILDE arg
571
+ {
572
+ result = new_unary_call(val[0], val[1])
573
+ }
574
+ | arg tLSHFT arg
575
+ {
576
+ result = new_binary_call(val[0], val[1], val[2])
577
+ }
578
+ | arg tRSHFT arg
579
+ {
580
+ result = new_binary_call(val[0], val[1], val[2])
581
+ }
582
+ | arg tANDOP arg
583
+ {
584
+ result = new_and(val[0], val[1], val[2])
585
+ }
586
+ | arg tOROP arg
587
+ {
588
+ result = new_or(val[0], val[1], val[2])
589
+ }
590
+ | kDEFINED opt_nl arg
591
+ {
592
+ result = s(:defined, val[2])
593
+ }
594
+ | arg tEH arg tCOLON arg
595
+ {
596
+ result = new_if(val[1], val[0], val[2], val[4])
597
+ }
598
+ | primary
599
+
600
+ arg_value: arg
601
+
602
+ aref_args: none
603
+ {
604
+ result = nil
605
+ }
606
+ | command opt_nl
607
+ {
608
+ result = [val[0]]
609
+ }
610
+ | args trailer
611
+ {
612
+ result = val[0]
613
+ }
614
+ | args tCOMMA assocs trailer
615
+ {
616
+ val[0] << s(:hash, *val[2])
617
+ result = val[0]
618
+ }
619
+ | assocs trailer
620
+ {
621
+ result = [s(:hash, *val[0])]
622
+ }
623
+
624
+ paren_args: tLPAREN2 opt_call_args rparen
625
+ {
626
+ result = val[1]
627
+ }
628
+
629
+ rparen: opt_nl tRPAREN
630
+
631
+ opt_paren_args: none
632
+ {
633
+ result = []
634
+ }
635
+ | paren_args
636
+
637
+ opt_call_args: none
638
+ {
639
+ result = []
640
+ }
641
+ | call_args
642
+ | args tCOMMA
643
+ {
644
+ result = val[0]
645
+ }
646
+ | args tCOMMA assocs tCOMMA
647
+ {
648
+ result = val[0]
649
+ result << new_hash(nil, val[2], nil)
650
+ }
651
+ | assocs tCOMMA
652
+ {
653
+ result = [new_hash(nil, val[0], nil)]
654
+ }
655
+
656
+ call_args: command
657
+ {
658
+ result = [val[0]]
659
+ }
660
+ | args opt_block_arg
661
+ {
662
+ result = val[0]
663
+ add_block_pass val[0], val[1]
664
+ }
665
+ | assocs opt_block_arg
666
+ {
667
+ result = [new_hash(nil, val[0], nil)]
668
+ add_block_pass result, val[1]
669
+ }
670
+ | args tCOMMA assocs opt_block_arg
671
+ {
672
+ result = val[0]
673
+ result << new_hash(nil, val[2], nil)
674
+ }
675
+ | block_arg
676
+ {
677
+ result = []
678
+ add_block_pass result, val[0]
679
+ }
680
+
681
+ call_args2: arg_value tCOMMA args opt_block_arg
682
+ | block_arg
683
+
684
+ command_args: {
685
+ lexer.cmdarg_push 1
686
+ }
687
+ open_args
688
+ {
689
+ lexer.cmdarg_pop
690
+ result = val[1]
691
+ }
692
+
693
+ open_args: call_args
694
+ | tLPAREN_ARG tRPAREN
695
+ {
696
+ result = nil
697
+ }
698
+ | tLPAREN_ARG call_args2 tRPAREN
699
+ {
700
+ result = val[1]
701
+ }
702
+
703
+ block_arg: tAMPER arg_value
704
+ {
705
+ result = new_block_pass(val[0], val[1])
706
+ }
707
+
708
+ opt_block_arg: tCOMMA block_arg
709
+ {
710
+ result = val[1]
711
+ }
712
+ | # none
713
+ {
714
+ result = nil
715
+ }
716
+
717
+ args: arg_value
718
+ {
719
+ result = [val[0]]
720
+ }
721
+ | tSTAR arg_value
722
+ {
723
+ result = [new_splat(val[0], val[1])]
724
+ }
725
+ | args tCOMMA arg_value
726
+ {
727
+ result = val[0] << val[2]
728
+ }
729
+ | args tCOMMA tSTAR arg_value
730
+ {
731
+ result = val[0] << new_splat(val[2], val[3])
732
+ }
733
+
734
+ mrhs: args tCOMMA arg_value
735
+ {
736
+ val[0] << val[2]
737
+ result = s(:array, *val[0])
738
+ }
739
+ | args tCOMMA tSTAR arg_value
740
+ {
741
+ val[0] << s(:splat, val[3])
742
+ result = s(:array, *val[0])
743
+ }
744
+ | tSTAR arg_value
745
+ {
746
+ result = s(:splat, val[1])
747
+ }
748
+
749
+ primary: literal
750
+ | strings
751
+ | xstring
752
+ | regexp
753
+ | words
754
+ | awords
755
+ | var_ref
756
+ | backref
757
+ | tFID
758
+ | kBEGIN
759
+ {
760
+ result = lexer.line
761
+ }
762
+ bodystmt kEND
763
+ {
764
+ result = s(:begin, val[2])
765
+ }
766
+ | tLPAREN_ARG expr opt_nl tRPAREN
767
+ {
768
+ result = val[1]
769
+ }
770
+ | tLPAREN compstmt tRPAREN
771
+ {
772
+ result = new_paren(val[0], val[1], val[2])
773
+ }
774
+ | primary_value tCOLON2 tCONSTANT
775
+ {
776
+ result = new_colon2(val[0], val[1], val[2])
777
+ }
778
+ | tCOLON3 tCONSTANT
779
+ {
780
+ result = new_colon3(val[0], val[1])
781
+ }
782
+ | primary_value tLBRACK2 aref_args tRBRACK
783
+ {
784
+ result = new_call val[0], [:[], []], val[2]
785
+ }
786
+ | primary_value tJSLBRACK aref_args tRBRACK
787
+ {
788
+ result = new_js_call val[0], [:[], []], val[2]
789
+ }
790
+ | tLBRACK aref_args tRBRACK
791
+ {
792
+ result = new_array(val[0], val[1], val[2])
793
+ }
794
+ | tLBRACE assoc_list tRCURLY
795
+ {
796
+ result = new_hash(val[0], val[1], val[2])
797
+ }
798
+ | kRETURN
799
+ {
800
+ result = new_return(val[0])
801
+ }
802
+ | kYIELD tLPAREN2 call_args tRPAREN
803
+ {
804
+ result = new_yield val[2]
805
+ }
806
+ | kYIELD tLPAREN2 tRPAREN
807
+ {
808
+ result = s(:yield)
809
+ }
810
+ | kYIELD
811
+ {
812
+ result = s(:yield)
813
+ }
814
+ | kDEFINED opt_nl tLPAREN2 expr tRPAREN
815
+ {
816
+ result = s(:defined, val[3])
817
+ }
818
+ | kNOT tLPAREN2 expr tRPAREN
819
+ {
820
+ result = new_unary_call(['!', []], val[2])
821
+ }
822
+ | kNOT tLPAREN2 tRPAREN
823
+ {
824
+ result = new_unary_call(['!', []], new_nil(val[0]))
825
+ }
826
+ | operation brace_block
827
+ {
828
+ result = new_call(nil, val[0], [])
829
+ result << val[1]
830
+ }
831
+ | method_call
832
+ | method_call brace_block
833
+ {
834
+ val[0] << val[1]
835
+ result = val[0]
836
+ }
837
+ | tLAMBDA lambda
838
+ {
839
+ result = val[1]
840
+ }
841
+ | kIF expr_value then compstmt if_tail kEND
842
+ {
843
+ result = new_if(val[0], val[1], val[3], val[4])
844
+ }
845
+ | kUNLESS expr_value then compstmt opt_else kEND
846
+ {
847
+ result = new_if(val[0], val[1], val[4], val[3])
848
+ }
849
+ | kWHILE
850
+ {
851
+ lexer.cond_push 1
852
+ result = lexer.line
853
+ }
854
+ expr_value do
855
+ {
856
+ lexer.cond_pop
857
+ }
858
+ compstmt kEND
859
+ {
860
+ result = s(:while, val[2], val[5])
861
+ }
862
+ | kUNTIL
863
+ {
864
+ lexer.cond_push 1
865
+ result = lexer.line
866
+ }
867
+ expr_value do
868
+ {
869
+ lexer.cond_pop
870
+ }
871
+ compstmt kEND
872
+ {
873
+ result = s(:until, val[2], val[5])
874
+ }
875
+ | kCASE expr_value opt_terms case_body kEND
876
+ {
877
+ result = s(:case, val[1], *val[3])
878
+ }
879
+ | kCASE opt_terms case_body kEND
880
+ {
881
+ result = s(:case, nil, *val[2])
882
+ }
883
+ | kCASE opt_terms kELSE compstmt kEND
884
+ {
885
+ result = s(:case, nil, val[3])
886
+ }
887
+ | kFOR for_var kIN
888
+ {
889
+ lexer.cond_push 1
890
+ result = lexer.line
891
+ }
892
+ expr_value do
893
+ {
894
+ lexer.cond_pop
895
+ }
896
+ compstmt kEND
897
+ {
898
+ result = s(:for, val[4], val[1], val[7])
899
+ }
900
+ | kCLASS cpath superclass
901
+ {
902
+ # ...
903
+ }
904
+ bodystmt kEND
905
+ {
906
+ result = new_class val[0], val[1], val[2], val[4], val[5]
907
+ }
908
+ | kCLASS tLSHFT
909
+ {
910
+ result = lexer.line
911
+ }
912
+ expr term
913
+ {
914
+ # ...
915
+ }
916
+ bodystmt kEND
917
+ {
918
+ result = new_sclass(val[0], val[3], val[6], val[7])
919
+ }
920
+ | kMODULE
921
+ {
922
+ result = lexer.line
923
+ }
924
+ cpath
925
+ {
926
+ # ...
927
+ }
928
+ bodystmt kEND
929
+ {
930
+ result = new_module(val[0], val[2], val[4], val[5])
931
+ }
932
+ | kDEF fname
933
+ {
934
+ push_scope
935
+ lexer.lex_state = :expr_endfn
936
+ }
937
+ f_arglist bodystmt kEND
938
+ {
939
+ result = new_def(val[0], nil, val[1], val[3], val[4], val[5])
940
+ pop_scope
941
+ }
942
+ | kDEF singleton dot_or_colon
943
+ {
944
+ lexer.lex_state = :expr_fname
945
+ }
946
+ fname
947
+ {
948
+ push_scope
949
+ lexer.lex_state = :expr_endfn
950
+ }
951
+ f_arglist bodystmt kEND
952
+ {
953
+ result = new_def(val[0], val[1], val[4], val[6], val[7], val[8])
954
+ pop_scope
955
+ }
956
+ | kBREAK
957
+ {
958
+ result = new_break(val[0])
959
+ }
960
+ | kNEXT
961
+ {
962
+ result = s(:next)
963
+ }
964
+ | kREDO
965
+ {
966
+ result = s(:redo)
967
+ }
968
+ | kRETRY
969
+
970
+ primary_value: primary
971
+
972
+ then: term
973
+ | tCOLON
974
+ | kTHEN
975
+ | term kTHEN
976
+
977
+ do: term
978
+ | tCOLON
979
+ | kDO_COND
980
+
981
+ lambda: f_larglist lambda_body
982
+ {
983
+ result = new_call nil, [:lambda, []], []
984
+ result << new_iter(val[0], val[1])
985
+ }
986
+
987
+ f_larglist: tLPAREN2 block_param tRPAREN
988
+ {
989
+ result = val[1]
990
+ }
991
+ | tLPAREN2 tRPAREN
992
+ {
993
+ result = nil
994
+ }
995
+ | block_param
996
+ | none
997
+
998
+ lambda_body: tLAMBEG compstmt tRCURLY
999
+ {
1000
+ result = val[1]
1001
+ }
1002
+ | kDO_LAMBDA compstmt kEND
1003
+ {
1004
+ result = val[1]
1005
+ }
1006
+
1007
+ if_tail: opt_else
1008
+ {
1009
+ result = val[0]
1010
+ }
1011
+ | kELSIF expr_value then compstmt if_tail
1012
+ {
1013
+ result = new_if(val[0], val[1], val[3], val[4])
1014
+ }
1015
+
1016
+ opt_else: none
1017
+ | kELSE compstmt
1018
+ {
1019
+ result = val[1]
1020
+ }
1021
+
1022
+ f_block_optarg: f_block_opt
1023
+ {
1024
+ result = s(:block, val[0])
1025
+ }
1026
+ | f_block_optarg tCOMMA f_block_opt
1027
+ {
1028
+ val[0] << val[2]
1029
+ result = val[0]
1030
+ }
1031
+
1032
+ f_block_opt: tIDENTIFIER tEQL primary_value
1033
+ {
1034
+ result = new_assign(new_assignable(new_ident(
1035
+ val[0])), val[1], val[2])
1036
+ }
1037
+
1038
+ opt_block_var: none
1039
+ | tPIPE tPIPE
1040
+ {
1041
+ result = nil
1042
+ }
1043
+ | tOROP
1044
+ {
1045
+ result = nil
1046
+ }
1047
+ | tPIPE block_param tPIPE
1048
+ {
1049
+ result = val[1]
1050
+ }
1051
+
1052
+ block_args_tail: f_block_arg
1053
+ {
1054
+ result = val[0]
1055
+ }
1056
+
1057
+ opt_block_args_tail: tCOMMA block_args_tail
1058
+ {
1059
+ result = val[1]
1060
+ }
1061
+ | none
1062
+ {
1063
+ nil
1064
+ }
1065
+
1066
+ block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail
1067
+ {
1068
+ result = new_block_args(val[0], val[2], val[4], val[5])
1069
+ }
1070
+ | f_arg tCOMMA f_block_optarg opt_block_args_tail
1071
+ {
1072
+ result = new_block_args(val[0], val[2], nil, val[3])
1073
+ }
1074
+ | f_arg tCOMMA f_rest_arg opt_block_args_tail
1075
+ {
1076
+ result = new_block_args(val[0], nil, val[2], val[3])
1077
+ }
1078
+ | f_arg tCOMMA
1079
+ {
1080
+ result = new_block_args(val[0], nil, nil, nil)
1081
+ }
1082
+ | f_arg opt_block_args_tail
1083
+ {
1084
+ result = new_block_args(val[0], nil, nil, val[1])
1085
+ }
1086
+ | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail
1087
+ {
1088
+ result = new_block_args(nil, val[0], val[2], val[3])
1089
+ }
1090
+ | f_block_optarg opt_block_args_tail
1091
+ {
1092
+ result = new_block_args(nil, val[0], nil, val[1])
1093
+ }
1094
+ | f_rest_arg opt_block_args_tail
1095
+ {
1096
+ result = new_block_args(nil, nil, val[0], val[1])
1097
+ }
1098
+ | block_args_tail
1099
+ {
1100
+ result = new_block_args(nil, nil, nil, val[0])
1101
+ }
1102
+
1103
+ do_block: kDO_BLOCK
1104
+ {
1105
+ push_scope :block
1106
+ result = lexer.line
1107
+ }
1108
+ opt_block_var compstmt kEND
1109
+ {
1110
+ result = new_iter val[2], val[3]
1111
+ pop_scope
1112
+ }
1113
+
1114
+ block_call: command do_block
1115
+ {
1116
+ val[0] << val[1]
1117
+ result = val[0]
1118
+ }
1119
+ | block_call tJSDOT operation2 opt_paren_args
1120
+ | block_call tDOT operation2 opt_paren_args
1121
+ | block_call tCOLON2 operation2 opt_paren_args
1122
+
1123
+ method_call: operation paren_args
1124
+ {
1125
+ result = new_call(nil, val[0], val[1])
1126
+ }
1127
+ | primary_value tDOT operation2 opt_paren_args
1128
+ {
1129
+ result = new_call(val[0], val[2], val[3])
1130
+ }
1131
+ | primary_value tJSDOT operation2 opt_paren_args
1132
+ {
1133
+ result = new_js_call(val[0], val[2], val[3])
1134
+ }
1135
+ | primary_value tDOT paren_args
1136
+ {
1137
+ result = new_call(val[0], [:call, []], val[2])
1138
+ }
1139
+ | primary_value tCOLON2 operation2 paren_args
1140
+ {
1141
+ result = new_call(val[0], val[2], val[3])
1142
+ }
1143
+ | primary_value tCOLON2 operation3
1144
+ {
1145
+ result = new_call(val[0], val[2])
1146
+ }
1147
+ | kSUPER paren_args
1148
+ {
1149
+ result = new_super(val[0], val[1])
1150
+ }
1151
+ | kSUPER
1152
+ {
1153
+ result = new_super(val[0], nil)
1154
+ }
1155
+
1156
+ brace_block: tLCURLY
1157
+ {
1158
+ push_scope :block
1159
+ result = lexer.line
1160
+ }
1161
+ opt_block_var compstmt tRCURLY
1162
+ {
1163
+ result = new_iter val[2], val[3]
1164
+ pop_scope
1165
+ }
1166
+ | kDO
1167
+ {
1168
+ push_scope :block
1169
+ result = lexer.line
1170
+ }
1171
+ opt_block_var compstmt kEND
1172
+ {
1173
+ result = new_iter val[2], val[3]
1174
+ pop_scope
1175
+ }
1176
+
1177
+ case_body: kWHEN
1178
+ {
1179
+ result = lexer.line
1180
+ }
1181
+ args then compstmt cases
1182
+ {
1183
+ part = s(:when, s(:array, *val[2]), val[4])
1184
+ result = [part]
1185
+ result.push(*val[5]) if val[5]
1186
+ }
1187
+
1188
+ cases: opt_else
1189
+ {
1190
+ result = [val[0]]
1191
+ }
1192
+ | case_body
1193
+
1194
+ opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue
1195
+ {
1196
+ exc = val[1] || s(:array)
1197
+ exc << new_assign(val[2], val[2], s(:gvar, '$!'.intern)) if val[2]
1198
+ result = [s(:resbody, exc, val[4])]
1199
+ result.push val[5].first if val[5]
1200
+ }
1201
+ | # none
1202
+ {
1203
+ result = nil
1204
+ }
1205
+
1206
+ exc_list: arg_value
1207
+ {
1208
+ result = s(:array, val[0])
1209
+ }
1210
+ | mrhs
1211
+ | none
1212
+
1213
+ exc_var: tASSOC lhs
1214
+ {
1215
+ result = val[1]
1216
+ }
1217
+ | none
1218
+ {
1219
+ result = nil
1220
+ }
1221
+
1222
+ opt_ensure: kENSURE compstmt
1223
+ {
1224
+ result = val[1].nil? ? s(:nil) : val[1]
1225
+ }
1226
+ | none
1227
+
1228
+ literal: numeric
1229
+ | symbol
1230
+ | dsym
1231
+
1232
+ strings: string
1233
+ {
1234
+ result = new_str val[0]
1235
+ }
1236
+
1237
+ string: string1
1238
+ | string string1
1239
+ {
1240
+ result = str_append val[0], val[1]
1241
+ }
1242
+
1243
+ string1: tSTRING_BEG string_contents tSTRING_END
1244
+ {
1245
+ result = val[1]
1246
+ }
1247
+ | tSTRING
1248
+ {
1249
+ result = s(:str, value(val[0]))
1250
+ }
1251
+
1252
+ xstring: tXSTRING_BEG xstring_contents tSTRING_END
1253
+ {
1254
+ result = new_xstr(val[0], val[1], val[2])
1255
+ }
1256
+
1257
+ regexp: tREGEXP_BEG xstring_contents tREGEXP_END
1258
+ {
1259
+ result = new_regexp val[1], val[2]
1260
+ }
1261
+
1262
+ words: tWORDS_BEG tSPACE tSTRING_END
1263
+ {
1264
+ result = s(:array)
1265
+ }
1266
+ | tWORDS_BEG word_list tSTRING_END
1267
+ {
1268
+ result = val[1]
1269
+ }
1270
+
1271
+ word_list: none
1272
+ {
1273
+ result = s(:array)
1274
+ }
1275
+ | word_list word tSPACE
1276
+ {
1277
+ part = val[1]
1278
+ part = s(:dstr, "", val[1]) if part.type == :evstr
1279
+ result = val[0] << part
1280
+ }
1281
+
1282
+ word: string_content
1283
+ {
1284
+ result = val[0]
1285
+ }
1286
+ | word string_content
1287
+ {
1288
+ result = val[0].concat([val[1]])
1289
+ }
1290
+
1291
+ awords: tAWORDS_BEG tSPACE tSTRING_END
1292
+ {
1293
+ result = s(:array)
1294
+ }
1295
+ | tAWORDS_BEG qword_list tSTRING_END
1296
+ {
1297
+ result = val[1]
1298
+ }
1299
+
1300
+ qword_list: none
1301
+ {
1302
+ result = s(:array)
1303
+ }
1304
+ | qword_list tSTRING_CONTENT tSPACE
1305
+ {
1306
+ result = val[0] << s(:str, value(val[1]))
1307
+ }
1308
+
1309
+ string_contents: none
1310
+ {
1311
+ result = nil
1312
+ }
1313
+ | string_contents string_content
1314
+ {
1315
+ result = str_append val[0], val[1]
1316
+ }
1317
+
1318
+ xstring_contents: none
1319
+ {
1320
+ result = nil
1321
+ }
1322
+ | xstring_contents string_content
1323
+ {
1324
+ result = str_append val[0], val[1]
1325
+ }
1326
+
1327
+ string_content: tSTRING_CONTENT
1328
+ {
1329
+ result = new_str_content(val[0])
1330
+ }
1331
+ | tSTRING_DVAR
1332
+ {
1333
+ result = lexer.strterm
1334
+ lexer.strterm = nil
1335
+ }
1336
+ string_dvar
1337
+ {
1338
+ lexer.strterm = val[1]
1339
+ result = new_evstr(val[2])
1340
+ }
1341
+ | tSTRING_DBEG
1342
+ {
1343
+ lexer.cond_push 0
1344
+ lexer.cmdarg_push 0
1345
+ result = lexer.strterm
1346
+ lexer.strterm = nil
1347
+ lexer.lex_state = :expr_beg
1348
+ }
1349
+ compstmt tRCURLY
1350
+ {
1351
+ lexer.strterm = val[1]
1352
+ lexer.cond_lexpop
1353
+ lexer.cmdarg_lexpop
1354
+ result = new_evstr(val[2])
1355
+ }
1356
+
1357
+ string_dvar: tGVAR
1358
+ {
1359
+ result = new_gvar(val[0])
1360
+ }
1361
+ | tIVAR
1362
+ {
1363
+ result = new_ivar(val[0])
1364
+ }
1365
+ | tCVAR
1366
+ {
1367
+ result = new_cvar(val[0])
1368
+ }
1369
+ | backref
1370
+
1371
+
1372
+ symbol: tSYMBEG sym
1373
+ {
1374
+ result = new_sym(val[1])
1375
+ lexer.lex_state = :expr_end
1376
+ }
1377
+ | tSYMBOL
1378
+ {
1379
+ result = new_sym(val[0])
1380
+ }
1381
+
1382
+ sym: fname
1383
+ | tIVAR
1384
+ | tGVAR
1385
+ | tCVAR
1386
+
1387
+ dsym: tSYMBEG xstring_contents tSTRING_END
1388
+ {
1389
+ result = new_dsym val[1]
1390
+ }
1391
+
1392
+ numeric: tINTEGER
1393
+ {
1394
+ result = new_int(val[0])
1395
+ }
1396
+ | tFLOAT
1397
+ {
1398
+ result = new_float(val[0])
1399
+ }
1400
+ | '-@NUM' tINTEGER =tLOWEST
1401
+ {
1402
+ result = negate_num(new_int(val[1]))
1403
+ }
1404
+ | '-@NUM' tFLOAT =tLOWEST
1405
+ {
1406
+ result = negate_num(new_float(val[1]))
1407
+ }
1408
+ | '+@NUM' tINTEGER =tLOWEST
1409
+ {
1410
+ result = new_int(val[1])
1411
+ }
1412
+ | '+@NUM' tFLOAT =tLOWEST
1413
+ {
1414
+ result = new_float(val[1])
1415
+ }
1416
+
1417
+ variable: tIDENTIFIER
1418
+ {
1419
+ result = new_ident(val[0])
1420
+ }
1421
+ | tIVAR
1422
+ {
1423
+ result = new_ivar(val[0])
1424
+ }
1425
+ | tGVAR
1426
+ {
1427
+ result = new_gvar(val[0])
1428
+ }
1429
+ | tCONSTANT
1430
+ {
1431
+ result = new_const(val[0])
1432
+ }
1433
+ | tCVAR
1434
+ {
1435
+ result = new_cvar(val[0])
1436
+ }
1437
+ | kNIL
1438
+ {
1439
+ result = new_nil(val[0])
1440
+ }
1441
+ | kSELF
1442
+ {
1443
+ result = new_self(val[0])
1444
+ }
1445
+ | kTRUE
1446
+ {
1447
+ result = new_true(val[0])
1448
+ }
1449
+ | kFALSE
1450
+ {
1451
+ result = new_false(val[0])
1452
+ }
1453
+ | k__FILE__
1454
+ {
1455
+ result = new___FILE__(val[0])
1456
+ }
1457
+ | k__LINE__
1458
+ {
1459
+ result = new___LINE__(val[0])
1460
+ }
1461
+
1462
+ var_ref: variable
1463
+ {
1464
+ result = new_var_ref(val[0])
1465
+ }
1466
+
1467
+ var_lhs: variable
1468
+ {
1469
+ result = new_assignable val[0]
1470
+ }
1471
+
1472
+ backref: tNTH_REF
1473
+ {
1474
+ result = s(:nth_ref, value(val[0]))
1475
+ }
1476
+ | tBACK_REF
1477
+
1478
+ superclass: term
1479
+ {
1480
+ result = nil
1481
+ }
1482
+ | tLT expr_value term
1483
+ {
1484
+ result = val[1]
1485
+ }
1486
+ | error term
1487
+ {
1488
+ result = nil
1489
+ }
1490
+
1491
+ f_arglist: tLPAREN2 f_args opt_nl tRPAREN
1492
+ {
1493
+ result = val[1]
1494
+ lexer.lex_state = :expr_beg
1495
+ }
1496
+ | f_args term
1497
+ {
1498
+ result = val[0]
1499
+ lexer.lex_state = :expr_beg
1500
+ }
1501
+
1502
+ kwrest_mark: tPOW
1503
+ | tDSTAR
1504
+
1505
+ f_kwrest: kwrest_mark tIDENTIFIER
1506
+ {
1507
+ result = new_kwrestarg(val[1])
1508
+ }
1509
+ | kwrest_mark
1510
+ {
1511
+ result = new_kwrestarg()
1512
+ }
1513
+
1514
+ f_label: tLABEL
1515
+ {
1516
+ result = new_sym(val[0])
1517
+ }
1518
+
1519
+ f_kw: f_label arg_value
1520
+ {
1521
+ result = new_kwoptarg(val[0], val[1])
1522
+ }
1523
+ | f_label
1524
+ {
1525
+ result = new_kwarg(val[0])
1526
+ }
1527
+
1528
+ f_kwarg: f_kw
1529
+ {
1530
+ result = [val[0]]
1531
+ }
1532
+ | f_kwarg tCOMMA f_kw
1533
+ {
1534
+ result = val[0]
1535
+ result << val[2]
1536
+ }
1537
+
1538
+ args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg
1539
+ {
1540
+ result = new_args_tail(val[0], val[2], val[3])
1541
+ }
1542
+ | f_kwarg opt_f_block_arg
1543
+ {
1544
+ result = new_args_tail(val[0], nil, val[1])
1545
+ }
1546
+ | f_kwrest opt_f_block_arg
1547
+ {
1548
+ result = new_args_tail(nil, val[0], val[1])
1549
+ }
1550
+ | f_block_arg
1551
+ {
1552
+ result = new_args_tail(nil, nil, val[0])
1553
+ }
1554
+
1555
+ opt_args_tail: tCOMMA args_tail
1556
+ {
1557
+ result = val[1]
1558
+ }
1559
+ | # none
1560
+ {
1561
+ result = new_args_tail(nil, nil, nil)
1562
+ }
1563
+
1564
+ f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail
1565
+ {
1566
+ result = new_args(val[0], val[2], val[4], val[5])
1567
+ }
1568
+ | f_arg tCOMMA f_optarg opt_args_tail
1569
+ {
1570
+ result = new_args(val[0], val[2], nil, val[3])
1571
+ }
1572
+ | f_arg tCOMMA f_rest_arg opt_args_tail
1573
+ {
1574
+ result = new_args(val[0], nil, val[2], val[3])
1575
+ }
1576
+ | f_arg opt_args_tail
1577
+ {
1578
+ result = new_args(val[0], nil, nil, val[1])
1579
+ }
1580
+ | f_optarg tCOMMA f_rest_arg opt_args_tail
1581
+ {
1582
+ result = new_args(nil, val[0], val[2], val[3])
1583
+ }
1584
+ | f_optarg opt_args_tail
1585
+ {
1586
+ result = new_args(nil, val[0], nil, val[1])
1587
+ }
1588
+ | f_rest_arg opt_args_tail
1589
+ {
1590
+ result = new_args(nil, nil, val[0], val[1])
1591
+ }
1592
+ | args_tail
1593
+ {
1594
+ result = new_args(nil, nil, nil, val[0])
1595
+ }
1596
+ | # none
1597
+ {
1598
+ result = new_args(nil, nil, nil, nil)
1599
+ }
1600
+
1601
+ f_norm_arg: f_bad_arg
1602
+ | tIDENTIFIER
1603
+ {
1604
+ result = value(val[0]).to_sym
1605
+ scope.add_local result
1606
+ }
1607
+
1608
+ f_bad_arg: tCONSTANT
1609
+ {
1610
+ raise 'formal argument cannot be a constant'
1611
+ }
1612
+ | tIVAR
1613
+ {
1614
+ raise 'formal argument cannot be an instance variable'
1615
+ }
1616
+ | tCVAR
1617
+ {
1618
+ raise 'formal argument cannot be a class variable'
1619
+ }
1620
+ | tGVAR
1621
+ {
1622
+ raise 'formal argument cannot be a global variable'
1623
+ }
1624
+
1625
+ f_arg_item: f_norm_arg
1626
+ {
1627
+ result = val[0]
1628
+ }
1629
+ | tLPAREN f_margs tRPAREN
1630
+ {
1631
+ result = val[1]
1632
+ }
1633
+
1634
+ for_var: lhs
1635
+ | mlhs
1636
+
1637
+ f_marg: f_norm_arg
1638
+ {
1639
+ result = s(:lasgn, val[0])
1640
+ }
1641
+ | tLPAREN f_margs tRPAREN
1642
+
1643
+ f_marg_list: f_marg
1644
+ {
1645
+ result = s(:array, val[0])
1646
+ }
1647
+ | f_marg_list tCOMMA f_marg
1648
+ {
1649
+ val[0] << val[2]
1650
+ result = val[0]
1651
+ }
1652
+
1653
+ f_margs: f_marg_list
1654
+ | f_marg_list tCOMMA tSTAR f_norm_arg
1655
+ | f_marg_list tCOMMA tSTAR
1656
+ | tSTAR f_norm_arg
1657
+ | tSTAR
1658
+
1659
+ f_arg: f_arg_item
1660
+ {
1661
+ result = [val[0]]
1662
+ }
1663
+ | f_arg tCOMMA f_arg_item
1664
+ {
1665
+ val[0] << val[2]
1666
+ result = val[0]
1667
+ }
1668
+
1669
+ f_opt: tIDENTIFIER tEQL arg_value
1670
+ {
1671
+ result = new_assign(new_assignable(new_ident(val[0])), val[1], val[2])
1672
+ }
1673
+
1674
+ f_optarg: f_opt
1675
+ {
1676
+ result = s(:block, val[0])
1677
+ }
1678
+ | f_optarg tCOMMA f_opt
1679
+ {
1680
+ result = val[0]
1681
+ val[0] << val[2]
1682
+ }
1683
+
1684
+ restarg_mark: tSTAR2
1685
+ | tSTAR
1686
+
1687
+ f_rest_arg: restarg_mark tIDENTIFIER
1688
+ {
1689
+ result = "*#{value(val[1])}".to_sym
1690
+ }
1691
+ | restarg_mark
1692
+ {
1693
+ result = :"*"
1694
+ }
1695
+
1696
+ blkarg_mark: tAMPER2
1697
+ | tAMPER
1698
+
1699
+ f_block_arg: blkarg_mark tIDENTIFIER
1700
+ {
1701
+ result = "&#{value(val[1])}".to_sym
1702
+ }
1703
+
1704
+ opt_f_block_arg: tCOMMA f_block_arg
1705
+ {
1706
+ result = val[1]
1707
+ }
1708
+ | # none
1709
+ {
1710
+ result = nil
1711
+ }
1712
+
1713
+ singleton: var_ref
1714
+ {
1715
+ result = val[0]
1716
+ }
1717
+ | tLPAREN2 expr opt_nl tRPAREN
1718
+ {
1719
+ result = val[1]
1720
+ }
1721
+
1722
+ assoc_list: # none
1723
+ {
1724
+ result = []
1725
+ }
1726
+ | assocs trailer
1727
+ {
1728
+ result = val[0]
1729
+ }
1730
+
1731
+ assocs: assoc
1732
+ {
1733
+ result = val[0]
1734
+ }
1735
+ | assocs tCOMMA assoc
1736
+ {
1737
+ result = val[0].push(*val[2])
1738
+ }
1739
+
1740
+ assoc: arg_value tASSOC arg_value
1741
+ {
1742
+ result = [val[0], val[2]]
1743
+ }
1744
+ | tLABEL arg_value
1745
+ {
1746
+ result = [new_sym(val[0]), val[1]]
1747
+ }
1748
+
1749
+ operation: tIDENTIFIER
1750
+ | tCONSTANT
1751
+ | tFID
1752
+
1753
+ operation2: tIDENTIFIER
1754
+ | tCONSTANT
1755
+ | tFID
1756
+ | op
1757
+
1758
+ operation3: tIDENTIFIER
1759
+ | tFID
1760
+ | op
1761
+
1762
+ dot_or_colon: tDOT
1763
+ | tCOLON2
1764
+
1765
+ opt_terms: # none
1766
+ | terms
1767
+
1768
+ opt_nl: # none
1769
+ | tNL
1770
+
1771
+ trailer: # none
1772
+ | tNL
1773
+ | tCOMMA
1774
+
1775
+ term: tSEMI
1776
+ | tNL
1777
+
1778
+ terms: term
1779
+ | terms tSEMI
1780
+
1781
+ none: # none
1782
+ {
1783
+ result = nil
1784
+ }
1785
+ end
1786
+
1787
+ ---- inner