script_core 0.2.3 → 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.
- checksums.yaml +4 -4
- data/.rubocop.yml +35 -57
- data/.ruby-version +1 -1
- data/Gemfile +2 -2
- data/README.md +7 -1
- data/ext/enterprise_script_service/Rakefile +1 -1
- data/ext/enterprise_script_service/libseccomp/.travis.yml +24 -12
- data/ext/enterprise_script_service/libseccomp/CHANGELOG +32 -0
- data/ext/enterprise_script_service/libseccomp/CONTRIBUTING.md +37 -26
- data/ext/enterprise_script_service/libseccomp/CREDITS +11 -0
- data/ext/enterprise_script_service/libseccomp/README.md +21 -1
- data/ext/enterprise_script_service/libseccomp/configure.ac +13 -8
- data/ext/enterprise_script_service/libseccomp/doc/Makefile.am +6 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_api_get.3 +12 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_arch_add.3 +38 -6
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_attr_set.3 +53 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_export_bpf.3 +20 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_init.3 +9 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_load.3 +32 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_merge.3 +16 -2
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_alloc.3 +113 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_fd.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_free.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_id_valid.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_receive.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_notify_respond.3 +1 -0
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_rule_add.3 +64 -3
- data/ext/enterprise_script_service/libseccomp/doc/man/man3/seccomp_syscall_priority.3 +18 -3
- data/ext/enterprise_script_service/libseccomp/include/seccomp-syscalls.h +19 -0
- data/ext/enterprise_script_service/libseccomp/include/seccomp.h.in +116 -0
- data/ext/enterprise_script_service/libseccomp/src/.gitignore +2 -0
- data/ext/enterprise_script_service/libseccomp/src/Makefile.am +31 -17
- data/ext/enterprise_script_service/libseccomp/src/api.c +254 -58
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-arm.c +47 -2
- data/ext/enterprise_script_service/libseccomp/src/arch-arm.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-gperf-generate +40 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-mips.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64.h +3 -11
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.c +41 -4
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc.h +1 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.c +3 -3
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc64.h +29 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.c +606 -8
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.c +31 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-riscv64.h +22 -0
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.c +171 -12
- data/ext/enterprise_script_service/libseccomp/src/arch-s390.h +1 -17
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.c +166 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x.h +1 -20
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-dump.c +8 -1
- data/ext/enterprise_script_service/libseccomp/src/arch-syscall-validate +359 -143
- data/ext/enterprise_script_service/libseccomp/src/arch-x32.c +36 -2
- data/ext/enterprise_script_service/libseccomp/src/arch-x32.h +2 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.c +172 -10
- data/ext/enterprise_script_service/libseccomp/src/arch-x86.h +1 -14
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64.h +1 -9
- data/ext/enterprise_script_service/libseccomp/src/arch.c +11 -3
- data/ext/enterprise_script_service/libseccomp/src/arch.h +7 -0
- data/ext/enterprise_script_service/libseccomp/src/db.c +268 -57
- data/ext/enterprise_script_service/libseccomp/src/db.h +16 -2
- data/ext/enterprise_script_service/libseccomp/src/gen_bpf.c +503 -148
- data/ext/enterprise_script_service/libseccomp/src/gen_bpf.h +2 -1
- data/ext/enterprise_script_service/libseccomp/src/gen_pfc.c +165 -37
- data/ext/enterprise_script_service/libseccomp/src/python/libseccomp.pxd +37 -1
- data/ext/enterprise_script_service/libseccomp/src/python/seccomp.pyx +295 -5
- data/ext/enterprise_script_service/libseccomp/src/syscalls.c +56 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.csv +470 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.h +62 -0
- data/ext/enterprise_script_service/libseccomp/src/syscalls.perf.template +82 -0
- data/ext/enterprise_script_service/libseccomp/src/system.c +196 -16
- data/ext/enterprise_script_service/libseccomp/src/system.h +68 -13
- data/ext/enterprise_script_service/libseccomp/tests/.gitignore +10 -2
- data/ext/enterprise_script_service/libseccomp/tests/06-sim-actions.tests +1 -1
- data/ext/enterprise_script_service/libseccomp/tests/11-basic-basic_errors.c +5 -5
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.c +35 -1
- data/ext/enterprise_script_service/libseccomp/tests/13-basic-attrs.py +10 -1
- data/ext/enterprise_script_service/libseccomp/tests/15-basic-resolver.c +4 -3
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.c +12 -0
- data/ext/enterprise_script_service/libseccomp/tests/16-sim-arch_basic.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.c → 18-sim-basic_allowlist.c} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/{18-sim-basic_whitelist.py → 18-sim-basic_allowlist.py} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_allowlist.tests +32 -0
- data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/23-sim-arch_all_le_basic.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/30-sim-socket_syscalls.tests +33 -17
- data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.c → 34-sim-basic_denylist.c} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/{34-sim-basic_blacklist.py → 34-sim-basic_denylist.py} +0 -0
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_denylist.tests +32 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.py +1 -0
- data/ext/enterprise_script_service/libseccomp/tests/36-sim-ipc_syscalls.tests +25 -25
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.c +24 -3
- data/ext/enterprise_script_service/libseccomp/tests/39-basic-api_level.py +16 -1
- data/ext/enterprise_script_service/libseccomp/tests/47-live-kill_process.c +3 -3
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.c +112 -0
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.py +60 -0
- data/ext/enterprise_script_service/libseccomp/tests/51-live-user_notification.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.c +48 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.py +38 -0
- data/ext/enterprise_script_service/libseccomp/tests/52-basic-load.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.c +156 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.py +95 -0
- data/ext/enterprise_script_service/libseccomp/tests/53-sim-binary_tree.tests +65 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.c +128 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.py +95 -0
- data/ext/enterprise_script_service/libseccomp/tests/54-live-binary_tree.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.c +134 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.sh +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/55-basic-pfc_binary_tree.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.c +90 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.py +65 -0
- data/ext/enterprise_script_service/libseccomp/tests/56-basic-iterate_syscalls.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.c +64 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.py +46 -0
- data/ext/enterprise_script_service/libseccomp/tests/57-basic-rawsysrc.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.c +116 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.py +61 -0
- data/ext/enterprise_script_service/libseccomp/tests/58-live-tsync_notify.tests +11 -0
- data/ext/enterprise_script_service/libseccomp/tests/Makefile.am +34 -10
- data/ext/enterprise_script_service/libseccomp/tests/regression +10 -3
- data/ext/enterprise_script_service/libseccomp/tests/util.c +3 -3
- data/ext/enterprise_script_service/libseccomp/tools/Makefile.am +0 -3
- data/ext/enterprise_script_service/libseccomp/tools/check-syntax +1 -1
- data/ext/enterprise_script_service/libseccomp/tools/scmp_arch_detect.c +3 -0
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_disasm.c +4 -2
- data/ext/enterprise_script_service/libseccomp/tools/scmp_bpf_sim.c +4 -0
- data/ext/enterprise_script_service/libseccomp/tools/util.c +14 -12
- data/ext/enterprise_script_service/libseccomp/tools/util.h +7 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +149 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +55 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
- data/ext/enterprise_script_service/mruby/.gitignore +3 -0
- data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
- data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
- data/ext/enterprise_script_service/mruby/.travis.yml +7 -10
- data/ext/enterprise_script_service/mruby/.yamllint +8 -0
- data/ext/enterprise_script_service/mruby/AUTHORS +4 -0
- data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
- data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
- data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
- data/ext/enterprise_script_service/mruby/LICENSE +1 -1
- data/ext/enterprise_script_service/mruby/Makefile +1 -1
- data/ext/enterprise_script_service/mruby/README.md +5 -11
- data/ext/enterprise_script_service/mruby/Rakefile +18 -108
- data/ext/enterprise_script_service/mruby/TODO.md +17 -0
- data/ext/enterprise_script_service/mruby/appveyor.yml +29 -26
- data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
- data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +4 -21
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +4 -4
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +3 -20
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +4 -21
- data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_android_armeabi_v7a_neon_hard.rb → build_config/android_armeabi_v7a_neon_hard.rb} +0 -15
- data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +4 -21
- data/ext/enterprise_script_service/mruby/{appveyor_config.rb → build_config/ci/gcc-clang.rb} +11 -8
- data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
- data/ext/enterprise_script_service/mruby/build_config/dreamcast_shelf.rb +94 -0
- data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
- data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
- data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
- data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
- data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
- data/ext/enterprise_script_service/mruby/doc/guides/compile.md +142 -49
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
- data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +53 -30
- data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
- data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
- data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
- data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
- data/ext/enterprise_script_service/mruby/doc/opcode.md +102 -103
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +88 -66
- data/ext/enterprise_script_service/mruby/include/mruby.h +160 -104
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +27 -6
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +80 -46
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +76 -55
- data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +14 -1
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +20 -6
- data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +18 -52
- data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
- data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
- data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +74 -14
- data/ext/enterprise_script_service/mruby/include/mruby/istruct.h +4 -1
- data/ext/enterprise_script_service/mruby/include/mruby/khash.h +19 -9
- data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +37 -63
- data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +29 -24
- data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
- data/ext/enterprise_script_service/mruby/include/mruby/proc.h +93 -21
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +12 -16
- data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +60 -59
- data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +25 -6
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -72
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +71 -78
- data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
- data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +84 -32
- data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
- data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
- data/ext/enterprise_script_service/mruby/lib/mruby/source.rb +3 -1
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -81
- data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
- data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -32
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +10 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/test/array.rb +0 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +30 -18
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +46 -35
- data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +41 -28
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +26 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +6 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +7 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +495 -436
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +637 -220
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +13734 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +20 -23
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +9 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/src/exception.c +3 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +19 -238
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/test/eval.rb +21 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +19 -15
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +31 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +5 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +39 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrbgem.rake +2 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file_constants.rb +0 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +9 -14
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +107 -59
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +22 -38
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +417 -203
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +20 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +33 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +58 -50
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +13 -14
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +56 -73
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +13 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +80 -78
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +8 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +120 -67
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +65 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +34 -21
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +21 -43
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +12 -20
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/test/sockettest.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +161 -93
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +9 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +17 -14
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +23 -36
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +7 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +17 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +37 -41
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
- data/ext/enterprise_script_service/mruby/mrblib/00class.rb +10 -0
- data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
- data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
- data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +3 -23
- data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
- data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
- data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
- data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
- data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
- data/ext/enterprise_script_service/mruby/src/array.c +67 -90
- data/ext/enterprise_script_service/mruby/src/backtrace.c +18 -19
- data/ext/enterprise_script_service/mruby/src/class.c +819 -211
- data/ext/enterprise_script_service/mruby/src/codedump.c +226 -197
- data/ext/enterprise_script_service/mruby/src/debug.c +14 -11
- data/ext/enterprise_script_service/mruby/src/dump.c +470 -207
- data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
- data/ext/enterprise_script_service/mruby/src/error.c +94 -20
- data/ext/enterprise_script_service/mruby/src/etc.c +56 -39
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +103 -27
- data/ext/enterprise_script_service/mruby/src/gc.c +86 -349
- data/ext/enterprise_script_service/mruby/src/hash.c +1058 -723
- data/ext/enterprise_script_service/mruby/src/kernel.c +78 -226
- data/ext/enterprise_script_service/mruby/src/load.c +215 -159
- data/ext/enterprise_script_service/mruby/src/numeric.c +400 -382
- data/ext/enterprise_script_service/mruby/src/object.c +115 -90
- data/ext/enterprise_script_service/mruby/src/print.c +31 -6
- data/ext/enterprise_script_service/mruby/src/proc.c +56 -45
- data/ext/enterprise_script_service/mruby/src/range.c +49 -33
- data/ext/enterprise_script_service/mruby/src/state.c +58 -42
- data/ext/enterprise_script_service/mruby/src/string.c +151 -156
- data/ext/enterprise_script_service/mruby/src/symbol.c +132 -66
- data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
- data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
- data/ext/enterprise_script_service/mruby/src/vm.c +655 -645
- data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
- data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
- data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
- data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
- data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +64 -61
- data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
- data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
- data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
- data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
- data/ext/enterprise_script_service/mruby/tasks/toolchains/android.rake +46 -1
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +8 -7
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +13 -17
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +21 -25
- data/ext/enterprise_script_service/mruby/test/assert.rb +5 -4
- data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
- data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
- data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
- data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/ensure.rb +8 -26
- data/ext/enterprise_script_service/mruby/test/t/exception.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
- data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
- data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +16 -25
- data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
- data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
- data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
- data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
- data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
- data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
- data/ext/enterprise_script_service/mruby_config.rb +2 -5
- data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
- data/ext/enterprise_script_service/msgpack/.github/depends/boost.sh +56 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/coverage.yml +62 -0
- data/ext/enterprise_script_service/msgpack/.github/workflows/gha.yml +304 -0
- data/ext/enterprise_script_service/msgpack/CHANGELOG.md +11 -0
- data/ext/enterprise_script_service/msgpack/CMakeLists.txt +82 -39
- data/ext/enterprise_script_service/msgpack/Files.cmake +22 -12
- data/ext/enterprise_script_service/msgpack/QUICKSTART-C.md +26 -29
- data/ext/enterprise_script_service/msgpack/README.md +3 -2
- data/ext/enterprise_script_service/msgpack/appveyor.yml +6 -2
- data/ext/enterprise_script_service/msgpack/ci/build_cmake.sh +3 -1
- data/ext/enterprise_script_service/msgpack/cmake/CodeCoverage.cmake +55 -0
- data/ext/enterprise_script_service/msgpack/codecov.yml +36 -0
- data/ext/enterprise_script_service/msgpack/example/CMakeLists.txt +9 -5
- data/ext/enterprise_script_service/msgpack/example/boost/CMakeLists.txt +1 -1
- data/ext/enterprise_script_service/msgpack/example/c/CMakeLists.txt +17 -6
- data/ext/enterprise_script_service/msgpack/example/c/boundary.c +296 -0
- data/ext/enterprise_script_service/msgpack/example/c/jsonconv.c +419 -0
- data/ext/enterprise_script_service/msgpack/example/c/simple_c.c +1 -1
- data/ext/enterprise_script_service/msgpack/example/cpp03/CMakeLists.txt +3 -3
- data/ext/enterprise_script_service/msgpack/example/cpp11/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/example/x3/CMakeLists.txt +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/pack.h +24 -1
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/array_ref.hpp +5 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/boost/optional.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/cpp17/vector_byte.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/map.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/vector_unsigned_char.hpp +8 -8
- data/ext/enterprise_script_service/msgpack/include/msgpack/v1/adaptor/wstring.hpp +4 -4
- data/ext/enterprise_script_service/msgpack/include/msgpack/v3/unpack.hpp +6 -6
- data/ext/enterprise_script_service/msgpack/include/msgpack/version_master.h +2 -2
- data/ext/enterprise_script_service/msgpack/include/msgpack/zbuffer.h +4 -4
- data/ext/enterprise_script_service/msgpack/make_file_list.sh +38 -11
- data/ext/enterprise_script_service/msgpack/src/vrefbuffer.c +6 -0
- data/ext/enterprise_script_service/msgpack/test/CMakeLists.txt +86 -64
- data/ext/enterprise_script_service/msgpack/test/array_ref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_fusion.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_optional.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_string_ref.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/boost_string_view.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/boost_variant.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/buffer.cpp +4 -47
- data/ext/enterprise_script_service/msgpack/test/buffer_c.cpp +148 -0
- data/ext/enterprise_script_service/msgpack/test/carray.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/cases.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/convert.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/fixint.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fixint_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/fuzz_unpack_pack_fuzzer_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/iterator_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/json.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/limit.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/msgpack_basic.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_c.cpp +159 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_container.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp11.cpp +32 -27
- data/ext/enterprise_script_service/msgpack/test/msgpack_cpp17.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_stream.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_tuple.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/msgpack_vref.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/msgpack_x3_parse.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/object.cpp +4 -1
- data/ext/enterprise_script_service/msgpack/test/object_with_zone.cpp +12 -8
- data/ext/enterprise_script_service/msgpack/test/pack_unpack.cpp +30 -26
- data/ext/enterprise_script_service/msgpack/test/pack_unpack_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/raw.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/reference_wrapper_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/shared_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/size_equal_only.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/streaming.cpp +8 -4
- data/ext/enterprise_script_service/msgpack/test/streaming_c.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/unique_ptr_cpp11.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/user_class.cpp +16 -12
- data/ext/enterprise_script_service/msgpack/test/version.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/visitor.cpp +4 -0
- data/ext/enterprise_script_service/msgpack/test/zone.cpp +4 -0
- data/lib/script_core/engine.rb +24 -5
- data/lib/script_core/executable.rb +4 -3
- data/lib/script_core/version.rb +1 -1
- data/lib/tasks/script_core.rake +3 -1
- data/script_core.gemspec +1 -2
- data/spec/dummy/app/lib/script_engine.rb +64 -5
- data/spec/script_core_spec.rb +13 -0
- metadata +123 -61
- data/ext/enterprise_script_service/libseccomp/src/arch-aarch64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-arm-syscalls.c +0 -570
- data/ext/enterprise_script_service/libseccomp/src/arch-mips-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-mips64n32-syscalls.c +0 -562
- data/ext/enterprise_script_service/libseccomp/src/arch-parisc-syscalls.c +0 -542
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-ppc64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/src/arch-s390-syscalls.c +0 -626
- data/ext/enterprise_script_service/libseccomp/src/arch-s390x-syscalls.c +0 -626
- data/ext/enterprise_script_service/libseccomp/src/arch-x32-syscalls.c +0 -558
- data/ext/enterprise_script_service/libseccomp/src/arch-x86-syscalls.c +0 -692
- data/ext/enterprise_script_service/libseccomp/src/arch-x86_64-syscalls.c +0 -559
- data/ext/enterprise_script_service/libseccomp/tests/18-sim-basic_whitelist.tests +0 -32
- data/ext/enterprise_script_service/libseccomp/tests/34-sim-basic_blacklist.tests +0 -32
- data/ext/enterprise_script_service/mruby/TODO +0 -8
- data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
- data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
- data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
- data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
- data/ext/enterprise_script_service/mruby/travis_config.rb +0 -54
- data/ext/enterprise_script_service/msgpack/.travis.yml +0 -258
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* ANSI-C code produced by gperf version 3.1 */
|
|
2
|
-
/* Command-line: gperf -L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k'1,3,$'
|
|
2
|
+
/* Command-line: gperf -L ANSI-C -C -p -j1 -i 1 -g -o -t -N mrb_reserved_word -k'1,3,$' mrbgems/mruby-compiler/core/keywords */
|
|
3
3
|
|
|
4
4
|
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
|
|
5
5
|
&& ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
|
|
@@ -28,10 +28,15 @@
|
|
|
28
28
|
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
|
|
29
29
|
#endif
|
|
30
30
|
|
|
31
|
-
#line 1 "
|
|
31
|
+
#line 1 "mrbgems/mruby-compiler/core/keywords"
|
|
32
|
+
|
|
33
|
+
/* Workaround for `enable_cxx_exception` (#5199) */
|
|
34
|
+
#if defined __cplusplus && __cplusplus >= 201103L
|
|
35
|
+
# define register
|
|
36
|
+
#endif
|
|
32
37
|
|
|
33
38
|
struct kwtable {const char *name; int id[2]; enum mrb_lex_state_enum state;};
|
|
34
|
-
#line
|
|
39
|
+
#line 10 "mrbgems/mruby-compiler/core/keywords"
|
|
35
40
|
struct kwtable;
|
|
36
41
|
|
|
37
42
|
#define TOTAL_KEYWORDS 40
|
|
@@ -101,87 +106,87 @@ mrb_reserved_word (register const char *str, register size_t len)
|
|
|
101
106
|
static const struct kwtable wordlist[] =
|
|
102
107
|
{
|
|
103
108
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
104
|
-
#line
|
|
109
|
+
#line 20 "mrbgems/mruby-compiler/core/keywords"
|
|
105
110
|
{"break", {keyword_break, keyword_break}, EXPR_MID},
|
|
106
|
-
#line
|
|
111
|
+
#line 25 "mrbgems/mruby-compiler/core/keywords"
|
|
107
112
|
{"else", {keyword_else, keyword_else}, EXPR_BEG},
|
|
108
|
-
#line
|
|
113
|
+
#line 35 "mrbgems/mruby-compiler/core/keywords"
|
|
109
114
|
{"nil", {keyword_nil, keyword_nil}, EXPR_END},
|
|
110
|
-
#line
|
|
115
|
+
#line 28 "mrbgems/mruby-compiler/core/keywords"
|
|
111
116
|
{"ensure", {keyword_ensure, keyword_ensure}, EXPR_BEG},
|
|
112
|
-
#line
|
|
117
|
+
#line 27 "mrbgems/mruby-compiler/core/keywords"
|
|
113
118
|
{"end", {keyword_end, keyword_end}, EXPR_END},
|
|
114
|
-
#line
|
|
119
|
+
#line 44 "mrbgems/mruby-compiler/core/keywords"
|
|
115
120
|
{"then", {keyword_then, keyword_then}, EXPR_BEG},
|
|
116
|
-
#line
|
|
121
|
+
#line 36 "mrbgems/mruby-compiler/core/keywords"
|
|
117
122
|
{"not", {keyword_not, keyword_not}, EXPR_ARG},
|
|
118
|
-
#line
|
|
123
|
+
#line 29 "mrbgems/mruby-compiler/core/keywords"
|
|
119
124
|
{"false", {keyword_false, keyword_false}, EXPR_END},
|
|
120
|
-
#line
|
|
125
|
+
#line 42 "mrbgems/mruby-compiler/core/keywords"
|
|
121
126
|
{"self", {keyword_self, keyword_self}, EXPR_END},
|
|
122
|
-
#line
|
|
127
|
+
#line 26 "mrbgems/mruby-compiler/core/keywords"
|
|
123
128
|
{"elsif", {keyword_elsif, keyword_elsif}, EXPR_VALUE},
|
|
124
|
-
#line
|
|
129
|
+
#line 39 "mrbgems/mruby-compiler/core/keywords"
|
|
125
130
|
{"rescue", {keyword_rescue, modifier_rescue}, EXPR_MID},
|
|
126
|
-
#line
|
|
131
|
+
#line 45 "mrbgems/mruby-compiler/core/keywords"
|
|
127
132
|
{"true", {keyword_true, keyword_true}, EXPR_END},
|
|
128
|
-
#line
|
|
133
|
+
#line 48 "mrbgems/mruby-compiler/core/keywords"
|
|
129
134
|
{"until", {keyword_until, modifier_until}, EXPR_VALUE},
|
|
130
|
-
#line
|
|
135
|
+
#line 47 "mrbgems/mruby-compiler/core/keywords"
|
|
131
136
|
{"unless", {keyword_unless, modifier_unless}, EXPR_VALUE},
|
|
132
|
-
#line
|
|
137
|
+
#line 41 "mrbgems/mruby-compiler/core/keywords"
|
|
133
138
|
{"return", {keyword_return, keyword_return}, EXPR_MID},
|
|
134
|
-
#line
|
|
139
|
+
#line 23 "mrbgems/mruby-compiler/core/keywords"
|
|
135
140
|
{"def", {keyword_def, keyword_def}, EXPR_FNAME},
|
|
136
|
-
#line
|
|
141
|
+
#line 18 "mrbgems/mruby-compiler/core/keywords"
|
|
137
142
|
{"and", {keyword_and, keyword_and}, EXPR_VALUE},
|
|
138
|
-
#line
|
|
143
|
+
#line 24 "mrbgems/mruby-compiler/core/keywords"
|
|
139
144
|
{"do", {keyword_do, keyword_do}, EXPR_BEG},
|
|
140
|
-
#line
|
|
145
|
+
#line 51 "mrbgems/mruby-compiler/core/keywords"
|
|
141
146
|
{"yield", {keyword_yield, keyword_yield}, EXPR_ARG},
|
|
142
|
-
#line
|
|
147
|
+
#line 30 "mrbgems/mruby-compiler/core/keywords"
|
|
143
148
|
{"for", {keyword_for, keyword_for}, EXPR_VALUE},
|
|
144
|
-
#line
|
|
149
|
+
#line 46 "mrbgems/mruby-compiler/core/keywords"
|
|
145
150
|
{"undef", {keyword_undef, keyword_undef}, EXPR_FNAME},
|
|
146
|
-
#line
|
|
151
|
+
#line 37 "mrbgems/mruby-compiler/core/keywords"
|
|
147
152
|
{"or", {keyword_or, keyword_or}, EXPR_VALUE},
|
|
148
|
-
#line
|
|
153
|
+
#line 32 "mrbgems/mruby-compiler/core/keywords"
|
|
149
154
|
{"in", {keyword_in, keyword_in}, EXPR_VALUE},
|
|
150
|
-
#line
|
|
155
|
+
#line 49 "mrbgems/mruby-compiler/core/keywords"
|
|
151
156
|
{"when", {keyword_when, keyword_when}, EXPR_VALUE},
|
|
152
|
-
#line
|
|
157
|
+
#line 40 "mrbgems/mruby-compiler/core/keywords"
|
|
153
158
|
{"retry", {keyword_retry, keyword_retry}, EXPR_END},
|
|
154
|
-
#line
|
|
159
|
+
#line 31 "mrbgems/mruby-compiler/core/keywords"
|
|
155
160
|
{"if", {keyword_if, modifier_if}, EXPR_VALUE},
|
|
156
|
-
#line
|
|
161
|
+
#line 21 "mrbgems/mruby-compiler/core/keywords"
|
|
157
162
|
{"case", {keyword_case, keyword_case}, EXPR_VALUE},
|
|
158
|
-
#line
|
|
163
|
+
#line 38 "mrbgems/mruby-compiler/core/keywords"
|
|
159
164
|
{"redo", {keyword_redo, keyword_redo}, EXPR_END},
|
|
160
|
-
#line
|
|
165
|
+
#line 34 "mrbgems/mruby-compiler/core/keywords"
|
|
161
166
|
{"next", {keyword_next, keyword_next}, EXPR_MID},
|
|
162
|
-
#line
|
|
167
|
+
#line 43 "mrbgems/mruby-compiler/core/keywords"
|
|
163
168
|
{"super", {keyword_super, keyword_super}, EXPR_ARG},
|
|
164
|
-
#line
|
|
169
|
+
#line 33 "mrbgems/mruby-compiler/core/keywords"
|
|
165
170
|
{"module", {keyword_module, keyword_module}, EXPR_VALUE},
|
|
166
|
-
#line
|
|
171
|
+
#line 19 "mrbgems/mruby-compiler/core/keywords"
|
|
167
172
|
{"begin", {keyword_begin, keyword_begin}, EXPR_BEG},
|
|
168
|
-
#line
|
|
173
|
+
#line 14 "mrbgems/mruby-compiler/core/keywords"
|
|
169
174
|
{"__LINE__", {keyword__LINE__, keyword__LINE__}, EXPR_END},
|
|
170
|
-
#line
|
|
175
|
+
#line 13 "mrbgems/mruby-compiler/core/keywords"
|
|
171
176
|
{"__FILE__", {keyword__FILE__, keyword__FILE__}, EXPR_END},
|
|
172
|
-
#line
|
|
177
|
+
#line 12 "mrbgems/mruby-compiler/core/keywords"
|
|
173
178
|
{"__ENCODING__", {keyword__ENCODING__, keyword__ENCODING__}, EXPR_END},
|
|
174
|
-
#line
|
|
179
|
+
#line 16 "mrbgems/mruby-compiler/core/keywords"
|
|
175
180
|
{"END", {keyword_END, keyword_END}, EXPR_END},
|
|
176
|
-
#line
|
|
181
|
+
#line 17 "mrbgems/mruby-compiler/core/keywords"
|
|
177
182
|
{"alias", {keyword_alias, keyword_alias}, EXPR_FNAME},
|
|
178
|
-
#line
|
|
183
|
+
#line 15 "mrbgems/mruby-compiler/core/keywords"
|
|
179
184
|
{"BEGIN", {keyword_BEGIN, keyword_BEGIN}, EXPR_END},
|
|
180
185
|
{""},
|
|
181
|
-
#line
|
|
186
|
+
#line 22 "mrbgems/mruby-compiler/core/keywords"
|
|
182
187
|
{"class", {keyword_class, keyword_class}, EXPR_CLASS},
|
|
183
188
|
{""}, {""},
|
|
184
|
-
#line
|
|
189
|
+
#line 50 "mrbgems/mruby-compiler/core/keywords"
|
|
185
190
|
{"while", {keyword_while, modifier_while}, EXPR_VALUE}
|
|
186
191
|
};
|
|
187
192
|
|
|
@@ -199,5 +204,5 @@ mrb_reserved_word (register const char *str, register size_t len)
|
|
|
199
204
|
}
|
|
200
205
|
return 0;
|
|
201
206
|
}
|
|
202
|
-
#line
|
|
207
|
+
#line 52 "mrbgems/mruby-compiler/core/keywords"
|
|
203
208
|
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
#ifdef PARSER_DEBUG
|
|
10
10
|
# define YYDEBUG 1
|
|
11
11
|
#endif
|
|
12
|
-
#define YYERROR_VERBOSE 1
|
|
13
12
|
#define YYSTACK_USE_ALLOCA 1
|
|
14
13
|
|
|
15
14
|
#include <ctype.h>
|
|
@@ -22,6 +21,8 @@
|
|
|
22
21
|
#include <mruby/error.h>
|
|
23
22
|
#include <mruby/throw.h>
|
|
24
23
|
#include <mruby/string.h>
|
|
24
|
+
#include <mruby/dump.h>
|
|
25
|
+
#include <mruby/presym.h>
|
|
25
26
|
#include "node.h"
|
|
26
27
|
|
|
27
28
|
#define YYLEX_PARAM p
|
|
@@ -70,6 +71,7 @@ typedef unsigned int stack_type;
|
|
|
70
71
|
#define nsym(x) ((node*)(intptr_t)(x))
|
|
71
72
|
#define nint(x) ((node*)(intptr_t)(x))
|
|
72
73
|
#define intn(x) ((int)(intptr_t)(x))
|
|
74
|
+
#define typen(x) ((enum node_type)(intptr_t)(x))
|
|
73
75
|
|
|
74
76
|
#define NUM_SUFFIX_R (1<<0)
|
|
75
77
|
#define NUM_SUFFIX_I (1<<1)
|
|
@@ -88,7 +90,7 @@ intern_gen(parser_state *p, const char *s, size_t len)
|
|
|
88
90
|
}
|
|
89
91
|
#define intern(s,len) intern_gen(p,(s),(len))
|
|
90
92
|
|
|
91
|
-
#define
|
|
93
|
+
#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
|
|
92
94
|
|
|
93
95
|
static void
|
|
94
96
|
cons_free_gen(parser_state *p, node *cons)
|
|
@@ -266,6 +268,7 @@ local_unnest(parser_state *p)
|
|
|
266
268
|
static mrb_bool
|
|
267
269
|
local_var_p(parser_state *p, mrb_sym sym)
|
|
268
270
|
{
|
|
271
|
+
const struct RProc *u;
|
|
269
272
|
node *l = p->locals;
|
|
270
273
|
|
|
271
274
|
while (l) {
|
|
@@ -276,6 +279,20 @@ local_var_p(parser_state *p, mrb_sym sym)
|
|
|
276
279
|
}
|
|
277
280
|
l = l->cdr;
|
|
278
281
|
}
|
|
282
|
+
|
|
283
|
+
u = p->upper;
|
|
284
|
+
while (u && !MRB_PROC_CFUNC_P(u)) {
|
|
285
|
+
const struct mrb_irep *ir = u->body.irep;
|
|
286
|
+
const mrb_sym *v = ir->lv;
|
|
287
|
+
int i;
|
|
288
|
+
|
|
289
|
+
if (!v) break;
|
|
290
|
+
for (i=0; i+1 < ir->nlocals; i++) {
|
|
291
|
+
if (v[i] == sym) return TRUE;
|
|
292
|
+
}
|
|
293
|
+
if (MRB_PROC_SCOPE_P(u)) break;
|
|
294
|
+
u = u->upper;
|
|
295
|
+
}
|
|
279
296
|
return FALSE;
|
|
280
297
|
}
|
|
281
298
|
|
|
@@ -299,14 +316,14 @@ static void
|
|
|
299
316
|
local_add_blk(parser_state *p, mrb_sym blk)
|
|
300
317
|
{
|
|
301
318
|
/* allocate register for block */
|
|
302
|
-
local_add_f(p, blk ? blk :
|
|
319
|
+
local_add_f(p, blk ? blk : intern_op(and));
|
|
303
320
|
}
|
|
304
321
|
|
|
305
322
|
static void
|
|
306
323
|
local_add_kw(parser_state *p, mrb_sym kwd)
|
|
307
324
|
{
|
|
308
325
|
/* allocate register for keywords hash */
|
|
309
|
-
local_add_f(p, kwd ? kwd :
|
|
326
|
+
local_add_f(p, kwd ? kwd : intern_op(pow));
|
|
310
327
|
}
|
|
311
328
|
|
|
312
329
|
static node*
|
|
@@ -718,7 +735,19 @@ new_module(parser_state *p, node *m, node *b)
|
|
|
718
735
|
static node*
|
|
719
736
|
new_def(parser_state *p, mrb_sym m, node *a, node *b)
|
|
720
737
|
{
|
|
721
|
-
return list5((node*)NODE_DEF, nsym(m),
|
|
738
|
+
return list5((node*)NODE_DEF, nsym(m), 0, a, b);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
static void
|
|
742
|
+
defn_setup(parser_state *p, node *d, node *a, node *b)
|
|
743
|
+
{
|
|
744
|
+
node *n = d->cdr->cdr;
|
|
745
|
+
|
|
746
|
+
n->car = locals_node(p);
|
|
747
|
+
p->cmdarg_stack = intn(n->cdr->car);
|
|
748
|
+
n->cdr->car = a;
|
|
749
|
+
local_resume(p, n->cdr->cdr->car);
|
|
750
|
+
n->cdr->cdr->car = b;
|
|
722
751
|
}
|
|
723
752
|
|
|
724
753
|
/* (:sdef obj m lv (arg . body)) */
|
|
@@ -726,7 +755,19 @@ static node*
|
|
|
726
755
|
new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b)
|
|
727
756
|
{
|
|
728
757
|
void_expr_error(p, o);
|
|
729
|
-
return list6((node*)NODE_SDEF, o, nsym(m),
|
|
758
|
+
return list6((node*)NODE_SDEF, o, nsym(m), 0, a, b);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
static void
|
|
762
|
+
defs_setup(parser_state *p, node *d, node *a, node *b)
|
|
763
|
+
{
|
|
764
|
+
node *n = d->cdr->cdr->cdr;
|
|
765
|
+
|
|
766
|
+
n->car = locals_node(p);
|
|
767
|
+
p->cmdarg_stack = intn(n->cdr->car);
|
|
768
|
+
n->cdr->car = a;
|
|
769
|
+
local_resume(p, n->cdr->cdr->car);
|
|
770
|
+
n->cdr->cdr->car = b;
|
|
730
771
|
}
|
|
731
772
|
|
|
732
773
|
/* (:arg . sym) */
|
|
@@ -740,7 +781,7 @@ static void
|
|
|
740
781
|
local_add_margs(parser_state *p, node *n)
|
|
741
782
|
{
|
|
742
783
|
while (n) {
|
|
743
|
-
if (n->car->car ==
|
|
784
|
+
if (typen(n->car->car) == NODE_MASGN) {
|
|
744
785
|
node *t = n->car->cdr->cdr;
|
|
745
786
|
|
|
746
787
|
n->car->cdr->cdr = NULL;
|
|
@@ -827,6 +868,13 @@ new_kw_arg(parser_state *p, mrb_sym kw, node *def_arg)
|
|
|
827
868
|
return list3((node*)NODE_KW_ARG, nsym(kw), def_arg);
|
|
828
869
|
}
|
|
829
870
|
|
|
871
|
+
/* (:kw_rest_args . a) */
|
|
872
|
+
static node*
|
|
873
|
+
new_kw_rest_args(parser_state *p, node *a)
|
|
874
|
+
{
|
|
875
|
+
return cons((node*)NODE_KW_REST_ARGS, a);
|
|
876
|
+
}
|
|
877
|
+
|
|
830
878
|
/* (:block_arg . a) */
|
|
831
879
|
static node*
|
|
832
880
|
new_block_arg(parser_state *p, node *a)
|
|
@@ -845,7 +893,8 @@ setup_numparams(parser_state *p, node *a)
|
|
|
845
893
|
if (a && (a->car || (a->cdr && a->cdr->car) || (a->cdr->cdr && a->cdr->cdr->car) || (a->cdr->cdr->cdr->cdr && a->cdr->cdr->cdr->cdr->car))) {
|
|
846
894
|
yyerror(p, "ordinary parameter is defined");
|
|
847
895
|
}
|
|
848
|
-
else {
|
|
896
|
+
else if (p->locals) {
|
|
897
|
+
/* p->locals should not be NULL unless error happens before the point */
|
|
849
898
|
node* args = 0;
|
|
850
899
|
for (i = nvars; i > 0; i--) {
|
|
851
900
|
char buf[3];
|
|
@@ -912,13 +961,13 @@ new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
|
|
|
912
961
|
static node*
|
|
913
962
|
new_imaginary(parser_state *p, node *imaginary)
|
|
914
963
|
{
|
|
915
|
-
return new_call(p, new_const(p,
|
|
964
|
+
return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Complex), list1(list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary)), 1);
|
|
916
965
|
}
|
|
917
966
|
|
|
918
967
|
static node*
|
|
919
968
|
new_rational(parser_state *p, node *rational)
|
|
920
969
|
{
|
|
921
|
-
return new_call(p, new_const(p,
|
|
970
|
+
return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Rational), list1(list1(rational)), 1);
|
|
922
971
|
}
|
|
923
972
|
|
|
924
973
|
/* (:int . i) */
|
|
@@ -935,7 +984,7 @@ new_int(parser_state *p, const char *s, int base, int suffix)
|
|
|
935
984
|
return result;
|
|
936
985
|
}
|
|
937
986
|
|
|
938
|
-
#ifndef
|
|
987
|
+
#ifndef MRB_NO_FLOAT
|
|
939
988
|
/* (:float . i) */
|
|
940
989
|
static node*
|
|
941
990
|
new_float(parser_state *p, const char *s, int suffix)
|
|
@@ -968,7 +1017,7 @@ new_dstr(parser_state *p, node *a)
|
|
|
968
1017
|
static int
|
|
969
1018
|
string_node_p(node *n)
|
|
970
1019
|
{
|
|
971
|
-
return (int)((
|
|
1020
|
+
return (int)(typen(n->car) == NODE_STR);
|
|
972
1021
|
}
|
|
973
1022
|
|
|
974
1023
|
static node*
|
|
@@ -1160,7 +1209,7 @@ call_with_block(parser_state *p, node *a, node *b)
|
|
|
1160
1209
|
{
|
|
1161
1210
|
node *n;
|
|
1162
1211
|
|
|
1163
|
-
switch ((
|
|
1212
|
+
switch (typen(a->car)) {
|
|
1164
1213
|
case NODE_SUPER:
|
|
1165
1214
|
case NODE_ZSUPER:
|
|
1166
1215
|
if (!a->cdr) a->cdr = cons(0, b);
|
|
@@ -1234,7 +1283,7 @@ typedef enum mrb_string_type string_type;
|
|
|
1234
1283
|
static node*
|
|
1235
1284
|
new_strterm(parser_state *p, string_type type, int term, int paren)
|
|
1236
1285
|
{
|
|
1237
|
-
return cons(nint(type), cons((
|
|
1286
|
+
return cons(nint(type), cons(nint(0), cons(nint(paren), nint(term))));
|
|
1238
1287
|
}
|
|
1239
1288
|
|
|
1240
1289
|
static void
|
|
@@ -1322,7 +1371,8 @@ heredoc_end(parser_state *p)
|
|
|
1322
1371
|
|
|
1323
1372
|
%}
|
|
1324
1373
|
|
|
1325
|
-
%
|
|
1374
|
+
%define parse.error verbose
|
|
1375
|
+
%define api.pure
|
|
1326
1376
|
%parse-param {parser_state *p}
|
|
1327
1377
|
%lex-param {parser_state *p}
|
|
1328
1378
|
|
|
@@ -1386,15 +1436,24 @@ heredoc_end(parser_state *p)
|
|
|
1386
1436
|
keyword__FILE__
|
|
1387
1437
|
keyword__ENCODING__
|
|
1388
1438
|
|
|
1389
|
-
%token <id> tIDENTIFIER
|
|
1390
|
-
%token <
|
|
1439
|
+
%token <id> tIDENTIFIER "local variable or method"
|
|
1440
|
+
%token <id> tFID "method"
|
|
1441
|
+
%token <id> tGVAR "global variable"
|
|
1442
|
+
%token <id> tIVAR "instance variable"
|
|
1443
|
+
%token <id> tCONSTANT "constant"
|
|
1444
|
+
%token <id> tCVAR "class variable"
|
|
1445
|
+
%token <id> tLABEL_TAG "label"
|
|
1446
|
+
%token <nd> tINTEGER "integer literal"
|
|
1447
|
+
%token <nd> tFLOAT "float literal"
|
|
1448
|
+
%token <nd> tCHAR "character literal"
|
|
1449
|
+
%token <nd> tXSTRING tREGEXP
|
|
1391
1450
|
%token <nd> tSTRING tSTRING_PART tSTRING_MID
|
|
1392
1451
|
%token <nd> tNTH_REF tBACK_REF
|
|
1393
1452
|
%token <num> tREGEXP_END
|
|
1394
|
-
%token <num> tNUMPARAM
|
|
1453
|
+
%token <num> tNUMPARAM "numbered paraemeter"
|
|
1395
1454
|
|
|
1396
1455
|
%type <nd> singleton string string_fragment string_rep string_interp xstring regexp
|
|
1397
|
-
%type <nd> literal numeric cpath symbol
|
|
1456
|
+
%type <nd> literal numeric cpath symbol defn_head defs_head
|
|
1398
1457
|
%type <nd> top_compstmt top_stmts top_stmt
|
|
1399
1458
|
%type <nd> bodystmt compstmt stmts stmt expr arg primary command command_call method_call
|
|
1400
1459
|
%type <nd> expr_value arg_rhs primary_value
|
|
@@ -1404,7 +1463,7 @@ heredoc_end(parser_state *p)
|
|
|
1404
1463
|
%type <nd> command_args aref_args opt_block_arg block_arg var_ref var_lhs
|
|
1405
1464
|
%type <nd> command_asgn command_rhs mrhs superclass block_call block_command
|
|
1406
1465
|
%type <nd> f_block_optarg f_block_opt
|
|
1407
|
-
%type <nd> f_arglist f_args f_arg f_arg_item f_optarg f_margs
|
|
1466
|
+
%type <nd> f_arglist_paren f_arglist f_args f_arg f_arg_item f_optarg f_margs
|
|
1408
1467
|
%type <nd> assoc_list assocs assoc undef_list backref for_var
|
|
1409
1468
|
%type <nd> block_param opt_block_param block_param_def f_opt
|
|
1410
1469
|
%type <nd> bv_decls opt_bv_decl bvar f_larglist lambda_body
|
|
@@ -1419,38 +1478,41 @@ heredoc_end(parser_state *p)
|
|
|
1419
1478
|
%type <nd> f_block_kwarg f_block_kw block_args_tail opt_block_args_tail
|
|
1420
1479
|
%type <id> f_label
|
|
1421
1480
|
|
|
1422
|
-
%token tUPLUS
|
|
1423
|
-
%token tUMINUS
|
|
1424
|
-
%token
|
|
1425
|
-
%token
|
|
1426
|
-
%token
|
|
1427
|
-
%token
|
|
1428
|
-
%token
|
|
1429
|
-
%token
|
|
1430
|
-
%token
|
|
1431
|
-
%token
|
|
1432
|
-
%token tMATCH
|
|
1433
|
-
%token
|
|
1481
|
+
%token tUPLUS "unary plus"
|
|
1482
|
+
%token tUMINUS "unary minus"
|
|
1483
|
+
%token tCMP "<=>"
|
|
1484
|
+
%token tEQ "=="
|
|
1485
|
+
%token tEQQ "==="
|
|
1486
|
+
%token tNEQ "!="
|
|
1487
|
+
%token tGEQ ">="
|
|
1488
|
+
%token tLEQ "<="
|
|
1489
|
+
%token tANDOP "&&"
|
|
1490
|
+
%token tOROP "||"
|
|
1491
|
+
%token tMATCH "=~"
|
|
1492
|
+
%token tNMATCH "!~"
|
|
1493
|
+
%token tDOT2 ".."
|
|
1494
|
+
%token tDOT3 "..."
|
|
1495
|
+
%token tBDOT2 tBDOT3 /* (.. and (... */
|
|
1434
1496
|
%token tAREF tASET /* [] and []= */
|
|
1435
|
-
%token tLSHFT
|
|
1436
|
-
%token
|
|
1497
|
+
%token tLSHFT "<<"
|
|
1498
|
+
%token tRSHFT ">>"
|
|
1499
|
+
%token tCOLON2 "::"
|
|
1437
1500
|
%token tCOLON3 /* :: at EXPR_BEG */
|
|
1438
1501
|
%token <id> tOP_ASGN /* +=, -= etc. */
|
|
1439
|
-
%token tASSOC
|
|
1440
|
-
%token tLPAREN
|
|
1441
|
-
%token
|
|
1442
|
-
%token
|
|
1443
|
-
%token
|
|
1444
|
-
%token
|
|
1445
|
-
%token
|
|
1446
|
-
%token
|
|
1447
|
-
%token
|
|
1448
|
-
%token
|
|
1449
|
-
%token
|
|
1450
|
-
%token
|
|
1451
|
-
%token
|
|
1452
|
-
%token
|
|
1453
|
-
%token <nd> tHEREDOC_BEG /* <<, <<- */
|
|
1502
|
+
%token tASSOC "=>"
|
|
1503
|
+
%token tLPAREN tLPAREN_ARG "("
|
|
1504
|
+
%token tRPAREN ")"
|
|
1505
|
+
%token tLBRACK "["
|
|
1506
|
+
%token tLBRACE tLBRACE_ARG "{"
|
|
1507
|
+
%token tSTAR "*"
|
|
1508
|
+
%token tPOW tDSTAR "**"
|
|
1509
|
+
%token tAMPER "&"
|
|
1510
|
+
%token tLAMBDA "->"
|
|
1511
|
+
%token tANDDOT "&."
|
|
1512
|
+
%token tSYMBEG "symbol"
|
|
1513
|
+
%token tSTRING_BEG "string literal"
|
|
1514
|
+
%token tXSTRING_BEG tSTRING_DVAR tREGEXP_BEG tWORDS_BEG tSYMBOLS_BEG tLAMBEG
|
|
1515
|
+
%token <nd> tHEREDOC_BEG "here document"
|
|
1454
1516
|
%token tHEREDOC_END tLITERAL_DELIM tHD_LITERAL_DELIM
|
|
1455
1517
|
%token <nd> tHD_STRING_PART tHD_STRING_MID
|
|
1456
1518
|
|
|
@@ -1467,7 +1529,7 @@ heredoc_end(parser_state *p)
|
|
|
1467
1529
|
%right '=' tOP_ASGN
|
|
1468
1530
|
%left modifier_rescue
|
|
1469
1531
|
%right '?' ':' tLABEL_TAG
|
|
1470
|
-
%nonassoc tDOT2 tDOT3
|
|
1532
|
+
%nonassoc tDOT2 tDOT3 tBDOT2 tBDOT3
|
|
1471
1533
|
%left tOROP
|
|
1472
1534
|
%left tANDOP
|
|
1473
1535
|
%nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH
|
|
@@ -1637,6 +1699,13 @@ stmt : keyword_alias fsym {p->lstate = EXPR_FNAME;} fsym
|
|
|
1637
1699
|
{
|
|
1638
1700
|
$$ = new_masgn(p, $1, new_array(p, $3));
|
|
1639
1701
|
}
|
|
1702
|
+
| arg tASSOC tIDENTIFIER
|
|
1703
|
+
{
|
|
1704
|
+
node *lhs = new_lvar(p, $3);
|
|
1705
|
+
void_expr_error(p, $1);
|
|
1706
|
+
assignable(p, lhs);
|
|
1707
|
+
$$ = new_asgn(p, lhs, $1);
|
|
1708
|
+
}
|
|
1640
1709
|
| expr
|
|
1641
1710
|
;
|
|
1642
1711
|
|
|
@@ -1650,7 +1719,7 @@ command_asgn : lhs '=' command_rhs
|
|
|
1650
1719
|
}
|
|
1651
1720
|
| primary_value '[' opt_call_args ']' tOP_ASGN command_rhs
|
|
1652
1721
|
{
|
|
1653
|
-
$$ = new_op_asgn(p, new_call(p, $1,
|
|
1722
|
+
$$ = new_op_asgn(p, new_call(p, $1, intern_op(aref), $3, '.'), $5, $6);
|
|
1654
1723
|
}
|
|
1655
1724
|
| primary_value call_op tIDENTIFIER tOP_ASGN command_rhs
|
|
1656
1725
|
{
|
|
@@ -1705,6 +1774,31 @@ expr : command_call
|
|
|
1705
1774
|
| arg
|
|
1706
1775
|
;
|
|
1707
1776
|
|
|
1777
|
+
|
|
1778
|
+
defn_head : keyword_def fname
|
|
1779
|
+
{
|
|
1780
|
+
$$ = new_def(p, $2, nint(p->cmdarg_stack), local_switch(p));
|
|
1781
|
+
p->cmdarg_stack = 0;
|
|
1782
|
+
p->in_def++;
|
|
1783
|
+
nvars_block(p);
|
|
1784
|
+
}
|
|
1785
|
+
;
|
|
1786
|
+
|
|
1787
|
+
defs_head : keyword_def singleton dot_or_colon
|
|
1788
|
+
{
|
|
1789
|
+
p->lstate = EXPR_FNAME;
|
|
1790
|
+
}
|
|
1791
|
+
fname
|
|
1792
|
+
{
|
|
1793
|
+
$$ = new_sdef(p, $2, $5, nint(p->cmdarg_stack), local_switch(p));
|
|
1794
|
+
p->cmdarg_stack = 0;
|
|
1795
|
+
p->in_def++;
|
|
1796
|
+
p->in_single++;
|
|
1797
|
+
nvars_block(p);
|
|
1798
|
+
p->lstate = EXPR_ENDFN; /* force for args */
|
|
1799
|
+
}
|
|
1800
|
+
;
|
|
1801
|
+
|
|
1708
1802
|
expr_value : expr
|
|
1709
1803
|
{
|
|
1710
1804
|
if (!$1) $$ = new_nil(p);
|
|
@@ -1881,7 +1975,7 @@ mlhs_node : variable
|
|
|
1881
1975
|
}
|
|
1882
1976
|
| primary_value '[' opt_call_args ']'
|
|
1883
1977
|
{
|
|
1884
|
-
$$ = new_call(p, $1,
|
|
1978
|
+
$$ = new_call(p, $1, intern_op(aref), $3, '.');
|
|
1885
1979
|
}
|
|
1886
1980
|
| primary_value call_op tIDENTIFIER
|
|
1887
1981
|
{
|
|
@@ -1920,7 +2014,7 @@ lhs : variable
|
|
|
1920
2014
|
}
|
|
1921
2015
|
| primary_value '[' opt_call_args ']'
|
|
1922
2016
|
{
|
|
1923
|
-
$$ = new_call(p, $1,
|
|
2017
|
+
$$ = new_call(p, $1, intern_op(aref), $3, '.');
|
|
1924
2018
|
}
|
|
1925
2019
|
| primary_value call_op tIDENTIFIER
|
|
1926
2020
|
{
|
|
@@ -1966,11 +2060,11 @@ cname : tIDENTIFIER
|
|
|
1966
2060
|
|
|
1967
2061
|
cpath : tCOLON3 cname
|
|
1968
2062
|
{
|
|
1969
|
-
$$ = cons((
|
|
2063
|
+
$$ = cons(nint(1), nsym($2));
|
|
1970
2064
|
}
|
|
1971
2065
|
| cname
|
|
1972
2066
|
{
|
|
1973
|
-
$$ = cons((
|
|
2067
|
+
$$ = cons(nint(0), nsym($1));
|
|
1974
2068
|
}
|
|
1975
2069
|
| primary_value tCOLON2 cname
|
|
1976
2070
|
{
|
|
@@ -2008,36 +2102,36 @@ undef_list : fsym
|
|
|
2008
2102
|
}
|
|
2009
2103
|
;
|
|
2010
2104
|
|
|
2011
|
-
op : '|' { $$ =
|
|
2012
|
-
| '^' { $$ =
|
|
2013
|
-
| '&' { $$ =
|
|
2014
|
-
| tCMP { $$ =
|
|
2015
|
-
| tEQ { $$ =
|
|
2016
|
-
| tEQQ { $$ =
|
|
2017
|
-
| tMATCH { $$ =
|
|
2018
|
-
| tNMATCH { $$ =
|
|
2019
|
-
| '>' { $$ =
|
|
2020
|
-
| tGEQ { $$ =
|
|
2021
|
-
| '<' { $$ =
|
|
2022
|
-
| tLEQ { $$ =
|
|
2023
|
-
| tNEQ { $$ =
|
|
2024
|
-
| tLSHFT { $$ =
|
|
2025
|
-
| tRSHFT { $$ =
|
|
2026
|
-
| '+' { $$ =
|
|
2027
|
-
| '-' { $$ =
|
|
2028
|
-
| '*' { $$ =
|
|
2029
|
-
| tSTAR { $$ =
|
|
2030
|
-
| '/' { $$ =
|
|
2031
|
-
| '%' { $$ =
|
|
2032
|
-
| tPOW { $$ =
|
|
2033
|
-
| tDSTAR { $$ =
|
|
2034
|
-
| '!' { $$ =
|
|
2035
|
-
| '~' { $$ =
|
|
2036
|
-
| tUPLUS { $$ =
|
|
2037
|
-
| tUMINUS { $$ =
|
|
2038
|
-
| tAREF { $$ =
|
|
2039
|
-
| tASET { $$ =
|
|
2040
|
-
| '`' { $$ =
|
|
2105
|
+
op : '|' { $$ = intern_op(or); }
|
|
2106
|
+
| '^' { $$ = intern_op(xor); }
|
|
2107
|
+
| '&' { $$ = intern_op(and); }
|
|
2108
|
+
| tCMP { $$ = intern_op(cmp); }
|
|
2109
|
+
| tEQ { $$ = intern_op(eq); }
|
|
2110
|
+
| tEQQ { $$ = intern_op(eqq); }
|
|
2111
|
+
| tMATCH { $$ = intern_op(match); }
|
|
2112
|
+
| tNMATCH { $$ = intern_op(nmatch); }
|
|
2113
|
+
| '>' { $$ = intern_op(gt); }
|
|
2114
|
+
| tGEQ { $$ = intern_op(ge); }
|
|
2115
|
+
| '<' { $$ = intern_op(lt); }
|
|
2116
|
+
| tLEQ { $$ = intern_op(le); }
|
|
2117
|
+
| tNEQ { $$ = intern_op(neq); }
|
|
2118
|
+
| tLSHFT { $$ = intern_op(lshift); }
|
|
2119
|
+
| tRSHFT { $$ = intern_op(rshift); }
|
|
2120
|
+
| '+' { $$ = intern_op(add); }
|
|
2121
|
+
| '-' { $$ = intern_op(sub); }
|
|
2122
|
+
| '*' { $$ = intern_op(mul); }
|
|
2123
|
+
| tSTAR { $$ = intern_op(mul); }
|
|
2124
|
+
| '/' { $$ = intern_op(div); }
|
|
2125
|
+
| '%' { $$ = intern_op(mod); }
|
|
2126
|
+
| tPOW { $$ = intern_op(pow); }
|
|
2127
|
+
| tDSTAR { $$ = intern_op(pow); }
|
|
2128
|
+
| '!' { $$ = intern_op(not); }
|
|
2129
|
+
| '~' { $$ = intern_op(neg); }
|
|
2130
|
+
| tUPLUS { $$ = intern_op(plus); }
|
|
2131
|
+
| tUMINUS { $$ = intern_op(minus); }
|
|
2132
|
+
| tAREF { $$ = intern_op(aref); }
|
|
2133
|
+
| tASET { $$ = intern_op(aset); }
|
|
2134
|
+
| '`' { $$ = intern_op(tick); }
|
|
2041
2135
|
;
|
|
2042
2136
|
|
|
2043
2137
|
reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
|
|
@@ -2064,7 +2158,7 @@ arg : lhs '=' arg_rhs
|
|
|
2064
2158
|
}
|
|
2065
2159
|
| primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs
|
|
2066
2160
|
{
|
|
2067
|
-
$$ = new_op_asgn(p, new_call(p, $1,
|
|
2161
|
+
$$ = new_op_asgn(p, new_call(p, $1, intern_op(aref), $3, '.'), $5, $6);
|
|
2068
2162
|
}
|
|
2069
2163
|
| primary_value call_op tIDENTIFIER tOP_ASGN arg_rhs
|
|
2070
2164
|
{
|
|
@@ -2097,10 +2191,26 @@ arg : lhs '=' arg_rhs
|
|
|
2097
2191
|
{
|
|
2098
2192
|
$$ = new_dot2(p, $1, $3);
|
|
2099
2193
|
}
|
|
2194
|
+
| arg tDOT2
|
|
2195
|
+
{
|
|
2196
|
+
$$ = new_dot2(p, $1, new_nil(p));
|
|
2197
|
+
}
|
|
2198
|
+
| tBDOT2 arg
|
|
2199
|
+
{
|
|
2200
|
+
$$ = new_dot2(p, new_nil(p), $2);
|
|
2201
|
+
}
|
|
2100
2202
|
| arg tDOT3 arg
|
|
2101
2203
|
{
|
|
2102
2204
|
$$ = new_dot3(p, $1, $3);
|
|
2103
2205
|
}
|
|
2206
|
+
| arg tDOT3
|
|
2207
|
+
{
|
|
2208
|
+
$$ = new_dot3(p, $1, new_nil(p));
|
|
2209
|
+
}
|
|
2210
|
+
| tBDOT3 arg
|
|
2211
|
+
{
|
|
2212
|
+
$$ = new_dot3(p, new_nil(p), $2);
|
|
2213
|
+
}
|
|
2104
2214
|
| arg '+' arg
|
|
2105
2215
|
{
|
|
2106
2216
|
$$ = call_bin_op(p, $1, "+", $3);
|
|
@@ -2225,6 +2335,42 @@ arg : lhs '=' arg_rhs
|
|
|
2225
2335
|
{
|
|
2226
2336
|
$$ = new_if(p, cond($1), $3, $6);
|
|
2227
2337
|
}
|
|
2338
|
+
| defn_head f_arglist_paren '=' arg
|
|
2339
|
+
{
|
|
2340
|
+
$$ = $1;
|
|
2341
|
+
void_expr_error(p, $4);
|
|
2342
|
+
defn_setup(p, $$, $2, $4);
|
|
2343
|
+
nvars_unnest(p);
|
|
2344
|
+
p->in_def--;
|
|
2345
|
+
}
|
|
2346
|
+
| defn_head f_arglist_paren '=' arg modifier_rescue arg
|
|
2347
|
+
{
|
|
2348
|
+
$$ = $1;
|
|
2349
|
+
void_expr_error(p, $4);
|
|
2350
|
+
void_expr_error(p, $6);
|
|
2351
|
+
defn_setup(p, $$, $2, new_mod_rescue(p, $4, $6));
|
|
2352
|
+
nvars_unnest(p);
|
|
2353
|
+
p->in_def--;
|
|
2354
|
+
}
|
|
2355
|
+
| defs_head f_arglist_paren '=' arg
|
|
2356
|
+
{
|
|
2357
|
+
$$ = $1;
|
|
2358
|
+
void_expr_error(p, $4);
|
|
2359
|
+
defs_setup(p, $$, $2, $4);
|
|
2360
|
+
nvars_unnest(p);
|
|
2361
|
+
p->in_def--;
|
|
2362
|
+
p->in_single--;
|
|
2363
|
+
}
|
|
2364
|
+
| defs_head f_arglist_paren '=' arg modifier_rescue arg
|
|
2365
|
+
{
|
|
2366
|
+
$$ = $1;
|
|
2367
|
+
void_expr_error(p, $4);
|
|
2368
|
+
void_expr_error(p, $6);
|
|
2369
|
+
defs_setup(p, $$, $2, new_mod_rescue(p, $4, $6));
|
|
2370
|
+
nvars_unnest(p);
|
|
2371
|
+
p->in_def--;
|
|
2372
|
+
p->in_single--;
|
|
2373
|
+
}
|
|
2228
2374
|
| primary
|
|
2229
2375
|
{
|
|
2230
2376
|
$$ = $1;
|
|
@@ -2264,6 +2410,46 @@ paren_args : '(' opt_call_args ')'
|
|
|
2264
2410
|
{
|
|
2265
2411
|
$$ = $2;
|
|
2266
2412
|
}
|
|
2413
|
+
| '(' args comma tBDOT3 rparen
|
|
2414
|
+
{
|
|
2415
|
+
#if 1
|
|
2416
|
+
mrb_sym r = intern_op(mul);
|
|
2417
|
+
mrb_sym b = intern_op(and);
|
|
2418
|
+
$$ = cons(push($2, new_splat(p, new_lvar(p, r))),
|
|
2419
|
+
new_block_arg(p, new_lvar(p, b)));
|
|
2420
|
+
#else
|
|
2421
|
+
mrb_sym r = intern_op(mul);
|
|
2422
|
+
mrb_sym k = intern_op(pow);
|
|
2423
|
+
mrb_sym b = intern_op(and);
|
|
2424
|
+
$$ = cons(list2(push($2, new_splat(p, new_lvar(p, r))),
|
|
2425
|
+
new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))),
|
|
2426
|
+
new_block_arg(p, new_lvar(p, b)));
|
|
2427
|
+
#endif
|
|
2428
|
+
}
|
|
2429
|
+
| '(' tBDOT3 rparen
|
|
2430
|
+
{
|
|
2431
|
+
#if 1
|
|
2432
|
+
mrb_sym r = intern_op(mul);
|
|
2433
|
+
mrb_sym b = intern_op(and);
|
|
2434
|
+
if (local_var_p(p, r) && local_var_p(p, b)) {
|
|
2435
|
+
$$ = cons(list1(new_splat(p, new_lvar(p, r))),
|
|
2436
|
+
new_block_arg(p, new_lvar(p, b)));
|
|
2437
|
+
}
|
|
2438
|
+
#else
|
|
2439
|
+
mrb_sym r = intern_op(mul);
|
|
2440
|
+
mrb_sym k = intern_op(pow);
|
|
2441
|
+
mrb_sym b = intern_op(and);
|
|
2442
|
+
if (local_var_p(p, r) && local_var_p(p, k) && local_var_p(p, b)) {
|
|
2443
|
+
$$ = cons(list2(new_splat(p, new_lvar(p, r)),
|
|
2444
|
+
new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))),
|
|
2445
|
+
new_block_arg(p, new_lvar(p, b)));
|
|
2446
|
+
}
|
|
2447
|
+
#endif
|
|
2448
|
+
else {
|
|
2449
|
+
yyerror(p, "unexpected argument forwarding ...");
|
|
2450
|
+
$$ = 0;
|
|
2451
|
+
}
|
|
2452
|
+
}
|
|
2267
2453
|
;
|
|
2268
2454
|
|
|
2269
2455
|
opt_paren_args : none
|
|
@@ -2600,50 +2786,26 @@ primary : literal
|
|
|
2600
2786
|
local_resume(p, $<nd>3);
|
|
2601
2787
|
nvars_unnest(p);
|
|
2602
2788
|
}
|
|
2603
|
-
|
|
|
2604
|
-
{
|
|
2605
|
-
$<stack>$ = p->cmdarg_stack;
|
|
2606
|
-
p->cmdarg_stack = 0;
|
|
2607
|
-
}
|
|
2608
|
-
{
|
|
2609
|
-
p->in_def++;
|
|
2610
|
-
$<nd>$ = local_switch(p);
|
|
2611
|
-
nvars_block(p);
|
|
2612
|
-
}
|
|
2789
|
+
| defn_head
|
|
2613
2790
|
f_arglist
|
|
2614
2791
|
bodystmt
|
|
2615
2792
|
keyword_end
|
|
2616
2793
|
{
|
|
2617
|
-
$$ =
|
|
2618
|
-
|
|
2619
|
-
local_resume(p, $<nd>4);
|
|
2794
|
+
$$ = $1;
|
|
2795
|
+
defn_setup(p, $$, $2, $3);
|
|
2620
2796
|
nvars_unnest(p);
|
|
2621
2797
|
p->in_def--;
|
|
2622
|
-
p->cmdarg_stack = $<stack>3;
|
|
2623
|
-
}
|
|
2624
|
-
| keyword_def singleton dot_or_colon
|
|
2625
|
-
{
|
|
2626
|
-
p->lstate = EXPR_FNAME;
|
|
2627
|
-
$<stack>$ = p->cmdarg_stack;
|
|
2628
|
-
p->cmdarg_stack = 0;
|
|
2629
|
-
}
|
|
2630
|
-
fname
|
|
2631
|
-
{
|
|
2632
|
-
p->in_single++;
|
|
2633
|
-
p->lstate = EXPR_ENDFN; /* force for args */
|
|
2634
|
-
$<nd>$ = local_switch(p);
|
|
2635
|
-
nvars_block(p);
|
|
2636
2798
|
}
|
|
2799
|
+
| defs_head
|
|
2637
2800
|
f_arglist
|
|
2638
2801
|
bodystmt
|
|
2639
2802
|
keyword_end
|
|
2640
2803
|
{
|
|
2641
|
-
$$ =
|
|
2642
|
-
|
|
2643
|
-
local_resume(p, $<nd>6);
|
|
2804
|
+
$$ = $1;
|
|
2805
|
+
defs_setup(p, $$, $2, $3);
|
|
2644
2806
|
nvars_unnest(p);
|
|
2807
|
+
p->in_def--;
|
|
2645
2808
|
p->in_single--;
|
|
2646
|
-
p->cmdarg_stack = $<stack>4;
|
|
2647
2809
|
}
|
|
2648
2810
|
| keyword_break
|
|
2649
2811
|
{
|
|
@@ -2717,11 +2879,11 @@ f_margs : f_arg
|
|
|
2717
2879
|
| f_arg ',' tSTAR
|
|
2718
2880
|
{
|
|
2719
2881
|
local_add_f(p, 0);
|
|
2720
|
-
$$ = list3($1, (
|
|
2882
|
+
$$ = list3($1, nint(-1), 0);
|
|
2721
2883
|
}
|
|
2722
2884
|
| f_arg ',' tSTAR ',' f_arg
|
|
2723
2885
|
{
|
|
2724
|
-
$$ = list3($1, (
|
|
2886
|
+
$$ = list3($1, nint(-1), $5);
|
|
2725
2887
|
}
|
|
2726
2888
|
| tSTAR f_norm_arg
|
|
2727
2889
|
{
|
|
@@ -2734,7 +2896,7 @@ f_margs : f_arg
|
|
|
2734
2896
|
| tSTAR
|
|
2735
2897
|
{
|
|
2736
2898
|
local_add_f(p, 0);
|
|
2737
|
-
$$ = list3(0, (
|
|
2899
|
+
$$ = list3(0, nint(-1), 0);
|
|
2738
2900
|
}
|
|
2739
2901
|
| tSTAR ','
|
|
2740
2902
|
{
|
|
@@ -2742,7 +2904,7 @@ f_margs : f_arg
|
|
|
2742
2904
|
}
|
|
2743
2905
|
f_arg
|
|
2744
2906
|
{
|
|
2745
|
-
$$ = list3(0, (
|
|
2907
|
+
$$ = list3(0, nint(-1), $4);
|
|
2746
2908
|
}
|
|
2747
2909
|
;
|
|
2748
2910
|
|
|
@@ -2923,7 +3085,7 @@ do_block : keyword_do_block
|
|
|
2923
3085
|
|
|
2924
3086
|
block_call : command do_block
|
|
2925
3087
|
{
|
|
2926
|
-
if ($1->car ==
|
|
3088
|
+
if (typen($1->car) == NODE_YIELD) {
|
|
2927
3089
|
yyerror(p, "block given to yield");
|
|
2928
3090
|
}
|
|
2929
3091
|
else {
|
|
@@ -2965,11 +3127,11 @@ method_call : operation paren_args
|
|
|
2965
3127
|
}
|
|
2966
3128
|
| primary_value call_op paren_args
|
|
2967
3129
|
{
|
|
2968
|
-
$$ = new_call(p, $1,
|
|
3130
|
+
$$ = new_call(p, $1, MRB_SYM_2(p->mrb, call), $3, $2);
|
|
2969
3131
|
}
|
|
2970
3132
|
| primary_value tCOLON2 paren_args
|
|
2971
3133
|
{
|
|
2972
|
-
$$ = new_call(p, $1,
|
|
3134
|
+
$$ = new_call(p, $1, MRB_SYM_2(p->mrb, call), $3, tCOLON2);
|
|
2973
3135
|
}
|
|
2974
3136
|
| keyword_super paren_args
|
|
2975
3137
|
{
|
|
@@ -2981,7 +3143,7 @@ method_call : operation paren_args
|
|
|
2981
3143
|
}
|
|
2982
3144
|
| primary_value '[' opt_call_args ']'
|
|
2983
3145
|
{
|
|
2984
|
-
$$ = new_call(p, $1,
|
|
3146
|
+
$$ = new_call(p, $1, intern_op(aref), $3, '.');
|
|
2985
3147
|
}
|
|
2986
3148
|
;
|
|
2987
3149
|
|
|
@@ -3354,12 +3516,51 @@ superclass : /* term */
|
|
|
3354
3516
|
} */
|
|
3355
3517
|
;
|
|
3356
3518
|
|
|
3357
|
-
|
|
3519
|
+
f_arglist_paren : '(' f_args rparen
|
|
3358
3520
|
{
|
|
3359
3521
|
$$ = $2;
|
|
3360
3522
|
p->lstate = EXPR_BEG;
|
|
3361
3523
|
p->cmd_start = TRUE;
|
|
3362
3524
|
}
|
|
3525
|
+
| '(' f_arg ',' tBDOT3 rparen
|
|
3526
|
+
{
|
|
3527
|
+
#if 1
|
|
3528
|
+
/* til real keyword args implemented */
|
|
3529
|
+
mrb_sym r = intern_op(mul);
|
|
3530
|
+
mrb_sym b = intern_op(and);
|
|
3531
|
+
local_add_f(p, r);
|
|
3532
|
+
$$ = new_args(p, $2, 0, r, 0,
|
|
3533
|
+
new_args_tail(p, 0, 0, b));
|
|
3534
|
+
#else
|
|
3535
|
+
mrb_sym r = intern_op(mul);
|
|
3536
|
+
mrb_sym k = intern_op(pow);
|
|
3537
|
+
mrb_sym b = intern_op(and);
|
|
3538
|
+
local_add_f(p, r); local_add_f(p, k);
|
|
3539
|
+
$$ = new_args(p, $2, 0, r, 0,
|
|
3540
|
+
new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b));
|
|
3541
|
+
#endif
|
|
3542
|
+
}
|
|
3543
|
+
| '(' tBDOT3 rparen
|
|
3544
|
+
{
|
|
3545
|
+
#if 1
|
|
3546
|
+
/* til real keyword args implemented */
|
|
3547
|
+
mrb_sym r = intern_op(mul);
|
|
3548
|
+
mrb_sym b = intern_op(and);
|
|
3549
|
+
local_add_f(p, r);
|
|
3550
|
+
$$ = new_args(p, 0, 0, r, 0,
|
|
3551
|
+
new_args_tail(p, 0, 0, b));
|
|
3552
|
+
#else
|
|
3553
|
+
mrb_sym r = intern_op(mul);
|
|
3554
|
+
mrb_sym k = intern_op(pow);
|
|
3555
|
+
mrb_sym b = intern_op(and);
|
|
3556
|
+
local_add_f(p, r); local_add_f(p, k);
|
|
3557
|
+
$$ = new_args(p, 0, 0, r, 0,
|
|
3558
|
+
new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b));
|
|
3559
|
+
#endif
|
|
3560
|
+
}
|
|
3561
|
+
;
|
|
3562
|
+
|
|
3563
|
+
f_arglist : f_arglist_paren
|
|
3363
3564
|
| f_args term
|
|
3364
3565
|
{
|
|
3365
3566
|
$$ = $1;
|
|
@@ -3423,11 +3624,11 @@ kwrest_mark : tPOW
|
|
|
3423
3624
|
|
|
3424
3625
|
f_kwrest : kwrest_mark tIDENTIFIER
|
|
3425
3626
|
{
|
|
3426
|
-
$$ =
|
|
3627
|
+
$$ = new_kw_rest_args(p, nsym($2));
|
|
3427
3628
|
}
|
|
3428
3629
|
| kwrest_mark
|
|
3429
3630
|
{
|
|
3430
|
-
$$ =
|
|
3631
|
+
$$ = new_kw_rest_args(p, 0);
|
|
3431
3632
|
}
|
|
3432
3633
|
;
|
|
3433
3634
|
|
|
@@ -3517,7 +3718,7 @@ f_args : f_arg ',' f_optarg ',' f_rest_arg opt_args_tail
|
|
|
3517
3718
|
}
|
|
3518
3719
|
| /* none */
|
|
3519
3720
|
{
|
|
3520
|
-
local_add_f(p,
|
|
3721
|
+
local_add_f(p, intern_op(and));
|
|
3521
3722
|
$$ = new_args(p, 0, 0, 0, 0, 0);
|
|
3522
3723
|
}
|
|
3523
3724
|
;
|
|
@@ -3641,7 +3842,7 @@ f_rest_arg : restarg_mark tIDENTIFIER
|
|
|
3641
3842
|
}
|
|
3642
3843
|
| restarg_mark
|
|
3643
3844
|
{
|
|
3644
|
-
local_add_f(p,
|
|
3845
|
+
local_add_f(p, intern_op(mul));
|
|
3645
3846
|
$$ = -1;
|
|
3646
3847
|
}
|
|
3647
3848
|
;
|
|
@@ -3677,7 +3878,7 @@ singleton : var_ref
|
|
|
3677
3878
|
yyerror(p, "can't define singleton method for ().");
|
|
3678
3879
|
}
|
|
3679
3880
|
else {
|
|
3680
|
-
switch ((
|
|
3881
|
+
switch (typen($3->car)) {
|
|
3681
3882
|
case NODE_STR:
|
|
3682
3883
|
case NODE_DSTR:
|
|
3683
3884
|
case NODE_XSTR:
|
|
@@ -3732,7 +3933,7 @@ assoc : arg tASSOC arg
|
|
|
3732
3933
|
| string_fragment label_tag arg
|
|
3733
3934
|
{
|
|
3734
3935
|
void_expr_error(p, $3);
|
|
3735
|
-
if ($1->car ==
|
|
3936
|
+
if (typen($1->car) == NODE_DSTR) {
|
|
3736
3937
|
$$ = cons(new_dsym(p, $1), $3);
|
|
3737
3938
|
}
|
|
3738
3939
|
else {
|
|
@@ -3742,7 +3943,7 @@ assoc : arg tASSOC arg
|
|
|
3742
3943
|
| tDSTAR arg
|
|
3743
3944
|
{
|
|
3744
3945
|
void_expr_error(p, $2);
|
|
3745
|
-
$$ = cons(
|
|
3946
|
+
$$ = cons(new_kw_rest_args(p, 0), $2);
|
|
3746
3947
|
}
|
|
3747
3948
|
;
|
|
3748
3949
|
|
|
@@ -3806,7 +4007,7 @@ term : ';' {yyerrok;}
|
|
|
3806
4007
|
|
|
3807
4008
|
nl : '\n'
|
|
3808
4009
|
{
|
|
3809
|
-
p->lineno
|
|
4010
|
+
p->lineno += $<num>1;
|
|
3810
4011
|
p->column = 0;
|
|
3811
4012
|
}
|
|
3812
4013
|
;
|
|
@@ -3830,7 +4031,7 @@ yyerror(parser_state *p, const char *s)
|
|
|
3830
4031
|
size_t n;
|
|
3831
4032
|
|
|
3832
4033
|
if (! p->capture_errors) {
|
|
3833
|
-
#ifndef
|
|
4034
|
+
#ifndef MRB_NO_STDIO
|
|
3834
4035
|
if (p->filename_sym) {
|
|
3835
4036
|
const char *filename = mrb_sym_name_len(p->mrb, p->filename_sym, NULL);
|
|
3836
4037
|
fprintf(stderr, "%s:%d:%d: %s\n", filename, p->lineno, p->column, s);
|
|
@@ -3869,7 +4070,7 @@ yywarn(parser_state *p, const char *s)
|
|
|
3869
4070
|
size_t n;
|
|
3870
4071
|
|
|
3871
4072
|
if (! p->capture_errors) {
|
|
3872
|
-
#ifndef
|
|
4073
|
+
#ifndef MRB_NO_STDIO
|
|
3873
4074
|
if (p->filename_sym) {
|
|
3874
4075
|
const char *filename = mrb_sym_name_len(p->mrb, p->filename_sym, NULL);
|
|
3875
4076
|
fprintf(stderr, "%s:%d:%d: warning: %s\n", filename, p->lineno, p->column, s);
|
|
@@ -3965,6 +4166,27 @@ static void pushback(parser_state *p, int c);
|
|
|
3965
4166
|
static mrb_bool peeks(parser_state *p, const char *s);
|
|
3966
4167
|
static mrb_bool skips(parser_state *p, const char *s);
|
|
3967
4168
|
|
|
4169
|
+
static inline int
|
|
4170
|
+
nextc0(parser_state *p)
|
|
4171
|
+
{
|
|
4172
|
+
int c;
|
|
4173
|
+
|
|
4174
|
+
if (p->s && p->s < p->send) {
|
|
4175
|
+
c = (unsigned char)*p->s++;
|
|
4176
|
+
}
|
|
4177
|
+
else {
|
|
4178
|
+
#ifndef MRB_NO_STDIO
|
|
4179
|
+
if (p->f) {
|
|
4180
|
+
c = fgetc(p->f);
|
|
4181
|
+
if (feof(p->f)) return -1;
|
|
4182
|
+
}
|
|
4183
|
+
else
|
|
4184
|
+
#endif
|
|
4185
|
+
return -1;
|
|
4186
|
+
}
|
|
4187
|
+
return c;
|
|
4188
|
+
}
|
|
4189
|
+
|
|
3968
4190
|
static inline int
|
|
3969
4191
|
nextc(parser_state *p)
|
|
3970
4192
|
{
|
|
@@ -3979,30 +4201,18 @@ nextc(parser_state *p)
|
|
|
3979
4201
|
cons_free(tmp);
|
|
3980
4202
|
}
|
|
3981
4203
|
else {
|
|
3982
|
-
|
|
3983
|
-
if (
|
|
3984
|
-
if (feof(p->f)) goto eof;
|
|
3985
|
-
c = fgetc(p->f);
|
|
3986
|
-
if (c == EOF) goto eof;
|
|
3987
|
-
}
|
|
3988
|
-
else
|
|
3989
|
-
#endif
|
|
3990
|
-
if (!p->s || p->s >= p->send) {
|
|
3991
|
-
goto eof;
|
|
3992
|
-
}
|
|
3993
|
-
else {
|
|
3994
|
-
c = (unsigned char)*p->s++;
|
|
3995
|
-
}
|
|
4204
|
+
c = nextc0(p);
|
|
4205
|
+
if (c < 0) goto eof;
|
|
3996
4206
|
}
|
|
3997
4207
|
if (c >= 0) {
|
|
3998
4208
|
p->column++;
|
|
3999
4209
|
}
|
|
4000
4210
|
if (c == '\r') {
|
|
4001
|
-
const int lf =
|
|
4211
|
+
const int lf = nextc0(p);
|
|
4002
4212
|
if (lf == '\n') {
|
|
4003
4213
|
return '\n';
|
|
4004
4214
|
}
|
|
4005
|
-
pushback(p, lf);
|
|
4215
|
+
if (lf > 0) pushback(p, lf);
|
|
4006
4216
|
}
|
|
4007
4217
|
return c;
|
|
4008
4218
|
|
|
@@ -4049,7 +4259,7 @@ peekc_n(parser_state *p, int n)
|
|
|
4049
4259
|
list = push(list, nint(c0));
|
|
4050
4260
|
} while(n--);
|
|
4051
4261
|
if (p->pb) {
|
|
4052
|
-
p->pb = append(
|
|
4262
|
+
p->pb = append(list, p->pb);
|
|
4053
4263
|
}
|
|
4054
4264
|
else {
|
|
4055
4265
|
p->pb = list;
|
|
@@ -4069,7 +4279,7 @@ peeks(parser_state *p, const char *s)
|
|
|
4069
4279
|
{
|
|
4070
4280
|
size_t len = strlen(s);
|
|
4071
4281
|
|
|
4072
|
-
#ifndef
|
|
4282
|
+
#ifndef MRB_NO_STDIO
|
|
4073
4283
|
if (p->f) {
|
|
4074
4284
|
int n = 0;
|
|
4075
4285
|
while (*s) {
|
|
@@ -4427,6 +4637,88 @@ read_escape(parser_state *p)
|
|
|
4427
4637
|
}
|
|
4428
4638
|
}
|
|
4429
4639
|
|
|
4640
|
+
static void
|
|
4641
|
+
heredoc_count_indent(parser_heredoc_info *hinf, const char *str, size_t len, size_t spaces, size_t *offset)
|
|
4642
|
+
{
|
|
4643
|
+
size_t indent = 0;
|
|
4644
|
+
*offset = 0;
|
|
4645
|
+
for (size_t i = 0; i < len; i++) {
|
|
4646
|
+
size_t size;
|
|
4647
|
+
if (str[i] == '\n')
|
|
4648
|
+
break;
|
|
4649
|
+
else if (str[i] == '\t')
|
|
4650
|
+
size = 8;
|
|
4651
|
+
else if (ISSPACE(str[i]))
|
|
4652
|
+
size = 1;
|
|
4653
|
+
else
|
|
4654
|
+
break;
|
|
4655
|
+
size_t nindent = indent + size;
|
|
4656
|
+
if (nindent > spaces || nindent > hinf->indent)
|
|
4657
|
+
break;
|
|
4658
|
+
indent = nindent;
|
|
4659
|
+
*offset += 1;
|
|
4660
|
+
}
|
|
4661
|
+
}
|
|
4662
|
+
|
|
4663
|
+
static void
|
|
4664
|
+
heredoc_remove_indent(parser_state *p, parser_heredoc_info *hinf)
|
|
4665
|
+
{
|
|
4666
|
+
if (!hinf->remove_indent || hinf->indent == 0)
|
|
4667
|
+
return;
|
|
4668
|
+
node *indented, *n, *pair, *escaped, *nspaces;
|
|
4669
|
+
const char *str;
|
|
4670
|
+
size_t len, spaces, offset, start, end;
|
|
4671
|
+
indented = hinf->indented;
|
|
4672
|
+
while (indented) {
|
|
4673
|
+
n = indented->car;
|
|
4674
|
+
pair = n->car;
|
|
4675
|
+
str = (char*)pair->car;
|
|
4676
|
+
len = (size_t)pair->cdr;
|
|
4677
|
+
escaped = n->cdr->car;
|
|
4678
|
+
nspaces = n->cdr->cdr;
|
|
4679
|
+
if (escaped) {
|
|
4680
|
+
char *newstr = strndup(str, len);
|
|
4681
|
+
size_t newlen = 0;
|
|
4682
|
+
start = 0;
|
|
4683
|
+
while (start < len) {
|
|
4684
|
+
end = escaped ? (size_t)escaped->car : len;
|
|
4685
|
+
spaces = (size_t)nspaces->car;
|
|
4686
|
+
size_t esclen = end - start;
|
|
4687
|
+
heredoc_count_indent(hinf, str + start, esclen, spaces, &offset);
|
|
4688
|
+
esclen -= offset;
|
|
4689
|
+
memcpy(newstr + newlen, str + start + offset, esclen);
|
|
4690
|
+
newlen += esclen;
|
|
4691
|
+
start = end;
|
|
4692
|
+
if (escaped)
|
|
4693
|
+
escaped = escaped->cdr;
|
|
4694
|
+
nspaces = nspaces->cdr;
|
|
4695
|
+
}
|
|
4696
|
+
if (newlen < len)
|
|
4697
|
+
newstr[newlen] = '\0';
|
|
4698
|
+
pair->car = (node*)newstr;
|
|
4699
|
+
pair->cdr = (node*)newlen;
|
|
4700
|
+
} else {
|
|
4701
|
+
spaces = (size_t)nspaces->car;
|
|
4702
|
+
heredoc_count_indent(hinf, str, len, spaces, &offset);
|
|
4703
|
+
pair->car = (node*)(str + offset);
|
|
4704
|
+
pair->cdr = (node*)(len - offset);
|
|
4705
|
+
}
|
|
4706
|
+
indented = indented->cdr;
|
|
4707
|
+
}
|
|
4708
|
+
}
|
|
4709
|
+
|
|
4710
|
+
static void
|
|
4711
|
+
heredoc_push_indented(parser_state *p, parser_heredoc_info *hinf, node *pair, node *escaped, node *nspaces, mrb_bool empty_line)
|
|
4712
|
+
{
|
|
4713
|
+
hinf->indented = push(hinf->indented, cons(pair, cons(escaped, nspaces)));
|
|
4714
|
+
while (nspaces) {
|
|
4715
|
+
size_t tspaces = (size_t)nspaces->car;
|
|
4716
|
+
if ((hinf->indent == ~0U || tspaces < hinf->indent) && !empty_line)
|
|
4717
|
+
hinf->indent = tspaces;
|
|
4718
|
+
nspaces = nspaces->cdr;
|
|
4719
|
+
}
|
|
4720
|
+
}
|
|
4721
|
+
|
|
4430
4722
|
static int
|
|
4431
4723
|
parse_string(parser_state *p)
|
|
4432
4724
|
{
|
|
@@ -4437,10 +4729,19 @@ parse_string(parser_state *p)
|
|
|
4437
4729
|
int end = intn(p->lex_strterm->cdr->cdr->cdr);
|
|
4438
4730
|
parser_heredoc_info *hinf = (type & STR_FUNC_HEREDOC) ? parsing_heredoc_inf(p) : NULL;
|
|
4439
4731
|
|
|
4732
|
+
mrb_bool unindent = hinf && hinf->remove_indent;
|
|
4733
|
+
mrb_bool head = hinf && hinf->line_head;
|
|
4734
|
+
mrb_bool empty = TRUE;
|
|
4735
|
+
size_t spaces = 0;
|
|
4736
|
+
size_t pos = -1;
|
|
4737
|
+
node *escaped = NULL;
|
|
4738
|
+
node *nspaces = NULL;
|
|
4739
|
+
|
|
4440
4740
|
if (beg == 0) beg = -3; /* should never happen */
|
|
4441
4741
|
if (end == 0) end = -3;
|
|
4442
4742
|
newtok(p);
|
|
4443
4743
|
while ((c = nextc(p)) != end || nest_level != 0) {
|
|
4744
|
+
pos++;
|
|
4444
4745
|
if (hinf && (c == '\n' || c < 0)) {
|
|
4445
4746
|
mrb_bool line_head;
|
|
4446
4747
|
tokadd(p, '\n');
|
|
@@ -4460,6 +4761,7 @@ parse_string(parser_state *p)
|
|
|
4460
4761
|
}
|
|
4461
4762
|
}
|
|
4462
4763
|
if ((len-1 == hinf->term_len) && (strncmp(s, hinf->term, len-1) == 0)) {
|
|
4764
|
+
heredoc_remove_indent(p, hinf);
|
|
4463
4765
|
return tHEREDOC_END;
|
|
4464
4766
|
}
|
|
4465
4767
|
}
|
|
@@ -4478,9 +4780,22 @@ parse_string(parser_state *p)
|
|
|
4478
4780
|
}
|
|
4479
4781
|
return 0;
|
|
4480
4782
|
}
|
|
4481
|
-
|
|
4783
|
+
node *nd = new_str(p, tok(p), toklen(p));
|
|
4784
|
+
pylval.nd = nd;
|
|
4785
|
+
if (unindent && head) {
|
|
4786
|
+
nspaces = push(nspaces, nint(spaces));
|
|
4787
|
+
heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, empty && line_head);
|
|
4788
|
+
}
|
|
4482
4789
|
return tHD_STRING_MID;
|
|
4483
4790
|
}
|
|
4791
|
+
if (unindent && empty) {
|
|
4792
|
+
if (c == '\t')
|
|
4793
|
+
spaces += 8;
|
|
4794
|
+
else if (ISSPACE(c))
|
|
4795
|
+
++spaces;
|
|
4796
|
+
else
|
|
4797
|
+
empty = FALSE;
|
|
4798
|
+
}
|
|
4484
4799
|
if (c < 0) {
|
|
4485
4800
|
yyerror(p, "unterminated string meets end of file");
|
|
4486
4801
|
return 0;
|
|
@@ -4502,6 +4817,13 @@ parse_string(parser_state *p)
|
|
|
4502
4817
|
else if (c == '\n') {
|
|
4503
4818
|
p->lineno++;
|
|
4504
4819
|
p->column = 0;
|
|
4820
|
+
if (unindent) {
|
|
4821
|
+
nspaces = push(nspaces, nint(spaces));
|
|
4822
|
+
escaped = push(escaped, nint(pos));
|
|
4823
|
+
pos--;
|
|
4824
|
+
empty = TRUE;
|
|
4825
|
+
spaces = 0;
|
|
4826
|
+
}
|
|
4505
4827
|
if (type & STR_FUNC_ARRAY) {
|
|
4506
4828
|
tokadd(p, '\n');
|
|
4507
4829
|
}
|
|
@@ -4551,8 +4873,13 @@ parse_string(parser_state *p)
|
|
|
4551
4873
|
tokfix(p);
|
|
4552
4874
|
p->lstate = EXPR_BEG;
|
|
4553
4875
|
p->cmd_start = TRUE;
|
|
4554
|
-
|
|
4876
|
+
node *nd = new_str(p, tok(p), toklen(p));
|
|
4877
|
+
pylval.nd = nd;
|
|
4555
4878
|
if (hinf) {
|
|
4879
|
+
if (unindent && head) {
|
|
4880
|
+
nspaces = push(nspaces, nint(spaces));
|
|
4881
|
+
heredoc_push_indented(p, hinf, nd->cdr, escaped, nspaces, FALSE);
|
|
4882
|
+
}
|
|
4556
4883
|
hinf->line_head = FALSE;
|
|
4557
4884
|
return tHD_STRING_PART;
|
|
4558
4885
|
}
|
|
@@ -4673,7 +5000,7 @@ number_literal_suffix(parser_state *p)
|
|
|
4673
5000
|
int mask = NUM_SUFFIX_R|NUM_SUFFIX_I;
|
|
4674
5001
|
|
|
4675
5002
|
while ((c = nextc(p)) != -1) {
|
|
4676
|
-
list = push(list, (
|
|
5003
|
+
list = push(list, nint(c));
|
|
4677
5004
|
|
|
4678
5005
|
if ((mask & NUM_SUFFIX_I) && c == 'i') {
|
|
4679
5006
|
result |= (mask & NUM_SUFFIX_I);
|
|
@@ -4690,7 +5017,7 @@ number_literal_suffix(parser_state *p)
|
|
|
4690
5017
|
if (!ISASCII(c) || ISALPHA(c) || c == '_') {
|
|
4691
5018
|
p->column = column;
|
|
4692
5019
|
if (p->pb) {
|
|
4693
|
-
p->pb = append(
|
|
5020
|
+
p->pb = append(list, p->pb);
|
|
4694
5021
|
}
|
|
4695
5022
|
else {
|
|
4696
5023
|
p->pb = list;
|
|
@@ -4709,6 +5036,7 @@ heredoc_identifier(parser_state *p)
|
|
|
4709
5036
|
int c;
|
|
4710
5037
|
int type = str_heredoc;
|
|
4711
5038
|
mrb_bool indent = FALSE;
|
|
5039
|
+
mrb_bool squiggly = FALSE;
|
|
4712
5040
|
mrb_bool quote = FALSE;
|
|
4713
5041
|
node *newnode;
|
|
4714
5042
|
parser_heredoc_info *info;
|
|
@@ -4718,8 +5046,11 @@ heredoc_identifier(parser_state *p)
|
|
|
4718
5046
|
pushback(p, c);
|
|
4719
5047
|
return 0;
|
|
4720
5048
|
}
|
|
4721
|
-
if (c == '-') {
|
|
4722
|
-
|
|
5049
|
+
if (c == '-' || c == '~') {
|
|
5050
|
+
if (c == '-')
|
|
5051
|
+
indent = TRUE;
|
|
5052
|
+
if (c == '~')
|
|
5053
|
+
squiggly = TRUE;
|
|
4723
5054
|
c = nextc(p);
|
|
4724
5055
|
}
|
|
4725
5056
|
if (c == '\'' || c == '"') {
|
|
@@ -4746,6 +5077,7 @@ heredoc_identifier(parser_state *p)
|
|
|
4746
5077
|
if (! identchar(c)) {
|
|
4747
5078
|
pushback(p, c);
|
|
4748
5079
|
if (indent) pushback(p, '-');
|
|
5080
|
+
if (squiggly) pushback(p, '~');
|
|
4749
5081
|
return 0;
|
|
4750
5082
|
}
|
|
4751
5083
|
newtok(p);
|
|
@@ -4762,7 +5094,10 @@ heredoc_identifier(parser_state *p)
|
|
|
4762
5094
|
if (! quote)
|
|
4763
5095
|
type |= STR_FUNC_EXPAND;
|
|
4764
5096
|
info->type = (string_type)type;
|
|
4765
|
-
info->allow_indent = indent;
|
|
5097
|
+
info->allow_indent = indent || squiggly;
|
|
5098
|
+
info->remove_indent = squiggly;
|
|
5099
|
+
info->indent = ~0U;
|
|
5100
|
+
info->indented = NULL;
|
|
4766
5101
|
info->line_head = TRUE;
|
|
4767
5102
|
info->doc = NULL;
|
|
4768
5103
|
p->heredocs_from_nextline = push(p->heredocs_from_nextline, newnode);
|
|
@@ -4785,6 +5120,7 @@ static int
|
|
|
4785
5120
|
parser_yylex(parser_state *p)
|
|
4786
5121
|
{
|
|
4787
5122
|
int32_t c;
|
|
5123
|
+
int nlines = 1;
|
|
4788
5124
|
int space_seen = 0;
|
|
4789
5125
|
int cmd_state;
|
|
4790
5126
|
enum mrb_lex_state_enum last_state;
|
|
@@ -4842,6 +5178,7 @@ parser_yylex(parser_state *p)
|
|
|
4842
5178
|
break;
|
|
4843
5179
|
}
|
|
4844
5180
|
if (p->parsing_heredoc != NULL) {
|
|
5181
|
+
pylval.num = nlines;
|
|
4845
5182
|
return '\n';
|
|
4846
5183
|
}
|
|
4847
5184
|
while ((c = nextc(p))) {
|
|
@@ -4851,13 +5188,13 @@ parser_yylex(parser_state *p)
|
|
|
4851
5188
|
space_seen = 1;
|
|
4852
5189
|
break;
|
|
4853
5190
|
case '#': /* comment as a whitespace */
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
5191
|
+
skip(p, '\n');
|
|
5192
|
+
nlines++;
|
|
5193
|
+
break;
|
|
4857
5194
|
case '.':
|
|
4858
5195
|
if (!peek(p, '.')) {
|
|
4859
5196
|
pushback(p, '.');
|
|
4860
|
-
p->lineno
|
|
5197
|
+
p->lineno+=nlines; nlines=1;
|
|
4861
5198
|
goto retry;
|
|
4862
5199
|
}
|
|
4863
5200
|
pushback(p, c);
|
|
@@ -4865,7 +5202,7 @@ parser_yylex(parser_state *p)
|
|
|
4865
5202
|
case '&':
|
|
4866
5203
|
if (peek(p, '.')) {
|
|
4867
5204
|
pushback(p, '&');
|
|
4868
|
-
p->lineno
|
|
5205
|
+
p->lineno+=nlines; nlines=1;
|
|
4869
5206
|
goto retry;
|
|
4870
5207
|
}
|
|
4871
5208
|
pushback(p, c);
|
|
@@ -4881,12 +5218,13 @@ parser_yylex(parser_state *p)
|
|
|
4881
5218
|
normal_newline:
|
|
4882
5219
|
p->cmd_start = TRUE;
|
|
4883
5220
|
p->lstate = EXPR_BEG;
|
|
5221
|
+
pylval.num = nlines;
|
|
4884
5222
|
return '\n';
|
|
4885
5223
|
|
|
4886
5224
|
case '*':
|
|
4887
5225
|
if ((c = nextc(p)) == '*') {
|
|
4888
5226
|
if ((c = nextc(p)) == '=') {
|
|
4889
|
-
pylval.id =
|
|
5227
|
+
pylval.id = intern_op(pow);
|
|
4890
5228
|
p->lstate = EXPR_BEG;
|
|
4891
5229
|
return tOP_ASGN;
|
|
4892
5230
|
}
|
|
@@ -4904,7 +5242,7 @@ parser_yylex(parser_state *p)
|
|
|
4904
5242
|
}
|
|
4905
5243
|
else {
|
|
4906
5244
|
if (c == '=') {
|
|
4907
|
-
pylval.id =
|
|
5245
|
+
pylval.id = intern_op(mul);
|
|
4908
5246
|
p->lstate = EXPR_BEG;
|
|
4909
5247
|
return tOP_ASGN;
|
|
4910
5248
|
}
|
|
@@ -4963,7 +5301,7 @@ parser_yylex(parser_state *p)
|
|
|
4963
5301
|
c = nextc(p);
|
|
4964
5302
|
} while (!(c < 0 || ISSPACE(c)));
|
|
4965
5303
|
if (c != '\n') skip(p, '\n');
|
|
4966
|
-
p->lineno
|
|
5304
|
+
p->lineno+=nlines; nlines=1;
|
|
4967
5305
|
p->column = 0;
|
|
4968
5306
|
goto retry;
|
|
4969
5307
|
}
|
|
@@ -5020,7 +5358,7 @@ parser_yylex(parser_state *p)
|
|
|
5020
5358
|
}
|
|
5021
5359
|
if (c == '<') {
|
|
5022
5360
|
if ((c = nextc(p)) == '=') {
|
|
5023
|
-
pylval.id =
|
|
5361
|
+
pylval.id = intern_op(lshift);
|
|
5024
5362
|
p->lstate = EXPR_BEG;
|
|
5025
5363
|
return tOP_ASGN;
|
|
5026
5364
|
}
|
|
@@ -5042,7 +5380,7 @@ parser_yylex(parser_state *p)
|
|
|
5042
5380
|
}
|
|
5043
5381
|
if (c == '>') {
|
|
5044
5382
|
if ((c = nextc(p)) == '=') {
|
|
5045
|
-
pylval.id =
|
|
5383
|
+
pylval.id = intern_op(rshift);
|
|
5046
5384
|
p->lstate = EXPR_BEG;
|
|
5047
5385
|
return tOP_ASGN;
|
|
5048
5386
|
}
|
|
@@ -5150,7 +5488,7 @@ parser_yylex(parser_state *p)
|
|
|
5150
5488
|
if ((c = nextc(p)) == '&') {
|
|
5151
5489
|
p->lstate = EXPR_BEG;
|
|
5152
5490
|
if ((c = nextc(p)) == '=') {
|
|
5153
|
-
pylval.id =
|
|
5491
|
+
pylval.id = intern_op(andand);
|
|
5154
5492
|
p->lstate = EXPR_BEG;
|
|
5155
5493
|
return tOP_ASGN;
|
|
5156
5494
|
}
|
|
@@ -5162,7 +5500,7 @@ parser_yylex(parser_state *p)
|
|
|
5162
5500
|
return tANDDOT;
|
|
5163
5501
|
}
|
|
5164
5502
|
else if (c == '=') {
|
|
5165
|
-
pylval.id =
|
|
5503
|
+
pylval.id = intern_op(and);
|
|
5166
5504
|
p->lstate = EXPR_BEG;
|
|
5167
5505
|
return tOP_ASGN;
|
|
5168
5506
|
}
|
|
@@ -5189,7 +5527,7 @@ parser_yylex(parser_state *p)
|
|
|
5189
5527
|
if ((c = nextc(p)) == '|') {
|
|
5190
5528
|
p->lstate = EXPR_BEG;
|
|
5191
5529
|
if ((c = nextc(p)) == '=') {
|
|
5192
|
-
pylval.id =
|
|
5530
|
+
pylval.id = intern_op(oror);
|
|
5193
5531
|
p->lstate = EXPR_BEG;
|
|
5194
5532
|
return tOP_ASGN;
|
|
5195
5533
|
}
|
|
@@ -5197,7 +5535,7 @@ parser_yylex(parser_state *p)
|
|
|
5197
5535
|
return tOROP;
|
|
5198
5536
|
}
|
|
5199
5537
|
if (c == '=') {
|
|
5200
|
-
pylval.id =
|
|
5538
|
+
pylval.id = intern_op(or);
|
|
5201
5539
|
p->lstate = EXPR_BEG;
|
|
5202
5540
|
return tOP_ASGN;
|
|
5203
5541
|
}
|
|
@@ -5221,7 +5559,7 @@ parser_yylex(parser_state *p)
|
|
|
5221
5559
|
return '+';
|
|
5222
5560
|
}
|
|
5223
5561
|
if (c == '=') {
|
|
5224
|
-
pylval.id =
|
|
5562
|
+
pylval.id = intern_op(add);
|
|
5225
5563
|
p->lstate = EXPR_BEG;
|
|
5226
5564
|
return tOP_ASGN;
|
|
5227
5565
|
}
|
|
@@ -5249,7 +5587,7 @@ parser_yylex(parser_state *p)
|
|
|
5249
5587
|
return '-';
|
|
5250
5588
|
}
|
|
5251
5589
|
if (c == '=') {
|
|
5252
|
-
pylval.id =
|
|
5590
|
+
pylval.id = intern_op(sub);
|
|
5253
5591
|
p->lstate = EXPR_BEG;
|
|
5254
5592
|
return tOP_ASGN;
|
|
5255
5593
|
}
|
|
@@ -5270,20 +5608,23 @@ parser_yylex(parser_state *p)
|
|
|
5270
5608
|
return '-';
|
|
5271
5609
|
|
|
5272
5610
|
case '.':
|
|
5273
|
-
|
|
5274
|
-
|
|
5611
|
+
{
|
|
5612
|
+
int is_beg = IS_BEG();
|
|
5613
|
+
p->lstate = EXPR_BEG;
|
|
5275
5614
|
if ((c = nextc(p)) == '.') {
|
|
5276
|
-
|
|
5615
|
+
if ((c = nextc(p)) == '.') {
|
|
5616
|
+
return is_beg ? tBDOT3 : tDOT3;
|
|
5617
|
+
}
|
|
5618
|
+
pushback(p, c);
|
|
5619
|
+
return is_beg ? tBDOT2 : tDOT2;
|
|
5277
5620
|
}
|
|
5278
5621
|
pushback(p, c);
|
|
5279
|
-
|
|
5280
|
-
|
|
5281
|
-
|
|
5282
|
-
|
|
5283
|
-
|
|
5622
|
+
if (c >= 0 && ISDIGIT(c)) {
|
|
5623
|
+
yyerror(p, "no .<digit> floating literal anymore; put 0 before dot");
|
|
5624
|
+
}
|
|
5625
|
+
p->lstate = EXPR_DOT;
|
|
5626
|
+
return '.';
|
|
5284
5627
|
}
|
|
5285
|
-
p->lstate = EXPR_DOT;
|
|
5286
|
-
return '.';
|
|
5287
5628
|
|
|
5288
5629
|
start_num:
|
|
5289
5630
|
case '0': case '1': case '2': case '3': case '4':
|
|
@@ -5499,7 +5840,7 @@ parser_yylex(parser_state *p)
|
|
|
5499
5840
|
}
|
|
5500
5841
|
tokfix(p);
|
|
5501
5842
|
if (is_float) {
|
|
5502
|
-
#ifdef
|
|
5843
|
+
#ifdef MRB_NO_FLOAT
|
|
5503
5844
|
yywarning_s(p, "floating point numbers are not supported", tok(p));
|
|
5504
5845
|
pylval.nd = new_int(p, "0", 10, 0);
|
|
5505
5846
|
return tINTEGER;
|
|
@@ -5517,6 +5858,10 @@ parser_yylex(parser_state *p)
|
|
|
5517
5858
|
errno = 0;
|
|
5518
5859
|
}
|
|
5519
5860
|
suffix = number_literal_suffix(p);
|
|
5861
|
+
if (seen_e && (suffix & NUM_SUFFIX_R)) {
|
|
5862
|
+
pushback(p, 'r');
|
|
5863
|
+
suffix &= ~NUM_SUFFIX_R;
|
|
5864
|
+
}
|
|
5520
5865
|
pylval.nd = new_float(p, tok(p), suffix);
|
|
5521
5866
|
return tFLOAT;
|
|
5522
5867
|
#endif
|
|
@@ -5554,14 +5899,14 @@ parser_yylex(parser_state *p)
|
|
|
5554
5899
|
p->lstate = EXPR_BEG;
|
|
5555
5900
|
return tLABEL_TAG;
|
|
5556
5901
|
}
|
|
5557
|
-
if (
|
|
5902
|
+
if (IS_END() || ISSPACE(c) || c == '#') {
|
|
5558
5903
|
pushback(p, c);
|
|
5559
|
-
p->lstate =
|
|
5560
|
-
return
|
|
5904
|
+
p->lstate = EXPR_BEG;
|
|
5905
|
+
return ':';
|
|
5561
5906
|
}
|
|
5562
5907
|
pushback(p, c);
|
|
5563
|
-
p->lstate =
|
|
5564
|
-
return
|
|
5908
|
+
p->lstate = EXPR_FNAME;
|
|
5909
|
+
return tSYMBEG;
|
|
5565
5910
|
|
|
5566
5911
|
case '/':
|
|
5567
5912
|
if (IS_BEG()) {
|
|
@@ -5569,7 +5914,7 @@ parser_yylex(parser_state *p)
|
|
|
5569
5914
|
return tREGEXP_BEG;
|
|
5570
5915
|
}
|
|
5571
5916
|
if ((c = nextc(p)) == '=') {
|
|
5572
|
-
pylval.id =
|
|
5917
|
+
pylval.id = intern_op(div);
|
|
5573
5918
|
p->lstate = EXPR_BEG;
|
|
5574
5919
|
return tOP_ASGN;
|
|
5575
5920
|
}
|
|
@@ -5588,7 +5933,7 @@ parser_yylex(parser_state *p)
|
|
|
5588
5933
|
|
|
5589
5934
|
case '^':
|
|
5590
5935
|
if ((c = nextc(p)) == '=') {
|
|
5591
|
-
pylval.id =
|
|
5936
|
+
pylval.id = intern_op(xor);
|
|
5592
5937
|
p->lstate = EXPR_BEG;
|
|
5593
5938
|
return tOP_ASGN;
|
|
5594
5939
|
}
|
|
@@ -5641,6 +5986,7 @@ parser_yylex(parser_state *p)
|
|
|
5641
5986
|
p->paren_nest++;
|
|
5642
5987
|
if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
|
|
5643
5988
|
p->lstate = EXPR_ARG;
|
|
5989
|
+
p->paren_nest--;
|
|
5644
5990
|
if ((c = nextc(p)) == ']') {
|
|
5645
5991
|
if ((c = nextc(p)) == '=') {
|
|
5646
5992
|
return tASET;
|
|
@@ -5685,7 +6031,7 @@ parser_yylex(parser_state *p)
|
|
|
5685
6031
|
case '\\':
|
|
5686
6032
|
c = nextc(p);
|
|
5687
6033
|
if (c == '\n') {
|
|
5688
|
-
p->lineno
|
|
6034
|
+
p->lineno+=nlines; nlines=1;
|
|
5689
6035
|
p->column = 0;
|
|
5690
6036
|
space_seen = 1;
|
|
5691
6037
|
goto retry; /* skip \\n */
|
|
@@ -5765,7 +6111,7 @@ parser_yylex(parser_state *p)
|
|
|
5765
6111
|
}
|
|
5766
6112
|
}
|
|
5767
6113
|
if ((c = nextc(p)) == '=') {
|
|
5768
|
-
pylval.id =
|
|
6114
|
+
pylval.id = intern_op(mod);
|
|
5769
6115
|
p->lstate = EXPR_BEG;
|
|
5770
6116
|
return tOP_ASGN;
|
|
5771
6117
|
}
|
|
@@ -5968,7 +6314,7 @@ parser_yylex(parser_state *p)
|
|
|
5968
6314
|
break;
|
|
5969
6315
|
|
|
5970
6316
|
case '_':
|
|
5971
|
-
if (toklen(p) == 2 && ISDIGIT(tok(p)[1]) && p->nvars) {
|
|
6317
|
+
if (p->lstate != EXPR_FNAME && toklen(p) == 2 && ISDIGIT(tok(p)[1]) && p->nvars) {
|
|
5972
6318
|
int n = tok(p)[1] - '0';
|
|
5973
6319
|
int nvar;
|
|
5974
6320
|
|
|
@@ -6130,7 +6476,7 @@ parser_init_cxt(parser_state *p, mrbc_context *cxt)
|
|
|
6130
6476
|
}
|
|
6131
6477
|
p->capture_errors = cxt->capture_errors;
|
|
6132
6478
|
p->no_optimize = cxt->no_optimize;
|
|
6133
|
-
p->
|
|
6479
|
+
p->upper = cxt->upper;
|
|
6134
6480
|
if (cxt->partial_hook) {
|
|
6135
6481
|
p->cxt = cxt;
|
|
6136
6482
|
}
|
|
@@ -6229,7 +6575,7 @@ mrb_parser_new(mrb_state *mrb)
|
|
|
6229
6575
|
p->pool = pool;
|
|
6230
6576
|
|
|
6231
6577
|
p->s = p->send = NULL;
|
|
6232
|
-
#ifndef
|
|
6578
|
+
#ifndef MRB_NO_STDIO
|
|
6233
6579
|
p->f = NULL;
|
|
6234
6580
|
#endif
|
|
6235
6581
|
|
|
@@ -6301,11 +6647,21 @@ mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*func)(struct mrb_parser
|
|
|
6301
6647
|
c->partial_data = data;
|
|
6302
6648
|
}
|
|
6303
6649
|
|
|
6650
|
+
MRB_API void
|
|
6651
|
+
mrbc_cleanup_local_variables(mrb_state *mrb, mrbc_context *c)
|
|
6652
|
+
{
|
|
6653
|
+
if (c->syms) {
|
|
6654
|
+
mrb_free(mrb, c->syms);
|
|
6655
|
+
c->syms = NULL;
|
|
6656
|
+
c->slen = 0;
|
|
6657
|
+
}
|
|
6658
|
+
}
|
|
6659
|
+
|
|
6304
6660
|
MRB_API void
|
|
6305
6661
|
mrb_parser_set_filename(struct mrb_parser_state *p, const char *f)
|
|
6306
6662
|
{
|
|
6307
6663
|
mrb_sym sym;
|
|
6308
|
-
|
|
6664
|
+
uint16_t i;
|
|
6309
6665
|
mrb_sym* new_table;
|
|
6310
6666
|
|
|
6311
6667
|
sym = mrb_intern_cstr(p->mrb, f);
|
|
@@ -6314,7 +6670,7 @@ mrb_parser_set_filename(struct mrb_parser_state *p, const char *f)
|
|
|
6314
6670
|
|
|
6315
6671
|
for (i = 0; i < p->filename_table_length; ++i) {
|
|
6316
6672
|
if (p->filename_table[i] == sym) {
|
|
6317
|
-
p->current_filename_index =
|
|
6673
|
+
p->current_filename_index = i;
|
|
6318
6674
|
return;
|
|
6319
6675
|
}
|
|
6320
6676
|
}
|
|
@@ -6341,20 +6697,32 @@ mrb_parser_get_filename(struct mrb_parser_state* p, uint16_t idx) {
|
|
|
6341
6697
|
}
|
|
6342
6698
|
}
|
|
6343
6699
|
|
|
6344
|
-
#ifndef
|
|
6345
|
-
|
|
6346
|
-
|
|
6700
|
+
#ifndef MRB_NO_STDIO
|
|
6701
|
+
static struct mrb_parser_state *
|
|
6702
|
+
mrb_parse_file_continue(mrb_state *mrb, FILE *f, const void *prebuf, size_t prebufsize, mrbc_context *c)
|
|
6347
6703
|
{
|
|
6348
6704
|
parser_state *p;
|
|
6349
6705
|
|
|
6350
6706
|
p = mrb_parser_new(mrb);
|
|
6351
6707
|
if (!p) return NULL;
|
|
6352
|
-
|
|
6708
|
+
if (prebuf) {
|
|
6709
|
+
p->s = (const char *)prebuf;
|
|
6710
|
+
p->send = (const char *)prebuf + prebufsize;
|
|
6711
|
+
}
|
|
6712
|
+
else {
|
|
6713
|
+
p->s = p->send = NULL;
|
|
6714
|
+
}
|
|
6353
6715
|
p->f = f;
|
|
6354
6716
|
|
|
6355
6717
|
mrb_parser_parse(p, c);
|
|
6356
6718
|
return p;
|
|
6357
6719
|
}
|
|
6720
|
+
|
|
6721
|
+
MRB_API parser_state*
|
|
6722
|
+
mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c)
|
|
6723
|
+
{
|
|
6724
|
+
return mrb_parse_file_continue(mrb, f, NULL, 0, c);
|
|
6725
|
+
}
|
|
6358
6726
|
#endif
|
|
6359
6727
|
|
|
6360
6728
|
MRB_API parser_state*
|
|
@@ -6383,7 +6751,7 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c)
|
|
|
6383
6751
|
struct RClass *target = mrb->object_class;
|
|
6384
6752
|
struct RProc *proc;
|
|
6385
6753
|
mrb_value v;
|
|
6386
|
-
|
|
6754
|
+
mrb_int keep = 0;
|
|
6387
6755
|
|
|
6388
6756
|
if (!p) {
|
|
6389
6757
|
return mrb_undef_value();
|
|
@@ -6403,7 +6771,7 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c)
|
|
|
6403
6771
|
}
|
|
6404
6772
|
else {
|
|
6405
6773
|
if (mrb->exc == NULL) {
|
|
6406
|
-
mrb->exc = mrb_obj_ptr(
|
|
6774
|
+
mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SYNTAX_ERROR, "syntax error"));
|
|
6407
6775
|
}
|
|
6408
6776
|
mrb_parser_free(p);
|
|
6409
6777
|
return mrb_undef_value();
|
|
@@ -6413,7 +6781,7 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c)
|
|
|
6413
6781
|
mrb_parser_free(p);
|
|
6414
6782
|
if (proc == NULL) {
|
|
6415
6783
|
if (mrb->exc == NULL) {
|
|
6416
|
-
mrb->exc = mrb_obj_ptr(
|
|
6784
|
+
mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "codegen error"));
|
|
6417
6785
|
}
|
|
6418
6786
|
return mrb_undef_value();
|
|
6419
6787
|
}
|
|
@@ -6432,14 +6800,14 @@ mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrbc_context *c)
|
|
|
6432
6800
|
}
|
|
6433
6801
|
MRB_PROC_SET_TARGET_CLASS(proc, target);
|
|
6434
6802
|
if (mrb->c->ci) {
|
|
6435
|
-
mrb->c->ci
|
|
6803
|
+
mrb_vm_ci_target_class_set(mrb->c->ci, target);
|
|
6436
6804
|
}
|
|
6437
6805
|
v = mrb_top_run(mrb, proc, mrb_top_self(mrb), keep);
|
|
6438
6806
|
if (mrb->exc) return mrb_nil_value();
|
|
6439
6807
|
return v;
|
|
6440
6808
|
}
|
|
6441
6809
|
|
|
6442
|
-
#ifndef
|
|
6810
|
+
#ifndef MRB_NO_STDIO
|
|
6443
6811
|
MRB_API mrb_value
|
|
6444
6812
|
mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c)
|
|
6445
6813
|
{
|
|
@@ -6451,6 +6819,55 @@ mrb_load_file(mrb_state *mrb, FILE *f)
|
|
|
6451
6819
|
{
|
|
6452
6820
|
return mrb_load_file_cxt(mrb, f, NULL);
|
|
6453
6821
|
}
|
|
6822
|
+
|
|
6823
|
+
#define DETECT_SIZE 64
|
|
6824
|
+
|
|
6825
|
+
/*
|
|
6826
|
+
* In order to be recognized as a `.mrb` file, the following three points must be satisfied:
|
|
6827
|
+
* - File starts with "RITE"
|
|
6828
|
+
* - At least `sizeof(struct rite_binary_header)` bytes can be read
|
|
6829
|
+
* - `NUL` is included in the first 64 bytes of the file
|
|
6830
|
+
*/
|
|
6831
|
+
MRB_API mrb_value
|
|
6832
|
+
mrb_load_detect_file_cxt(mrb_state *mrb, FILE *fp, mrbc_context *c)
|
|
6833
|
+
{
|
|
6834
|
+
union {
|
|
6835
|
+
char b[DETECT_SIZE];
|
|
6836
|
+
struct rite_binary_header h;
|
|
6837
|
+
} leading;
|
|
6838
|
+
size_t bufsize;
|
|
6839
|
+
|
|
6840
|
+
if (mrb == NULL || fp == NULL) {
|
|
6841
|
+
return mrb_nil_value();
|
|
6842
|
+
}
|
|
6843
|
+
|
|
6844
|
+
bufsize = fread(leading.b, sizeof(char), sizeof(leading), fp);
|
|
6845
|
+
if (bufsize < sizeof(leading.h) ||
|
|
6846
|
+
memcmp(leading.h.binary_ident, RITE_BINARY_IDENT, sizeof(leading.h.binary_ident)) != 0 ||
|
|
6847
|
+
memchr(leading.b, '\0', bufsize) == NULL) {
|
|
6848
|
+
return mrb_load_exec(mrb, mrb_parse_file_continue(mrb, fp, leading.b, bufsize, c), c);
|
|
6849
|
+
}
|
|
6850
|
+
else {
|
|
6851
|
+
size_t binsize;
|
|
6852
|
+
uint8_t *bin;
|
|
6853
|
+
mrb_value bin_obj = mrb_nil_value(); /* temporary string object */
|
|
6854
|
+
mrb_value result;
|
|
6855
|
+
|
|
6856
|
+
binsize = bin_to_uint32(leading.h.binary_size);
|
|
6857
|
+
bin_obj = mrb_str_new(mrb, NULL, binsize);
|
|
6858
|
+
bin = (uint8_t *)RSTRING_PTR(bin_obj);
|
|
6859
|
+
memcpy(bin, leading.b, bufsize);
|
|
6860
|
+
if (binsize > bufsize &&
|
|
6861
|
+
fread(bin + bufsize, binsize - bufsize, 1, fp) == 0) {
|
|
6862
|
+
binsize = bufsize;
|
|
6863
|
+
/* The error is reported by mrb_load_irep_buf_cxt() */
|
|
6864
|
+
}
|
|
6865
|
+
|
|
6866
|
+
result = mrb_load_irep_buf_cxt(mrb, bin, binsize, c);
|
|
6867
|
+
if (mrb_string_p(bin_obj)) mrb_str_resize(mrb, bin_obj, 0);
|
|
6868
|
+
return result;
|
|
6869
|
+
}
|
|
6870
|
+
}
|
|
6454
6871
|
#endif
|
|
6455
6872
|
|
|
6456
6873
|
MRB_API mrb_value
|
|
@@ -6477,7 +6894,7 @@ mrb_load_string(mrb_state *mrb, const char *s)
|
|
|
6477
6894
|
return mrb_load_string_cxt(mrb, s, NULL);
|
|
6478
6895
|
}
|
|
6479
6896
|
|
|
6480
|
-
#ifndef
|
|
6897
|
+
#ifndef MRB_NO_STDIO
|
|
6481
6898
|
|
|
6482
6899
|
static void
|
|
6483
6900
|
dump_prefix(node *tree, int offset)
|
|
@@ -6549,10 +6966,10 @@ dump_args(mrb_state *mrb, node *n, int offset)
|
|
|
6549
6966
|
static const char*
|
|
6550
6967
|
str_dump(mrb_state *mrb, const char *str, int len)
|
|
6551
6968
|
{
|
|
6552
|
-
|
|
6969
|
+
int ai = mrb_gc_arena_save(mrb);
|
|
6553
6970
|
mrb_value s;
|
|
6554
6971
|
# if INT_MAX > MRB_INT_MAX / 4
|
|
6555
|
-
/* check maximum length with "\xNN"
|
|
6972
|
+
/* check maximum length with "\xNN" character */
|
|
6556
6973
|
if (len > MRB_INT_MAX / 4) {
|
|
6557
6974
|
len = MRB_INT_MAX / 4;
|
|
6558
6975
|
}
|
|
@@ -6567,7 +6984,7 @@ str_dump(mrb_state *mrb, const char *str, int len)
|
|
|
6567
6984
|
void
|
|
6568
6985
|
mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
|
6569
6986
|
{
|
|
6570
|
-
#ifndef
|
|
6987
|
+
#ifndef MRB_NO_STDIO
|
|
6571
6988
|
int nodetype;
|
|
6572
6989
|
|
|
6573
6990
|
if (!tree) return;
|
|
@@ -6894,7 +7311,7 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
|
|
6894
7311
|
if (n2->car) {
|
|
6895
7312
|
dump_prefix(n2, offset+2);
|
|
6896
7313
|
printf("rest:\n");
|
|
6897
|
-
if (n2->car == (
|
|
7314
|
+
if (n2->car == nint(-1)) {
|
|
6898
7315
|
dump_prefix(n2, offset+2);
|
|
6899
7316
|
printf("(empty)\n");
|
|
6900
7317
|
}
|
|
@@ -7136,11 +7553,11 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
|
|
7136
7553
|
|
|
7137
7554
|
case NODE_CLASS:
|
|
7138
7555
|
printf("NODE_CLASS:\n");
|
|
7139
|
-
if (tree->car->car == (
|
|
7556
|
+
if (tree->car->car == nint(0)) {
|
|
7140
7557
|
dump_prefix(tree, offset+1);
|
|
7141
7558
|
printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
|
|
7142
7559
|
}
|
|
7143
|
-
else if (tree->car->car == (
|
|
7560
|
+
else if (tree->car->car == nint(1)) {
|
|
7144
7561
|
dump_prefix(tree, offset+1);
|
|
7145
7562
|
printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
|
|
7146
7563
|
}
|
|
@@ -7161,11 +7578,11 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
|
|
7161
7578
|
|
|
7162
7579
|
case NODE_MODULE:
|
|
7163
7580
|
printf("NODE_MODULE:\n");
|
|
7164
|
-
if (tree->car->car == (
|
|
7581
|
+
if (tree->car->car == nint(0)) {
|
|
7165
7582
|
dump_prefix(tree, offset+1);
|
|
7166
7583
|
printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
|
|
7167
7584
|
}
|
|
7168
|
-
else if (tree->car->car == (
|
|
7585
|
+
else if (tree->car->car == nint(1)) {
|
|
7169
7586
|
dump_prefix(tree, offset+1);
|
|
7170
7587
|
printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
|
|
7171
7588
|
}
|