opal 0.2.2 → 0.3.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.
- data/.gitignore +5 -10
- data/LICENSE +75 -0
- data/README.md +55 -3
- data/Rakefile +62 -139
- data/bin/opal +7 -10
- data/gems/core/README.md +5 -0
- data/gems/core/Rakefile +7 -0
- data/gems/core/core.gemspec +13 -0
- data/gems/core/lib/core.rb +33 -0
- data/gems/core/lib/core/array.rb +1470 -0
- data/gems/core/lib/core/basic_object.rb +15 -0
- data/gems/core/lib/core/class.rb +31 -0
- data/gems/core/lib/core/dir.rb +26 -0
- data/gems/core/lib/core/error.rb +43 -0
- data/gems/core/lib/core/false_class.rb +21 -0
- data/gems/core/lib/core/file.rb +54 -0
- data/gems/core/lib/core/hash.rb +725 -0
- data/gems/core/lib/core/kernel.rb +240 -0
- data/gems/core/lib/core/module.rb +98 -0
- data/gems/core/lib/core/nil_class.rb +41 -0
- data/gems/core/lib/core/numeric.rb +370 -0
- data/gems/core/lib/core/proc.rb +11 -0
- data/gems/core/lib/core/range.rb +17 -0
- data/gems/core/lib/core/regexp.rb +18 -0
- data/gems/core/lib/core/string.rb +328 -0
- data/gems/core/lib/core/symbol.rb +15 -0
- data/gems/core/lib/core/top_self.rb +8 -0
- data/gems/core/lib/core/true_class.rb +20 -0
- data/gems/core/lib/core/vm.rb +16 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/append_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/assoc_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/at_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/clear_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_bang_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/collect_spec.rb +0 -0
- data/gems/core/spec/core/array/compact_spec.rb +41 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/concat_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/constructor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/each_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/element_reference_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/first_spec.rb +1 -1
- data/{opals/opal/opal → gems/core}/spec/core/array/include_spec.rb +0 -0
- data/gems/core/spec/core/array/join_spec.rb +6 -0
- data/gems/core/spec/core/array/last_spec.rb +51 -0
- data/gems/core/spec/core/array/length_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/array/map_spec.rb +2 -0
- data/gems/core/spec/core/array/reverse_spec.rb +6 -0
- data/{opals/opal/opal → gems/core}/spec/core/builtin_constants/builtin_constants_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/false/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/file/join_spec.rb +1 -1
- data/gems/core/spec/core/hash/assoc_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/instance_eval_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/loop_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/kernel/raise_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/module/attr_accessor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/number/lt_spec.rb +0 -0
- data/gems/core/spec/core/string/sub_spec.rb +24 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/and_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/inspect_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/to_s_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/core/true/xor_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/and_spec.rb +2 -3
- data/{opals/opal/opal → gems/core}/spec/language/array_spec.rb +21 -5
- data/gems/core/spec/language/block_spec.rb +38 -0
- data/{opals/opal/opal → gems/core}/spec/language/break_spec.rb +0 -0
- data/gems/core/spec/language/case_spec.rb +103 -0
- data/{opals/opal/opal → gems/core}/spec/language/def_spec.rb +11 -1
- data/{opals/opal/opal → gems/core}/spec/language/eigenclass_spec.rb +0 -0
- data/gems/core/spec/language/file_spec.rb +13 -0
- data/gems/core/spec/language/fixtures/block.rb +21 -0
- data/gems/core/spec/language/fixtures/super.rb +293 -0
- data/{opals/opal/opal → gems/core}/spec/language/hash_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/if_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/loop_spec.rb +0 -0
- data/gems/core/spec/language/metaclass_spec.rb +21 -0
- data/{opals/opal/opal → gems/core}/spec/language/method_spec.rb +60 -0
- data/{opals/opal/opal → gems/core}/spec/language/next_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/or_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/redo_spec.rb +0 -0
- data/gems/core/spec/language/regexp_spec.rb +26 -0
- data/{opals/opal/opal → gems/core}/spec/language/rescue_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/return_spec.rb +0 -0
- data/{opals/opal/opal → gems/core}/spec/language/string_spec.rb +0 -0
- data/gems/core/spec/language/super_spec.rb +32 -0
- data/{opals/opal/opal → gems/core}/spec/language/until_spec.rb +47 -47
- data/gems/core/spec/language/variables_spec.rb +155 -0
- data/{opals/opal/opal → gems/core}/spec/language/while_spec.rb +47 -47
- data/{opals/opal/opal → gems/core}/spec/spec_helper.rb +1 -1
- data/gems/core_fs/README.md +19 -0
- data/gems/dev/Rakefile +5 -0
- data/gems/dev/lib/dev.js +99 -0
- data/gems/dev/lib/dev/generator.js +1264 -0
- data/gems/dev/lib/dev/parser.js +979 -0
- data/gems/dev/lib/dev/ruby_parser.js +1088 -0
- data/gems/dev/lib/dev/ruby_parser.y +1267 -0
- data/gems/dev/lib/dev/string_scanner.js +38 -0
- data/gems/dev/tools/racc2js/README.md +39 -0
- data/gems/dev/tools/racc2js/math_parser.js +222 -0
- data/gems/dev/tools/racc2js/math_parser.rb +133 -0
- data/gems/dev/tools/racc2js/math_parser.y +28 -0
- data/gems/dev/tools/racc2js/parser.js +218 -0
- data/gems/dev/tools/racc2js/racc2js.rb +153 -0
- data/gems/json/README.md +4 -0
- data/gems/json/json.gemspec +14 -0
- data/gems/json/lib/json.rb +64 -0
- data/gems/json/lib/json/ext.rb +51 -0
- data/{opals/opal/browser/lib/browser/json_parse.js → gems/json/lib/json/json2.js} +197 -37
- data/gems/ospec/README.md +0 -0
- data/gems/ospec/lib/ospec.rb +6 -0
- data/gems/ospec/lib/ospec/autorun.rb +3 -0
- data/gems/ospec/lib/ospec/dsl.rb +15 -0
- data/gems/ospec/lib/ospec/example.rb +11 -0
- data/gems/ospec/lib/ospec/example/before_and_after_hooks.rb +56 -0
- data/gems/ospec/lib/ospec/example/errors.rb +17 -0
- data/gems/ospec/lib/ospec/example/example_group.rb +12 -0
- data/gems/ospec/lib/ospec/example/example_group_factory.rb +21 -0
- data/gems/ospec/lib/ospec/example/example_group_hierarchy.rb +20 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/example/example_group_methods.rb +26 -68
- data/gems/ospec/lib/ospec/example/example_group_proxy.rb +14 -0
- data/gems/ospec/lib/ospec/example/example_methods.rb +46 -0
- data/gems/ospec/lib/ospec/example/example_proxy.rb +18 -0
- data/gems/ospec/lib/ospec/expectations.rb +19 -0
- data/gems/ospec/lib/ospec/expectations/errors.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/fail_with.rb +8 -0
- data/gems/ospec/lib/ospec/expectations/handler.rb +27 -0
- data/gems/ospec/lib/ospec/matchers.rb +24 -0
- data/{opals/opal/Rakefile → gems/ospec/lib/ospec/matchers/be.rb} +0 -0
- data/gems/ospec/lib/ospec/matchers/generated_descriptions.rb +20 -0
- data/gems/ospec/lib/ospec/matchers/operator_matcher.rb +52 -0
- data/gems/ospec/lib/ospec/runner.rb +40 -0
- data/gems/ospec/lib/ospec/runner/example_group_runner.rb +44 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/formatter/html_formatter.rb +31 -40
- data/gems/ospec/lib/ospec/runner/formatter/terminal_formatter.rb +48 -0
- data/gems/ospec/lib/ospec/runner/options.rb +36 -0
- data/{opals/opal/spec/lib/spec → gems/ospec/lib/ospec}/runner/reporter.rb +23 -55
- data/gems/ospec/ospec.gemspec +0 -0
- data/gems/rquery/README.md +9 -0
- data/gems/rquery/lib/rquery.rb +10 -0
- data/gems/rquery/lib/rquery/ajax.rb +4 -0
- data/gems/rquery/lib/rquery/css.rb +96 -0
- data/gems/rquery/lib/rquery/document.rb +25 -0
- data/gems/rquery/lib/rquery/element.rb +292 -0
- data/gems/rquery/lib/rquery/event.rb +108 -0
- data/gems/rquery/lib/rquery/jquery.js +8177 -0
- data/gems/rquery/lib/rquery/request.rb +138 -0
- data/gems/rquery/lib/rquery/response.rb +49 -0
- data/gems/rquery/rquery.gemspec +16 -0
- data/lib/opal.js +1597 -0
- data/lib/opal.rb +6 -69
- data/lib/opal/builder.rb +115 -0
- data/lib/opal/bundle.rb +131 -0
- data/lib/opal/command.rb +11 -0
- data/lib/opal/context.rb +69 -0
- data/lib/opal/context/console.rb +12 -0
- data/lib/opal/context/file_system.rb +19 -0
- data/lib/opal/context/loader.rb +117 -0
- data/lib/opal/gem.rb +153 -0
- data/lib/opal/ruby/nodes.rb +1302 -0
- data/lib/opal/ruby/parser.rb +780 -0
- data/lib/opal/ruby/ruby_parser.rb +5170 -0
- data/lib/opal/ruby/ruby_parser.y +1298 -0
- data/opal.gemspec +11 -256
- metadata +179 -240
- data/.gitmodules +0 -6
- data/Opalfile +0 -384
- data/VERSION +0 -1
- data/demos/apps/browser_demo/index.html +0 -11
- data/demos/apps/browser_demo/lib/browser_demo.rb +0 -31
- data/demos/apps/simple_opal/Opalfile +0 -13
- data/demos/apps/simple_opal/index.html +0 -11
- data/demos/apps/simple_opal/lib/app_controller.rb +0 -62
- data/demos/apps/simple_opal/lib/main_window.rb +0 -146
- data/demos/browser/request/index.html +0 -52
- data/demos/browser/request/request.rb +0 -48
- data/gen/browser/__PROJECT_NAME__/Rakefile +0 -12
- data/gen/browser/__PROJECT_NAME__/index.html +0 -11
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.debug.js +0 -4687
- data/gen/browser/__PROJECT_NAME__/javascripts/opal.min.js +0 -175
- data/gen/browser/__PROJECT_NAME__/lib/__PROJECT_NAME__.rb +0 -1
- data/lib/opal/builders/base.rb +0 -50
- data/lib/opal/builders/css.rb +0 -46
- data/lib/opal/builders/javascript.rb +0 -44
- data/lib/opal/builders/opal.rb +0 -79
- data/lib/opal/builders/ruby.rb +0 -50
- data/lib/opal/builders/ruby/generate.rb +0 -1851
- data/lib/opal/builders/ruby/nodes.rb +0 -210
- data/lib/opal/builders/ruby/ruby.rb +0 -916
- data/lib/opal/builders/ruby/ruby_parser.rb +0 -6008
- data/lib/opal/builders/ruby/ruby_parser.rb.y +0 -1451
- data/lib/opal/models/build_item.rb +0 -104
- data/lib/opal/models/hash_struct.rb +0 -40
- data/lib/opal/models/project.rb +0 -252
- data/lib/opal/models/struct_accessors.rb +0 -58
- data/lib/opal/models/target.rb +0 -176
- data/lib/opal/opal/build.rb +0 -169
- data/lib/opal/opal/env/console.rb +0 -66
- data/lib/opal/opal/env/fs.rb +0 -98
- data/lib/opal/opal/env/object.rb +0 -48
- data/lib/opal/opal/environment.rb +0 -139
- data/lib/opal/opal/gen.rb +0 -62
- data/lib/opal/opal/opal.rb +0 -75
- data/lib/opal/opal/repl.rb +0 -38
- data/lib/opal/opalfile/dsl.rb +0 -62
- data/lib/opal/opalfile/opalfile.rb +0 -133
- data/lib/opal/opalfile/task.rb +0 -96
- data/lib/opal/opalfile/task_manager.rb +0 -63
- data/lib/opal/opalfile/task_scope.rb +0 -52
- data/lib/opal/rack/app_server.rb +0 -119
- data/lib/opal/rake/opal_task.rb +0 -34
- data/opals/opal/README.md +0 -37
- data/opals/opal/browser/Opalfile +0 -11
- data/opals/opal/browser/README.md +0 -146
- data/opals/opal/browser/SIZZLE_LICESNSE.txt +0 -148
- data/opals/opal/browser/lib/browser.rb +0 -118
- data/opals/opal/browser/lib/browser/builder.rb +0 -41
- data/opals/opal/browser/lib/browser/canvas_context.rb +0 -115
- data/opals/opal/browser/lib/browser/dimensions.rb +0 -50
- data/opals/opal/browser/lib/browser/document.rb +0 -146
- data/opals/opal/browser/lib/browser/element.rb +0 -487
- data/opals/opal/browser/lib/browser/element/attributes.rb +0 -88
- data/opals/opal/browser/lib/browser/element/css.rb +0 -290
- data/opals/opal/browser/lib/browser/element/form.rb +0 -146
- data/opals/opal/browser/lib/browser/event/dom_events.rb +0 -81
- data/opals/opal/browser/lib/browser/event/event.rb +0 -177
- data/opals/opal/browser/lib/browser/event/trigger_events.rb +0 -53
- data/opals/opal/browser/lib/browser/geometry.rb +0 -97
- data/opals/opal/browser/lib/browser/json.rb +0 -32
- data/opals/opal/browser/lib/browser/request/request.rb +0 -201
- data/opals/opal/browser/lib/browser/sizzle.js +0 -1068
- data/opals/opal/browser/lib/browser/string.rb +0 -42
- data/opals/opal/browser/lib/browser/touch.rb +0 -37
- data/opals/opal/browser/lib/browser/vml_context.js +0 -33
- data/opals/opal/browser/lib/browser/window.rb +0 -36
- data/opals/opal/browser/spec/browser/browser_detection_spec.rb +0 -7
- data/opals/opal/browser/spec/document/aref_spec.rb +0 -110
- data/opals/opal/browser/spec/document/ready_spec.rb +0 -16
- data/opals/opal/browser/spec/element/body_spec.rb +0 -11
- data/opals/opal/browser/spec/element/clear_spec.rb +0 -26
- data/opals/opal/browser/spec/element/empty_spec.rb +0 -29
- data/opals/opal/browser/spec/element/has_class_spec.rb +0 -40
- data/opals/opal/browser/spec/element/hidden_spec.rb +0 -23
- data/opals/opal/browser/spec/element/hide_spec.rb +0 -31
- data/opals/opal/browser/spec/element/remove_spec.rb +0 -25
- data/opals/opal/browser/spec/element/show_spec.rb +0 -31
- data/opals/opal/browser/spec/element/style_spec.rb +0 -69
- data/opals/opal/browser/spec/element/toggle_spec.rb +0 -31
- data/opals/opal/browser/spec/element/visible_spec.rb +0 -23
- data/opals/opal/browser/spec/spec_helper.rb +0 -1
- data/opals/opal/opal/Opalfile +0 -14
- data/opals/opal/opal/spec/core/array/compact_spec.rb +0 -15
- data/opals/opal/opal/spec/fixtures/super.rb +0 -70
- data/opals/opal/opal/spec/language/____temp_remove_this.rb +0 -12
- data/opals/opal/opal/spec/language/block_spec.rb +0 -18
- data/opals/opal/opal/spec/language/case_spec.rb +0 -103
- data/opals/opal/opal/spec/language/metaclass_spec.rb +0 -21
- data/opals/opal/opal/spec/language/super_spec.rb +0 -26
- data/opals/opal/runtime/Opalfile +0 -78
- data/opals/opal/runtime/README.md +0 -12
- data/opals/opal/runtime/docs/debugging.md +0 -51
- data/opals/opal/runtime/lib/array.rb +0 -1516
- data/opals/opal/runtime/lib/basic_object.rb +0 -49
- data/opals/opal/runtime/lib/class.rb +0 -54
- data/opals/opal/runtime/lib/dir.rb +0 -36
- data/opals/opal/runtime/lib/error.rb +0 -49
- data/opals/opal/runtime/lib/false_class.rb +0 -52
- data/opals/opal/runtime/lib/file.rb +0 -79
- data/opals/opal/runtime/lib/hash.rb +0 -791
- data/opals/opal/runtime/lib/io.rb +0 -39
- data/opals/opal/runtime/lib/kernel.rb +0 -288
- data/opals/opal/runtime/lib/match_data.rb +0 -36
- data/opals/opal/runtime/lib/module.rb +0 -109
- data/opals/opal/runtime/lib/nil_class.rb +0 -69
- data/opals/opal/runtime/lib/number.rb +0 -398
- data/opals/opal/runtime/lib/proc.rb +0 -77
- data/opals/opal/runtime/lib/range.rb +0 -63
- data/opals/opal/runtime/lib/regexp.rb +0 -111
- data/opals/opal/runtime/lib/ruby.rb +0 -30
- data/opals/opal/runtime/lib/string.rb +0 -328
- data/opals/opal/runtime/lib/symbol.rb +0 -40
- data/opals/opal/runtime/lib/top_self.rb +0 -33
- data/opals/opal/runtime/lib/true_class.rb +0 -45
- data/opals/opal/runtime/runtime/browser.js +0 -287
- data/opals/opal/runtime/runtime/debug.js +0 -180
- data/opals/opal/runtime/runtime/opal.js +0 -1008
- data/opals/opal/runtime/runtime/post_opal.js +0 -1
- data/opals/opal/runtime/runtime/pre_opal.js +0 -2
- data/opals/opal/runtime/runtime/server_side.js +0 -50
- data/opals/opal/spec/LICENSE.txt +0 -26
- data/opals/opal/spec/Opalfile +0 -5
- data/opals/opal/spec/bin/spec.rb +0 -43
- data/opals/opal/spec/lib/spec.rb +0 -33
- data/opals/opal/spec/lib/spec/dsl.rb +0 -41
- data/opals/opal/spec/lib/spec/example.rb +0 -35
- data/opals/opal/spec/lib/spec/example/before_and_after_hooks.rb +0 -81
- data/opals/opal/spec/lib/spec/example/errors.rb +0 -42
- data/opals/opal/spec/lib/spec/example/example_group.rb +0 -37
- data/opals/opal/spec/lib/spec/example/example_group_factory.rb +0 -43
- data/opals/opal/spec/lib/spec/example/example_group_hierarchy.rb +0 -45
- data/opals/opal/spec/lib/spec/example/example_group_proxy.rb +0 -41
- data/opals/opal/spec/lib/spec/example/example_methods.rb +0 -73
- data/opals/opal/spec/lib/spec/example/example_proxy.rb +0 -48
- data/opals/opal/spec/lib/spec/expectations.rb +0 -46
- data/opals/opal/spec/lib/spec/expectations/errors.rb +0 -35
- data/opals/opal/spec/lib/spec/expectations/fail_with.rb +0 -37
- data/opals/opal/spec/lib/spec/expectations/handler.rb +0 -48
- data/opals/opal/spec/lib/spec/matchers.rb +0 -50
- data/opals/opal/spec/lib/spec/matchers/be.rb +0 -26
- data/opals/opal/spec/lib/spec/matchers/generated_descriptions.rb +0 -47
- data/opals/opal/spec/lib/spec/matchers/operator_matcher.rb +0 -66
- data/opals/opal/spec/lib/spec/runner.rb +0 -48
- data/opals/opal/spec/lib/spec/runner/example_group_runner.rb +0 -71
- data/opals/opal/spec/lib/spec/runner/formatter/terminal_formatter.rb +0 -82
- data/opals/opal/spec/lib/spec/runner/options.rb +0 -63
- data/opals/opal/spec/resources/index.html +0 -25
- data/opals/opal/spec/resources/spec.css +0 -132
- data/spec/cherry_kit/iseq_spec.rb +0 -38
- data/spec/spec_helper.rb +0 -16
- data/spec/vienna_spec.rb +0 -7
- data/yard/index.html +0 -43
- data/yard/style.css +0 -765
|
@@ -1,1451 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# ruby_parser.rb.y
|
|
3
|
-
# vienna
|
|
4
|
-
#
|
|
5
|
-
# Created by Adam Beynon.
|
|
6
|
-
# Copyright 2009 Adam Beynon.
|
|
7
|
-
#
|
|
8
|
-
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
-
# of this software and associated documentation files (the "Software"), to deal
|
|
10
|
-
# in the Software without restriction, including without limitation the rights
|
|
11
|
-
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
-
# copies of the Software, and to permit persons to whom the Software is
|
|
13
|
-
# furnished to do so, subject to the following conditions:
|
|
14
|
-
#
|
|
15
|
-
# The above copyright notice and this permission notice shall be included in
|
|
16
|
-
# all copies or substantial portions of the Software.
|
|
17
|
-
#
|
|
18
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
-
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
-
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
-
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
-
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
-
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
24
|
-
# THE SOFTWARE.
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
class Vienna::RubyParser
|
|
28
|
-
|
|
29
|
-
# prechigh
|
|
30
|
-
# nonassoc tLOWEST
|
|
31
|
-
# nonassoc tLBRACE_ARG
|
|
32
|
-
#
|
|
33
|
-
# left tLSHFT tRSHFT
|
|
34
|
-
# nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD
|
|
35
|
-
# left kOR kAND
|
|
36
|
-
# right kNOT
|
|
37
|
-
# nonassoc kDEFined
|
|
38
|
-
# right '=' tOP_ASGN
|
|
39
|
-
# left kRESCUE_MOD
|
|
40
|
-
# right '?' ':'
|
|
41
|
-
# nonassoc tDOT2 tDOT3
|
|
42
|
-
# left tOROP
|
|
43
|
-
# left tANDOP
|
|
44
|
-
# nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH
|
|
45
|
-
# left '>' tGEQ '<' tLEQ
|
|
46
|
-
# left '|' '^'
|
|
47
|
-
# left '&'
|
|
48
|
-
# left '+' '-'
|
|
49
|
-
# left '*' '/' '%'
|
|
50
|
-
# right tUMINUS_NUM tUMINUS
|
|
51
|
-
# right tPOW
|
|
52
|
-
# right '!' '~' tUPLUS
|
|
53
|
-
# preclow
|
|
54
|
-
|
|
55
|
-
prechigh
|
|
56
|
-
right '!' tTILDE tUPLUS
|
|
57
|
-
right tPOW
|
|
58
|
-
right tUMINUS_NUM tUMINUS
|
|
59
|
-
left tSTAR2 tDIVIDE tPERCENT
|
|
60
|
-
left tPLUS tMINUS
|
|
61
|
-
left tLSHFT tRSHFT
|
|
62
|
-
left tAMPER2
|
|
63
|
-
left tPIPE tCARET
|
|
64
|
-
left '>' tGEQ '<' tLEQ
|
|
65
|
-
nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH
|
|
66
|
-
left tANDOP
|
|
67
|
-
left tOROP
|
|
68
|
-
nonassoc tDOT2 tDOT3
|
|
69
|
-
right '?' ':'
|
|
70
|
-
left kRESCUE_MOD
|
|
71
|
-
right '=' tOP_ASGN
|
|
72
|
-
# left tANDOP
|
|
73
|
-
# left tOROP
|
|
74
|
-
nonassoc kDEFINED
|
|
75
|
-
right kNOT
|
|
76
|
-
left kOR kAND
|
|
77
|
-
nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD
|
|
78
|
-
nonassoc tLBRACE_ARG
|
|
79
|
-
nonassoc tLOWEST
|
|
80
|
-
preclow
|
|
81
|
-
|
|
82
|
-
token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS
|
|
83
|
-
token kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT
|
|
84
|
-
token kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD
|
|
85
|
-
token kSUPER kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD
|
|
86
|
-
token kWHILE_MOD kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND
|
|
87
|
-
token k__LINE__ k__FILE__ k__ENCODING__
|
|
88
|
-
token kDEFined kBLOCK_GIVEN
|
|
89
|
-
|
|
90
|
-
token tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tLABEL tINTEGER tFLOAT
|
|
91
|
-
token tSTRING_CONTENT tCHAR tNTH_REF tBACK_REF tREGEXP_END tUPLUS tUMINUS
|
|
92
|
-
token tPOW tCMP tEQ tEQQ tNEQ tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT2
|
|
93
|
-
token tDOT3 tAREF tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC
|
|
94
|
-
token tLPAREN tLPAREN_ARG tRPAREN tLBRACK tLBRACE tLBRACE_ARG tSTAR tAMPER
|
|
95
|
-
token tLAMBDA tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tWORDS_BEG
|
|
96
|
-
token tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END tLAMBEG tUMINUS_NUM
|
|
97
|
-
token tSTRING tXSTRING_END
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
rule
|
|
101
|
-
|
|
102
|
-
target: program
|
|
103
|
-
{
|
|
104
|
-
# puts 'well, we got here..'
|
|
105
|
-
# puts val[0]
|
|
106
|
-
@parser_result = val[0]
|
|
107
|
-
result = val[0]
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
program:
|
|
111
|
-
{
|
|
112
|
-
self.lex_state = :EXPR_BEG
|
|
113
|
-
}
|
|
114
|
-
top_compstmt
|
|
115
|
-
{
|
|
116
|
-
# puts 'program'
|
|
117
|
-
# puts val[1]
|
|
118
|
-
result = val[1]
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
top_compstmt: top_stmts opt_terms
|
|
122
|
-
{
|
|
123
|
-
# puts 'top_compstmt'
|
|
124
|
-
# puts val[0]
|
|
125
|
-
# puts val[1]
|
|
126
|
-
result = val[0]
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
top_stmts: none
|
|
130
|
-
{
|
|
131
|
-
result = []
|
|
132
|
-
}
|
|
133
|
-
| top_stmt
|
|
134
|
-
{
|
|
135
|
-
result = [val[0]]
|
|
136
|
-
}
|
|
137
|
-
| top_stmts terms top_stmt
|
|
138
|
-
{
|
|
139
|
-
result = val[0] + [val[2]]
|
|
140
|
-
}
|
|
141
|
-
| error top_stmt
|
|
142
|
-
{
|
|
143
|
-
result = val[1]
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
top_stmt: stmt
|
|
147
|
-
{
|
|
148
|
-
result = val[0]
|
|
149
|
-
}
|
|
150
|
-
| kBEGIN
|
|
151
|
-
|
|
152
|
-
bodystmt: compstmt opt_rescue opt_else opt_ensure
|
|
153
|
-
{
|
|
154
|
-
# puts "erm wtf?!"
|
|
155
|
-
# puts val[1]
|
|
156
|
-
result = self.node_bodystmt(val[0], val[1], val[2], val[3])
|
|
157
|
-
# if val[1]
|
|
158
|
-
# pp result
|
|
159
|
-
# end
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
compstmt: stmts opt_terms
|
|
163
|
-
{
|
|
164
|
-
result = val[0]
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
stmts: none
|
|
168
|
-
{
|
|
169
|
-
result = []
|
|
170
|
-
}
|
|
171
|
-
| stmt
|
|
172
|
-
{
|
|
173
|
-
result = [val[0]]
|
|
174
|
-
}
|
|
175
|
-
| stmts terms stmt
|
|
176
|
-
{
|
|
177
|
-
result = val[0] + [val[2]]
|
|
178
|
-
}
|
|
179
|
-
| error stmt
|
|
180
|
-
|
|
181
|
-
stmt: kALIAS fitem
|
|
182
|
-
{
|
|
183
|
-
self.lex_state = :EXPR_FNAME
|
|
184
|
-
}
|
|
185
|
-
fitem
|
|
186
|
-
{
|
|
187
|
-
result = node :alias, :lhs => val[1], :rhs => val[3]
|
|
188
|
-
}
|
|
189
|
-
| kALIAS tGVAR tGVAR
|
|
190
|
-
| kALIAS tGVAR tBACK_REF
|
|
191
|
-
| kALIAS tGVAR tNTH_REF
|
|
192
|
-
| kUNDEF undef_list
|
|
193
|
-
| stmt kIF_MOD expr_value
|
|
194
|
-
{
|
|
195
|
-
result = node :if, :expr => val[2], :stmt => [val[0]], :tail => []
|
|
196
|
-
}
|
|
197
|
-
| stmt kUNLESS_MOD expr_value
|
|
198
|
-
{
|
|
199
|
-
result = node :unless, :expr => val[2], :stmt => [val[0]], :tail => []
|
|
200
|
-
}
|
|
201
|
-
| stmt kWHILE_MOD expr_value
|
|
202
|
-
{
|
|
203
|
-
result = node :while, :expr => val[2], :stmt => [val[0]]
|
|
204
|
-
}
|
|
205
|
-
| stmt kUNTIL_MOD expr_value
|
|
206
|
-
{
|
|
207
|
-
result = node :until, :expr => val[2], :stmt => [val[0]]
|
|
208
|
-
}
|
|
209
|
-
| stmt kRESCUE_MOD stmt
|
|
210
|
-
| klEND '{' compstmt '}'
|
|
211
|
-
| lhs '=' command_call
|
|
212
|
-
{
|
|
213
|
-
result = node :assign, :lhs => val[0], :rhs => val[2]
|
|
214
|
-
}
|
|
215
|
-
| mlhs '=' command_call
|
|
216
|
-
| var_lhs tOP_ASGN command_call
|
|
217
|
-
{
|
|
218
|
-
result = node :op_asgn, :lhs => val[0], :op => val[1], :rhs => val[2]
|
|
219
|
-
}
|
|
220
|
-
| primary_value '[' opt_call_args rbracket tOP_ASGN command_call
|
|
221
|
-
{
|
|
222
|
-
puts "in here for #{val[0]}"
|
|
223
|
-
}
|
|
224
|
-
| primary_value '.' tIDENTIFIER tOP_ASGN command_call
|
|
225
|
-
| primary_value '.' tCONSTANT tOP_ASGN command_call
|
|
226
|
-
| primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call
|
|
227
|
-
| backref tOP_ASGN command_call
|
|
228
|
-
| lhs '=' mrhs
|
|
229
|
-
| mlhs '=' arg_value
|
|
230
|
-
| mlhs '=' mrhs
|
|
231
|
-
| expr
|
|
232
|
-
|
|
233
|
-
expr: command_call
|
|
234
|
-
| expr kAND expr
|
|
235
|
-
{
|
|
236
|
-
result = node :andop, :lhs => val[0], :rhs => val[2]
|
|
237
|
-
}
|
|
238
|
-
| expr kOR expr
|
|
239
|
-
{
|
|
240
|
-
result = node :orop, :lhs => val[0], :rhs => val[2]
|
|
241
|
-
}
|
|
242
|
-
| kNOT opt_nl expr
|
|
243
|
-
{
|
|
244
|
-
result = node :not, :expr => val[2]
|
|
245
|
-
}
|
|
246
|
-
| '!' command_call
|
|
247
|
-
| arg
|
|
248
|
-
|
|
249
|
-
expr_value: expr
|
|
250
|
-
|
|
251
|
-
command_call: command
|
|
252
|
-
| block_command
|
|
253
|
-
| kRETURN call_args
|
|
254
|
-
{
|
|
255
|
-
result = node :return, :call_args => val[1]
|
|
256
|
-
}
|
|
257
|
-
| kBREAK call_args
|
|
258
|
-
{
|
|
259
|
-
result = node :break, :call_args => val[1]
|
|
260
|
-
}
|
|
261
|
-
| kNEXT call_args
|
|
262
|
-
{
|
|
263
|
-
result = node :next, :call_args => val[1]
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
block_command: block_call
|
|
267
|
-
| block_call '.' operation2 command_args
|
|
268
|
-
| block_call tCOLON2 operation2 command_args
|
|
269
|
-
|
|
270
|
-
cmd_brace_block: tLBRACE_ARG opt_block_param compstmt '}'
|
|
271
|
-
|
|
272
|
-
command: operation command_args =tLOWEST
|
|
273
|
-
{
|
|
274
|
-
# command call - no brackets/recv
|
|
275
|
-
result = node :call, :recv => nil, :meth => val[0], :call_args => val[1]
|
|
276
|
-
}
|
|
277
|
-
| operation command_args cmd_brace_block
|
|
278
|
-
| primary_value '.' operation2 command_args =tLOWEST
|
|
279
|
-
{
|
|
280
|
-
result = node :call, :recv => val[0], :meth => val[2], :call_args => val[3]
|
|
281
|
-
}
|
|
282
|
-
| primary_value '.' operation2 command_args cmd_brace_block
|
|
283
|
-
| primary_value tCOLON2 operation2 command_args =tLOWEST
|
|
284
|
-
| primary_value tCOLON2 operation2 command_args cmd_brace_block
|
|
285
|
-
| kSUPER command_args
|
|
286
|
-
{
|
|
287
|
-
result = node :super, :call_args => val[1]
|
|
288
|
-
}
|
|
289
|
-
| kYIELD command_args
|
|
290
|
-
{
|
|
291
|
-
result = node :yield, :call_args => val[1]
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
mlhs: mlhs_basic
|
|
295
|
-
| tLPAREN mlhs_inner rparen
|
|
296
|
-
|
|
297
|
-
mlhs_inner: mlhs_basic
|
|
298
|
-
| tLPAREN mlhs_inner rparen
|
|
299
|
-
|
|
300
|
-
mlhs_basic: mlhs_head
|
|
301
|
-
| mlhs_head mlhs_item
|
|
302
|
-
| mlhs_head tSTAR mlhs_node
|
|
303
|
-
| mlhs_head tSTAR mlhs_node ',' mlhs_post
|
|
304
|
-
| mlhs_head tSTAR
|
|
305
|
-
| mlhs_head tSTAR ',' mlhs_post
|
|
306
|
-
| tSTAR mlhs_node
|
|
307
|
-
| tSTAR mlhs_node ',' mlhs_post
|
|
308
|
-
| tSTAR
|
|
309
|
-
| tSTAR ',' mlhs_post
|
|
310
|
-
|
|
311
|
-
mlhs_item: mlhs_node
|
|
312
|
-
| tLPAREN mlhs_inner rparen
|
|
313
|
-
|
|
314
|
-
mlhs_head: mlhs_item ','
|
|
315
|
-
| mlhs_head mlhs_item ','
|
|
316
|
-
|
|
317
|
-
mlhs_post: mlhs_item
|
|
318
|
-
| mlhs_post ',' mlhs_item
|
|
319
|
-
|
|
320
|
-
mlhs_node: variable
|
|
321
|
-
| primary_value '[' opt_call_args rbracket
|
|
322
|
-
| primary_value '.' tIDENTIFIER
|
|
323
|
-
| primary_value tCOLON2 tIDENTIFIER
|
|
324
|
-
| primary_value '.' tCONSTANT
|
|
325
|
-
| primary_value tCOLON2 tCONSTANT
|
|
326
|
-
| tCOLON3 tCONSTANT
|
|
327
|
-
| backref
|
|
328
|
-
|
|
329
|
-
lhs: variable
|
|
330
|
-
| primary_value '[' opt_call_args rbracket
|
|
331
|
-
{
|
|
332
|
-
result = node :call, :recv => val[0], :meth => '[]', :args => val[2]
|
|
333
|
-
}
|
|
334
|
-
| primary_value '.' tIDENTIFIER
|
|
335
|
-
{
|
|
336
|
-
result = node :call, :recv => val[0], :meth => val[2], :call_args => {}
|
|
337
|
-
}
|
|
338
|
-
| primary_value tCOLON2 tIDENTIFIER
|
|
339
|
-
| primary_value '.' tCONSTANT
|
|
340
|
-
| primary_value tCOLON2 tCONSTANT
|
|
341
|
-
| tCOLON3 tCONSTANT
|
|
342
|
-
{
|
|
343
|
-
result = node :colon3, :name => val[1]
|
|
344
|
-
}
|
|
345
|
-
| backref
|
|
346
|
-
|
|
347
|
-
cname: tIDENTIFIER
|
|
348
|
-
{
|
|
349
|
-
puts 'ERROR: cant use identifier for class/mod name'
|
|
350
|
-
}
|
|
351
|
-
| tCONSTANT
|
|
352
|
-
{
|
|
353
|
-
result = val[0]
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
cpath: tCOLON3 cname
|
|
357
|
-
{
|
|
358
|
-
|
|
359
|
-
}
|
|
360
|
-
| cname
|
|
361
|
-
{
|
|
362
|
-
result = node :path, :cname => val[0]
|
|
363
|
-
}
|
|
364
|
-
| primary_value tCOLON2 cname
|
|
365
|
-
|
|
366
|
-
fname: tIDENTIFIER
|
|
367
|
-
| tCONSTANT
|
|
368
|
-
| tFID
|
|
369
|
-
| op
|
|
370
|
-
{
|
|
371
|
-
self.lex_state = :EXPR_END
|
|
372
|
-
result = val[0]
|
|
373
|
-
}
|
|
374
|
-
| reswords
|
|
375
|
-
{
|
|
376
|
-
self.lex_state = :EXPR_END
|
|
377
|
-
result = val[0]
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
fsym: fname
|
|
381
|
-
| symbol
|
|
382
|
-
|
|
383
|
-
fitem: fsym
|
|
384
|
-
| dsym
|
|
385
|
-
|
|
386
|
-
undef_list: fitem
|
|
387
|
-
| undef_list ',' fitem
|
|
388
|
-
|
|
389
|
-
op: '|' | '^' | '&' | tCMP | tEQ | tEQQ
|
|
390
|
-
| tMATCH | tNMATCH | '>' | tGEQ | '<' | tLEQ
|
|
391
|
-
| tNEQ | tLSHFT | tRSHFT | '+' | '-' | '*'
|
|
392
|
-
| tSTAR | '/' | '%' | tPOW | '!' | '~'
|
|
393
|
-
| tUPLUS | tUMINUS | tAREF | tASET | '`'
|
|
394
|
-
|
|
395
|
-
reswords: k__LINE__ | k__FILE__ | k__ENCODING__
|
|
396
|
-
| kBEGIN | kEND | kALIAS
|
|
397
|
-
| kAND | kBEGIN | kBREAK
|
|
398
|
-
| kCASE | kCLASS | kDEF
|
|
399
|
-
| kDEFined | kDO | kELSE
|
|
400
|
-
| kELSIF | kEND | kENSURE
|
|
401
|
-
| kFALSE | kFOR | kIN
|
|
402
|
-
| kMODULE | kNEXT | kNIL
|
|
403
|
-
| kNOT | kOR | kREDO
|
|
404
|
-
| kRESCUE | kRETRY | kRETURN
|
|
405
|
-
| kSELF | kSUPER | kTHEN
|
|
406
|
-
| kTRUE | kUNDEF | kWHEN
|
|
407
|
-
| kYIELD | kIF | kUNLESS
|
|
408
|
-
| kWHILE | kUNTIL | kBLOCK_GIVEN
|
|
409
|
-
|
|
410
|
-
arg: lhs '=' arg
|
|
411
|
-
{
|
|
412
|
-
result = node :assign, :lhs => val[0], :rhs => val[2]
|
|
413
|
-
}
|
|
414
|
-
| lhs '=' arg kRESCUE_MOD arg
|
|
415
|
-
| var_lhs tOP_ASGN arg
|
|
416
|
-
{
|
|
417
|
-
result = node :op_asgn, :lhs => val[0], :op => val[1], :rhs => val[2]
|
|
418
|
-
}
|
|
419
|
-
| var_lhs tOP_ASGN arg kRESCUE_MOD arg
|
|
420
|
-
| primary_value '[' opt_call_args rbracket tOP_ASGN arg
|
|
421
|
-
{
|
|
422
|
-
result = node :aset_op_asgn, :recv => val[0], :call_args => val[2], :op => val[4], :arg => val[5]
|
|
423
|
-
}
|
|
424
|
-
| primary_value '.' tIDENTIFIER tOP_ASGN arg
|
|
425
|
-
{
|
|
426
|
-
result = node :op_asgn, :lhs => node(:call, :recv => val[0], :meth => val[2], :call_args => {}), :op => val[3], :rhs => val[4]
|
|
427
|
-
# result = node :dot_identifier_op_asgn, :lhs => node(:call, :recv => val[0], :meth => val[2]), :op => val[3], :rhs => val[4]
|
|
428
|
-
}
|
|
429
|
-
| primary_value '.' tCONSTANT tOP_ASGN arg
|
|
430
|
-
| primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg
|
|
431
|
-
| primary_value tCOLON2 tCONSTANT tOP_ASGN arg
|
|
432
|
-
| tCOLON3 tCONSTANT tOP_ASGN arg
|
|
433
|
-
| backref tOP_ASGN arg
|
|
434
|
-
| arg tDOT2 arg
|
|
435
|
-
{
|
|
436
|
-
result = node :dot2, :start => val[0], :ending => val[2]
|
|
437
|
-
}
|
|
438
|
-
| arg tDOT3 arg
|
|
439
|
-
{
|
|
440
|
-
result = node :dot3, :start => val[0], :ending => val[2]
|
|
441
|
-
}
|
|
442
|
-
| arg '+' arg
|
|
443
|
-
{
|
|
444
|
-
result = node :opt_plus, :recv => val[0], :meth => '+', :call_args => { :args => [val[2]]}
|
|
445
|
-
}
|
|
446
|
-
| arg '-' arg
|
|
447
|
-
{
|
|
448
|
-
result = node :opt_minus, :recv => val[0], :meth => '-', :call_args => { :args => [val[2]]}
|
|
449
|
-
}
|
|
450
|
-
| arg '*' arg
|
|
451
|
-
{
|
|
452
|
-
result = node :opt_mult, :recv => val[0], :meth => '*', :call_args => { :args => [val[2]]}
|
|
453
|
-
}
|
|
454
|
-
| arg '/' arg
|
|
455
|
-
{
|
|
456
|
-
result = node :opt_div, :recv => val[0], :meth => '/', :call_args => { :args => [val[2]]}
|
|
457
|
-
}
|
|
458
|
-
| arg '%' arg
|
|
459
|
-
{
|
|
460
|
-
result = node :call, :recv => val[0], :meth => '%', :call_args => { :args => [val[2]]}
|
|
461
|
-
}
|
|
462
|
-
| arg tPOW arg
|
|
463
|
-
{
|
|
464
|
-
result = node :call, :recv => val[0], :meth => '**', :call_args => { :args => [val[2]]}
|
|
465
|
-
}
|
|
466
|
-
| tUMINUS_NUM tINTEGER tPOW arg
|
|
467
|
-
| tUMINUS_NUM tFLOAT tPOW arg
|
|
468
|
-
| tUPLUS arg
|
|
469
|
-
{
|
|
470
|
-
result = node :call, :recv => val[1], :meth => '+@', :call_args => { :args => []}
|
|
471
|
-
}
|
|
472
|
-
| tUMINUS arg
|
|
473
|
-
{
|
|
474
|
-
result = node :call, :recv => val[1], :meth => '-@', :call_args => { :args => []}
|
|
475
|
-
}
|
|
476
|
-
| arg '|' arg
|
|
477
|
-
{
|
|
478
|
-
result = node :call, :recv => val[0], :meth => '|', :call_args => { :args => [val[2]]}
|
|
479
|
-
}
|
|
480
|
-
| arg '^' arg
|
|
481
|
-
{
|
|
482
|
-
result = node :call, :recv => val[0], :meth => '^', :call_args => { :args => [val[2]]}
|
|
483
|
-
}
|
|
484
|
-
| arg '&' arg
|
|
485
|
-
{
|
|
486
|
-
result = node :call, :recv => val[0], :meth => '&', :call_args => { :args => [val[2]]}
|
|
487
|
-
}
|
|
488
|
-
| arg tCMP arg
|
|
489
|
-
{
|
|
490
|
-
result = node :call, :recv => val[0], :meth => '<=>', :call_args => { :args => [val[2]]}
|
|
491
|
-
}
|
|
492
|
-
| arg '>' arg
|
|
493
|
-
{
|
|
494
|
-
result = node :call, :recv => val[0], :meth => '>', :call_args => { :args => [val[2]]}
|
|
495
|
-
}
|
|
496
|
-
| arg tGEQ arg
|
|
497
|
-
{
|
|
498
|
-
result = node :call, :recv => val[0], :meth => '>=', :call_args => { :args => [val[2]]}
|
|
499
|
-
}
|
|
500
|
-
| arg '<' arg
|
|
501
|
-
{
|
|
502
|
-
result = node :call, :recv => val[0], :meth => '<', :call_args => { :args => [val[2]]}
|
|
503
|
-
}
|
|
504
|
-
| arg tLEQ arg
|
|
505
|
-
{
|
|
506
|
-
result = node :call, :recv => val[0], :meth => '<=', :call_args => { :args => [val[2]]}
|
|
507
|
-
}
|
|
508
|
-
| arg tEQ arg
|
|
509
|
-
{
|
|
510
|
-
result = node :call, :recv => val[0], :meth => '==', :call_args => { :args => [val[2]]}
|
|
511
|
-
}
|
|
512
|
-
| arg tEQQ arg
|
|
513
|
-
{
|
|
514
|
-
result = node :call, :recv => val[0], :meth => '===', :call_args => { :args => [val[2]]}
|
|
515
|
-
}
|
|
516
|
-
| arg tNEQ arg
|
|
517
|
-
{
|
|
518
|
-
result = node :call, :recv => val[0], :meth => '!=', :call_args => { :args => [val[2]]}
|
|
519
|
-
}
|
|
520
|
-
| arg tMATCH arg
|
|
521
|
-
{
|
|
522
|
-
result = node :call, :recv => val[0], :meth => '=~', :call_args => { :args => [val[2]]}
|
|
523
|
-
}
|
|
524
|
-
| arg tNMATCH arg
|
|
525
|
-
{
|
|
526
|
-
result = node :call, :recv => val[0], :meth => '!~', :call_args => { :args => [val[2]]}
|
|
527
|
-
}
|
|
528
|
-
| '!' arg
|
|
529
|
-
{
|
|
530
|
-
result = node :not, :expr => val[1]
|
|
531
|
-
}
|
|
532
|
-
| '~' arg
|
|
533
|
-
{
|
|
534
|
-
result = node :call, :recv => val[1], :meth => '~', :call_args => { :args => []}
|
|
535
|
-
}
|
|
536
|
-
| arg tLSHFT arg
|
|
537
|
-
{
|
|
538
|
-
result = node :call, :recv => val[0], :meth => '<<', :call_args => { :args => [val[2]]}
|
|
539
|
-
}
|
|
540
|
-
| arg tRSHFT arg
|
|
541
|
-
{
|
|
542
|
-
result = node :call, :recv => val[0], :meth => '>>', :call_args => { :args => [val[2]]}
|
|
543
|
-
}
|
|
544
|
-
| arg tANDOP arg
|
|
545
|
-
{
|
|
546
|
-
result = node :andop, :lhs => val[0], :rhs => val[2]
|
|
547
|
-
}
|
|
548
|
-
| arg tOROP arg
|
|
549
|
-
{
|
|
550
|
-
result = node :orop, :lhs => val[0], :rhs => val[2]
|
|
551
|
-
}
|
|
552
|
-
| kDEFined opt_nl arg
|
|
553
|
-
| arg '?' arg opt_nl ':' arg
|
|
554
|
-
{
|
|
555
|
-
result = node :tertiary, :expr => val[0], :true => val[2], :false => val[5]
|
|
556
|
-
}
|
|
557
|
-
| primary
|
|
558
|
-
|
|
559
|
-
arg_value: arg
|
|
560
|
-
|
|
561
|
-
aref_args: none
|
|
562
|
-
| args trailer
|
|
563
|
-
| args ',' assocs trailer
|
|
564
|
-
| assocs trailer
|
|
565
|
-
|
|
566
|
-
paren_args: '(' opt_call_args rparen
|
|
567
|
-
{
|
|
568
|
-
result = val[1]
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
opt_paren_args: none
|
|
572
|
-
{
|
|
573
|
-
result = node :call_args, :args => nil
|
|
574
|
-
}
|
|
575
|
-
| paren_args
|
|
576
|
-
|
|
577
|
-
opt_call_args: none
|
|
578
|
-
{
|
|
579
|
-
result = node :call_args, :args => nil
|
|
580
|
-
}
|
|
581
|
-
| call_args
|
|
582
|
-
|
|
583
|
-
call_args: command
|
|
584
|
-
{
|
|
585
|
-
result = node :call_args, :args => [val[0]]
|
|
586
|
-
}
|
|
587
|
-
| args opt_block_arg
|
|
588
|
-
{
|
|
589
|
-
result = node :call_args, :args => val[0], :block_arg => val[1]
|
|
590
|
-
}
|
|
591
|
-
| assocs opt_block_arg
|
|
592
|
-
{
|
|
593
|
-
result = node :call_args, :assocs => val[0], :block_arg => val[1]
|
|
594
|
-
}
|
|
595
|
-
| args ',' assocs opt_block_arg
|
|
596
|
-
{
|
|
597
|
-
result = node :call_args, :args => val[0], :assocs => val[2], :block_arg => val[3]
|
|
598
|
-
}
|
|
599
|
-
| block_arg
|
|
600
|
-
{
|
|
601
|
-
result = node :call_args, :block_arg => val[0]
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
command_args: call_args
|
|
605
|
-
|
|
606
|
-
block_arg: tAMPER arg_value
|
|
607
|
-
{
|
|
608
|
-
# puts "here for #{val[1]}"
|
|
609
|
-
# puts val[1]
|
|
610
|
-
result = self.node :block_arg, :arg => val[1]
|
|
611
|
-
}
|
|
612
|
-
| '&' arg_value
|
|
613
|
-
{
|
|
614
|
-
# puts val[1]
|
|
615
|
-
result = self.node :block_arg, :arg => val[1]
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
opt_block_arg: ',' block_arg
|
|
619
|
-
{
|
|
620
|
-
result = val[1]
|
|
621
|
-
}
|
|
622
|
-
| ','
|
|
623
|
-
| none
|
|
624
|
-
|
|
625
|
-
args: arg_value
|
|
626
|
-
{
|
|
627
|
-
result = [val[0]]
|
|
628
|
-
}
|
|
629
|
-
| tSTAR arg_value
|
|
630
|
-
{
|
|
631
|
-
result = [node(:splat, :val => val[1])]
|
|
632
|
-
}
|
|
633
|
-
| args ',' arg_value
|
|
634
|
-
{
|
|
635
|
-
result = val[0] + [val[2]]
|
|
636
|
-
}
|
|
637
|
-
| args ',' tSTAR arg_value
|
|
638
|
-
{
|
|
639
|
-
result = val[0] + [node(:splat, :val => val[3])]
|
|
640
|
-
}
|
|
641
|
-
|
|
642
|
-
mrhs: args ',' arg_value
|
|
643
|
-
| args ',' tSTAR arg_value
|
|
644
|
-
| tSTAR arg_value
|
|
645
|
-
|
|
646
|
-
primary: literal
|
|
647
|
-
| strings
|
|
648
|
-
| xstring
|
|
649
|
-
| regexp
|
|
650
|
-
| words
|
|
651
|
-
| qwords
|
|
652
|
-
| tIDENTIFIER do_block
|
|
653
|
-
{
|
|
654
|
-
# if val[0].node == :self
|
|
655
|
-
# result = val[0]
|
|
656
|
-
# else
|
|
657
|
-
# HACK: this rule shouldnt even exist. But for now it must for "identifier do .. end"
|
|
658
|
-
result = node :call, :recv => nil, :meth => val[0], :brace_block => val[1]
|
|
659
|
-
# end
|
|
660
|
-
}
|
|
661
|
-
| var_ref
|
|
662
|
-
| backref
|
|
663
|
-
| tFID
|
|
664
|
-
| k_begin bodystmt k_end
|
|
665
|
-
{
|
|
666
|
-
result = node :begin, :stmt => val[1]
|
|
667
|
-
}
|
|
668
|
-
| tLPAREN_ARG expr rparen
|
|
669
|
-
| tLPAREN compstmt ')'
|
|
670
|
-
{
|
|
671
|
-
result = node :lparen, :stmt => val[1]
|
|
672
|
-
}
|
|
673
|
-
| primary_value tCOLON2 tCONSTANT
|
|
674
|
-
{
|
|
675
|
-
result = node :colon2, :lhs => val[0], :rhs => val[2]
|
|
676
|
-
}
|
|
677
|
-
| tCOLON3 tCONSTANT
|
|
678
|
-
{
|
|
679
|
-
result = node :colon3, :name => val[1]
|
|
680
|
-
}
|
|
681
|
-
| tLBRACK aref_args ']'
|
|
682
|
-
{
|
|
683
|
-
result = node :array, :args => val[1]
|
|
684
|
-
}
|
|
685
|
-
| tLBRACE assoc_list '}'
|
|
686
|
-
{
|
|
687
|
-
result = node :assoc_list, :list => val[1]
|
|
688
|
-
}
|
|
689
|
-
| kRETURN
|
|
690
|
-
{
|
|
691
|
-
result = node :return
|
|
692
|
-
}
|
|
693
|
-
| kYIELD '(' call_args rparen
|
|
694
|
-
{
|
|
695
|
-
result = node :yield, :call_args => val[2]
|
|
696
|
-
}
|
|
697
|
-
| kYIELD '(' rparen
|
|
698
|
-
{
|
|
699
|
-
result = node :yield
|
|
700
|
-
}
|
|
701
|
-
| kYIELD
|
|
702
|
-
{
|
|
703
|
-
result = node :yield
|
|
704
|
-
}
|
|
705
|
-
| kDEFined opt_nl '(' expr rparen
|
|
706
|
-
| kNOT '(' expr rparen
|
|
707
|
-
| kNOT '(' rparen
|
|
708
|
-
| operation brace_block
|
|
709
|
-
{
|
|
710
|
-
result = node :call, :recv => nil, :meth => val[0], :brace_block => val[1]
|
|
711
|
-
}
|
|
712
|
-
| method_call
|
|
713
|
-
{
|
|
714
|
-
# puts 2
|
|
715
|
-
}
|
|
716
|
-
| method_call brace_block
|
|
717
|
-
{
|
|
718
|
-
val[0][:brace_block] = val[1]
|
|
719
|
-
result = val[0]
|
|
720
|
-
}
|
|
721
|
-
| tLAMBDA lambda
|
|
722
|
-
{
|
|
723
|
-
result = node :lambda, :args => val[1][:args], :body => val[1][:body]
|
|
724
|
-
}
|
|
725
|
-
| k_if expr_value then compstmt if_tail k_end
|
|
726
|
-
{
|
|
727
|
-
result = self.node :if, :expr => val[1], :stmt => val[3], :tail => val[4]
|
|
728
|
-
}
|
|
729
|
-
| k_unless expr_value then compstmt opt_else k_end
|
|
730
|
-
{
|
|
731
|
-
result = self.node :unless, :expr => val[1], :stmt => val[3], :tail => val[4]
|
|
732
|
-
}
|
|
733
|
-
| k_while expr_value do compstmt k_end
|
|
734
|
-
{
|
|
735
|
-
# puts "in node while"
|
|
736
|
-
result = node :while, :expr => val[1], :stmt => val[3]
|
|
737
|
-
}
|
|
738
|
-
| k_until expr_value do compstmt k_end
|
|
739
|
-
{
|
|
740
|
-
result = node :until, :expr => val[1], :stmt => val[3]
|
|
741
|
-
}
|
|
742
|
-
| k_case expr_value opt_terms case_body k_end
|
|
743
|
-
{
|
|
744
|
-
result = node :case, :expr => val[1], :body => val[3]
|
|
745
|
-
}
|
|
746
|
-
| k_case opt_terms case_body k_end
|
|
747
|
-
{
|
|
748
|
-
result = node :case, :expr => nil, :body => val[2]
|
|
749
|
-
}
|
|
750
|
-
| k_for for_var kIN expr_value do compstmt k_end
|
|
751
|
-
| k_class cpath superclass bodystmt k_end
|
|
752
|
-
{
|
|
753
|
-
result = self.node_class(:cpath => val[1], :superclass => val[2], :bodystmt => val[3])
|
|
754
|
-
}
|
|
755
|
-
| k_class tLSHFT expr term bodystmt k_end
|
|
756
|
-
{
|
|
757
|
-
result = node :class_shift, :expr => val[2], :bodystmt => val[4]
|
|
758
|
-
}
|
|
759
|
-
| k_module cpath bodystmt k_end
|
|
760
|
-
{
|
|
761
|
-
result = self.node_module(:cpath => val[1], :body => val[2])
|
|
762
|
-
}
|
|
763
|
-
| k_def fname f_arglist bodystmt k_end
|
|
764
|
-
{
|
|
765
|
-
result = self.node :def, :fname => val[1], :arglist => val[2], :bodystmt => val[3], :line_number => @current_def_linenumber
|
|
766
|
-
}
|
|
767
|
-
| k_def singleton dot_or_colon fname f_arglist bodystmt k_end
|
|
768
|
-
{
|
|
769
|
-
result = self.node :def, :singleton => val[1], :fname => val[3], :arglist => val[4], :bodystmt => val[5], :line_number => @current_def_linenumber
|
|
770
|
-
}
|
|
771
|
-
| kBREAK
|
|
772
|
-
{
|
|
773
|
-
result = node :break, :call_args => nil
|
|
774
|
-
}
|
|
775
|
-
| kNEXT
|
|
776
|
-
{
|
|
777
|
-
result = node :next, :call_args => nil
|
|
778
|
-
}
|
|
779
|
-
| kREDO
|
|
780
|
-
{
|
|
781
|
-
result = node :redo
|
|
782
|
-
}
|
|
783
|
-
| kRETRY
|
|
784
|
-
|
|
785
|
-
primary_value: primary
|
|
786
|
-
|
|
787
|
-
k_begin: kBEGIN
|
|
788
|
-
|
|
789
|
-
k_if: kIF
|
|
790
|
-
|
|
791
|
-
k_unless: kUNLESS
|
|
792
|
-
|
|
793
|
-
k_while: kWHILE
|
|
794
|
-
|
|
795
|
-
k_until: kUNTIL
|
|
796
|
-
|
|
797
|
-
k_case: kCASE
|
|
798
|
-
|
|
799
|
-
k_for: kFOR
|
|
800
|
-
|
|
801
|
-
k_class: kCLASS
|
|
802
|
-
|
|
803
|
-
k_module: kMODULE
|
|
804
|
-
|
|
805
|
-
k_def: kDEF
|
|
806
|
-
|
|
807
|
-
k_end: kEND
|
|
808
|
-
|
|
809
|
-
then: term
|
|
810
|
-
| kTHEN
|
|
811
|
-
| term kTHEN
|
|
812
|
-
|
|
813
|
-
do: term
|
|
814
|
-
| kDO_COND
|
|
815
|
-
| kDO
|
|
816
|
-
|
|
817
|
-
if_tail: opt_else
|
|
818
|
-
{
|
|
819
|
-
result = val[0]
|
|
820
|
-
}
|
|
821
|
-
| kELSIF expr_value then compstmt if_tail
|
|
822
|
-
{
|
|
823
|
-
result = [self.node(:elsif, :expr => val[1], :stmt => val[3])] + val[4]
|
|
824
|
-
}
|
|
825
|
-
|
|
826
|
-
opt_else: none
|
|
827
|
-
{
|
|
828
|
-
result = []
|
|
829
|
-
}
|
|
830
|
-
| kELSE compstmt
|
|
831
|
-
{
|
|
832
|
-
result = [self.node(:else, :stmt => val[1])]
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
for_var: lhs
|
|
836
|
-
| mlhs
|
|
837
|
-
|
|
838
|
-
f_marg: f_norm_arg
|
|
839
|
-
| tLPAREN f_margs rparen
|
|
840
|
-
|
|
841
|
-
f_marg_list: f_marg
|
|
842
|
-
| f_marg_list ',' f_marg
|
|
843
|
-
|
|
844
|
-
f_margs: f_marg_list
|
|
845
|
-
| f_marg_list ',' tSTAR f_norm_arg
|
|
846
|
-
| f_marg_list ',' tSTAR f_norm_arg ',' f_marg_list
|
|
847
|
-
| f_marg_list ',' tSTAR
|
|
848
|
-
| f_marg_list ',' tSTAR ',' f_marg_list
|
|
849
|
-
| tSTAR f_norm_arg
|
|
850
|
-
| tSTAR f_norm_arg ',' f_marg_list
|
|
851
|
-
| tSTAR
|
|
852
|
-
| tSTAR ',' f_marg_list
|
|
853
|
-
|
|
854
|
-
block_param: f_arg ',' f_block_optarg ',' f_rest_arg opt_f_block_arg
|
|
855
|
-
| f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_f_block_arg
|
|
856
|
-
| f_arg ',' f_block_optarg opt_f_block_arg
|
|
857
|
-
| f_arg ',' f_block_optarg ',' f_arg opt_f_block_arg
|
|
858
|
-
| f_arg ',' f_rest_arg opt_f_block_arg
|
|
859
|
-
| f_arg ','
|
|
860
|
-
| f_arg ',' f_rest_arg ',' f_arg opt_f_block_arg
|
|
861
|
-
| f_arg opt_f_block_arg
|
|
862
|
-
| f_block_optarg ',' f_rest_arg opt_f_block_arg
|
|
863
|
-
| f_block_optarg ',' f_rest_arg ',' f_arg opt_f_block_arg
|
|
864
|
-
| f_block_optarg opt_f_block_arg
|
|
865
|
-
| f_block_optarg ',' f_arg opt_f_block_arg
|
|
866
|
-
| f_rest_arg opt_f_block_arg
|
|
867
|
-
| f_rest_arg ',' f_arg opt_f_block_arg
|
|
868
|
-
| f_block_arg
|
|
869
|
-
|
|
870
|
-
opt_block_param: none
|
|
871
|
-
{
|
|
872
|
-
result = nil
|
|
873
|
-
}
|
|
874
|
-
| block_param_def
|
|
875
|
-
|
|
876
|
-
block_param_def: '|' opt_bv_decl '|'
|
|
877
|
-
| tOROP
|
|
878
|
-
| '|' block_param opt_bv_decl '|'
|
|
879
|
-
{
|
|
880
|
-
result = val[1]
|
|
881
|
-
}
|
|
882
|
-
|
|
883
|
-
opt_bv_decl: none
|
|
884
|
-
| ';' bv_decls
|
|
885
|
-
|
|
886
|
-
bv_decls: bvar
|
|
887
|
-
| bv_decls ',' bvar
|
|
888
|
-
|
|
889
|
-
bvar: tIDENTIFIER
|
|
890
|
-
| f_bad_arg
|
|
891
|
-
|
|
892
|
-
lambda: f_larglist lambda_body
|
|
893
|
-
{
|
|
894
|
-
result = {:args => val[0], :body => val[1]}
|
|
895
|
-
}
|
|
896
|
-
|
|
897
|
-
f_larglist: '(' f_args opt_bv_decl rparen
|
|
898
|
-
| f_args
|
|
899
|
-
|
|
900
|
-
lambda_body: tLBRACE compstmt '}'
|
|
901
|
-
{
|
|
902
|
-
result = val[1]
|
|
903
|
-
}
|
|
904
|
-
| kDO_LAMBDA compstmt kEND
|
|
905
|
-
{
|
|
906
|
-
result = val[1]
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
do_block: kDO_BLOCK opt_block_param compstmt kEND
|
|
910
|
-
| kDO opt_block_param compstmt kEND
|
|
911
|
-
{
|
|
912
|
-
result = node :brace_block, :params => val[1], :stmt => val[2]
|
|
913
|
-
}
|
|
914
|
-
|
|
915
|
-
block_call: command do_block
|
|
916
|
-
{
|
|
917
|
-
val[0][:brace_block] = val[1]
|
|
918
|
-
result = val[0]
|
|
919
|
-
}
|
|
920
|
-
| block_call '.' operation2 opt_paren_args
|
|
921
|
-
| block_call tCOLON2 operation2 opt_paren_args
|
|
922
|
-
|
|
923
|
-
method_call: operation paren_args
|
|
924
|
-
{
|
|
925
|
-
result = node :call, :recv => nil, :meth => val[0], :call_args => val[1]
|
|
926
|
-
}
|
|
927
|
-
| primary_value '.' operation2 opt_paren_args
|
|
928
|
-
{
|
|
929
|
-
result = node :call, :recv => val[0], :meth => val[2], :call_args => val[3]
|
|
930
|
-
}
|
|
931
|
-
| primary_value tCOLON2 operation2 paren_args
|
|
932
|
-
{
|
|
933
|
-
result = node :tCOLON2call, :recv => val[0], :meth => val[2], :args => val[3]
|
|
934
|
-
puts "tCOLON2call"
|
|
935
|
-
}
|
|
936
|
-
| primary_value tCOLON2 operation3
|
|
937
|
-
{
|
|
938
|
-
result = node :tCOLON2call, :recv => val[0], :meth => val[2]
|
|
939
|
-
puts "tCOLON2call.noargs."
|
|
940
|
-
}
|
|
941
|
-
| primary_value '.' paren_args
|
|
942
|
-
| primary_value tCOLON2 paren_args
|
|
943
|
-
| kSUPER paren_args
|
|
944
|
-
{
|
|
945
|
-
result = node :super, :call_args => val[1], :paren => true
|
|
946
|
-
}
|
|
947
|
-
| kSUPER
|
|
948
|
-
{
|
|
949
|
-
result = node :super, :call_args => nil, :inherit => true
|
|
950
|
-
}
|
|
951
|
-
| primary_value '[' opt_call_args rbracket
|
|
952
|
-
{
|
|
953
|
-
result = node :call, :recv => val[0], :meth => '[]', :call_args => val[2]
|
|
954
|
-
}
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
brace_block: '{' opt_block_param compstmt '}'
|
|
958
|
-
{
|
|
959
|
-
result = node :brace_block, :params => val[1], :stmt => val[2]
|
|
960
|
-
}
|
|
961
|
-
| kDO opt_block_param compstmt kEND
|
|
962
|
-
{
|
|
963
|
-
result = node :brace_block, :params => val[1], :stmt => val[2]
|
|
964
|
-
}
|
|
965
|
-
|
|
966
|
-
case_body: kWHEN args then compstmt cases
|
|
967
|
-
{
|
|
968
|
-
result = [node(:when, :args => val[1], :stmt => val[3])] + val[4]
|
|
969
|
-
}
|
|
970
|
-
|
|
971
|
-
cases: opt_else
|
|
972
|
-
{
|
|
973
|
-
result = val[0]
|
|
974
|
-
}
|
|
975
|
-
| case_body
|
|
976
|
-
|
|
977
|
-
opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue
|
|
978
|
-
{
|
|
979
|
-
result = node :rescue, :list => val[1], :var => val[2], :stmt => val[4], :opt_rescue => val[5]
|
|
980
|
-
# puts result
|
|
981
|
-
}
|
|
982
|
-
| none
|
|
983
|
-
{
|
|
984
|
-
result = nil
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
exc_list: arg_value
|
|
988
|
-
{
|
|
989
|
-
result = val[0]
|
|
990
|
-
}
|
|
991
|
-
| mrhs
|
|
992
|
-
{
|
|
993
|
-
result = val[0]
|
|
994
|
-
}
|
|
995
|
-
| none
|
|
996
|
-
{
|
|
997
|
-
result = nil
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
exc_var: tASSOC lhs
|
|
1001
|
-
{
|
|
1002
|
-
result = val[1]
|
|
1003
|
-
}
|
|
1004
|
-
| none
|
|
1005
|
-
{
|
|
1006
|
-
result = nil
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
opt_ensure: kENSURE compstmt
|
|
1010
|
-
{
|
|
1011
|
-
result = val[1]
|
|
1012
|
-
}
|
|
1013
|
-
| none
|
|
1014
|
-
{
|
|
1015
|
-
result = nil
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
literal: numeric
|
|
1019
|
-
| symbol
|
|
1020
|
-
| dsym
|
|
1021
|
-
|
|
1022
|
-
strings: string
|
|
1023
|
-
|
|
1024
|
-
string: tCHAR
|
|
1025
|
-
| string1
|
|
1026
|
-
| string string1
|
|
1027
|
-
|
|
1028
|
-
string1: tSTRING_BEG string_contents tSTRING_END
|
|
1029
|
-
{
|
|
1030
|
-
result = node :string, :value => val[1], :beg => val[0]
|
|
1031
|
-
}
|
|
1032
|
-
|
|
1033
|
-
xstring: tXSTRING_BEG xstring_contents tXSTRING_END
|
|
1034
|
-
{
|
|
1035
|
-
result = node :xstring, :value => val[1]
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
regexp: tREGEXP_BEG xstring_contents tREGEXP_END
|
|
1039
|
-
{
|
|
1040
|
-
result = node :regexp, :value => val[1]
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
|
-
words: tWORDS_BEG ' ' tSTRING_END
|
|
1044
|
-
| tWORDS_BEG word_list tSTRING_END
|
|
1045
|
-
{
|
|
1046
|
-
result = node :words, :list => val[1]
|
|
1047
|
-
}
|
|
1048
|
-
|
|
1049
|
-
word_list: /* none */
|
|
1050
|
-
{
|
|
1051
|
-
result = []
|
|
1052
|
-
}
|
|
1053
|
-
| word_list word
|
|
1054
|
-
{
|
|
1055
|
-
result = val[0] + [val[1]]
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
|
-
word: string_content
|
|
1059
|
-
{
|
|
1060
|
-
result = [val[0]]
|
|
1061
|
-
}
|
|
1062
|
-
| word string_content
|
|
1063
|
-
{
|
|
1064
|
-
result = val[0] + [val[1]]
|
|
1065
|
-
}
|
|
1066
|
-
|
|
1067
|
-
qwords: tQWORDS_BEG ' ' tSTRING_END
|
|
1068
|
-
| tQWORDS_BEG qword_list tSTRING_END
|
|
1069
|
-
|
|
1070
|
-
qword_list:
|
|
1071
|
-
{
|
|
1072
|
-
# none..
|
|
1073
|
-
result = []
|
|
1074
|
-
}
|
|
1075
|
-
| qword_list tSTRING_CONTENT ' '
|
|
1076
|
-
|
|
1077
|
-
string_contents:
|
|
1078
|
-
{
|
|
1079
|
-
# none..
|
|
1080
|
-
result = []
|
|
1081
|
-
}
|
|
1082
|
-
| string_contents string_content
|
|
1083
|
-
{
|
|
1084
|
-
result = val[0] + [val[1]]
|
|
1085
|
-
}
|
|
1086
|
-
|
|
1087
|
-
xstring_contents:
|
|
1088
|
-
{
|
|
1089
|
-
# none..
|
|
1090
|
-
result = []
|
|
1091
|
-
}
|
|
1092
|
-
| xstring_contents string_content
|
|
1093
|
-
{
|
|
1094
|
-
result = val[0] + [val[1]]
|
|
1095
|
-
}
|
|
1096
|
-
|
|
1097
|
-
string_content: tSTRING_CONTENT
|
|
1098
|
-
{
|
|
1099
|
-
result = node :string_content, :value => val[0]
|
|
1100
|
-
}
|
|
1101
|
-
| tSTRING_DVAR string_dvar
|
|
1102
|
-
{
|
|
1103
|
-
result = node :string_dvar, :value => val[1]
|
|
1104
|
-
}
|
|
1105
|
-
| tSTRING_DBEG compstmt '}'
|
|
1106
|
-
{
|
|
1107
|
-
result = node :string_dbeg, :value => val[1]
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
string_dvar: tGVAR
|
|
1111
|
-
| tIVAR
|
|
1112
|
-
| tCVAR
|
|
1113
|
-
| backref
|
|
1114
|
-
|
|
1115
|
-
symbol: tSYMBEG sym
|
|
1116
|
-
{
|
|
1117
|
-
result = node :symbol, :name => val[1]
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
sym: fname
|
|
1121
|
-
| tIVAR
|
|
1122
|
-
| tGVAR
|
|
1123
|
-
| tCVAR
|
|
1124
|
-
|
|
1125
|
-
dsym: tSYMBEG xstring_contents tSTRING_END
|
|
1126
|
-
{
|
|
1127
|
-
result = node :dsym, :contents => val[1]
|
|
1128
|
-
}
|
|
1129
|
-
|
|
1130
|
-
numeric: tINTEGER
|
|
1131
|
-
{
|
|
1132
|
-
result = node :numeric, :value => val[0], :float => false
|
|
1133
|
-
}
|
|
1134
|
-
| tFLOAT
|
|
1135
|
-
{
|
|
1136
|
-
result = node :numeric, :value => val[0], :float => true
|
|
1137
|
-
}
|
|
1138
|
-
| tUMINUS_NUM tINTEGER
|
|
1139
|
-
| tUMINUS_NUM tFLOAT
|
|
1140
|
-
|
|
1141
|
-
variable: tIDENTIFIER
|
|
1142
|
-
{
|
|
1143
|
-
|
|
1144
|
-
result = node :identifier, :name => val[0]
|
|
1145
|
-
}
|
|
1146
|
-
| tIVAR
|
|
1147
|
-
{
|
|
1148
|
-
result = node :ivar, :name => val[0]
|
|
1149
|
-
}
|
|
1150
|
-
| tGVAR
|
|
1151
|
-
{
|
|
1152
|
-
result = node :gvar, :name => val[0]
|
|
1153
|
-
}
|
|
1154
|
-
| tCONSTANT
|
|
1155
|
-
{
|
|
1156
|
-
result = node :constant, :name => val[0]
|
|
1157
|
-
}
|
|
1158
|
-
| tCVAR
|
|
1159
|
-
{
|
|
1160
|
-
result = node :cvar, :name => val[0]
|
|
1161
|
-
}
|
|
1162
|
-
| kNIL
|
|
1163
|
-
{
|
|
1164
|
-
result = node :nil, :name => val[0]
|
|
1165
|
-
}
|
|
1166
|
-
| kSELF
|
|
1167
|
-
{
|
|
1168
|
-
result = node :self, :name => val[0]
|
|
1169
|
-
}
|
|
1170
|
-
| kTRUE
|
|
1171
|
-
{
|
|
1172
|
-
result = node :true, :name => val[0]
|
|
1173
|
-
}
|
|
1174
|
-
| kFALSE
|
|
1175
|
-
{
|
|
1176
|
-
result = node :false, :name => val[0]
|
|
1177
|
-
}
|
|
1178
|
-
| k__FILE__
|
|
1179
|
-
{
|
|
1180
|
-
result = node :__FILE__, :name => val[0]
|
|
1181
|
-
}
|
|
1182
|
-
| k__LINE__
|
|
1183
|
-
{
|
|
1184
|
-
result = node :__LINE__, :name => val[0]
|
|
1185
|
-
}
|
|
1186
|
-
| k__ENCODING__
|
|
1187
|
-
{
|
|
1188
|
-
result = node :__ENCODING__, :name => val[0]
|
|
1189
|
-
}
|
|
1190
|
-
| kBLOCK_GIVEN
|
|
1191
|
-
{
|
|
1192
|
-
# added for block_given? support.. :D
|
|
1193
|
-
result = node :block_given, :name => val[0]
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
|
-
var_ref: variable
|
|
1197
|
-
|
|
1198
|
-
var_lhs: variable
|
|
1199
|
-
|
|
1200
|
-
backref: tNTH_REF
|
|
1201
|
-
| tBACK_REF
|
|
1202
|
-
|
|
1203
|
-
superclass: term
|
|
1204
|
-
{
|
|
1205
|
-
result = nil
|
|
1206
|
-
}
|
|
1207
|
-
| '<' expr_value term
|
|
1208
|
-
{
|
|
1209
|
-
result = node :superclass, :expr => val[1]
|
|
1210
|
-
}
|
|
1211
|
-
| error term { puts 'OMFG' }
|
|
1212
|
-
|
|
1213
|
-
f_arglist: '(' f_args rparen
|
|
1214
|
-
{
|
|
1215
|
-
result = val[1]
|
|
1216
|
-
self.lex_state = :EXPR_BEG
|
|
1217
|
-
}
|
|
1218
|
-
| f_args term
|
|
1219
|
-
{
|
|
1220
|
-
result = val[0]
|
|
1221
|
-
self.lex_state = :EXPR_BEG
|
|
1222
|
-
}
|
|
1223
|
-
|
|
1224
|
-
f_args: f_arg ',' f_optarg ',' f_rest_arg opt_f_block_arg
|
|
1225
|
-
{
|
|
1226
|
-
result = node_args(val[0], val[2], val[4], nil, val[5])
|
|
1227
|
-
}
|
|
1228
|
-
| f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_f_block_arg
|
|
1229
|
-
{
|
|
1230
|
-
result = node_args(val[0], val[2], val[4], val[6], val[7])
|
|
1231
|
-
}
|
|
1232
|
-
| f_arg ',' f_optarg opt_f_block_arg
|
|
1233
|
-
{
|
|
1234
|
-
result = node_args(val[0], val[2], nil, nil, val[3])
|
|
1235
|
-
}
|
|
1236
|
-
| f_arg ',' f_optarg ',' f_arg opt_f_block_arg
|
|
1237
|
-
{
|
|
1238
|
-
result = node_args(val[0], val[2], nil, val[4], val[5])
|
|
1239
|
-
}
|
|
1240
|
-
| f_arg ',' f_rest_arg opt_f_block_arg
|
|
1241
|
-
{
|
|
1242
|
-
result = node_args(val[0], nil, val[2], nil, val[3])
|
|
1243
|
-
}
|
|
1244
|
-
| f_arg ',' f_rest_arg ',' f_arg opt_f_block_arg
|
|
1245
|
-
{
|
|
1246
|
-
result = node_args(val[0], nil, val[2], val[4], val[5])
|
|
1247
|
-
}
|
|
1248
|
-
| f_arg opt_f_block_arg
|
|
1249
|
-
{
|
|
1250
|
-
result = node_args(val[0], nil, nil, nil, val[1])
|
|
1251
|
-
}
|
|
1252
|
-
| f_optarg ',' f_rest_arg opt_f_block_arg
|
|
1253
|
-
{
|
|
1254
|
-
result = node_args(nil, val[0], val[2], nil, val[3])
|
|
1255
|
-
}
|
|
1256
|
-
| f_optarg ',' f_rest_arg ',' f_arg opt_f_block_arg
|
|
1257
|
-
{
|
|
1258
|
-
result = node_args(nil, val[0], val[2], val[4], val[5])
|
|
1259
|
-
}
|
|
1260
|
-
| f_optarg opt_f_block_arg
|
|
1261
|
-
{
|
|
1262
|
-
result = node_args(nil, val[0], nil, nil, val[1])
|
|
1263
|
-
}
|
|
1264
|
-
| f_optarg ',' f_arg opt_f_block_arg
|
|
1265
|
-
{
|
|
1266
|
-
result = node_args(nil, val[0], nil, val[2], val[3])
|
|
1267
|
-
}
|
|
1268
|
-
| f_rest_arg opt_f_block_arg
|
|
1269
|
-
{
|
|
1270
|
-
result = node_args(nil, nil, val[0], nil, val[1])
|
|
1271
|
-
}
|
|
1272
|
-
| f_rest_arg ',' f_arg opt_f_block_arg
|
|
1273
|
-
{
|
|
1274
|
-
result = node_args(nil, nil, val[0], val[2], val[3])
|
|
1275
|
-
}
|
|
1276
|
-
| f_block_arg
|
|
1277
|
-
{
|
|
1278
|
-
result = node_args(nil, nil, nil, nil, val[0])
|
|
1279
|
-
}
|
|
1280
|
-
| # none ..
|
|
1281
|
-
{
|
|
1282
|
-
result = node_args(nil, nil, nil, nil, nil)
|
|
1283
|
-
}
|
|
1284
|
-
|
|
1285
|
-
f_bad_arg: tCONSTANT
|
|
1286
|
-
| tIVAR
|
|
1287
|
-
| tGVAR
|
|
1288
|
-
| tCVAR
|
|
1289
|
-
|
|
1290
|
-
f_norm_arg: f_bad_arg
|
|
1291
|
-
| tIDENTIFIER
|
|
1292
|
-
{
|
|
1293
|
-
# result = val[0]
|
|
1294
|
-
result = node :norm_arg, :value => val[0]
|
|
1295
|
-
}
|
|
1296
|
-
| tIDENTIFIER tASSOC tIDENTIFIER
|
|
1297
|
-
{
|
|
1298
|
-
|
|
1299
|
-
}
|
|
1300
|
-
| tLABEL tIDENTIFIER
|
|
1301
|
-
{
|
|
1302
|
-
result = node :label_arg, :name => val[0], :value => val[1]
|
|
1303
|
-
}
|
|
1304
|
-
|
|
1305
|
-
f_arg_item: f_norm_arg
|
|
1306
|
-
{
|
|
1307
|
-
result = val[0]
|
|
1308
|
-
}
|
|
1309
|
-
| tLPAREN f_margs rparen
|
|
1310
|
-
|
|
1311
|
-
f_arg: f_arg_item
|
|
1312
|
-
{
|
|
1313
|
-
result = [val[0]]
|
|
1314
|
-
}
|
|
1315
|
-
| f_arg ',' f_arg_item
|
|
1316
|
-
{
|
|
1317
|
-
# val[0] + val[2]
|
|
1318
|
-
result = val[0] + [val[2]]
|
|
1319
|
-
}
|
|
1320
|
-
|
|
1321
|
-
f_opt: tIDENTIFIER '=' arg_value
|
|
1322
|
-
{
|
|
1323
|
-
result = [val[0], val[2]]
|
|
1324
|
-
}
|
|
1325
|
-
|
|
1326
|
-
f_block_opt: tIDENTIFIER '=' primary_value
|
|
1327
|
-
|
|
1328
|
-
f_block_optarg: f_block_opt
|
|
1329
|
-
| f_block_optarg ',' f_block_opt
|
|
1330
|
-
|
|
1331
|
-
f_optarg: f_opt
|
|
1332
|
-
{
|
|
1333
|
-
result = [val[0]]
|
|
1334
|
-
}
|
|
1335
|
-
| f_optarg ',' f_opt
|
|
1336
|
-
{
|
|
1337
|
-
result = val[0] + [val[2]]
|
|
1338
|
-
}
|
|
1339
|
-
|
|
1340
|
-
restarg_mark: '*'
|
|
1341
|
-
| tSTAR
|
|
1342
|
-
|
|
1343
|
-
f_rest_arg: restarg_mark tIDENTIFIER
|
|
1344
|
-
{
|
|
1345
|
-
result = val[1]
|
|
1346
|
-
}
|
|
1347
|
-
| restarg_mark
|
|
1348
|
-
|
|
1349
|
-
blkarg_mark: '&'
|
|
1350
|
-
| tAMPER
|
|
1351
|
-
|
|
1352
|
-
f_block_arg: blkarg_mark tIDENTIFIER
|
|
1353
|
-
{
|
|
1354
|
-
result = val[1]
|
|
1355
|
-
}
|
|
1356
|
-
| tLABEL blkarg_mark tIDENTIFIER
|
|
1357
|
-
{
|
|
1358
|
-
result = node :label_arg, :name => val[0], :value => val[1]
|
|
1359
|
-
}
|
|
1360
|
-
|
|
1361
|
-
opt_f_block_arg: ',' f_block_arg
|
|
1362
|
-
{
|
|
1363
|
-
result = val[1]
|
|
1364
|
-
}
|
|
1365
|
-
| none
|
|
1366
|
-
|
|
1367
|
-
singleton: var_ref
|
|
1368
|
-
| '(' expr rparen
|
|
1369
|
-
|
|
1370
|
-
assoc_list: none
|
|
1371
|
-
{
|
|
1372
|
-
result = []
|
|
1373
|
-
}
|
|
1374
|
-
| assocs trailer
|
|
1375
|
-
{
|
|
1376
|
-
result = val[0]
|
|
1377
|
-
}
|
|
1378
|
-
|
|
1379
|
-
assocs: assoc
|
|
1380
|
-
{
|
|
1381
|
-
result = [val[0]]
|
|
1382
|
-
}
|
|
1383
|
-
| assocs ',' assoc
|
|
1384
|
-
{
|
|
1385
|
-
result = val[0] + [val[2]]
|
|
1386
|
-
}
|
|
1387
|
-
|
|
1388
|
-
assoc: arg_value tASSOC arg_value
|
|
1389
|
-
{
|
|
1390
|
-
result = node :assoc, :key => val[0], :value => val[2]
|
|
1391
|
-
}
|
|
1392
|
-
| tLABEL arg_value
|
|
1393
|
-
{
|
|
1394
|
-
result = node :label_assoc, :key => val[0], :value => val[1]
|
|
1395
|
-
}
|
|
1396
|
-
|
|
1397
|
-
operation: tIDENTIFIER
|
|
1398
|
-
| tCONSTANT
|
|
1399
|
-
| tFID
|
|
1400
|
-
|
|
1401
|
-
operation2: tIDENTIFIER
|
|
1402
|
-
{
|
|
1403
|
-
|
|
1404
|
-
}
|
|
1405
|
-
| tCONSTANT
|
|
1406
|
-
| tFID
|
|
1407
|
-
| op
|
|
1408
|
-
|
|
1409
|
-
operation3: tIDENTIFIER
|
|
1410
|
-
{
|
|
1411
|
-
puts 4
|
|
1412
|
-
}
|
|
1413
|
-
| tFID
|
|
1414
|
-
| op
|
|
1415
|
-
|
|
1416
|
-
dot_or_colon: '.'
|
|
1417
|
-
| tCOLON2
|
|
1418
|
-
|
|
1419
|
-
opt_terms:
|
|
1420
|
-
| terms
|
|
1421
|
-
|
|
1422
|
-
opt_nl: /* none */
|
|
1423
|
-
| '\n'
|
|
1424
|
-
|
|
1425
|
-
rparen: opt_nl ')'
|
|
1426
|
-
|
|
1427
|
-
rbracket: opt_nl ']'
|
|
1428
|
-
|
|
1429
|
-
trailer: /* none */
|
|
1430
|
-
| '\n'
|
|
1431
|
-
| ','
|
|
1432
|
-
|
|
1433
|
-
term: ';'
|
|
1434
|
-
| '\n'
|
|
1435
|
-
|
|
1436
|
-
terms: term
|
|
1437
|
-
| terms ';'
|
|
1438
|
-
|
|
1439
|
-
none:
|
|
1440
|
-
|
|
1441
|
-
end
|
|
1442
|
-
|
|
1443
|
-
---- header ----
|
|
1444
|
-
|
|
1445
|
-
# require 'ctokenizer'
|
|
1446
|
-
require 'strscan'
|
|
1447
|
-
|
|
1448
|
-
---- inner ----
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
---- footer ----
|