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,181 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
|
|
3
|
+
module Prism
|
|
4
|
+
# A module responsible for deserializing parse results.
|
|
5
|
+
module Serialize
|
|
6
|
+
# The major version of prism that we are expecting to find in the serialized
|
|
7
|
+
# strings.
|
|
8
|
+
MAJOR_VERSION = T.let(nil, Integer)
|
|
9
|
+
|
|
10
|
+
# The minor version of prism that we are expecting to find in the serialized
|
|
11
|
+
# strings.
|
|
12
|
+
MINOR_VERSION = T.let(nil, Integer)
|
|
13
|
+
|
|
14
|
+
# The patch version of prism that we are expecting to find in the serialized
|
|
15
|
+
# strings.
|
|
16
|
+
PATCH_VERSION = T.let(nil, Integer)
|
|
17
|
+
|
|
18
|
+
# Deserialize the dumped output from a request to parse or parse_file.
|
|
19
|
+
#
|
|
20
|
+
# The formatting of the source of this method is purposeful to illustrate
|
|
21
|
+
# the structure of the serialized data.
|
|
22
|
+
sig { params(input: String, serialized: String, freeze: T::Boolean).returns(ParseResult) }
|
|
23
|
+
def self.load_parse(input, serialized, freeze); end
|
|
24
|
+
|
|
25
|
+
# Deserialize the dumped output from a request to lex or lex_file.
|
|
26
|
+
#
|
|
27
|
+
# The formatting of the source of this method is purposeful to illustrate
|
|
28
|
+
# the structure of the serialized data.
|
|
29
|
+
sig { params(input: String, serialized: String, freeze: T::Boolean).returns(LexResult) }
|
|
30
|
+
def self.load_lex(input, serialized, freeze); end
|
|
31
|
+
|
|
32
|
+
# Deserialize the dumped output from a request to parse_comments or
|
|
33
|
+
# parse_file_comments.
|
|
34
|
+
#
|
|
35
|
+
# The formatting of the source of this method is purposeful to illustrate
|
|
36
|
+
# the structure of the serialized data.
|
|
37
|
+
sig { params(input: String, serialized: String, freeze: T::Boolean).returns(T::Array[Comment]) }
|
|
38
|
+
def self.load_parse_comments(input, serialized, freeze); end
|
|
39
|
+
|
|
40
|
+
# Deserialize the dumped output from a request to parse_lex or
|
|
41
|
+
# parse_lex_file.
|
|
42
|
+
#
|
|
43
|
+
# The formatting of the source of this method is purposeful to illustrate
|
|
44
|
+
# the structure of the serialized data.
|
|
45
|
+
sig { params(input: String, serialized: String, freeze: T::Boolean).returns(ParseLexResult) }
|
|
46
|
+
def self.load_parse_lex(input, serialized, freeze); end
|
|
47
|
+
|
|
48
|
+
class ConstantPool
|
|
49
|
+
sig { returns(Integer) }
|
|
50
|
+
attr_reader :size
|
|
51
|
+
|
|
52
|
+
sig { params(serialized: String, base: Integer, size: Integer).void }
|
|
53
|
+
def initialize(serialized, base, size); end
|
|
54
|
+
|
|
55
|
+
sig { params(index: Integer, encoding: Encoding).returns(Symbol) }
|
|
56
|
+
def get(index, encoding); end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
FastStringIO = T.let(nil, ::T.untyped)
|
|
60
|
+
|
|
61
|
+
class Loader
|
|
62
|
+
sig { returns(String) }
|
|
63
|
+
attr_reader :input
|
|
64
|
+
|
|
65
|
+
sig { returns(StringIO) }
|
|
66
|
+
attr_reader :io
|
|
67
|
+
|
|
68
|
+
sig { returns(Source) }
|
|
69
|
+
attr_reader :source
|
|
70
|
+
|
|
71
|
+
sig { params(source: Source, serialized: String).void }
|
|
72
|
+
def initialize(source, serialized); end
|
|
73
|
+
|
|
74
|
+
sig { returns(T::Boolean) }
|
|
75
|
+
def eof?; end
|
|
76
|
+
|
|
77
|
+
sig { params(constant_pool: ConstantPool).void }
|
|
78
|
+
def load_constant_pool(constant_pool); end
|
|
79
|
+
|
|
80
|
+
sig { void }
|
|
81
|
+
def load_header; end
|
|
82
|
+
|
|
83
|
+
sig { returns(Encoding) }
|
|
84
|
+
def load_encoding; end
|
|
85
|
+
|
|
86
|
+
sig { params(freeze: T::Boolean).returns(T::Array[Integer]) }
|
|
87
|
+
def load_line_offsets(freeze); end
|
|
88
|
+
|
|
89
|
+
# Load the comments attached to each node into the comment attachments and
|
|
90
|
+
# comment ranges of the given source. For each node that owns comments, the
|
|
91
|
+
# index at which its comments begin is stored at its node id and the index
|
|
92
|
+
# at which they end at the following node id.
|
|
93
|
+
sig { params(source: Source, freeze: T::Boolean).void }
|
|
94
|
+
def load_comment_attachments(source, freeze); end
|
|
95
|
+
|
|
96
|
+
# Load the comments into the given list, which belongs to the source that
|
|
97
|
+
# the comments refer to.
|
|
98
|
+
sig { params(comments: T::Array[Comment], freeze: T::Boolean).returns(T::Array[Comment]) }
|
|
99
|
+
def load_comments(comments, freeze); end
|
|
100
|
+
|
|
101
|
+
sig { params(freeze: T::Boolean).returns(T::Array[MagicComment]) }
|
|
102
|
+
def load_magic_comments(freeze); end
|
|
103
|
+
|
|
104
|
+
DIAGNOSTIC_TYPES = T.let(nil, T::Array[Symbol])
|
|
105
|
+
|
|
106
|
+
sig { returns(Symbol) }
|
|
107
|
+
def load_error_level; end
|
|
108
|
+
|
|
109
|
+
sig { params(encoding: Encoding, freeze: T::Boolean).returns(T::Array[ParseError]) }
|
|
110
|
+
def load_errors(encoding, freeze); end
|
|
111
|
+
|
|
112
|
+
sig { returns(Symbol) }
|
|
113
|
+
def load_warning_level; end
|
|
114
|
+
|
|
115
|
+
sig { params(encoding: Encoding, freeze: T::Boolean).returns(T::Array[ParseWarning]) }
|
|
116
|
+
def load_warnings(encoding, freeze); end
|
|
117
|
+
|
|
118
|
+
sig { returns(T::Array[Token]) }
|
|
119
|
+
def load_tokens; end
|
|
120
|
+
|
|
121
|
+
# variable-length integer using https://en.wikipedia.org/wiki/LEB128
|
|
122
|
+
# This is also what protobuf uses: https://protobuf.dev/programming-guides/encoding/#varints
|
|
123
|
+
sig { returns(Integer) }
|
|
124
|
+
def load_varuint; end
|
|
125
|
+
|
|
126
|
+
sig { returns(Integer) }
|
|
127
|
+
def load_varsint; end
|
|
128
|
+
|
|
129
|
+
sig { returns(Integer) }
|
|
130
|
+
def load_integer; end
|
|
131
|
+
|
|
132
|
+
sig { returns(Float) }
|
|
133
|
+
def load_double; end
|
|
134
|
+
|
|
135
|
+
sig { returns(T::Boolean) }
|
|
136
|
+
def load_bool; end
|
|
137
|
+
|
|
138
|
+
sig { returns(Integer) }
|
|
139
|
+
def load_uint32; end
|
|
140
|
+
|
|
141
|
+
sig { params(constant_pool: ConstantPool, encoding: Encoding, freeze: T::Boolean).returns(::T.nilable(Node)) }
|
|
142
|
+
def load_optional_node(constant_pool, encoding, freeze); end
|
|
143
|
+
|
|
144
|
+
sig { params(encoding: Encoding).returns(String) }
|
|
145
|
+
def load_string(encoding); end
|
|
146
|
+
|
|
147
|
+
sig { params(freeze: T::Boolean).returns(Location) }
|
|
148
|
+
def load_location_object(freeze); end
|
|
149
|
+
|
|
150
|
+
# Load a location object from the serialized data. Note that we are lying
|
|
151
|
+
# about the signature a bit here, because we sometimes load it as a packed
|
|
152
|
+
# integer instead of an object.
|
|
153
|
+
sig { params(freeze: T::Boolean).returns(Location) }
|
|
154
|
+
def load_location(freeze); end
|
|
155
|
+
|
|
156
|
+
# Load an optional location object from the serialized data if it is
|
|
157
|
+
# present. Note that we are lying about the signature a bit here, because
|
|
158
|
+
# we sometimes load it as a packed integer instead of an object.
|
|
159
|
+
sig { params(freeze: T::Boolean).returns(::T.nilable(Location)) }
|
|
160
|
+
def load_optional_location(freeze); end
|
|
161
|
+
|
|
162
|
+
sig { params(freeze: T::Boolean).returns(::T.nilable(Location)) }
|
|
163
|
+
def load_optional_location_object(freeze); end
|
|
164
|
+
|
|
165
|
+
sig { params(constant_pool: ConstantPool, encoding: Encoding).returns(Symbol) }
|
|
166
|
+
def load_constant(constant_pool, encoding); end
|
|
167
|
+
|
|
168
|
+
sig { params(constant_pool: ConstantPool, encoding: Encoding).returns(::T.nilable(Symbol)) }
|
|
169
|
+
def load_optional_constant(constant_pool, encoding); end
|
|
170
|
+
|
|
171
|
+
sig { params(constant_pool: ConstantPool, encoding: Encoding, freeze: T::Boolean).returns(Node) }
|
|
172
|
+
def load_node(constant_pool, encoding, freeze); end
|
|
173
|
+
|
|
174
|
+
sig { void }
|
|
175
|
+
def define_load_node_lambdas; end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# The token types that can be indexed by their enum values.
|
|
179
|
+
TOKEN_TYPES = T.let(nil, T::Array[::T.nilable(Symbol)])
|
|
180
|
+
end
|
|
181
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
|
|
3
|
+
module Prism
|
|
4
|
+
# Query methods that allow categorizing strings based on their context for
|
|
5
|
+
# where they could be valid in a Ruby syntax tree.
|
|
6
|
+
class StringQuery
|
|
7
|
+
sig { params(string: String).returns(T::Boolean) }
|
|
8
|
+
def self.local?(string); end
|
|
9
|
+
|
|
10
|
+
sig { params(string: String).returns(T::Boolean) }
|
|
11
|
+
def self.constant?(string); end
|
|
12
|
+
|
|
13
|
+
sig { params(string: String).returns(T::Boolean) }
|
|
14
|
+
def self.method_name?(string); end
|
|
15
|
+
|
|
16
|
+
# The string that this query is wrapping.
|
|
17
|
+
sig { returns(String) }
|
|
18
|
+
attr_reader :string
|
|
19
|
+
|
|
20
|
+
# Initialize a new query with the given string.
|
|
21
|
+
sig { params(string: String).void }
|
|
22
|
+
def initialize(string); end
|
|
23
|
+
|
|
24
|
+
# Whether or not this string is a valid local variable name.
|
|
25
|
+
sig { returns(T::Boolean) }
|
|
26
|
+
def local?; end
|
|
27
|
+
|
|
28
|
+
# Whether or not this string is a valid constant name.
|
|
29
|
+
sig { returns(T::Boolean) }
|
|
30
|
+
def constant?; end
|
|
31
|
+
|
|
32
|
+
# Whether or not this string is a valid method name.
|
|
33
|
+
sig { returns(T::Boolean) }
|
|
34
|
+
def method_name?; end
|
|
35
|
+
end
|
|
36
|
+
end
|