opal 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (734) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +19 -0
  3. data/.gitmodules +1 -1
  4. data/.jshintrc +1 -2
  5. data/.rspec +1 -2
  6. data/.travis.yml +42 -20
  7. data/.yardopts +3 -1
  8. data/CHANGELOG.md +164 -1
  9. data/Gemfile +16 -9
  10. data/HACKING.md +4 -2
  11. data/README.md +11 -11
  12. data/Rakefile +1 -1
  13. data/appveyor.yml +29 -0
  14. data/benchmark/bm_constant_lookup_big.rb +799 -0
  15. data/benchmark/bm_constant_lookup_small.rb +59 -0
  16. data/benchmark/bm_module_definition_big.rb +400 -0
  17. data/benchmark/bm_module_definition_small.rb +30 -0
  18. data/benchmark-ips/bm_case.rb +33 -0
  19. data/benchmark-ips/bm_constants_lookup.rb +13 -0
  20. data/benchmark-ips/bm_is_number.rb +29 -0
  21. data/benchmark-ips/bm_symbol_to_proc.rb +19 -0
  22. data/bin +1 -0
  23. data/docs/compiled_ruby.md +16 -14
  24. data/docs/faq.md +3 -3
  25. data/docs/headless_chrome.md +105 -0
  26. data/docs/rspec.md +4 -20
  27. data/docs/unsupported_features.md +6 -4
  28. data/examples/rack/Gemfile +1 -0
  29. data/examples/rack/Gemfile.lock +11 -7
  30. data/examples/rack/app/application.rb +14 -3
  31. data/examples/rack/app/user.rb +2 -0
  32. data/examples/rack/config.ru +1 -1
  33. data/examples/rack/index.html.erb +1 -0
  34. data/examples/sinatra/Gemfile +1 -1
  35. data/examples/sinatra/Gemfile.lock +8 -11
  36. data/examples/sinatra/app/application.rb +2 -0
  37. data/{bin → exe}/opal +4 -2
  38. data/{bin → exe}/opal-repl +23 -1
  39. data/lib/opal/ast/builder.rb +13 -0
  40. data/lib/opal/ast/node.rb +30 -0
  41. data/lib/opal/builder.rb +82 -17
  42. data/lib/opal/builder_processors.rb +9 -7
  43. data/lib/opal/cli.rb +45 -59
  44. data/lib/opal/cli_options.rb +19 -12
  45. data/lib/opal/cli_runners/applescript.rb +3 -4
  46. data/lib/opal/cli_runners/chrome.js +135 -0
  47. data/lib/opal/cli_runners/chrome.rb +100 -0
  48. data/lib/opal/cli_runners/nashorn.rb +1 -1
  49. data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
  50. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
  51. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
  52. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
  53. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
  54. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
  55. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
  56. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
  57. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
  58. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
  59. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
  60. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
  61. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
  62. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
  63. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
  64. data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
  65. data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
  66. data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
  67. data/{stdlib/nodejs/node_modules/js-yaml/node_modules/argparse → lib/opal/cli_runners/node_modules/ultron}/LICENSE +7 -6
  68. data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
  69. data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
  70. data/{stdlib/nodejs/node_modules/js-yaml → lib/opal/cli_runners/node_modules/ws}/LICENSE +6 -6
  71. data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
  72. data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
  73. data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
  74. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
  75. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
  76. data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
  77. data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
  78. data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
  79. data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
  80. data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
  81. data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
  82. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
  83. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
  84. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
  85. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
  86. data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
  87. data/lib/opal/cli_runners/nodejs.rb +4 -2
  88. data/lib/opal/cli_runners/package.json +5 -0
  89. data/lib/opal/cli_runners/server.rb +1 -1
  90. data/lib/opal/cli_runners.rb +2 -1
  91. data/lib/opal/compiler.rb +136 -95
  92. data/lib/opal/config.rb +114 -36
  93. data/lib/opal/deprecations.rb +18 -0
  94. data/lib/opal/eof_content.rb +36 -0
  95. data/lib/opal/erb.rb +1 -0
  96. data/lib/opal/errors.rb +1 -0
  97. data/lib/opal/fragment.rb +1 -0
  98. data/lib/opal/nodes/arglist.rb +2 -1
  99. data/lib/opal/nodes/args/initialize_kwargs.rb +1 -0
  100. data/lib/opal/nodes/args/kwarg.rb +9 -7
  101. data/lib/opal/nodes/args/kwoptarg.rb +13 -8
  102. data/lib/opal/nodes/args/kwrestarg.rb +5 -5
  103. data/lib/opal/nodes/args/mlhsarg.rb +3 -2
  104. data/lib/opal/nodes/args/normarg.rb +6 -7
  105. data/lib/opal/nodes/args/optarg.rb +5 -7
  106. data/lib/opal/nodes/args/post_args.rb +6 -5
  107. data/lib/opal/nodes/args/post_kwargs.rb +1 -0
  108. data/lib/opal/nodes/args/restarg.rb +7 -7
  109. data/lib/opal/nodes/array.rb +1 -0
  110. data/lib/opal/nodes/base.rb +24 -3
  111. data/lib/opal/nodes/call.rb +168 -155
  112. data/lib/opal/nodes/call_special.rb +37 -214
  113. data/lib/opal/nodes/case.rb +36 -22
  114. data/lib/opal/nodes/class.rb +4 -3
  115. data/lib/opal/nodes/constants.rb +28 -48
  116. data/lib/opal/nodes/csend.rb +25 -0
  117. data/lib/opal/nodes/def.rb +57 -17
  118. data/lib/opal/nodes/defined.rb +170 -60
  119. data/lib/opal/nodes/definitions.rb +42 -133
  120. data/lib/opal/nodes/defs.rb +29 -0
  121. data/lib/opal/nodes/hash.rb +12 -35
  122. data/lib/opal/nodes/helpers.rb +31 -62
  123. data/lib/opal/nodes/if.rb +21 -32
  124. data/lib/opal/nodes/inline_args.rb +12 -13
  125. data/lib/opal/nodes/iter.rb +61 -36
  126. data/lib/opal/nodes/literal.rb +206 -114
  127. data/lib/opal/nodes/logic.rb +39 -57
  128. data/lib/opal/nodes/masgn.rb +20 -18
  129. data/lib/opal/nodes/module.rb +10 -11
  130. data/lib/opal/nodes/node_with_args.rb +15 -18
  131. data/lib/opal/nodes/rescue.rb +37 -70
  132. data/lib/opal/nodes/runtime_helpers.rb +8 -3
  133. data/lib/opal/nodes/scope.rb +10 -5
  134. data/lib/opal/nodes/singleton_class.rb +4 -3
  135. data/lib/opal/nodes/super.rb +112 -88
  136. data/lib/opal/nodes/top.rb +7 -2
  137. data/lib/opal/nodes/variables.rb +57 -35
  138. data/lib/opal/nodes/while.rb +11 -1
  139. data/lib/opal/nodes/yield.rb +1 -17
  140. data/lib/opal/nodes.rb +3 -1
  141. data/lib/opal/parser.rb +29 -766
  142. data/lib/opal/path_reader.rb +22 -5
  143. data/lib/opal/paths.rb +10 -4
  144. data/lib/opal/regexp_anchors.rb +1 -0
  145. data/lib/opal/rewriter.rb +64 -0
  146. data/lib/opal/rewriters/base.rb +63 -0
  147. data/lib/opal/rewriters/binary_operator_assignment.rb +141 -0
  148. data/lib/opal/rewriters/block_to_iter.rb +17 -0
  149. data/lib/opal/rewriters/break_finder.rb +34 -0
  150. data/lib/opal/rewriters/dot_js_syntax.rb +60 -0
  151. data/lib/opal/rewriters/explicit_writer_return.rb +58 -0
  152. data/lib/opal/rewriters/for_rewriter.rb +93 -0
  153. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
  154. data/lib/opal/rewriters/js_reserved_words.rb +108 -0
  155. data/lib/opal/rewriters/logical_operator_assignment.rb +154 -0
  156. data/lib/opal/rewriters/opal_engine_check.rb +42 -0
  157. data/lib/opal/rewriters/rubyspec/filters_rewriter.rb +67 -0
  158. data/lib/opal/server.rb +4 -0
  159. data/lib/opal/simple_server.rb +101 -0
  160. data/lib/opal/source_map.rb +1 -1
  161. data/lib/opal/util.rb +6 -6
  162. data/lib/opal/version.rb +2 -1
  163. data/lib/opal.rb +7 -1
  164. data/lib/tilt/opal.rb +1 -0
  165. data/opal/README.md +1 -1
  166. data/opal/corelib/array.rb +184 -107
  167. data/opal/corelib/basic_object.rb +6 -6
  168. data/opal/corelib/boolean.rb +11 -3
  169. data/opal/corelib/class.rb +14 -11
  170. data/opal/corelib/comparable.rb +16 -0
  171. data/opal/corelib/complex.rb +5 -1
  172. data/opal/corelib/constants.rb +3 -3
  173. data/opal/corelib/enumerable.rb +176 -11
  174. data/opal/corelib/error.rb +35 -17
  175. data/opal/corelib/file.rb +114 -176
  176. data/opal/corelib/hash.rb +226 -13
  177. data/opal/corelib/helpers.rb +12 -15
  178. data/opal/corelib/io.rb +3 -2
  179. data/opal/corelib/kernel.rb +68 -32
  180. data/opal/corelib/marshal/read_buffer.rb +288 -150
  181. data/opal/corelib/marshal/write_buffer.rb +27 -2
  182. data/opal/corelib/method.rb +33 -13
  183. data/opal/corelib/module.rb +134 -82
  184. data/opal/corelib/nil.rb +11 -3
  185. data/opal/corelib/number.rb +220 -34
  186. data/opal/corelib/numeric.rb +3 -11
  187. data/opal/corelib/process.rb +44 -4
  188. data/opal/corelib/random/seedrandom.js.rb +15 -0
  189. data/opal/corelib/random.rb +117 -0
  190. data/opal/corelib/range.rb +147 -24
  191. data/opal/corelib/regexp.rb +82 -13
  192. data/opal/corelib/runtime.js +623 -397
  193. data/opal/corelib/string/encoding.rb +67 -31
  194. data/opal/corelib/string/inheritance.rb +1 -1
  195. data/opal/corelib/string.rb +40 -9
  196. data/opal/corelib/struct.rb +18 -3
  197. data/opal/corelib/time.rb +3 -3
  198. data/opal/corelib/variables.rb +1 -1
  199. data/opal/opal.rb +1 -0
  200. data/opal.gemspec +32 -29
  201. data/stdlib/base64.rb +4 -2
  202. data/stdlib/bigdecimal/bignumber.js.rb +1 -1
  203. data/stdlib/buffer/array.rb +4 -2
  204. data/stdlib/date.rb +64 -31
  205. data/stdlib/headless_chrome.rb +11 -0
  206. data/stdlib/json.rb +16 -4
  207. data/stdlib/nashorn/file.rb +15 -0
  208. data/stdlib/native.rb +21 -12
  209. data/stdlib/nodejs/dir.rb +1 -1
  210. data/stdlib/nodejs/file.rb +77 -23
  211. data/stdlib/nodejs/io.rb +30 -1
  212. data/stdlib/nodejs/{node_modules/js-yaml/dist/js-yaml.js → js-yaml-3-6-1.js} +815 -626
  213. data/stdlib/nodejs/kernel.rb +3 -1
  214. data/stdlib/nodejs/package.json +0 -1
  215. data/stdlib/nodejs/stacktrace.rb +179 -0
  216. data/stdlib/nodejs/yaml.rb +2 -1
  217. data/stdlib/opal/platform.rb +6 -14
  218. data/stdlib/opal-builder.rb +1 -0
  219. data/stdlib/opal-platform.rb +15 -0
  220. data/stdlib/pathname.rb +1 -1
  221. data/stdlib/rbconfig.rb +1 -1
  222. data/stdlib/securerandom.rb +1 -1
  223. data/stdlib/strscan.rb +15 -1
  224. data/stdlib/yaml.rb +1 -1
  225. data/tasks/benchmarking.rake +9 -0
  226. data/tasks/building.rake +24 -20
  227. data/tasks/linting.rake +24 -13
  228. data/tasks/testing/mspec_special_calls.rb +44 -15
  229. data/tasks/testing/opal_rspec_smoketest.Gemfile +6 -0
  230. data/tasks/testing.rake +351 -202
  231. metadata +135 -915
  232. data/lib/opal/cli_runners/phantom.js +0 -70
  233. data/lib/opal/cli_runners/phantomjs.rb +0 -28
  234. data/lib/opal/hike_path_finder.rb +0 -18
  235. data/lib/opal/nodes/for.rb +0 -48
  236. data/lib/opal/parser/grammar.rb +0 -6157
  237. data/lib/opal/parser/grammar.y +0 -2011
  238. data/lib/opal/parser/keywords.rb +0 -66
  239. data/lib/opal/parser/lexer.rb +0 -1352
  240. data/lib/opal/parser/parser_scope.rb +0 -28
  241. data/lib/opal/parser/sexp.rb +0 -90
  242. data/lib/opal/sprockets/environment.rb +0 -23
  243. data/lib/opal/sprockets/erb.rb +0 -23
  244. data/lib/opal/sprockets/path_reader.rb +0 -36
  245. data/lib/opal/sprockets/processor.rb +0 -145
  246. data/lib/opal/sprockets/server.rb +0 -133
  247. data/lib/opal/sprockets/source_map_header_patch.rb +0 -41
  248. data/lib/opal/sprockets/source_map_server.rb +0 -115
  249. data/lib/opal/sprockets.rb +0 -91
  250. data/spec/README.md +0 -10
  251. data/spec/filters/bugs/array.rb +0 -12
  252. data/spec/filters/bugs/basicobject.rb +0 -16
  253. data/spec/filters/bugs/bigdecimal.rb +0 -160
  254. data/spec/filters/bugs/class.rb +0 -10
  255. data/spec/filters/bugs/compiler_opal.rb +0 -5
  256. data/spec/filters/bugs/complex.rb +0 -3
  257. data/spec/filters/bugs/date.rb +0 -94
  258. data/spec/filters/bugs/enumerable.rb +0 -50
  259. data/spec/filters/bugs/enumerator.rb +0 -42
  260. data/spec/filters/bugs/exception.rb +0 -58
  261. data/spec/filters/bugs/float.rb +0 -33
  262. data/spec/filters/bugs/hash.rb +0 -11
  263. data/spec/filters/bugs/inheritance.rb +0 -5
  264. data/spec/filters/bugs/integer.rb +0 -28
  265. data/spec/filters/bugs/kernel.rb +0 -297
  266. data/spec/filters/bugs/language.rb +0 -275
  267. data/spec/filters/bugs/language_opal.rb +0 -88
  268. data/spec/filters/bugs/marshal.rb +0 -43
  269. data/spec/filters/bugs/method.rb +0 -84
  270. data/spec/filters/bugs/module.rb +0 -196
  271. data/spec/filters/bugs/numeric.rb +0 -127
  272. data/spec/filters/bugs/pathname.rb +0 -5
  273. data/spec/filters/bugs/proc.rb +0 -36
  274. data/spec/filters/bugs/range.rb +0 -144
  275. data/spec/filters/bugs/rational.rb +0 -4
  276. data/spec/filters/bugs/regexp.rb +0 -196
  277. data/spec/filters/bugs/set.rb +0 -42
  278. data/spec/filters/bugs/singleton.rb +0 -6
  279. data/spec/filters/bugs/string.rb +0 -101
  280. data/spec/filters/bugs/stringscanner.rb +0 -79
  281. data/spec/filters/bugs/struct.rb +0 -4
  282. data/spec/filters/bugs/time.rb +0 -29
  283. data/spec/filters/bugs/unboundmethod.rb +0 -27
  284. data/spec/filters/unsupported/array.rb +0 -163
  285. data/spec/filters/unsupported/basicobject.rb +0 -14
  286. data/spec/filters/unsupported/bignum.rb +0 -52
  287. data/spec/filters/unsupported/class.rb +0 -4
  288. data/spec/filters/unsupported/delegator.rb +0 -5
  289. data/spec/filters/unsupported/enumerable.rb +0 -11
  290. data/spec/filters/unsupported/enumerator.rb +0 -13
  291. data/spec/filters/unsupported/fixnum.rb +0 -14
  292. data/spec/filters/unsupported/float.rb +0 -43
  293. data/spec/filters/unsupported/freeze.rb +0 -53
  294. data/spec/filters/unsupported/hash.rb +0 -51
  295. data/spec/filters/unsupported/integer.rb +0 -3
  296. data/spec/filters/unsupported/kernel.rb +0 -31
  297. data/spec/filters/unsupported/language.rb +0 -17
  298. data/spec/filters/unsupported/marshal.rb +0 -46
  299. data/spec/filters/unsupported/matchdata.rb +0 -30
  300. data/spec/filters/unsupported/math.rb +0 -3
  301. data/spec/filters/unsupported/module.rb +0 -8
  302. data/spec/filters/unsupported/pathname.rb +0 -3
  303. data/spec/filters/unsupported/privacy.rb +0 -147
  304. data/spec/filters/unsupported/proc.rb +0 -3
  305. data/spec/filters/unsupported/regexp.rb +0 -59
  306. data/spec/filters/unsupported/set.rb +0 -4
  307. data/spec/filters/unsupported/singleton.rb +0 -6
  308. data/spec/filters/unsupported/string.rb +0 -537
  309. data/spec/filters/unsupported/struct.rb +0 -6
  310. data/spec/filters/unsupported/symbol.rb +0 -19
  311. data/spec/filters/unsupported/taint.rb +0 -15
  312. data/spec/filters/unsupported/thread.rb +0 -7
  313. data/spec/filters/unsupported/time.rb +0 -202
  314. data/spec/lib/builder_processors_spec.rb +0 -27
  315. data/spec/lib/builder_spec.rb +0 -72
  316. data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
  317. data/spec/lib/cli_spec.rb +0 -211
  318. data/spec/lib/compiler/call_spec.rb +0 -700
  319. data/spec/lib/compiler/pre_processed_conditionals_spec.rb +0 -87
  320. data/spec/lib/compiler_spec.rb +0 -285
  321. data/spec/lib/config_spec.rb +0 -13
  322. data/spec/lib/dependency_resolver_spec.rb +0 -40
  323. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
  324. data/spec/lib/fixtures/file_with_directives.js +0 -2
  325. data/spec/lib/fixtures/jst_file.js.jst +0 -1
  326. data/spec/lib/fixtures/no_requires.rb +0 -1
  327. data/spec/lib/fixtures/opal_file.rb +0 -2
  328. data/spec/lib/fixtures/require_tree_test.rb +0 -3
  329. data/spec/lib/fixtures/required_file.js +0 -1
  330. data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
  331. data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
  332. data/spec/lib/fixtures/requires.rb +0 -7
  333. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
  334. data/spec/lib/fixtures/source_map.rb +0 -1
  335. data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
  336. data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
  337. data/spec/lib/hike_path_finder_spec.rb +0 -23
  338. data/spec/lib/lexer_spec.rb +0 -110
  339. data/spec/lib/parser/alias_spec.rb +0 -26
  340. data/spec/lib/parser/and_spec.rb +0 -13
  341. data/spec/lib/parser/aref_spec.rb +0 -10
  342. data/spec/lib/parser/attrasgn_spec.rb +0 -28
  343. data/spec/lib/parser/begin_spec.rb +0 -42
  344. data/spec/lib/parser/block_spec.rb +0 -12
  345. data/spec/lib/parser/break_spec.rb +0 -17
  346. data/spec/lib/parser/call_spec.rb +0 -201
  347. data/spec/lib/parser/class_spec.rb +0 -35
  348. data/spec/lib/parser/comments_spec.rb +0 -11
  349. data/spec/lib/parser/def_spec.rb +0 -109
  350. data/spec/lib/parser/if_spec.rb +0 -26
  351. data/spec/lib/parser/iter_spec.rb +0 -59
  352. data/spec/lib/parser/lambda_spec.rb +0 -219
  353. data/spec/lib/parser/literal_spec.rb +0 -118
  354. data/spec/lib/parser/masgn_spec.rb +0 -37
  355. data/spec/lib/parser/module_spec.rb +0 -27
  356. data/spec/lib/parser/not_spec.rb +0 -21
  357. data/spec/lib/parser/op_asgn1_spec.rb +0 -23
  358. data/spec/lib/parser/op_asgn2_spec.rb +0 -23
  359. data/spec/lib/parser/op_asgn_spec.rb +0 -17
  360. data/spec/lib/parser/or_spec.rb +0 -13
  361. data/spec/lib/parser/return_spec.rb +0 -22
  362. data/spec/lib/parser/sclass_spec.rb +0 -21
  363. data/spec/lib/parser/string_spec.rb +0 -286
  364. data/spec/lib/parser/super_spec.rb +0 -20
  365. data/spec/lib/parser/unary_spec.rb +0 -52
  366. data/spec/lib/parser/undef_spec.rb +0 -19
  367. data/spec/lib/parser/unless_spec.rb +0 -13
  368. data/spec/lib/parser/variables_spec.rb +0 -116
  369. data/spec/lib/parser/while_spec.rb +0 -15
  370. data/spec/lib/parser/yield_spec.rb +0 -20
  371. data/spec/lib/path_reader_spec.rb +0 -36
  372. data/spec/lib/paths_spec.rb +0 -18
  373. data/spec/lib/shared/path_finder_shared.rb +0 -19
  374. data/spec/lib/shared/path_reader_shared.rb +0 -31
  375. data/spec/lib/spec_helper.rb +0 -16
  376. data/spec/lib/sprockets/erb_spec.rb +0 -38
  377. data/spec/lib/sprockets/path_reader_spec.rb +0 -41
  378. data/spec/lib/sprockets/processor_spec.rb +0 -79
  379. data/spec/lib/sprockets/server_spec.rb +0 -102
  380. data/spec/lib/sprockets_spec.rb +0 -32
  381. data/spec/lib/tilt/opal_spec.rb +0 -37
  382. data/spec/mspec-opal/formatters.rb +0 -188
  383. data/spec/mspec-opal/runner.rb +0 -193
  384. data/spec/opal/compiler/irb_spec.rb +0 -44
  385. data/spec/opal/core/arity_spec.rb +0 -142
  386. data/spec/opal/core/array/intersection_spec.rb +0 -38
  387. data/spec/opal/core/array/minus_spec.rb +0 -38
  388. data/spec/opal/core/array/select_spec.rb +0 -14
  389. data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
  390. data/spec/opal/core/array/union_spec.rb +0 -38
  391. data/spec/opal/core/array/uniq_spec.rb +0 -49
  392. data/spec/opal/core/date_spec.rb +0 -177
  393. data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
  394. data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
  395. data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
  396. data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
  397. data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
  398. data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
  399. data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
  400. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
  401. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
  402. data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
  403. data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
  404. data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
  405. data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
  406. data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
  407. data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
  408. data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
  409. data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
  410. data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
  411. data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
  412. data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
  413. data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
  414. data/spec/opal/core/exception_spec.rb +0 -20
  415. data/spec/opal/core/fixtures/class.rb +0 -124
  416. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  417. data/spec/opal/core/fixtures/constants.rb +0 -33
  418. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
  419. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
  420. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
  421. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
  422. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
  423. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
  424. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
  425. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
  426. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
  427. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
  428. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
  429. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
  430. data/spec/opal/core/hash/has_value_spec.rb +0 -13
  431. data/spec/opal/core/hash/internals_spec.rb +0 -332
  432. data/spec/opal/core/helpers_spec.rb +0 -14
  433. data/spec/opal/core/kernel/Array_spec.rb +0 -10
  434. data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
  435. data/spec/opal/core/kernel/block_given_spec.rb +0 -30
  436. data/spec/opal/core/kernel/class_spec.rb +0 -6
  437. data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
  438. data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
  439. data/spec/opal/core/kernel/extend_spec.rb +0 -21
  440. data/spec/opal/core/kernel/format_spec.rb +0 -122
  441. data/spec/opal/core/kernel/freeze_spec.rb +0 -15
  442. data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
  443. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
  444. data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
  445. data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
  446. data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
  447. data/spec/opal/core/kernel/loop_spec.rb +0 -23
  448. data/spec/opal/core/kernel/match_spec.rb +0 -5
  449. data/spec/opal/core/kernel/method_spec.rb +0 -31
  450. data/spec/opal/core/kernel/methods_spec.rb +0 -25
  451. data/spec/opal/core/kernel/nil_spec.rb +0 -7
  452. data/spec/opal/core/kernel/p_spec.rb +0 -15
  453. data/spec/opal/core/kernel/printf_spec.rb +0 -11
  454. data/spec/opal/core/kernel/proc_spec.rb +0 -13
  455. data/spec/opal/core/kernel/raise_spec.rb +0 -13
  456. data/spec/opal/core/kernel/rand_spec.rb +0 -23
  457. data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
  458. data/spec/opal/core/kernel/respond_to_spec.rb +0 -41
  459. data/spec/opal/core/kernel/send_spec.rb +0 -56
  460. data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
  461. data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
  462. data/spec/opal/core/language/block_spec.rb +0 -538
  463. data/spec/opal/core/language/class_spec.rb +0 -55
  464. data/spec/opal/core/language/equal_spec.rb +0 -8
  465. data/spec/opal/core/language/fixtures/array.rb +0 -11
  466. data/spec/opal/core/language/fixtures/block.rb +0 -57
  467. data/spec/opal/core/language/fixtures/break.rb +0 -240
  468. data/spec/opal/core/language/fixtures/ensure.rb +0 -72
  469. data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
  470. data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
  471. data/spec/opal/core/language/fixtures/module.rb +0 -24
  472. data/spec/opal/core/language/fixtures/next.rb +0 -128
  473. data/spec/opal/core/language/fixtures/return.rb +0 -118
  474. data/spec/opal/core/language/fixtures/send.rb +0 -111
  475. data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
  476. data/spec/opal/core/language/fixtures/super.rb +0 -308
  477. data/spec/opal/core/language/fixtures/variables.rb +0 -58
  478. data/spec/opal/core/language/fixtures/yield.rb +0 -28
  479. data/spec/opal/core/language/heredoc_spec.rb +0 -42
  480. data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
  481. data/spec/opal/core/language/predefined_spec.rb +0 -138
  482. data/spec/opal/core/language/proc_spec.rb +0 -263
  483. data/spec/opal/core/language/regexp_spec.rb +0 -20
  484. data/spec/opal/core/language/rescue_spec.rb +0 -18
  485. data/spec/opal/core/language/send_spec.rb +0 -230
  486. data/spec/opal/core/language/string_spec.rb +0 -44
  487. data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
  488. data/spec/opal/core/language/variables_spec.rb +0 -1366
  489. data/spec/opal/core/language/versions/array_1.9.rb +0 -39
  490. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  491. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  492. data/spec/opal/core/language/versions/case_1.9.rb +0 -20
  493. data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -62
  494. data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
  495. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
  496. data/spec/opal/core/language/versions/not_1.9.rb +0 -22
  497. data/spec/opal/core/language/versions/send_1.9.rb +0 -241
  498. data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
  499. data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
  500. data/spec/opal/core/language_spec.rb +0 -45
  501. data/spec/opal/core/marshal/dump_spec.rb +0 -53
  502. data/spec/opal/core/marshal/load_spec.rb +0 -7
  503. data/spec/opal/core/method/to_proc_spec.rb +0 -28
  504. data/spec/opal/core/module/alias_method_spec.rb +0 -28
  505. data/spec/opal/core/module/ancestors_spec.rb +0 -11
  506. data/spec/opal/core/module/append_features_spec.rb +0 -14
  507. data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
  508. data/spec/opal/core/module/const_defined_spec.rb +0 -84
  509. data/spec/opal/core/module/const_get_spec.rb +0 -85
  510. data/spec/opal/core/module/const_missing_spec.rb +0 -17
  511. data/spec/opal/core/module/const_set_spec.rb +0 -64
  512. data/spec/opal/core/module/constants_spec.rb +0 -49
  513. data/spec/opal/core/module/fixtures/classes.rb +0 -444
  514. data/spec/opal/core/module/method_defined_spec.rb +0 -48
  515. data/spec/opal/core/module/method_lookup_spec.rb +0 -13
  516. data/spec/opal/core/module/module_function_spec.rb +0 -25
  517. data/spec/opal/core/module/name_spec.rb +0 -41
  518. data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
  519. data/spec/opal/core/module/remove_const_spec.rb +0 -22
  520. data/spec/opal/core/module/undef_method_spec.rb +0 -66
  521. data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
  522. data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
  523. data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
  524. data/spec/opal/core/numeric/ceil_spec.rb +0 -8
  525. data/spec/opal/core/numeric/chr_spec.rb +0 -8
  526. data/spec/opal/core/numeric/comparison_spec.rb +0 -24
  527. data/spec/opal/core/numeric/complement_spec.rb +0 -8
  528. data/spec/opal/core/numeric/divide_spec.rb +0 -10
  529. data/spec/opal/core/numeric/eql_spec.rb +0 -9
  530. data/spec/opal/core/numeric/exponent_spec.rb +0 -33
  531. data/spec/opal/core/numeric/floor_spec.rb +0 -8
  532. data/spec/opal/core/numeric/gt_spec.rb +0 -11
  533. data/spec/opal/core/numeric/gte_spec.rb +0 -12
  534. data/spec/opal/core/numeric/integer_spec.rb +0 -9
  535. data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
  536. data/spec/opal/core/numeric/lt_spec.rb +0 -11
  537. data/spec/opal/core/numeric/lte_spec.rb +0 -12
  538. data/spec/opal/core/numeric/minus_spec.rb +0 -8
  539. data/spec/opal/core/numeric/modulo_spec.rb +0 -19
  540. data/spec/opal/core/numeric/multiply_spec.rb +0 -9
  541. data/spec/opal/core/numeric/next_spec.rb +0 -9
  542. data/spec/opal/core/numeric/ord_spec.rb +0 -9
  543. data/spec/opal/core/numeric/plus_spec.rb +0 -8
  544. data/spec/opal/core/numeric/pred_spec.rb +0 -7
  545. data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
  546. data/spec/opal/core/numeric/step_spec.rb +0 -11
  547. data/spec/opal/core/numeric/succ_spec.rb +0 -9
  548. data/spec/opal/core/numeric/times_spec.rb +0 -36
  549. data/spec/opal/core/numeric/to_f_spec.rb +0 -7
  550. data/spec/opal/core/numeric/to_i_spec.rb +0 -7
  551. data/spec/opal/core/numeric/to_json_spec.rb +0 -8
  552. data/spec/opal/core/numeric/to_s_spec.rb +0 -26
  553. data/spec/opal/core/numeric/uminus_spec.rb +0 -9
  554. data/spec/opal/core/numeric/upto_spec.rb +0 -19
  555. data/spec/opal/core/numeric/zero_spec.rb +0 -7
  556. data/spec/opal/core/object_id_spec.rb +0 -56
  557. data/spec/opal/core/proc/call_spec.rb +0 -21
  558. data/spec/opal/core/proc/element_reference_spec.rb +0 -21
  559. data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
  560. data/spec/opal/core/runtime/begin_spec.rb +0 -39
  561. data/spec/opal/core/runtime/block_send_spec.rb +0 -28
  562. data/spec/opal/core/runtime/block_spec.rb +0 -23
  563. data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
  564. data/spec/opal/core/runtime/constants_spec.rb +0 -13
  565. data/spec/opal/core/runtime/donate_spec.rb +0 -53
  566. data/spec/opal/core/runtime/eval_spec.rb +0 -5
  567. data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
  568. data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
  569. data/spec/opal/core/runtime/method_spec.rb +0 -31
  570. data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
  571. data/spec/opal/core/runtime/paren_spec.rb +0 -14
  572. data/spec/opal/core/runtime/rescue_spec.rb +0 -71
  573. data/spec/opal/core/runtime/return_spec.rb +0 -38
  574. data/spec/opal/core/runtime/send_spec.rb +0 -34
  575. data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
  576. data/spec/opal/core/runtime/super_spec.rb +0 -223
  577. data/spec/opal/core/runtime/truthy_spec.rb +0 -63
  578. data/spec/opal/core/runtime/variables_spec.rb +0 -20
  579. data/spec/opal/core/runtime_spec.rb +0 -58
  580. data/spec/opal/core/source_map_spec.rb +0 -49
  581. data/spec/opal/core/string_spec.rb +0 -32
  582. data/spec/opal/javascript_api_spec.rb +0 -16
  583. data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
  584. data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
  585. data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
  586. data/spec/opal/stdlib/erb/simple.opalerb +0 -1
  587. data/spec/opal/stdlib/js_spec.rb +0 -66
  588. data/spec/opal/stdlib/json/ext_spec.rb +0 -48
  589. data/spec/opal/stdlib/json/parse_spec.rb +0 -33
  590. data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
  591. data/spec/opal/stdlib/native/array_spec.rb +0 -11
  592. data/spec/opal/stdlib/native/each_spec.rb +0 -13
  593. data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
  594. data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
  595. data/spec/opal/stdlib/native/ext_spec.rb +0 -19
  596. data/spec/opal/stdlib/native/hash_spec.rb +0 -51
  597. data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
  598. data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
  599. data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
  600. data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
  601. data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
  602. data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
  603. data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
  604. data/spec/opal/stdlib/native/new_spec.rb +0 -92
  605. data/spec/opal/stdlib/native/struct_spec.rb +0 -12
  606. data/spec/opal/stdlib/promise/always_spec.rb +0 -49
  607. data/spec/opal/stdlib/promise/error_spec.rb +0 -15
  608. data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
  609. data/spec/opal/stdlib/promise/then_spec.rb +0 -79
  610. data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
  611. data/spec/opal/stdlib/promise/value_spec.rb +0 -15
  612. data/spec/opal/stdlib/promise/when_spec.rb +0 -34
  613. data/spec/opal/stdlib/source_map_spec.rb +0 -8
  614. data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
  615. data/spec/opal/stdlib/template/paths_spec.rb +0 -10
  616. data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
  617. data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
  618. data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
  619. data/spec/ruby_specs +0 -121
  620. data/spec/spec_helper.rb +0 -26
  621. data/spec/support/match_helpers.rb +0 -57
  622. data/spec/support/mspec_rspec_adapter.rb +0 -33
  623. data/spec/support/parser_helpers.rb +0 -37
  624. data/stdlib/nodejs/node_modules/js-yaml/HISTORY.md +0 -277
  625. data/stdlib/nodejs/node_modules/js-yaml/README.md +0 -288
  626. data/stdlib/nodejs/node_modules/js-yaml/bin/js-yaml.js +0 -140
  627. data/stdlib/nodejs/node_modules/js-yaml/bower.json +0 -23
  628. data/stdlib/nodejs/node_modules/js-yaml/dist/js-yaml.min.js +0 -3
  629. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.js +0 -102
  630. data/stdlib/nodejs/node_modules/js-yaml/examples/custom_types.yml +0 -18
  631. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.js +0 -31
  632. data/stdlib/nodejs/node_modules/js-yaml/examples/dumper.json +0 -22
  633. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.js +0 -18
  634. data/stdlib/nodejs/node_modules/js-yaml/examples/sample_document.yml +0 -197
  635. data/stdlib/nodejs/node_modules/js-yaml/index.js +0 -7
  636. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/common.js +0 -62
  637. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/dumper.js +0 -554
  638. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/exception.js +0 -25
  639. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/loader.js +0 -1581
  640. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/mark.js +0 -78
  641. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/core.js +0 -18
  642. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_full.js +0 -25
  643. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/default_safe.js +0 -28
  644. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/failsafe.js +0 -17
  645. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema/json.js +0 -25
  646. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/schema.js +0 -103
  647. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/binary.js +0 -133
  648. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/bool.js +0 -37
  649. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/float.js +0 -110
  650. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/int.js +0 -183
  651. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/function.js +0 -85
  652. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/regexp.js +0 -84
  653. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/js/undefined.js +0 -27
  654. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/map.js +0 -8
  655. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/merge.js +0 -12
  656. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/null.js +0 -36
  657. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/omap.js +0 -56
  658. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/pairs.js +0 -61
  659. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/seq.js +0 -8
  660. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/set.js +0 -33
  661. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/str.js +0 -8
  662. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type/timestamp.js +0 -98
  663. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml/type.js +0 -61
  664. data/stdlib/nodejs/node_modules/js-yaml/lib/js-yaml.js +0 -39
  665. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/HISTORY.md +0 -115
  666. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/README.md +0 -239
  667. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/arguments.js +0 -36
  668. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/choice.js +0 -22
  669. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/constants.js +0 -59
  670. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/help.js +0 -13
  671. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/nargs.js +0 -33
  672. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/parents.js +0 -28
  673. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/prefix_chars.js +0 -23
  674. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sub_commands.js +0 -49
  675. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/sum.js +0 -35
  676. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/examples/testformatters.js +0 -270
  677. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/index.js +0 -1
  678. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append/constant.js +0 -47
  679. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/append.js +0 -55
  680. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/count.js +0 -40
  681. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/help.js +0 -48
  682. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/constant.js +0 -43
  683. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/false.js +0 -27
  684. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store/true.js +0 -26
  685. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/store.js +0 -50
  686. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/subparsers.js +0 -148
  687. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action/version.js +0 -50
  688. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action.js +0 -146
  689. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/action_container.js +0 -481
  690. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argparse.js +0 -14
  691. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/error.js +0 -50
  692. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/exclusive.js +0 -54
  693. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument/group.js +0 -75
  694. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/argument_parser.js +0 -1168
  695. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/const.js +0 -18
  696. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/added_formatters.js +0 -88
  697. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/help/formatter.js +0 -798
  698. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/lib/namespace.js +0 -77
  699. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/LICENSE +0 -23
  700. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/README.md +0 -22
  701. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/package.json +0 -69
  702. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore-min.js +0 -6
  703. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore/underscore.js +0 -1415
  704. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.npmignore +0 -2
  705. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/.travis.yml +0 -8
  706. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/README.markdown +0 -825
  707. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/bower.json +0 -33
  708. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/component.json +0 -11
  709. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/foo.js +0 -10
  710. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/gulpfile.js +0 -26
  711. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/lib/underscore.string.js +0 -673
  712. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/libpeerconnection.log +0 -0
  713. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/node_modules/underscore.string/package.json +0 -107
  714. data/stdlib/nodejs/node_modules/js-yaml/node_modules/argparse/package.json +0 -62
  715. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/README.md +0 -73
  716. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esparse.js +0 -117
  717. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/bin/esvalidate.js +0 -177
  718. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/esprima.js +0 -3908
  719. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/package.json +0 -69
  720. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/compat.js +0 -239
  721. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/reflect.js +0 -422
  722. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/run.js +0 -66
  723. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/runner.js +0 -387
  724. data/stdlib/nodejs/node_modules/js-yaml/node_modules/esprima/test/test.js +0 -20238
  725. data/stdlib/nodejs/node_modules/js-yaml/package.json +0 -83
  726. data/stdlib/phantomjs.rb +0 -17
  727. data/tasks/testing/sprockets-phantomjs.js +0 -54
  728. data/test/nodejs/test_dir.rb +0 -17
  729. data/test/nodejs/test_file.rb +0 -30
  730. data/test/opal/test_keyword.rb +0 -590
  731. data/test/opal/unsupported_and_bugs.rb +0 -30
  732. /data/{CODE_OF_CONDUCT.md → CONDUCT.md} +0 -0
  733. /data/{bin → exe}/opal-build +0 -0
  734. /data/{bin → exe}/opal-mspec +0 -0
