prism 2.0.0.rc1-x86_64-linux-gnu
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 +7 -0
- data/BSDmakefile +58 -0
- data/CHANGELOG.md +870 -0
- data/CODE_OF_CONDUCT.md +76 -0
- data/CONTRIBUTING.md +58 -0
- data/LICENSE.md +7 -0
- data/Makefile +145 -0
- data/README.md +81 -0
- data/config.yml +4752 -0
- data/docs/build_system.md +119 -0
- data/docs/configuration.md +69 -0
- data/docs/cruby_compilation.md +27 -0
- data/docs/design.md +53 -0
- data/docs/encoding.md +121 -0
- data/docs/fuzzing.md +81 -0
- data/docs/heredocs.md +36 -0
- data/docs/javascript.md +133 -0
- data/docs/local_variable_depth.md +229 -0
- data/docs/mapping.md +117 -0
- data/docs/parser_translation.md +24 -0
- data/docs/parsing_rules.md +22 -0
- data/docs/releasing.md +147 -0
- data/docs/relocation.md +32 -0
- data/docs/ripper_translation.md +63 -0
- data/docs/ruby_api.md +45 -0
- data/docs/ruby_parser_translation.md +19 -0
- data/docs/serialization.md +230 -0
- data/docs/testing.md +72 -0
- data/ext/prism/api_node.c +7005 -0
- data/ext/prism/extconf.rb +126 -0
- data/ext/prism/extension.c +1783 -0
- data/ext/prism/extension.h +19 -0
- data/include/prism/arena.h +37 -0
- data/include/prism/ast.h +10371 -0
- data/include/prism/buffer.h +52 -0
- data/include/prism/comments.h +55 -0
- data/include/prism/compiler/accel.h +24 -0
- data/include/prism/compiler/align.h +36 -0
- data/include/prism/compiler/assume.h +25 -0
- data/include/prism/compiler/exported.h +24 -0
- data/include/prism/compiler/fallthrough.h +22 -0
- data/include/prism/compiler/filesystem.h +32 -0
- data/include/prism/compiler/flex_array.h +19 -0
- data/include/prism/compiler/force_inline.h +21 -0
- data/include/prism/compiler/format.h +25 -0
- data/include/prism/compiler/inline.h +17 -0
- data/include/prism/compiler/nodiscard.h +22 -0
- data/include/prism/compiler/nonnull.h +18 -0
- data/include/prism/compiler/unused.h +18 -0
- data/include/prism/constant_pool.h +81 -0
- data/include/prism/diagnostic.h +93 -0
- data/include/prism/errors_format.h +53 -0
- data/include/prism/excludes.h +29 -0
- data/include/prism/integer.h +41 -0
- data/include/prism/internal/allocator.h +68 -0
- data/include/prism/internal/allocator_debug.h +88 -0
- data/include/prism/internal/arena.h +108 -0
- data/include/prism/internal/bit.h +42 -0
- data/include/prism/internal/buffer.h +91 -0
- data/include/prism/internal/char.h +145 -0
- data/include/prism/internal/comments.h +53 -0
- data/include/prism/internal/constant_pool.h +152 -0
- data/include/prism/internal/diagnostic.h +389 -0
- data/include/prism/internal/encoding.h +242 -0
- data/include/prism/internal/integer.h +68 -0
- data/include/prism/internal/isinf.h +16 -0
- data/include/prism/internal/line_offset_list.h +34 -0
- data/include/prism/internal/list.h +62 -0
- data/include/prism/internal/magic_comments.h +23 -0
- data/include/prism/internal/memchr.h +15 -0
- data/include/prism/internal/node.h +38 -0
- data/include/prism/internal/options.h +232 -0
- data/include/prism/internal/parser.h +984 -0
- data/include/prism/internal/regexp.h +26 -0
- data/include/prism/internal/serialize.h +39 -0
- data/include/prism/internal/source.h +72 -0
- data/include/prism/internal/static_literals.h +100 -0
- data/include/prism/internal/stringy.h +35 -0
- data/include/prism/internal/strncasecmp.h +18 -0
- data/include/prism/internal/strpbrk.h +33 -0
- data/include/prism/internal/tokens.h +11 -0
- data/include/prism/json.h +32 -0
- data/include/prism/line_offset_list.h +61 -0
- data/include/prism/magic_comments.h +35 -0
- data/include/prism/node.h +94 -0
- data/include/prism/options.h +354 -0
- data/include/prism/parser.h +404 -0
- data/include/prism/prettyprint.h +31 -0
- data/include/prism/serialize.h +115 -0
- data/include/prism/source.h +155 -0
- data/include/prism/stream.h +28 -0
- data/include/prism/string_query.h +63 -0
- data/include/prism/stringy.h +72 -0
- data/include/prism/version.h +38 -0
- data/include/prism.h +131 -0
- data/lib/prism/3.3/prism.so +0 -0
- data/lib/prism/3.4/prism.so +0 -0
- data/lib/prism/4.0/prism.so +0 -0
- data/lib/prism/compiler.rb +815 -0
- data/lib/prism/desugar_compiler.rb +463 -0
- data/lib/prism/dispatcher.rb +2383 -0
- data/lib/prism/dot_visitor.rb +4848 -0
- data/lib/prism/dsl.rb +1369 -0
- data/lib/prism/ffi.rb +740 -0
- data/lib/prism/inspect_visitor.rb +2425 -0
- data/lib/prism/lex_compat.rb +953 -0
- data/lib/prism/mutation_compiler.rb +780 -0
- data/lib/prism/node.rb +33204 -0
- data/lib/prism/node_ext.rb +504 -0
- data/lib/prism/node_find.rb +215 -0
- data/lib/prism/parse_result/errors.rb +72 -0
- data/lib/prism/parse_result/newlines.rb +423 -0
- data/lib/prism/parse_result.rb +1221 -0
- data/lib/prism/pattern.rb +314 -0
- data/lib/prism/polyfill/append_as_bytes.rb +15 -0
- data/lib/prism/polyfill/byteindex.rb +13 -0
- data/lib/prism/polyfill/scan_byte.rb +14 -0
- data/lib/prism/polyfill/unpack1.rb +14 -0
- data/lib/prism/polyfill/warn.rb +36 -0
- data/lib/prism/reflection.rb +427 -0
- data/lib/prism/relocation.rb +567 -0
- data/lib/prism/serialize.rb +5308 -0
- data/lib/prism/string_query.rb +46 -0
- data/lib/prism/translation/parser/builder.rb +70 -0
- data/lib/prism/translation/parser/compiler.rb +2226 -0
- data/lib/prism/translation/parser/lexer.rb +769 -0
- data/lib/prism/translation/parser.rb +376 -0
- data/lib/prism/translation/parser_current.rb +26 -0
- data/lib/prism/translation/parser_versions.rb +36 -0
- data/lib/prism/translation/ripper/filter.rb +53 -0
- data/lib/prism/translation/ripper/lexer.rb +133 -0
- data/lib/prism/translation/ripper/sexp.rb +118 -0
- data/lib/prism/translation/ripper/shim.rb +7 -0
- data/lib/prism/translation/ripper.rb +4278 -0
- data/lib/prism/translation/ruby_parser.rb +1721 -0
- data/lib/prism/translation.rb +20 -0
- data/lib/prism/visitor.rb +1440 -0
- data/lib/prism.rb +168 -0
- data/prism.gemspec +234 -0
- data/rbi/generated/prism/compiler.rbi +489 -0
- data/rbi/generated/prism/desugar_compiler.rbi +306 -0
- data/rbi/generated/prism/dispatcher.rbi +1138 -0
- data/rbi/generated/prism/dot_visitor.rbi +618 -0
- data/rbi/generated/prism/dsl.rbi +751 -0
- data/rbi/generated/prism/inspect_visitor.rbi +503 -0
- data/rbi/generated/prism/lex_compat.rbi +162 -0
- data/rbi/generated/prism/mutation_compiler.rbi +464 -0
- data/rbi/generated/prism/node.rbi +13681 -0
- data/rbi/generated/prism/node_ext.rbi +259 -0
- data/rbi/generated/prism/node_find.rbi +79 -0
- data/rbi/generated/prism/parse_result/errors.rbi +21 -0
- data/rbi/generated/prism/parse_result/newlines.rbi +208 -0
- data/rbi/generated/prism/parse_result.rbi +764 -0
- data/rbi/generated/prism/pattern.rbi +134 -0
- data/rbi/generated/prism/reflection.rbi +89 -0
- data/rbi/generated/prism/relocation.rbi +329 -0
- data/rbi/generated/prism/serialize.rbi +181 -0
- data/rbi/generated/prism/string_query.rbi +36 -0
- data/rbi/generated/prism/translation.rbi +7 -0
- data/rbi/generated/prism/visitor.rbi +650 -0
- data/rbi/generated/prism.rbi +86 -0
- data/rbi/prism/translation/parser.rbi +11 -0
- data/rbi/prism/translation/parser_versions.rbi +28 -0
- data/rbi/prism/translation/ripper.rbi +15 -0
- data/rbi/rubyvm/node_find.rbi +14 -0
- data/sig/generated/prism/compiler.rbs +492 -0
- data/sig/generated/prism/desugar_compiler.rbs +305 -0
- data/sig/generated/prism/dispatcher.rbs +1292 -0
- data/sig/generated/prism/dot_visitor.rbs +635 -0
- data/sig/generated/prism/dsl.rbs +928 -0
- data/sig/generated/prism/inspect_visitor.rbs +509 -0
- data/sig/generated/prism/lex_compat.rbs +166 -0
- data/sig/generated/prism/mutation_compiler.rbs +464 -0
- data/sig/generated/prism/node.rbs +20160 -0
- data/sig/generated/prism/node_ext.rbs +290 -0
- data/sig/generated/prism/node_find.rbs +90 -0
- data/sig/generated/prism/parse_result/errors.rbs +22 -0
- data/sig/generated/prism/parse_result/newlines.rbs +223 -0
- data/sig/generated/prism/parse_result.rbs +859 -0
- data/sig/generated/prism/pattern.rbs +156 -0
- data/sig/generated/prism/reflection.rbs +101 -0
- data/sig/generated/prism/relocation.rbs +428 -0
- data/sig/generated/prism/serialize.rbs +195 -0
- data/sig/generated/prism/string_query.rbs +36 -0
- data/sig/generated/prism/translation.rbs +8 -0
- data/sig/generated/prism/visitor.rbs +1111 -0
- data/sig/generated/prism.rbs +84 -0
- data/sig/manifest.yaml +2 -0
- data/src/arena.c +117 -0
- data/src/buffer.c +380 -0
- data/src/char.c +289 -0
- data/src/comments.c +454 -0
- data/src/constant_pool.c +406 -0
- data/src/diagnostic.c +886 -0
- data/src/encoding.c +5345 -0
- data/src/errors_format.c +519 -0
- data/src/integer.c +681 -0
- data/src/json.c +5733 -0
- data/src/line_offset_list.c +100 -0
- data/src/list.c +24 -0
- data/src/memchr.c +37 -0
- data/src/node.c +4515 -0
- data/src/options.c +451 -0
- data/src/parser.c +349 -0
- data/src/prettyprint.c +9024 -0
- data/src/prism.c +23739 -0
- data/src/regexp.c +1706 -0
- data/src/serialize.c +2309 -0
- data/src/source.c +518 -0
- data/src/static_literals.c +685 -0
- data/src/string_query.c +166 -0
- data/src/stringy.c +91 -0
- data/src/strncasecmp.c +37 -0
- data/src/strpbrk.c +447 -0
- data/src/tokens.c +724 -0
- metadata +259 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rbconfig"
|
|
4
|
+
|
|
5
|
+
if ARGV.delete("--help")
|
|
6
|
+
print(<<~TEXT)
|
|
7
|
+
USAGE: ruby #{$PROGRAM_NAME} [options]
|
|
8
|
+
|
|
9
|
+
Flags that are always valid:
|
|
10
|
+
|
|
11
|
+
--enable-build-debug
|
|
12
|
+
Enable debug build.
|
|
13
|
+
You may also set the PRISM_BUILD_DEBUG environment variable.
|
|
14
|
+
|
|
15
|
+
--enable-build-minimal
|
|
16
|
+
Enable minimal build.
|
|
17
|
+
You may also set the PRISM_BUILD_MINIMAL environment variable.
|
|
18
|
+
|
|
19
|
+
--help
|
|
20
|
+
Display this message.
|
|
21
|
+
|
|
22
|
+
Environment variables used:
|
|
23
|
+
|
|
24
|
+
PRISM_BUILD_DEBUG
|
|
25
|
+
Equivalent to `--enable-build-debug` when set, even if nil or blank.
|
|
26
|
+
|
|
27
|
+
PRISM_BUILD_MINIMAL
|
|
28
|
+
Equivalent to `--enable-build-minimal` when set, even if nil or blank.
|
|
29
|
+
|
|
30
|
+
TEXT
|
|
31
|
+
exit!(0)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# If this gem is being build from a git source, then we need to run
|
|
35
|
+
# templating if it hasn't been run yet. In normal packaging, we would have
|
|
36
|
+
# shipped the templated files with the gem, so this wouldn't be necessary.
|
|
37
|
+
def generate_templates
|
|
38
|
+
Dir.chdir(File.expand_path("../..", __dir__)) do
|
|
39
|
+
if !File.exist?("include/prism/ast.h") && Dir.exist?(".git")
|
|
40
|
+
system(RbConfig.ruby, "templates/template.rb", exception: true)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Runs `make` in the root directory of the project. Note that this is the
|
|
46
|
+
# `Makefile` for the overall project, not the `Makefile` that is being generated
|
|
47
|
+
# by this script.`
|
|
48
|
+
def make(env, target)
|
|
49
|
+
puts "Running make #{target} with #{env.inspect}"
|
|
50
|
+
Dir.chdir(File.expand_path("../..", __dir__)) do
|
|
51
|
+
system(
|
|
52
|
+
env,
|
|
53
|
+
RbConfig::CONFIG['host_os'].match?(/openbsd|freebsd/i) ? "gmake" : "make",
|
|
54
|
+
target,
|
|
55
|
+
exception: true
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# On non-CRuby we only need the shared library since we'll interface with it
|
|
61
|
+
# through FFI, so we'll build only that and not the C extension. We also avoid
|
|
62
|
+
# `require "mkmf"` as that prepends the GraalVM LLVM toolchain to PATH on TruffleRuby < 24.0,
|
|
63
|
+
# but we want to use the system toolchain here since libprism is run natively.
|
|
64
|
+
if RUBY_ENGINE != "ruby"
|
|
65
|
+
generate_templates
|
|
66
|
+
soext = RbConfig::CONFIG["SOEXT"]
|
|
67
|
+
# Pass SOEXT to avoid an extra subprocess just to query that
|
|
68
|
+
make({ "SOEXT" => soext }, "build/libprism.#{soext}")
|
|
69
|
+
File.write("Makefile", "all install clean:\n\t@#{RbConfig::CONFIG["NULLCMD"]}\n")
|
|
70
|
+
return
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
require "mkmf"
|
|
74
|
+
|
|
75
|
+
# First, ensure that we can find the header for the prism library.
|
|
76
|
+
generate_templates # Templates should be generated before find_header.
|
|
77
|
+
unless find_header("prism.h", File.expand_path("../../include", __dir__))
|
|
78
|
+
raise "prism.h is required"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Next, ensure we can find the header for the C extension. Explicitly look for
|
|
82
|
+
# the extension header in the parent directory because we want to consistently
|
|
83
|
+
# look for `prism/extension.h` in our source files to line up with our mirroring
|
|
84
|
+
# in CRuby.
|
|
85
|
+
unless find_header("prism/extension.h", File.expand_path("..", __dir__))
|
|
86
|
+
raise "prism/extension.h is required"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# If `--enable-build-debug` is passed to this script or the
|
|
90
|
+
# `PRISM_BUILD_DEBUG` environment variable is defined, we'll build with the
|
|
91
|
+
# `PRISM_BUILD_DEBUG` macro defined. This causes parse functions to
|
|
92
|
+
# duplicate their input so that they have clearly set bounds, which is useful
|
|
93
|
+
# for finding bugs that cause the parser to read off the end of the input.
|
|
94
|
+
if enable_config("build-debug", ENV["PRISM_BUILD_DEBUG"] || false)
|
|
95
|
+
append_cflags("-DPRISM_BUILD_DEBUG")
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# If `--enable-build-minimal` is passed to this script or the
|
|
99
|
+
# `PRISM_BUILD_MINIMAL` environment variable is defined, we'll build with the
|
|
100
|
+
# set of defines that comprise the minimal set. This causes the parser to be
|
|
101
|
+
# built with minimal features, necessary for stripping out functionality when
|
|
102
|
+
# the size of the final built artifact is a concern.
|
|
103
|
+
if enable_config("build-minimal", ENV["PRISM_BUILD_MINIMAL"] || false)
|
|
104
|
+
append_cflags("-DPRISM_BUILD_MINIMAL")
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# By default, all symbols are hidden in the shared library.
|
|
108
|
+
append_cflags("-fvisibility=hidden")
|
|
109
|
+
|
|
110
|
+
def src_list(path)
|
|
111
|
+
srcdir = path.dup
|
|
112
|
+
RbConfig.expand(srcdir) # mutates srcdir :-/
|
|
113
|
+
Dir[File.join(srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def add_libprism_source(path)
|
|
117
|
+
$VPATH << path
|
|
118
|
+
src_list path
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
$srcs = src_list("$(srcdir)") + add_libprism_source("$(srcdir)/../../src")
|
|
122
|
+
$headers += Dir["#{$srcdir}/../../include/**/*.h"]
|
|
123
|
+
|
|
124
|
+
# Finally, we'll create the `Makefile` that is going to be used to configure and
|
|
125
|
+
# build the C extension.
|
|
126
|
+
create_makefile("prism/prism")
|