@@ -1,1352 +0,0 @@
1
- require 'opal/regexp_anchors'
2
- require 'strscan'
3
- require 'opal/parser/keywords'
4
-
5
- module Opal
6
- # {Opal::Lexer} is used by {Opal::Parser} to step through ruby code, and
7
- # returning tokens representing each chunk of ruby code.
8
- #
9
- # Tokens are in the form:
10
- #
11
- # [token, [value, location]]
12
- #
13
- # where `location` is in the form `[line_number, column_number]`. The location
14
- # data can be used to produce source maps in the compiler. Tokens are
15
- # generally ruby symbols, and the value will always be a string value.
16
- #
17
- # The main method used by the parser is {#next_token}, which is called
18
- # repeatedly until a token of value `false` is returned, which indicated the
19
- # EOF has been reached.
20
- #
21
- # Generally this class is only used by {Opal::Parser} directly.
22
- #
23
- class Lexer
24
-
25
- STR_FUNC_ESCAPE = 0x01
26
- STR_FUNC_EXPAND = 0x02
27
- STR_FUNC_REGEXP = 0x04
28
- STR_FUNC_QWORDS = 0x08
29
- STR_FUNC_SYMBOL = 0x10
30
- STR_FUNC_INDENT = 0x20
31
- STR_FUNC_XQUOTE = 0x40
32
-
33
- STR_SQUOTE = 0x00
34
- STR_DQUOTE = STR_FUNC_EXPAND
35
- STR_XQUOTE = STR_FUNC_EXPAND | STR_FUNC_XQUOTE
36
- STR_REGEXP = STR_FUNC_REGEXP | STR_FUNC_ESCAPE | STR_FUNC_EXPAND
37
- STR_SWORD = STR_FUNC_QWORDS
38
- STR_DWORD = STR_FUNC_QWORDS | STR_FUNC_EXPAND
39
- STR_SSYM = STR_FUNC_SYMBOL
40
- STR_DSYM = STR_FUNC_SYMBOL | STR_FUNC_EXPAND
41
-
42
- attr_reader :line, :column
43
- attr_reader :scope
44
- attr_reader :eof_content
45
-
46
- attr_accessor :lex_state
47
- attr_accessor :strterm
48
- attr_accessor :scanner
49
- attr_accessor :yylval
50
- attr_accessor :parser
51
-
52
- # Create a new instance using the given ruby code and filename for
53
- # reference.
54
- #
55
- # Opal::Lexer.new("ruby code", "my_file.rb")
56
- #
57
- # @param source [String] ruby code to lex
58
- # @param file [String] filename of given ruby code
59
- def initialize(source, file)
60
- @lex_state = :expr_beg
61
- @cond = 0
62
- @cmdarg = 0
63
- @line = 1
64
- @tok_line = 1
65
- @column = 0
66
- @tok_column = 0
67
- @file = file
68
-
69
- @scanner = StringScanner.new(source)
70
- @scanner_stack = [@scanner]
71
-
72
- @case_stmt = nil
73
- @paren_nest = 0
74
- @lambda_stack = []
75
- end
76
-
77
- # Returns next token from source input stream.
78
- #
79
- # Token in form:
80
- #
81
- # [token, [value, [source_line, source_column]]]
82
- #
83
- # @return [Array]
84
- def next_token
85
- token = self.yylex
86
- value = self.yylval
87
- location = [@tok_line, @tok_column]
88
-
89
- # once location is stored, ensure next token starts in correct place
90
- @tok_column = @column
91
- @tok_line = @line
92
-
93
- [token, [value, location]]
94
- end
95
-
96
- def has_local?(local)
97
- parser.scope.has_local?(local.to_sym)
98
- end
99
-
100
- def cond_push(n)
101
- @cond = (@cond << 1) | (n & 1)
102
- end
103
-
104
- def cond_pop
105
- @cond = @cond >> 1
106
- end
107
-
108
- def cond_lexpop
109
- @cond = (@cond >> 1) | (@cond & 1)
110
- end
111
-
112
- def cond?
113
- (@cond & 1) != 0
114
- end
115
-
116
- def cmdarg_push(n)
117
- unless @lparen_arg_seen
118
- @cmdarg = (@cmdarg << 1) | (n & 1)
119
- end
120
- end
121
-
122
- def cmdarg_pop
123
- @cmdarg = @cmdarg >> 1
124
- end
125
-
126
- def cmdarg_lexpop
127
- @cmdarg = (@cmdarg >> 1) | (@cmdarg & 1)
128
- end
129
-
130
- def cmdarg?
131
- (@cmdarg & 1) != 0
132
- end
133
-
134
- def arg?
135
- [:expr_arg, :expr_cmdarg].include? @lex_state
136
- end
137
-
138
- def end?
139
- [:expr_end, :expr_endarg, :expr_endfn].include? @lex_state
140
- end
141
-
142
- def beg?
143
- [:expr_beg, :expr_value, :expr_mid, :expr_class].include? @lex_state
144
- end
145
-
146
- def after_operator?
147
- [:expr_fname, :expr_dot].include? @lex_state
148
- end
149
-
150
- def label_state?
151
- [:expr_beg, :expr_endfn].include?(@lex_state) or arg?
152
- end
153
-
154
- def spcarg?
155
- arg? and @space_seen and !space?
156
- end
157
-
158
- def space?
159
- @scanner.check(/\s/)
160
- end
161
-
162
- def set_arg_state
163
- @lex_state = after_operator? ? :expr_arg : :expr_beg
164
- end
165
-
166
- def scan(regexp)
167
- if result = @scanner.scan(regexp)
168
- @column += result.length
169
- @yylval += @scanner.matched
170
- end
171
-
172
- result
173
- end
174
-
175
- def skip(regexp)
176
- if result = @scanner.scan(regexp)
177
- @column += result.length
178
- @tok_column = @column
179
- end
180
-
181
- result
182
- end
183
-
184
- def check(regexp)
185
- @scanner.check regexp
186
- end
187
-
188
- def pushback(n)
189
- @scanner.pos -= n
190
- end
191
-
192
- def matched
193
- @scanner.matched
194
- end
195
-
196
- def line=(line)
197
- @column = @tok_column = 0
198
- @line = @tok_line = line
199
- end
200
-
201
- def new_strterm(func, term, paren)
202
- { :type => :string, :func => func, :term => term, :paren => paren }
203
- end
204
-
205
- def new_strterm2(func, term, paren)
206
- term = new_strterm(func, term, paren)
207
- term.merge({ :balance => true, :nesting => 0 })
208
- end
209
-
210
- def new_op_asgn(value)
211
- self.yylval = value
212
- @lex_state = :expr_beg
213
- :tOP_ASGN
214
- end
215
-
216
- def process_numeric
217
- @lex_state = :expr_end
218
-
219
- if scan(/[\d_]+\.[\d_]+\b|[\d_]+(\.[\d_]+)?[eE][-+]?[\d_]+\b/) # FLOATS
220
- self.yylval = scanner.matched.gsub(/_/, '').to_f
221
- return :tFLOAT
222
- elsif scan(/([^0][\d_]*|0)\b/) # BASE 10
223
- self.yylval = scanner.matched.gsub(/_/, '').to_i
224
- return :tINTEGER
225
- elsif scan(/0[bB](0|1|_)+/) # BASE 2
226
- self.yylval = scanner.matched.to_i(2)
227
- return :tINTEGER
228
- elsif scan(/0[xX](\d|[a-f]|[A-F]|_)+/) # BASE 16
229
- self.yylval = scanner.matched.to_i(16)
230
- return :tINTEGER
231
- elsif scan(/0[oO]?([0-7]|_)+/) # BASE 8
232
- self.yylval = scanner.matched.to_i(8)
233
- return :tINTEGER
234
- elsif scan(/0[dD]([0-9]|_)+/) # BASE 10
235
- self.yylval = scanner.matched.gsub(/_/, '').to_i
236
- return :tINTEGER
237
- else
238
- raise "Lexing error on numeric type: `#{scanner.peek 5}`"
239
- end
240
- end
241
-
242
- def read_escape
243
- if scan(/\\/)
244
- "\\"
245
- elsif scan(/n/)
246
- "\n"
247
- elsif scan(/t/)
248
- "\t"
249
- elsif scan(/r/)
250
- "\r"
251
- elsif scan(/f/)
252
- "\f"
253
- elsif scan(/v/)
254
- "\v"
255
- elsif scan(/a/)
256
- "\a"
257
- elsif scan(/b/)
258
- "\b"
259
- elsif scan(/e/)
260
- "\e"
261
- elsif scan(/s/)
262
- " "
263
- elsif scan(/[0-7]{1,3}/)
264
- (matched.to_i(8) % 0x100).chr
265
- elsif scan(/x([0-9a-fA-F]{1,2})/)
266
- scanner[1].to_i(16).chr
267
- elsif scan(/u([0-9a-zA-Z]{1,4})/)
268
- scanner[1].to_i(16).chr(Encoding::UTF_8)
269
- elsif scan(/C-([a-zA-Z])/)
270
- # Control character ?\C-z or ?\C-Z
271
- # ?\C-a = "\u0001" = 1
272
- (scanner[1].downcase.ord - 'a'.ord + '1'.to_i(16)).chr(Encoding::UTF_8)
273
- elsif scan(/C-([0-9])/)
274
- # Control character ?\C-0
275
- # ?\C-0 = "\u0010"
276
- (scanner[1].ord - '0'.ord + '10'.to_i(16)).chr(Encoding::UTF_8)
277
- elsif scan(/M-\\C-([a-zA-Z])/)
278
- # Meta control character ?\M-\C-z or ?\M-\C-Z
279
- # ?\M-\C-z = "\x81"
280
- (scanner[1].downcase.ord - 'a'.ord + '81'.to_i(16)).chr(Encoding::UTF_8)
281
- elsif scan(/M-\\C-([0-9])/)
282
- # Meta control character ?\M-\C-0
283
- # ?\M-\C-0 = "\x90"
284
- (scanner[1].ord - '0'.ord + '90'.to_i(16)).chr(Encoding::UTF_8)
285
- else
286
- # escaped char doesnt need escaping, so just return it
287
- scan(/./)
288
- end
289
- end
290
-
291
- def peek_variable_name
292
- if check(/[@$]/)
293
- :tSTRING_DVAR
294
- elsif scan(/\{/)
295
- :tSTRING_DBEG
296
- end
297
- end
298
-
299
- def here_document(str_parse)
300
- eos_regx = /[ \t]*#{Regexp.escape(str_parse[:term])}(\r*\n|$)/
301
- expand = (str_parse[:func] & STR_FUNC_EXPAND) != 0
302
-
303
- # Don't escape single-quoted heredoc identifiers
304
- escape = str_parse[:func] != STR_SQUOTE
305
-
306
- if check(eos_regx)
307
- scan(/[ \t]*#{Regexp.escape(str_parse[:term])}/)
308
-
309
- if str_parse[:scanner]
310
- @scanner_stack << str_parse[:scanner]
311
- @scanner = str_parse[:scanner]
312
- end
313
-
314
- return :tSTRING_END
315
- end
316
-
317
- str_buffer = []
318
-
319
- if scan(/#/)
320
- if tok = peek_variable_name
321
- return tok
322
- end
323
-
324
- str_buffer << '#'
325
- end
326
-
327
- until check(eos_regx) && scanner.bol?
328
- if scanner.eos?
329
- raise "reached EOF while in heredoc"
330
- end
331
-
332
- if scan(/\n/)
333
- str_buffer << scanner.matched
334
- elsif expand && check(/#(?=[\$\@\{])/)
335
- break
336
- elsif scan(/\\/)
337
- str_buffer << (escape ? self.read_escape : scanner.matched)
338
- else
339
- reg = Regexp.new("[^\#\0\\\\\n]+|.")
340
-
341
- scan reg
342
- str_buffer << scanner.matched
343
- end
344
- end
345
-
346
- complete_str = str_buffer.join ''
347
- @line += complete_str.count("\n")
348
-
349
- if str_parse[:squiggly_heredoc]
350
- # "squiggly" heredoc should be post-processed.
351
- # here we remove the indentation of the least-indented
352
- # line from each line of the content
353
- lines = complete_str.lines
354
- min_indent = lines.map { |line| line.scan(/#{REGEXP_START}\s+/)[0].length }.min
355
- complete_str = lines.map { |line| line[min_indent, line.length] }.join
356
- end
357
-
358
- self.yylval = complete_str
359
- return :tSTRING_CONTENT
360
- end
361
-
362
- def parse_string
363
- str_parse = self.strterm
364
- func = str_parse[:func]
365
-
366
- space = false
367
-
368
- qwords = (func & STR_FUNC_QWORDS) != 0
369
- expand = (func & STR_FUNC_EXPAND) != 0
370
- regexp = (func & STR_FUNC_REGEXP) != 0
371
-
372
- space = true if qwords and scan(/\s+/)
373
-
374
- # if not end of string, so we must be parsing contents
375
- str_buffer = []
376
-
377
- if scan Regexp.new(Regexp.escape(str_parse[:term]))
378
- if qwords && !str_parse[:done_last_space]#&& space
379
- str_parse[:done_last_space] = true
380
- pushback(1)
381
- self.yylval = ' '
382
- return :tSPACE
383
- end
384
-
385
- if str_parse[:balance]
386
- if str_parse[:nesting] == 0
387
-
388
- if regexp
389
- self.yylval = scan(/\w+/)
390
- return :tREGEXP_END
391
- end
392
- return !cond? && scan(/:[^:]/) ? :tLABEL_END : :tSTRING_END
393
- else
394
- str_buffer << scanner.matched
395
- str_parse[:nesting] -= 1
396
- self.strterm = str_parse
397
- end
398
- elsif regexp
399
- @lex_state = :expr_end
400
- self.yylval = scan(/\w+/)
401
- return :tREGEXP_END
402
- else
403
- if str_parse[:scanner]
404
- @scanner_stack << str_parse[:scanner]
405
- @scanner = str_parse[:scanner]
406
- end
407
-
408
- return !cond? && scan(/:[^:]/) ? :tLABEL_END : :tSTRING_END
409
- end
410
- end
411
-
412
- if space
413
- self.yylval = ' '
414
- return :tSPACE
415
- end
416
-
417
- if str_parse[:balance] and scan Regexp.new(Regexp.escape(str_parse[:paren]))
418
- str_buffer << scanner.matched
419
- str_parse[:nesting] += 1
420
- elsif check(/#[@$]/)
421
- scan(/#/)
422
- if expand
423
- return :tSTRING_DVAR
424
- else
425
- str_buffer << scanner.matched
426
- end
427
-
428
- elsif scan(/#\{/)
429
- if expand
430
- return :tSTRING_DBEG
431
- else
432
- str_buffer << scanner.matched
433
-
434
- # For qword without interpolation containing its :paren symbols
435
- # like %w(()) ow %i{{}} we should mark our str_parse expression
436
- # as nesting. As a result, #add_string_content will try to read 1 more
437
- # closing ')' or '}' from the string
438
- if qwords && scanner.matched.match(Regexp.new(Regexp.escape(str_parse[:paren])))
439
- str_parse[:nesting] += 1
440
- end
441
- end
442
-
443
- # causes error, so we will just collect it later on with other text
444
- elsif scan(/\#/)
445
- str_buffer << '#'
446
- end
447
-
448
- add_string_content str_buffer, str_parse
449
-
450
- complete_str = str_buffer.join ''
451
- @line += complete_str.count("\n")
452
-
453
- self.yylval = complete_str
454
- return :tSTRING_CONTENT
455
- end
456
-
457
- def add_string_content(str_buffer, str_parse)
458
- func = str_parse[:func]
459
-
460
- end_str_re = Regexp.new(Regexp.escape(str_parse[:term]))
461
-
462
- qwords = (func & STR_FUNC_QWORDS) != 0
463
- expand = (func & STR_FUNC_EXPAND) != 0
464
- regexp = (func & STR_FUNC_REGEXP) != 0
465
- escape = (func & STR_FUNC_ESCAPE) != 0
466
- xquote = (func == STR_XQUOTE)
467
-
468
- until scanner.eos?
469
- c = nil
470
- handled = true
471
-
472
- if check end_str_re
473
- # eos
474
- # if its just balancing, add it ass normal content..
475
- if str_parse[:balance] && (str_parse[:nesting] != 0)
476
- # we only checked above, so actually scan it
477
- scan end_str_re
478
- c = scanner.matched
479
- str_parse[:nesting] -= 1
480
- else
481
- # not balancing, so break (eos!)
482
- break
483
- end
484
-
485
- elsif str_parse[:balance] and scan Regexp.new(Regexp.escape(str_parse[:paren]))
486
- str_parse[:nesting] += 1
487
- c = scanner.matched
488
-
489
- elsif qwords && scan(/\s/)
490
- pushback(1)
491
- break
492
- elsif expand && check(/#(?=[\$\@\{])/)
493
- break
494
- elsif qwords and scan(/\s/)
495
- pushback(1)
496
- break
497
- elsif scan(/\\/)
498
- if xquote # opal - treat xstrings as dquotes? forces us to double escape
499
- c = "\\" + scan(/./)
500
- elsif qwords and scan(/\n/)
501
- str_buffer << "\n"
502
- next
503
- elsif expand and scan(/\n/)
504
- next
505
- elsif qwords and scan(/\s/)
506
- c = ' '
507
- elsif regexp
508
- if scan(/(.)/)
509
- c = "\\" + scanner.matched
510
- end
511
- elsif expand
512
- c = self.read_escape
513
- elsif scan(/\n/)
514
- # nothing..
515
- elsif scan(/\\/)
516
- if escape
517
- c = "\\\\"
518
- else
519
- c = scanner.matched
520
- end
521
- else # \\
522
- unless scan(end_str_re)
523
- str_buffer << "\\"
524
- else
525
- #c = scanner.matched
526
- end
527
- end
528
- else
529
- handled = false
530
- end
531
-
532
- unless handled
533
- reg = if qwords
534
- Regexp.new("[^#{Regexp.escape str_parse[:term]}\#\0\n\ \\\\]+|.")
535
- elsif str_parse[:balance]
536
- Regexp.new("[^#{Regexp.escape str_parse[:term]}#{Regexp.escape str_parse[:paren]}\#\0\\\\]+|.")
537
- else
538
- Regexp.new("[^#{Regexp.escape str_parse[:term]}\#\0\\\\]+|.")
539
- end
540
-
541
- scan reg
542
- c = scanner.matched
543
- end
544
-
545
- c ||= scanner.matched
546
- str_buffer << c
547
- end
548
-
549
- raise "reached EOF while in string" if scanner.eos?
550
- end
551
-
552
- def heredoc_identifier
553
- starts_with_minus = !!scan(/-/) # optional heredoc beginning
554
-
555
- squiggly_heredoc = !starts_with_minus && !!scan(/~/)
556
-
557
- # Escaping character can be ' or " or can be blank
558
- scan(/(['"]?)/)
559
- escape_char = @scanner[0]
560
-
561
- if escape_char != ''
562
- # When heredoc identified starts with ' or "
563
- # we should read until the same closing character appears
564
- # again in the source
565
- regexp = Regexp.new("([^#{escape_char}]+)")
566
- else
567
- # Otherwise we read all characters until whitespace found
568
- regexp = /\w+/
569
- end
570
-
571
- if scan(regexp)
572
- escape_method = (escape_char == "'") ? STR_SQUOTE : STR_DQUOTE
573
- heredoc = @scanner[0]
574
-
575
- self.strterm = new_strterm(escape_method, heredoc, heredoc)
576
- self.strterm[:type] = :heredoc
577
- self.strterm[:squiggly_heredoc] = squiggly_heredoc
578
-
579
- # read closing ' or " character
580
- scan(Regexp.new(escape_char)) if escape_char
581
-
582
- # if ruby code at end of line after heredoc, we have to store it to
583
- # parse after heredoc is finished parsing
584
- end_of_line = scan(/.*\n/)
585
- self.strterm[:scanner] = StringScanner.new(end_of_line) if end_of_line != "\n"
586
-
587
- self.line += 1
588
- self.yylval = heredoc
589
- return :tSTRING_BEG
590
- end
591
- end
592
-
593
- def process_identifier(matched, cmd_start)
594
- last_state = @lex_state
595
-
596
- if label_state? and !check(/::/) and scan(/:/)
597
- @lex_state = :expr_beg
598
- self.yylval = matched
599
- return :tLABEL
600
- end
601
-
602
- if matched == 'defined?'
603
- if after_operator?
604
- @lex_state = :expr_end
605
- return :tIDENTIFIER
606
- end
607
-
608
- @lex_state = :expr_arg
609
- return :kDEFINED
610
- end
611
-
612
- if matched.end_with? '?', '!'
613
- result = :tIDENTIFIER
614
- else
615
- if @lex_state == :expr_fname
616
- if !check(/\=\>/) and scan(/\=/)
617
- result = :tIDENTIFIER
618
- matched += scanner.matched
619
- end
620
-
621
- elsif matched =~ /#{REGEXP_START}[A-Z]/
622
- result = :tCONSTANT
623
- else
624
- result = :tIDENTIFIER
625
- end
626
- end
627
-
628
- if @lex_state != :expr_dot and kw = Keywords.keyword(matched)
629
- old_state = @lex_state
630
- @lex_state = kw.state
631
-
632
- if old_state == :expr_fname
633
- self.yylval = kw.name
634
- return kw.id[0]
635
- end
636
-
637
- if @lex_state == :expr_beg
638
- cmd_start = true
639
- end
640
-
641
- if matched == "do"
642
- if after_operator?
643
- @lex_state = :expr_end
644
- return :tIDENTIFIER
645
- end
646
-
647
- if @lambda_stack.last == @paren_nest
648
- @lambda_stack.pop
649
- @lex_state = :expr_beg
650
- return :kDO_LAMBDA
651
- elsif cond?
652
- @lex_state = :expr_beg
653
- return :kDO_COND
654
- elsif cmdarg? && @lex_state != :expr_cmdarg
655
- @lex_state = :expr_beg
656
- return :kDO_BLOCK
657
- elsif last_state == :expr_endarg
658
- return :kDO_BLOCK
659
- else
660
- @lex_state = :expr_beg
661
- return :kDO
662
- end
663
- else
664
- if old_state == :expr_beg or old_state == :expr_value
665
- self.yylval = matched
666
- return kw.id[0]
667
- else
668
- if kw.id[0] != kw.id[1]
669
- @lex_state = :expr_beg
670
- end
671
-
672
- self.yylval = matched
673
- return kw.id[1]
674
- end
675
- end
676
- end
677
-
678
- if [:expr_beg, :expr_dot, :expr_mid, :expr_arg, :expr_cmdarg].include? @lex_state
679
- @lex_state = cmd_start ? :expr_cmdarg : :expr_arg
680
- elsif @lex_state == :expr_fname
681
- @lex_state = :expr_endfn
682
- else
683
- @lex_state = :expr_end
684
- end
685
-
686
- if ![:expr_dot, :expr_fname].include?(last_state) and has_local?(matched)
687
- @lex_state = :expr_end
688
- end
689
-
690
- self.yylval = matched
691
-
692
- return matched =~ /#{REGEXP_START}[A-Z]/ ? :tCONSTANT : :tIDENTIFIER
693
- end
694
-
695
- # Does the heavy lifting for `next_token`.
696
- def yylex
697
- @yylval = ''
698
- @space_seen = false
699
- cmd_start = false
700
- c = ''
701
-
702
- if self.strterm
703
- if self.strterm[:type] == :heredoc
704
- token = here_document(self.strterm)
705
- else
706
- token = parse_string
707
- end
708
-
709
- if token == :tSTRING_END or token == :tREGEXP_END or token == :tLABEL_END
710
- self.strterm = nil
711
- @lex_state = :expr_end
712
- end
713
-
714
- return token
715
- end
716
-
717
- while true
718
- if skip(/\ |\t|\r/)
719
- @space_seen = true
720
- next
721
-
722
- elsif skip(/(\n|#)/)
723
- c = scanner.matched
724
- if c == '#'
725
- skip(/(.*)/)
726
- else
727
- self.line += 1
728
- end
729
-
730
- skip(/(\n+)/)
731
-
732
- if scanner.matched
733
- self.line += scanner.matched.length
734
- end
735
-
736
- next if [:expr_beg, :expr_dot].include? @lex_state
737
-
738
- if skip(/([\ \t\r\f\v]*)\./)
739
- @space_seen = true unless scanner[1].empty?
740
- pushback(1)
741
-
742
- next unless check(/\.\./)
743
- end
744
-
745
- cmd_start = true
746
- @lex_state = :expr_beg
747
- self.yylval = '\\n'
748
- return :tNL
749
-
750
- elsif scan(/\;/)
751
- @lex_state = :expr_beg
752
- return :tSEMI
753
-
754
- elsif check(/\*/)
755
- if scan(/\*\*\=/)
756
- return new_op_asgn('**')
757
- elsif scan(/\*\*/)
758
- if [:expr_beg, :expr_mid].include? @lex_state
759
- # kwsplat like **{ a: 1 }
760
- return :tDSTAR
761
- else
762
- self.set_arg_state
763
- return :tPOW
764
- end
765
- elsif scan(/\*\=/)
766
- return new_op_asgn('*')
767
- else
768
- scan(/\*/)
769
-
770
- if after_operator?
771
- @lex_state = :expr_arg
772
- return :tSTAR2
773
- elsif @space_seen && check(/\S/)
774
- @lex_state = :expr_beg
775
- return :tSTAR
776
- elsif [:expr_beg, :expr_mid].include? @lex_state
777
- @lex_state = :expr_beg
778
- return :tSTAR
779
- else
780
- @lex_state = :expr_beg
781
- return :tSTAR2
782
- end
783
- end
784
-
785
- elsif scan(/\!/)
786
- if after_operator?
787
- @lex_state = :expr_arg
788
- if scan(/@/)
789
- return :tBANG, '!'
790
- end
791
- else
792
- @lex_state = :expr_beg
793
- end
794
-
795
- if scan(/\=/)
796
- return :tNEQ
797
- elsif scan(/\~/)
798
- return :tNMATCH
799
- end
800
-
801
- return :tBANG
802
-
803
- elsif scan(/\=/)
804
- if @lex_state == :expr_beg and !@space_seen
805
- if scan(/begin/) and space?
806
- scan(/(.*)/) # end of line
807
- line_count = 0
808
-
809
- while true
810
- if scanner.eos?
811
- raise "embedded document meets end of file"
812
- end
813
-
814
- if scan(/\=end/) and space?
815
- @line += line_count
816
- return yylex
817
- end
818
-
819
- if scan(/\n/)
820
- line_count += 1
821
- next
822
- end
823
-
824
- scan(/(.*)/)
825
- end
826
- end
827
- end
828
-
829
- self.set_arg_state
830
-
831
- if scan(/\=/)
832
- if scan(/\=/)
833
- return :tEQQ
834
- end
835
-
836
- return :tEQ
837
- end
838
-
839
- if scan(/\~/)
840
- return :tMATCH
841
- elsif scan(/\>/)
842
- return :tASSOC
843
- end
844
-
845
- return :tEQL
846
-
847
- elsif scan(/\"/)
848
- self.strterm = new_strterm(STR_DQUOTE, '"', "\0")
849
- return :tSTRING_BEG
850
-
851
- elsif scan(/\'/)
852
- self.strterm = new_strterm(STR_SQUOTE, "'", "\0")
853
- return :tSTRING_BEG
854
-
855
- elsif scan(/\`/)
856
- self.strterm = new_strterm(STR_XQUOTE, "`", "\0")
857
- return :tXSTRING_BEG
858
-
859
- elsif scan(/\&/)
860
- if scan(/\&/)
861
- @lex_state = :expr_beg
862
-
863
- if scan(/\=/)
864
- return new_op_asgn('&&')
865
- end
866
-
867
- return :tANDOP
868
-
869
- elsif scan(/\=/)
870
- return new_op_asgn('&')
871
- end
872
-
873
- if spcarg?
874
- #puts "warning: `&' interpreted as argument prefix"
875
- result = :tAMPER
876
- elsif beg?
877
- result = :tAMPER
878
- else
879
- #puts "warn_balanced: & argument prefix"
880
- result = :tAMPER2
881
- end
882
-
883
- self.set_arg_state
884
- return result
885
-
886
- elsif scan(/\|/)
887
- if scan(/\|/)
888
- @lex_state = :expr_beg
889
-
890
- if scan(/\=/)
891
- return new_op_asgn('||')
892
- end
893
-
894
- return :tOROP
895
-
896
- elsif scan(/\=/)
897
- return new_op_asgn('|')
898
- end
899
-
900
- self.set_arg_state
901
- return :tPIPE
902
-
903
- elsif scan(/\%[QqWwIixrs]/)
904
- str_type = scanner.matched[1, 1]
905
- paren = term = scan(/./)
906
-
907
- case term
908
- when '(' then term = ')'
909
- when '[' then term = ']'
910
- when '{' then term = '}'
911
- when '<' then term = '>'
912
- else
913
- paren = "\0"
914
- end
915
-
916
- token, func = case str_type
917
- when 'Q'
918
- [:tSTRING_BEG, STR_DQUOTE]
919
- when 'q'
920
- [:tSTRING_BEG, STR_SQUOTE]
921
- when 'W', 'I'
922
- skip(/\s*/)
923
- [:tWORDS_BEG, STR_DWORD]
924
- when 'w', 'i'
925
- skip(/\s*/)
926
- [:tAWORDS_BEG, STR_SWORD]
927
- when 'x'
928
- [:tXSTRING_BEG, STR_XQUOTE]
929
- when 'r'
930
- [:tREGEXP_BEG, STR_REGEXP]
931
- when 's'
932
- [:tSTRING_BEG, STR_SQUOTE]
933
- end
934
-
935
- self.strterm = new_strterm2(func, term, paren)
936
- return token
937
-
938
- elsif scan(/\//)
939
- if beg?
940
- self.strterm = new_strterm(STR_REGEXP, '/', '/')
941
- return :tREGEXP_BEG
942
- elsif scan(/\=/)
943
- return new_op_asgn('/')
944
- end
945
-
946
- if arg?
947
- if !check(/\s/) && @space_seen
948
- self.strterm = new_strterm(STR_REGEXP, '/', '/')
949
- return :tREGEXP_BEG
950
- end
951
- end
952
-
953
- if after_operator?
954
- @lex_state = :expr_arg
955
- else
956
- @lex_state = :expr_beg
957
- end
958
-
959
- return :tDIVIDE
960
-
961
- elsif scan(/\%/)
962
- if check(/\=/) && @lex_state != :expr_beg
963
- scan(/\=/)
964
- return new_op_asgn('%')
965
- elsif check(/[^\s]/)
966
-
967
- if @lex_state == :expr_beg or
968
- @lex_state == :expr_arg && @space_seen or
969
- @lex_state == :expr_mid
970
-
971
- paren = term = scan(/./)
972
-
973
- case term
974
- when '(' then term = ')'
975
- when '[' then term = ']'
976
- when '{' then term = '}'
977
- when '<' then term = '>'
978
- else
979
- paren = "\0"
980
- end
981
-
982
- self.strterm = new_strterm2(STR_DQUOTE, term, paren)
983
- return :tSTRING_BEG
984
- end
985
- end
986
-
987
- self.set_arg_state
988
-
989
- return :tPERCENT
990
-
991
- elsif scan(/\\/)
992
- if scan(/\r?\n/)
993
- @space_seen = true
994
- next
995
- end
996
-
997
- raise SyntaxError, "backslash must appear before newline :#{@file}:#{@line}"
998
-
999
- elsif scan(/\(/)
1000
- result = scanner.matched
1001
-
1002
- if beg?
1003
- result = :tLPAREN
1004
- elsif @space_seen && arg?
1005
- @lparen_arg_seen = true
1006
- result = :tLPAREN_ARG
1007
- else
1008
- result = :tLPAREN2
1009
- end
1010
-
1011
- @lex_state = :expr_beg
1012
- cond_push 0
1013
- cmdarg_push 0
1014
- @paren_nest += 1
1015
-
1016
- return result
1017
-
1018
- elsif scan(/\)/)
1019
- cond_lexpop
1020
- cmdarg_lexpop
1021
- @paren_nest -= 1
1022
- @lex_state = :expr_end
1023
- @lparen_arg_seen = false
1024
- return :tRPAREN
1025
-
1026
- elsif scan(/\[/)
1027
- result = scanner.matched
1028
-
1029
- if after_operator?
1030
- @lex_state = :expr_arg
1031
- if scan(/\]=/)
1032
- return :tASET
1033
- elsif scan(/\]/)
1034
- return :tAREF
1035
- else
1036
- raise "Unexpected '[' token"
1037
- end
1038
- elsif beg?
1039
- result = :tLBRACK
1040
- elsif arg? && @space_seen
1041
- result = :tLBRACK
1042
- else
1043
- result = :tLBRACK2
1044
- end
1045
-
1046
- @lex_state = :expr_beg
1047
- cond_push 0
1048
- cmdarg_push 0
1049
- return result
1050
-
1051
- elsif scan(/\]/)
1052
- cond_lexpop
1053
- cmdarg_lexpop
1054
- @lex_state = :expr_end
1055
- return :tRBRACK
1056
-
1057
- elsif scan(/\}/)
1058
- cond_lexpop
1059
- cmdarg_lexpop
1060
- @lex_state = :expr_end
1061
-
1062
- return :tRCURLY
1063
-
1064
- elsif scan(/\.\.\./)
1065
- @lex_state = :expr_beg
1066
- return :tDOT3
1067
-
1068
- elsif scan(/\.\./)
1069
- @lex_state = :expr_beg
1070
- return :tDOT2
1071
-
1072
- elsif @lex_state != :expr_fname && scan(/\.JS\[/)
1073
- @lex_state = :expr_beg
1074
- cond_push 0
1075
- cmdarg_push 0
1076
- return :tJSLBRACK
1077
-
1078
- elsif @lex_state != :expr_fname && scan(/\.JS\./)
1079
- @lex_state = :expr_dot
1080
- return :tJSDOT
1081
-
1082
- elsif scan(/\./)
1083
- @lex_state = :expr_dot unless @lex_state == :expr_fname
1084
- return :tDOT
1085
-
1086
- elsif scan(/\:\:/)
1087
- if beg?
1088
- @lex_state = :expr_beg
1089
- return :tCOLON3
1090
- elsif spcarg?
1091
- @lex_state = :expr_beg
1092
- return :tCOLON3
1093
- end
1094
-
1095
- @lex_state = :expr_dot
1096
- return :tCOLON2
1097
-
1098
- elsif scan(/\:/)
1099
- if end? || check(/\s/)
1100
- unless check(/\w/)
1101
- @lex_state = :expr_beg
1102
- return :tCOLON
1103
- end
1104
-
1105
- @lex_state = :expr_fname
1106
- return :tSYMBEG
1107
- end
1108
-
1109
- if scan(/\'/)
1110
- self.strterm = new_strterm(STR_SSYM, "'", "\0")
1111
- elsif scan(/\"/)
1112
- self.strterm = new_strterm(STR_DSYM, '"', "\0")
1113
- end
1114
-
1115
- @lex_state = :expr_fname
1116
- return :tSYMBEG
1117
-
1118
- elsif scan(/\^\=/)
1119
- return new_op_asgn('^')
1120
-
1121
- elsif scan(/\^/)
1122
- self.set_arg_state
1123
- return :tCARET
1124
-
1125
- elsif check(/</)
1126
- if scan(/<<\=/)
1127
- return new_op_asgn('<<')
1128
-
1129
- elsif scan(/<</)
1130
- if after_operator?
1131
- @lex_state = :expr_arg
1132
- return :tLSHFT
1133
- elsif !after_operator? && !end? && (!arg? || @space_seen) && @lex_state != :expr_class
1134
- if token = heredoc_identifier
1135
- return token
1136
- end
1137
-
1138
- @lex_state = :expr_beg
1139
- return :tLSHFT
1140
- end
1141
- @lex_state = :expr_beg
1142
- return :tLSHFT
1143
- elsif scan(/<\=\>/)
1144
- if after_operator?
1145
- @lex_state = :expr_arg
1146
- else
1147
- if @lex_state == :expr_class
1148
- cmd_start = true
1149
- end
1150
-
1151
- @lex_state = :expr_beg
1152
- end
1153
-
1154
- return :tCMP
1155
- elsif scan(/<\=/)
1156
- self.set_arg_state
1157
- return :tLEQ
1158
-
1159
- elsif scan(/</)
1160
- self.set_arg_state
1161
- return :tLT
1162
- end
1163
-
1164
- elsif check(/\>/)
1165
- if scan(/\>\>\=/)
1166
- return new_op_asgn('>>')
1167
-
1168
- elsif scan(/\>\>/)
1169
- self.set_arg_state
1170
- return :tRSHFT
1171
-
1172
- elsif scan(/\>\=/)
1173
- self.set_arg_state
1174
- return :tGEQ
1175
-
1176
- elsif scan(/\>/)
1177
- self.set_arg_state
1178
- return :tGT
1179
- end
1180
-
1181
- elsif scan(/->/)
1182
- @lex_state = :expr_end
1183
- @lambda_stack.push(@paren_nest)
1184
- return :tLAMBDA
1185
-
1186
- elsif scan(/[+-]/)
1187
- matched = scanner.matched
1188
- sign, utype = if matched == '+'
1189
- [:tPLUS, :tUPLUS]
1190
- else
1191
- [:tMINUS, :tUMINUS]
1192
- end
1193
-
1194
- if beg?
1195
- @lex_state = :expr_mid
1196
- self.yylval = matched
1197
- if scanner.peek(1) =~ /\d/ and
1198
- return utype == :tUMINUS ? '-@NUM' : '+@NUM'
1199
- else
1200
- return utype
1201
- end
1202
- elsif after_operator?
1203
- @lex_state = :expr_arg
1204
- if scan(/@/)
1205
- self.yylval = matched + '@'
1206
- return :tIDENTIFIER
1207
- end
1208
-
1209
- self.yylval = matched
1210
- return sign
1211
- end
1212
-
1213
- if scan(/\=/)
1214
- return new_op_asgn(matched)
1215
- end
1216
-
1217
- if spcarg?
1218
- @lex_state = :expr_mid
1219
- self.yylval = matched
1220
- if scanner.peek(1) =~ /\d/ and
1221
- return utype == :tUMINUS ? '-@NUM' : '+@NUM'
1222
- else
1223
- return utype
1224
- end
1225
- end
1226
-
1227
- @lex_state = :expr_beg
1228
- self.yylval = matched
1229
- return sign
1230
-
1231
- elsif scan(/\?/)
1232
- if end?
1233
- @lex_state = :expr_beg
1234
- return :tEH
1235
- end
1236
-
1237
- if check(/\ |\t|\r|\s/)
1238
- @lex_state = :expr_beg
1239
- return :tEH
1240
- elsif scan(/\\/)
1241
- @lex_state = :expr_end
1242
- self.yylval = self.read_escape
1243
- return :tSTRING
1244
- end
1245
-
1246
- @lex_state = :expr_end
1247
- self.yylval = scan(/./)
1248
- return :tSTRING
1249
-
1250
- elsif scan(/\~/)
1251
- self.set_arg_state
1252
- return :tTILDE
1253
-
1254
- elsif check(/\$/)
1255
- if scan(/\$([1-9]\d*)/)
1256
- @lex_state = :expr_end
1257
- self.yylval = scanner.matched.sub('$', '')
1258
- return :tNTH_REF
1259
-
1260
- elsif scan(/(\$_)(\w+)/)
1261
- @lex_state = :expr_end
1262
- return :tGVAR
1263
-
1264
- elsif scan(/\$[\+\'\`\&!@\"~*$?\/\\:;=.,<>_]/)
1265
- @lex_state = :expr_end
1266
- return :tGVAR
1267
- elsif scan(/\$\w+/)
1268
- @lex_state = :expr_end
1269
- return :tGVAR
1270
- elsif scan(/\$-[0-9a-zA-Z]/)
1271
- @lex_state = :expr_end
1272
- return :tGVAR
1273
- else
1274
- raise "Bad gvar name: #{scanner.peek(5).inspect}"
1275
- end
1276
-
1277
- elsif scan(/\$\w+/)
1278
- @lex_state = :expr_end
1279
- return :tGVAR
1280
-
1281
- elsif scan(/\@\@\w*/)
1282
- @lex_state = :expr_end
1283
- return :tCVAR
1284
-
1285
- elsif scan(/\@\w*/)
1286
- @lex_state = :expr_end
1287
- return :tIVAR
1288
-
1289
- elsif scan(/\,/)
1290
- @lex_state = :expr_beg
1291
- return :tCOMMA
1292
-
1293
- elsif scan(/\{/)
1294
- if @lambda_stack.last == @paren_nest
1295
- @lambda_stack.pop
1296
- @lex_state = :expr_beg
1297
- cond_push 0
1298
- cmdarg_push 0
1299
- return :tLAMBEG
1300
-
1301
- elsif arg? or @lex_state == :expr_end
1302
- if @lparen_arg_seen
1303
- @lparen_arg_seen = false
1304
- result = :tLBRACE_ARG
1305
- else
1306
- result = :tLCURLY
1307
- end
1308
- elsif @lex_state == :expr_endarg
1309
- result = :tLBRACE_ARG
1310
- else
1311
- result = :tLBRACE
1312
- end
1313
-
1314
- @lex_state = :expr_beg
1315
- cond_push 0
1316
- cmdarg_push 0
1317
- return result
1318
-
1319
- elsif scanner.bol? and skip(/\__END__(\n|$)/)
1320
- while true
1321
- if scanner.eos?
1322
- @eof_content = self.yylval
1323
- return false
1324
- end
1325
-
1326
- scan(/(.*)/)
1327
- scan(/\n/)
1328
- end
1329
-
1330
- elsif check(/[0-9]/)
1331
- return process_numeric
1332
-
1333
- elsif scan(INLINE_IDENTIFIER_REGEXP)
1334
- return process_identifier scanner.matched, cmd_start
1335
- end
1336
-
1337
- if scanner.eos?
1338
- if @scanner_stack.size == 1 # our main scanner, we cant pop this
1339
- self.yylval = false
1340
- return false
1341
- else # we were probably parsing a heredoc, so pop that parser and continue
1342
- @scanner_stack.pop
1343
- @scanner = @scanner_stack.last
1344
- return yylex
1345
- end
1346
- end
1347
-
1348
- raise "Unexpected content in parsing stream `#{scanner.peek 5}` :#{@file}:#{@line}"
1349
- end
1350
- end
1351
- end
1352
- end