yarp 0.12.0 → 0.13.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/CHANGELOG.md +29 -8
- data/CONTRIBUTING.md +2 -2
- data/Makefile +5 -5
- data/README.md +11 -12
- data/config.yml +6 -2
- data/docs/build_system.md +21 -21
- data/docs/building.md +4 -4
- data/docs/configuration.md +25 -21
- data/docs/design.md +2 -2
- data/docs/encoding.md +17 -17
- data/docs/fuzzing.md +4 -4
- data/docs/heredocs.md +3 -3
- data/docs/mapping.md +94 -94
- data/docs/ripper.md +4 -4
- data/docs/ruby_api.md +11 -11
- data/docs/serialization.md +17 -16
- data/docs/testing.md +6 -6
- data/ext/prism/api_node.c +4725 -0
- data/ext/{yarp → prism}/api_pack.c +82 -82
- data/ext/{yarp → prism}/extconf.rb +13 -13
- data/ext/{yarp → prism}/extension.c +175 -168
- data/ext/prism/extension.h +18 -0
- data/include/prism/ast.h +1932 -0
- data/include/prism/defines.h +45 -0
- data/include/prism/diagnostic.h +231 -0
- data/include/{yarp/enc/yp_encoding.h → prism/enc/pm_encoding.h} +40 -40
- data/include/prism/node.h +41 -0
- data/include/prism/pack.h +141 -0
- data/include/{yarp → prism}/parser.h +143 -142
- data/include/prism/regexp.h +19 -0
- data/include/prism/unescape.h +48 -0
- data/include/prism/util/pm_buffer.h +51 -0
- data/include/{yarp/util/yp_char.h → prism/util/pm_char.h} +20 -20
- data/include/{yarp/util/yp_constant_pool.h → prism/util/pm_constant_pool.h} +26 -22
- data/include/{yarp/util/yp_list.h → prism/util/pm_list.h} +21 -21
- data/include/prism/util/pm_memchr.h +14 -0
- data/include/{yarp/util/yp_newline_list.h → prism/util/pm_newline_list.h} +11 -11
- data/include/prism/util/pm_state_stack.h +24 -0
- data/include/{yarp/util/yp_string.h → prism/util/pm_string.h} +20 -20
- data/include/prism/util/pm_string_list.h +25 -0
- data/include/{yarp/util/yp_strpbrk.h → prism/util/pm_strpbrk.h} +7 -7
- data/include/prism/version.h +4 -0
- data/include/prism.h +82 -0
- data/lib/prism/compiler.rb +465 -0
- data/lib/prism/debug.rb +157 -0
- data/lib/{yarp/desugar_visitor.rb → prism/desugar_compiler.rb} +4 -2
- data/lib/prism/dispatcher.rb +2051 -0
- data/lib/prism/dsl.rb +750 -0
- data/lib/{yarp → prism}/ffi.rb +66 -67
- data/lib/{yarp → prism}/lex_compat.rb +40 -43
- data/lib/{yarp/mutation_visitor.rb → prism/mutation_compiler.rb} +3 -3
- data/lib/{yarp → prism}/node.rb +2012 -2593
- data/lib/prism/node_ext.rb +55 -0
- data/lib/prism/node_inspector.rb +68 -0
- data/lib/{yarp → prism}/pack.rb +1 -1
- data/lib/{yarp → prism}/parse_result/comments.rb +1 -1
- data/lib/{yarp → prism}/parse_result/newlines.rb +1 -1
- data/lib/prism/parse_result.rb +266 -0
- data/lib/{yarp → prism}/pattern.rb +14 -14
- data/lib/{yarp → prism}/ripper_compat.rb +5 -5
- data/lib/{yarp → prism}/serialize.rb +12 -7
- data/lib/prism/visitor.rb +470 -0
- data/lib/prism.rb +64 -0
- data/lib/yarp.rb +2 -614
- data/src/diagnostic.c +213 -208
- data/src/enc/pm_big5.c +52 -0
- data/src/enc/pm_euc_jp.c +58 -0
- data/src/enc/{yp_gbk.c → pm_gbk.c} +16 -16
- data/src/enc/pm_shift_jis.c +56 -0
- data/src/enc/{yp_tables.c → pm_tables.c} +69 -69
- data/src/enc/{yp_unicode.c → pm_unicode.c} +40 -40
- data/src/enc/pm_windows_31j.c +56 -0
- data/src/node.c +1293 -1233
- data/src/pack.c +247 -247
- data/src/prettyprint.c +1479 -1479
- data/src/{yarp.c → prism.c} +5205 -5083
- data/src/regexp.c +132 -132
- data/src/serialize.c +1121 -1121
- data/src/token_type.c +169 -167
- data/src/unescape.c +106 -87
- data/src/util/pm_buffer.c +103 -0
- data/src/util/{yp_char.c → pm_char.c} +72 -72
- data/src/util/{yp_constant_pool.c → pm_constant_pool.c} +85 -64
- data/src/util/{yp_list.c → pm_list.c} +10 -10
- data/src/util/{yp_memchr.c → pm_memchr.c} +6 -4
- data/src/util/{yp_newline_list.c → pm_newline_list.c} +21 -21
- data/src/util/{yp_state_stack.c → pm_state_stack.c} +4 -4
- data/src/util/{yp_string.c → pm_string.c} +38 -38
- data/src/util/pm_string_list.c +29 -0
- data/src/util/{yp_strncasecmp.c → pm_strncasecmp.c} +1 -1
- data/src/util/{yp_strpbrk.c → pm_strpbrk.c} +8 -8
- data/yarp.gemspec +68 -59
- metadata +70 -61
- data/ext/yarp/api_node.c +0 -4728
- data/ext/yarp/extension.h +0 -18
- data/include/yarp/ast.h +0 -1929
- data/include/yarp/defines.h +0 -45
- data/include/yarp/diagnostic.h +0 -226
- data/include/yarp/node.h +0 -42
- data/include/yarp/pack.h +0 -141
- data/include/yarp/regexp.h +0 -19
- data/include/yarp/unescape.h +0 -44
- data/include/yarp/util/yp_buffer.h +0 -51
- data/include/yarp/util/yp_memchr.h +0 -14
- data/include/yarp/util/yp_state_stack.h +0 -24
- data/include/yarp/util/yp_string_list.h +0 -25
- data/include/yarp/version.h +0 -4
- data/include/yarp.h +0 -82
- data/src/enc/yp_big5.c +0 -52
- data/src/enc/yp_euc_jp.c +0 -58
- data/src/enc/yp_shift_jis.c +0 -56
- data/src/enc/yp_windows_31j.c +0 -56
- data/src/util/yp_buffer.c +0 -101
- data/src/util/yp_string_list.c +0 -29
data/include/yarp/defines.h
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_DEFINES_H
|
|
2
|
-
#define YARP_DEFINES_H
|
|
3
|
-
|
|
4
|
-
// This file should be included first by any *.h or *.c in YARP
|
|
5
|
-
|
|
6
|
-
#include <ctype.h>
|
|
7
|
-
#include <stdarg.h>
|
|
8
|
-
#include <stddef.h>
|
|
9
|
-
#include <stdint.h>
|
|
10
|
-
#include <stdio.h>
|
|
11
|
-
#include <string.h>
|
|
12
|
-
|
|
13
|
-
// YP_EXPORTED_FUNCTION
|
|
14
|
-
#ifndef YP_EXPORTED_FUNCTION
|
|
15
|
-
# ifdef YP_EXPORT_SYMBOLS
|
|
16
|
-
# ifdef _WIN32
|
|
17
|
-
# define YP_EXPORTED_FUNCTION __declspec(dllexport) extern
|
|
18
|
-
# else
|
|
19
|
-
# define YP_EXPORTED_FUNCTION __attribute__((__visibility__("default"))) extern
|
|
20
|
-
# endif
|
|
21
|
-
# else
|
|
22
|
-
# define YP_EXPORTED_FUNCTION
|
|
23
|
-
# endif
|
|
24
|
-
#endif
|
|
25
|
-
|
|
26
|
-
// YP_ATTRIBUTE_UNUSED
|
|
27
|
-
#if defined(__GNUC__)
|
|
28
|
-
# define YP_ATTRIBUTE_UNUSED __attribute__((unused))
|
|
29
|
-
#else
|
|
30
|
-
# define YP_ATTRIBUTE_UNUSED
|
|
31
|
-
#endif
|
|
32
|
-
|
|
33
|
-
// inline
|
|
34
|
-
#if defined(_MSC_VER) && !defined(inline)
|
|
35
|
-
# define inline __inline
|
|
36
|
-
#endif
|
|
37
|
-
|
|
38
|
-
// Windows versions before 2015 use _snprintf
|
|
39
|
-
#if defined(_MSC_VER) && (_MSC_VER < 1900)
|
|
40
|
-
# define snprintf _snprintf
|
|
41
|
-
#endif
|
|
42
|
-
|
|
43
|
-
int yp_strncasecmp(const uint8_t *string1, const uint8_t *string2, size_t length);
|
|
44
|
-
|
|
45
|
-
#endif
|
data/include/yarp/diagnostic.h
DELETED
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_DIAGNOSTIC_H
|
|
2
|
-
#define YARP_DIAGNOSTIC_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
#include "yarp/util/yp_list.h"
|
|
6
|
-
|
|
7
|
-
#include <stdbool.h>
|
|
8
|
-
#include <stdlib.h>
|
|
9
|
-
#include <assert.h>
|
|
10
|
-
|
|
11
|
-
// This struct represents a diagnostic found during parsing.
|
|
12
|
-
typedef struct {
|
|
13
|
-
yp_list_node_t node;
|
|
14
|
-
const uint8_t *start;
|
|
15
|
-
const uint8_t *end;
|
|
16
|
-
const char *message;
|
|
17
|
-
} yp_diagnostic_t;
|
|
18
|
-
|
|
19
|
-
typedef enum {
|
|
20
|
-
YP_ERR_ALIAS_ARGUMENT,
|
|
21
|
-
YP_ERR_AMPAMPEQ_MULTI_ASSIGN,
|
|
22
|
-
YP_ERR_ARGUMENT_AFTER_BLOCK,
|
|
23
|
-
YP_ERR_ARGUMENT_BARE_HASH,
|
|
24
|
-
YP_ERR_ARGUMENT_BLOCK_MULTI,
|
|
25
|
-
YP_ERR_ARGUMENT_FORMAL_CLASS,
|
|
26
|
-
YP_ERR_ARGUMENT_FORMAL_CONSTANT,
|
|
27
|
-
YP_ERR_ARGUMENT_FORMAL_GLOBAL,
|
|
28
|
-
YP_ERR_ARGUMENT_FORMAL_IVAR,
|
|
29
|
-
YP_ERR_ARGUMENT_NO_FORWARDING_AMP,
|
|
30
|
-
YP_ERR_ARGUMENT_NO_FORWARDING_ELLIPSES,
|
|
31
|
-
YP_ERR_ARGUMENT_NO_FORWARDING_STAR,
|
|
32
|
-
YP_ERR_ARGUMENT_SPLAT_AFTER_ASSOC_SPLAT,
|
|
33
|
-
YP_ERR_ARGUMENT_SPLAT_AFTER_SPLAT,
|
|
34
|
-
YP_ERR_ARGUMENT_TERM_PAREN,
|
|
35
|
-
YP_ERR_ARGUMENT_UNEXPECTED_BLOCK,
|
|
36
|
-
YP_ERR_ARRAY_ELEMENT,
|
|
37
|
-
YP_ERR_ARRAY_EXPRESSION,
|
|
38
|
-
YP_ERR_ARRAY_EXPRESSION_AFTER_STAR,
|
|
39
|
-
YP_ERR_ARRAY_SEPARATOR,
|
|
40
|
-
YP_ERR_ARRAY_TERM,
|
|
41
|
-
YP_ERR_BEGIN_LONELY_ELSE,
|
|
42
|
-
YP_ERR_BEGIN_TERM,
|
|
43
|
-
YP_ERR_BEGIN_UPCASE_BRACE,
|
|
44
|
-
YP_ERR_BEGIN_UPCASE_TERM,
|
|
45
|
-
YP_ERR_BLOCK_PARAM_LOCAL_VARIABLE,
|
|
46
|
-
YP_ERR_BLOCK_PARAM_PIPE_TERM,
|
|
47
|
-
YP_ERR_BLOCK_TERM_BRACE,
|
|
48
|
-
YP_ERR_BLOCK_TERM_END,
|
|
49
|
-
YP_ERR_CANNOT_PARSE_EXPRESSION,
|
|
50
|
-
YP_ERR_CANNOT_PARSE_STRING_PART,
|
|
51
|
-
YP_ERR_CASE_EXPRESSION_AFTER_CASE,
|
|
52
|
-
YP_ERR_CASE_EXPRESSION_AFTER_WHEN,
|
|
53
|
-
YP_ERR_CASE_MISSING_CONDITIONS,
|
|
54
|
-
YP_ERR_CASE_TERM,
|
|
55
|
-
YP_ERR_CLASS_IN_METHOD,
|
|
56
|
-
YP_ERR_CLASS_NAME,
|
|
57
|
-
YP_ERR_CLASS_SUPERCLASS,
|
|
58
|
-
YP_ERR_CLASS_TERM,
|
|
59
|
-
YP_ERR_CONDITIONAL_ELSIF_PREDICATE,
|
|
60
|
-
YP_ERR_CONDITIONAL_IF_PREDICATE,
|
|
61
|
-
YP_ERR_CONDITIONAL_TERM,
|
|
62
|
-
YP_ERR_CONDITIONAL_TERM_ELSE,
|
|
63
|
-
YP_ERR_CONDITIONAL_UNLESS_PREDICATE,
|
|
64
|
-
YP_ERR_CONDITIONAL_UNTIL_PREDICATE,
|
|
65
|
-
YP_ERR_CONDITIONAL_WHILE_PREDICATE,
|
|
66
|
-
YP_ERR_CONSTANT_PATH_COLON_COLON_CONSTANT,
|
|
67
|
-
YP_ERR_DEF_ENDLESS,
|
|
68
|
-
YP_ERR_DEF_ENDLESS_SETTER,
|
|
69
|
-
YP_ERR_DEF_NAME,
|
|
70
|
-
YP_ERR_DEF_NAME_AFTER_RECEIVER,
|
|
71
|
-
YP_ERR_DEF_PARAMS_TERM,
|
|
72
|
-
YP_ERR_DEF_PARAMS_TERM_PAREN,
|
|
73
|
-
YP_ERR_DEF_RECEIVER,
|
|
74
|
-
YP_ERR_DEF_RECEIVER_TERM,
|
|
75
|
-
YP_ERR_DEF_TERM,
|
|
76
|
-
YP_ERR_DEFINED_EXPRESSION,
|
|
77
|
-
YP_ERR_EMBDOC_TERM,
|
|
78
|
-
YP_ERR_EMBEXPR_END,
|
|
79
|
-
YP_ERR_EMBVAR_INVALID,
|
|
80
|
-
YP_ERR_END_UPCASE_BRACE,
|
|
81
|
-
YP_ERR_END_UPCASE_TERM,
|
|
82
|
-
YP_ERR_ESCAPE_INVALID_CONTROL,
|
|
83
|
-
YP_ERR_ESCAPE_INVALID_CONTROL_REPEAT,
|
|
84
|
-
YP_ERR_ESCAPE_INVALID_HEXADECIMAL,
|
|
85
|
-
YP_ERR_ESCAPE_INVALID_META,
|
|
86
|
-
YP_ERR_ESCAPE_INVALID_META_REPEAT,
|
|
87
|
-
YP_ERR_ESCAPE_INVALID_UNICODE,
|
|
88
|
-
YP_ERR_ESCAPE_INVALID_UNICODE_CM_FLAGS,
|
|
89
|
-
YP_ERR_ESCAPE_INVALID_UNICODE_LITERAL,
|
|
90
|
-
YP_ERR_ESCAPE_INVALID_UNICODE_LONG,
|
|
91
|
-
YP_ERR_ESCAPE_INVALID_UNICODE_TERM,
|
|
92
|
-
YP_ERR_EXPECT_ARGUMENT,
|
|
93
|
-
YP_ERR_EXPECT_EOL_AFTER_STATEMENT,
|
|
94
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_AMPAMPEQ,
|
|
95
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_PIPEPIPEEQ,
|
|
96
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_COMMA,
|
|
97
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_EQUAL,
|
|
98
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_LESS_LESS,
|
|
99
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_LPAREN,
|
|
100
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_QUESTION,
|
|
101
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_OPERATOR,
|
|
102
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_SPLAT,
|
|
103
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_SPLAT_HASH,
|
|
104
|
-
YP_ERR_EXPECT_EXPRESSION_AFTER_STAR,
|
|
105
|
-
YP_ERR_EXPECT_IDENT_REQ_PARAMETER,
|
|
106
|
-
YP_ERR_EXPECT_LPAREN_REQ_PARAMETER,
|
|
107
|
-
YP_ERR_EXPECT_RBRACKET,
|
|
108
|
-
YP_ERR_EXPECT_RPAREN,
|
|
109
|
-
YP_ERR_EXPECT_RPAREN_AFTER_MULTI,
|
|
110
|
-
YP_ERR_EXPECT_RPAREN_REQ_PARAMETER,
|
|
111
|
-
YP_ERR_EXPECT_STRING_CONTENT,
|
|
112
|
-
YP_ERR_EXPECT_WHEN_DELIMITER,
|
|
113
|
-
YP_ERR_EXPRESSION_BARE_HASH,
|
|
114
|
-
YP_ERR_FOR_COLLECTION,
|
|
115
|
-
YP_ERR_FOR_IN,
|
|
116
|
-
YP_ERR_FOR_INDEX,
|
|
117
|
-
YP_ERR_FOR_TERM,
|
|
118
|
-
YP_ERR_HASH_EXPRESSION_AFTER_LABEL,
|
|
119
|
-
YP_ERR_HASH_KEY,
|
|
120
|
-
YP_ERR_HASH_ROCKET,
|
|
121
|
-
YP_ERR_HASH_TERM,
|
|
122
|
-
YP_ERR_HASH_VALUE,
|
|
123
|
-
YP_ERR_HEREDOC_TERM,
|
|
124
|
-
YP_ERR_INCOMPLETE_QUESTION_MARK,
|
|
125
|
-
YP_ERR_INCOMPLETE_VARIABLE_CLASS,
|
|
126
|
-
YP_ERR_INCOMPLETE_VARIABLE_INSTANCE,
|
|
127
|
-
YP_ERR_INVALID_ENCODING_MAGIC_COMMENT,
|
|
128
|
-
YP_ERR_INVALID_FLOAT_EXPONENT,
|
|
129
|
-
YP_ERR_INVALID_NUMBER_BINARY,
|
|
130
|
-
YP_ERR_INVALID_NUMBER_DECIMAL,
|
|
131
|
-
YP_ERR_INVALID_NUMBER_HEXADECIMAL,
|
|
132
|
-
YP_ERR_INVALID_NUMBER_OCTAL,
|
|
133
|
-
YP_ERR_INVALID_NUMBER_UNDERSCORE,
|
|
134
|
-
YP_ERR_INVALID_PERCENT,
|
|
135
|
-
YP_ERR_INVALID_TOKEN,
|
|
136
|
-
YP_ERR_INVALID_VARIABLE_GLOBAL,
|
|
137
|
-
YP_ERR_LAMBDA_OPEN,
|
|
138
|
-
YP_ERR_LAMBDA_TERM_BRACE,
|
|
139
|
-
YP_ERR_LAMBDA_TERM_END,
|
|
140
|
-
YP_ERR_LIST_I_LOWER_ELEMENT,
|
|
141
|
-
YP_ERR_LIST_I_LOWER_TERM,
|
|
142
|
-
YP_ERR_LIST_I_UPPER_ELEMENT,
|
|
143
|
-
YP_ERR_LIST_I_UPPER_TERM,
|
|
144
|
-
YP_ERR_LIST_W_LOWER_ELEMENT,
|
|
145
|
-
YP_ERR_LIST_W_LOWER_TERM,
|
|
146
|
-
YP_ERR_LIST_W_UPPER_ELEMENT,
|
|
147
|
-
YP_ERR_LIST_W_UPPER_TERM,
|
|
148
|
-
YP_ERR_MALLOC_FAILED,
|
|
149
|
-
YP_ERR_MODULE_IN_METHOD,
|
|
150
|
-
YP_ERR_MODULE_NAME,
|
|
151
|
-
YP_ERR_MODULE_TERM,
|
|
152
|
-
YP_ERR_MULTI_ASSIGN_MULTI_SPLATS,
|
|
153
|
-
YP_ERR_NOT_EXPRESSION,
|
|
154
|
-
YP_ERR_NUMBER_LITERAL_UNDERSCORE,
|
|
155
|
-
YP_ERR_NUMBERED_PARAMETER_NOT_ALLOWED,
|
|
156
|
-
YP_ERR_NUMBERED_PARAMETER_OUTER_SCOPE,
|
|
157
|
-
YP_ERR_OPERATOR_MULTI_ASSIGN,
|
|
158
|
-
YP_ERR_OPERATOR_WRITE_BLOCK,
|
|
159
|
-
YP_ERR_PARAMETER_ASSOC_SPLAT_MULTI,
|
|
160
|
-
YP_ERR_PARAMETER_BLOCK_MULTI,
|
|
161
|
-
YP_ERR_PARAMETER_NAME_REPEAT,
|
|
162
|
-
YP_ERR_PARAMETER_NO_DEFAULT,
|
|
163
|
-
YP_ERR_PARAMETER_NO_DEFAULT_KW,
|
|
164
|
-
YP_ERR_PARAMETER_NUMBERED_RESERVED,
|
|
165
|
-
YP_ERR_PARAMETER_ORDER,
|
|
166
|
-
YP_ERR_PARAMETER_SPLAT_MULTI,
|
|
167
|
-
YP_ERR_PARAMETER_STAR,
|
|
168
|
-
YP_ERR_PARAMETER_WILD_LOOSE_COMMA,
|
|
169
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_BRACKET,
|
|
170
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_HROCKET,
|
|
171
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_COMMA,
|
|
172
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_IN,
|
|
173
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_KEY,
|
|
174
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_PAREN,
|
|
175
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_PIN,
|
|
176
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_PIPE,
|
|
177
|
-
YP_ERR_PATTERN_EXPRESSION_AFTER_RANGE,
|
|
178
|
-
YP_ERR_PATTERN_HASH_KEY,
|
|
179
|
-
YP_ERR_PATTERN_HASH_KEY_LABEL,
|
|
180
|
-
YP_ERR_PATTERN_IDENT_AFTER_HROCKET,
|
|
181
|
-
YP_ERR_PATTERN_LABEL_AFTER_COMMA,
|
|
182
|
-
YP_ERR_PATTERN_REST,
|
|
183
|
-
YP_ERR_PATTERN_TERM_BRACE,
|
|
184
|
-
YP_ERR_PATTERN_TERM_BRACKET,
|
|
185
|
-
YP_ERR_PATTERN_TERM_PAREN,
|
|
186
|
-
YP_ERR_PIPEPIPEEQ_MULTI_ASSIGN,
|
|
187
|
-
YP_ERR_REGEXP_TERM,
|
|
188
|
-
YP_ERR_RESCUE_EXPRESSION,
|
|
189
|
-
YP_ERR_RESCUE_MODIFIER_VALUE,
|
|
190
|
-
YP_ERR_RESCUE_TERM,
|
|
191
|
-
YP_ERR_RESCUE_VARIABLE,
|
|
192
|
-
YP_ERR_RETURN_INVALID,
|
|
193
|
-
YP_ERR_STRING_CONCATENATION,
|
|
194
|
-
YP_ERR_STRING_INTERPOLATED_TERM,
|
|
195
|
-
YP_ERR_STRING_LITERAL_TERM,
|
|
196
|
-
YP_ERR_SYMBOL_INVALID,
|
|
197
|
-
YP_ERR_SYMBOL_TERM_DYNAMIC,
|
|
198
|
-
YP_ERR_SYMBOL_TERM_INTERPOLATED,
|
|
199
|
-
YP_ERR_TERNARY_COLON,
|
|
200
|
-
YP_ERR_TERNARY_EXPRESSION_FALSE,
|
|
201
|
-
YP_ERR_TERNARY_EXPRESSION_TRUE,
|
|
202
|
-
YP_ERR_UNARY_RECEIVER_BANG,
|
|
203
|
-
YP_ERR_UNARY_RECEIVER_MINUS,
|
|
204
|
-
YP_ERR_UNARY_RECEIVER_PLUS,
|
|
205
|
-
YP_ERR_UNARY_RECEIVER_TILDE,
|
|
206
|
-
YP_ERR_UNDEF_ARGUMENT,
|
|
207
|
-
YP_ERR_UNTIL_TERM,
|
|
208
|
-
YP_ERR_WHILE_TERM,
|
|
209
|
-
YP_ERR_WRITE_TARGET_READONLY,
|
|
210
|
-
YP_ERR_WRITE_TARGET_UNEXPECTED,
|
|
211
|
-
YP_ERR_XSTRING_TERM,
|
|
212
|
-
YP_WARN_AMBIGUOUS_FIRST_ARGUMENT_MINUS,
|
|
213
|
-
YP_WARN_AMBIGUOUS_FIRST_ARGUMENT_PLUS,
|
|
214
|
-
YP_WARN_AMBIGUOUS_PREFIX_STAR,
|
|
215
|
-
YP_WARN_AMBIGUOUS_SLASH,
|
|
216
|
-
/* This must be the last member. */
|
|
217
|
-
YP_DIAGNOSTIC_ID_LEN,
|
|
218
|
-
} yp_diagnostic_id_t;
|
|
219
|
-
|
|
220
|
-
// Append a diagnostic to the given list of diagnostics.
|
|
221
|
-
bool yp_diagnostic_list_append(yp_list_t *list, const uint8_t *start, const uint8_t *end, yp_diagnostic_id_t diag_id);
|
|
222
|
-
|
|
223
|
-
// Deallocate the internal state of the given diagnostic list.
|
|
224
|
-
void yp_diagnostic_list_free(yp_list_t *list);
|
|
225
|
-
|
|
226
|
-
#endif
|
data/include/yarp/node.h
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_NODE_H
|
|
2
|
-
#define YARP_NODE_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
#include "yarp/parser.h"
|
|
6
|
-
|
|
7
|
-
// Append a new node onto the end of the node list.
|
|
8
|
-
void yp_node_list_append(yp_node_list_t *list, yp_node_t *node);
|
|
9
|
-
|
|
10
|
-
// Clear the node but preserves the location.
|
|
11
|
-
void yp_node_clear(yp_node_t *node);
|
|
12
|
-
|
|
13
|
-
// Deallocate a node and all of its children.
|
|
14
|
-
YP_EXPORTED_FUNCTION void yp_node_destroy(yp_parser_t *parser, struct yp_node *node);
|
|
15
|
-
|
|
16
|
-
// This struct stores the information gathered by the yp_node_memsize function.
|
|
17
|
-
// It contains both the memory footprint and additionally metadata about the
|
|
18
|
-
// shape of the tree.
|
|
19
|
-
typedef struct {
|
|
20
|
-
size_t memsize;
|
|
21
|
-
size_t node_count;
|
|
22
|
-
} yp_memsize_t;
|
|
23
|
-
|
|
24
|
-
// Calculates the memory footprint of a given node.
|
|
25
|
-
YP_EXPORTED_FUNCTION void yp_node_memsize(yp_node_t *node, yp_memsize_t *memsize);
|
|
26
|
-
|
|
27
|
-
// Returns a string representation of the given node type.
|
|
28
|
-
YP_EXPORTED_FUNCTION const char * yp_node_type_to_str(yp_node_type_t node_type);
|
|
29
|
-
|
|
30
|
-
#define YP_EMPTY_NODE_LIST ((yp_node_list_t) { .nodes = NULL, .size = 0, .capacity = 0 })
|
|
31
|
-
|
|
32
|
-
#endif // YARP_NODE_H
|
|
33
|
-
|
|
34
|
-
// ScopeNodes are helper nodes, and will never
|
|
35
|
-
// be part of the AST. We manually declare them
|
|
36
|
-
// here to avoid generating them
|
|
37
|
-
typedef struct yp_scope_node {
|
|
38
|
-
yp_node_t base;
|
|
39
|
-
struct yp_parameters_node *parameters;
|
|
40
|
-
yp_node_t *body;
|
|
41
|
-
yp_constant_id_list_t locals;
|
|
42
|
-
} yp_scope_node_t;
|
data/include/yarp/pack.h
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_PACK_H
|
|
2
|
-
#define YARP_PACK_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
|
|
6
|
-
#include <stdint.h>
|
|
7
|
-
#include <stdlib.h>
|
|
8
|
-
|
|
9
|
-
typedef enum yp_pack_version {
|
|
10
|
-
YP_PACK_VERSION_3_2_0
|
|
11
|
-
} yp_pack_version;
|
|
12
|
-
|
|
13
|
-
typedef enum yp_pack_variant {
|
|
14
|
-
YP_PACK_VARIANT_PACK,
|
|
15
|
-
YP_PACK_VARIANT_UNPACK
|
|
16
|
-
} yp_pack_variant;
|
|
17
|
-
|
|
18
|
-
typedef enum yp_pack_type {
|
|
19
|
-
YP_PACK_SPACE,
|
|
20
|
-
YP_PACK_COMMENT,
|
|
21
|
-
YP_PACK_INTEGER,
|
|
22
|
-
YP_PACK_UTF8,
|
|
23
|
-
YP_PACK_BER,
|
|
24
|
-
YP_PACK_FLOAT,
|
|
25
|
-
YP_PACK_STRING_SPACE_PADDED,
|
|
26
|
-
YP_PACK_STRING_NULL_PADDED,
|
|
27
|
-
YP_PACK_STRING_NULL_TERMINATED,
|
|
28
|
-
YP_PACK_STRING_MSB,
|
|
29
|
-
YP_PACK_STRING_LSB,
|
|
30
|
-
YP_PACK_STRING_HEX_HIGH,
|
|
31
|
-
YP_PACK_STRING_HEX_LOW,
|
|
32
|
-
YP_PACK_STRING_UU,
|
|
33
|
-
YP_PACK_STRING_MIME,
|
|
34
|
-
YP_PACK_STRING_BASE64,
|
|
35
|
-
YP_PACK_STRING_FIXED,
|
|
36
|
-
YP_PACK_STRING_POINTER,
|
|
37
|
-
YP_PACK_MOVE,
|
|
38
|
-
YP_PACK_BACK,
|
|
39
|
-
YP_PACK_NULL,
|
|
40
|
-
YP_PACK_END
|
|
41
|
-
} yp_pack_type;
|
|
42
|
-
|
|
43
|
-
typedef enum yp_pack_signed {
|
|
44
|
-
YP_PACK_UNSIGNED,
|
|
45
|
-
YP_PACK_SIGNED,
|
|
46
|
-
YP_PACK_SIGNED_NA
|
|
47
|
-
} yp_pack_signed;
|
|
48
|
-
|
|
49
|
-
typedef enum yp_pack_endian {
|
|
50
|
-
YP_PACK_AGNOSTIC_ENDIAN,
|
|
51
|
-
YP_PACK_LITTLE_ENDIAN, // aka 'VAX', or 'V'
|
|
52
|
-
YP_PACK_BIG_ENDIAN, // aka 'network', or 'N'
|
|
53
|
-
YP_PACK_NATIVE_ENDIAN,
|
|
54
|
-
YP_PACK_ENDIAN_NA
|
|
55
|
-
} yp_pack_endian;
|
|
56
|
-
|
|
57
|
-
typedef enum yp_pack_size {
|
|
58
|
-
YP_PACK_SIZE_SHORT,
|
|
59
|
-
YP_PACK_SIZE_INT,
|
|
60
|
-
YP_PACK_SIZE_LONG,
|
|
61
|
-
YP_PACK_SIZE_LONG_LONG,
|
|
62
|
-
YP_PACK_SIZE_8,
|
|
63
|
-
YP_PACK_SIZE_16,
|
|
64
|
-
YP_PACK_SIZE_32,
|
|
65
|
-
YP_PACK_SIZE_64,
|
|
66
|
-
YP_PACK_SIZE_P,
|
|
67
|
-
YP_PACK_SIZE_NA
|
|
68
|
-
} yp_pack_size;
|
|
69
|
-
|
|
70
|
-
typedef enum yp_pack_length_type {
|
|
71
|
-
YP_PACK_LENGTH_FIXED,
|
|
72
|
-
YP_PACK_LENGTH_MAX,
|
|
73
|
-
YP_PACK_LENGTH_RELATIVE, // special case for unpack @*
|
|
74
|
-
YP_PACK_LENGTH_NA
|
|
75
|
-
} yp_pack_length_type;
|
|
76
|
-
|
|
77
|
-
typedef enum yp_pack_encoding {
|
|
78
|
-
YP_PACK_ENCODING_START,
|
|
79
|
-
YP_PACK_ENCODING_ASCII_8BIT,
|
|
80
|
-
YP_PACK_ENCODING_US_ASCII,
|
|
81
|
-
YP_PACK_ENCODING_UTF_8
|
|
82
|
-
} yp_pack_encoding;
|
|
83
|
-
|
|
84
|
-
typedef enum yp_pack_result {
|
|
85
|
-
YP_PACK_OK,
|
|
86
|
-
YP_PACK_ERROR_UNSUPPORTED_DIRECTIVE,
|
|
87
|
-
YP_PACK_ERROR_UNKNOWN_DIRECTIVE,
|
|
88
|
-
YP_PACK_ERROR_LENGTH_TOO_BIG,
|
|
89
|
-
YP_PACK_ERROR_BANG_NOT_ALLOWED,
|
|
90
|
-
YP_PACK_ERROR_DOUBLE_ENDIAN
|
|
91
|
-
} yp_pack_result;
|
|
92
|
-
|
|
93
|
-
// Parse a single directive from a pack or unpack format string.
|
|
94
|
-
//
|
|
95
|
-
// Parameters:
|
|
96
|
-
// - [in] yp_pack_version version the version of Ruby
|
|
97
|
-
// - [in] yp_pack_variant variant pack or unpack
|
|
98
|
-
// - [in out] const char **format the start of the next directive to parse
|
|
99
|
-
// on calling, and advanced beyond the parsed directive on return, or as
|
|
100
|
-
// much of it as was consumed until an error was encountered
|
|
101
|
-
// - [in] const char *format_end the end of the format string
|
|
102
|
-
// - [out] yp_pack_type *type the type of the directive
|
|
103
|
-
// - [out] yp_pack_signed *signed_type
|
|
104
|
-
// whether the value is signed
|
|
105
|
-
// - [out] yp_pack_endian *endian the endianness of the value
|
|
106
|
-
// - [out] yp_pack_size *size the size of the value
|
|
107
|
-
// - [out] yp_pack_length_type *length_type
|
|
108
|
-
// what kind of length is specified
|
|
109
|
-
// - [out] size_t *length the length of the directive
|
|
110
|
-
// - [in out] yp_pack_encoding *encoding
|
|
111
|
-
// takes the current encoding of the string
|
|
112
|
-
// which would result from parsing the whole format string, and returns a
|
|
113
|
-
// possibly changed directive - the encoding should be
|
|
114
|
-
// YP_PACK_ENCODING_START when yp_pack_parse is called for the first
|
|
115
|
-
// directive in a format string
|
|
116
|
-
//
|
|
117
|
-
// Return:
|
|
118
|
-
// - YP_PACK_OK on success
|
|
119
|
-
// - YP_PACK_ERROR_* on error
|
|
120
|
-
//
|
|
121
|
-
// Notes:
|
|
122
|
-
// Consult Ruby documentation for the meaning of directives.
|
|
123
|
-
YP_EXPORTED_FUNCTION yp_pack_result
|
|
124
|
-
yp_pack_parse(
|
|
125
|
-
yp_pack_variant variant_arg,
|
|
126
|
-
const char **format,
|
|
127
|
-
const char *format_end,
|
|
128
|
-
yp_pack_type *type,
|
|
129
|
-
yp_pack_signed *signed_type,
|
|
130
|
-
yp_pack_endian *endian,
|
|
131
|
-
yp_pack_size *size,
|
|
132
|
-
yp_pack_length_type *length_type,
|
|
133
|
-
uint64_t *length,
|
|
134
|
-
yp_pack_encoding *encoding
|
|
135
|
-
);
|
|
136
|
-
|
|
137
|
-
// YARP abstracts sizes away from the native system - this converts an abstract
|
|
138
|
-
// size to a native size.
|
|
139
|
-
YP_EXPORTED_FUNCTION size_t yp_size_to_native(yp_pack_size size);
|
|
140
|
-
|
|
141
|
-
#endif
|
data/include/yarp/regexp.h
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_REGEXP_H
|
|
2
|
-
#define YARP_REGEXP_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
#include "yarp/parser.h"
|
|
6
|
-
#include "yarp/enc/yp_encoding.h"
|
|
7
|
-
#include "yarp/util/yp_memchr.h"
|
|
8
|
-
#include "yarp/util/yp_string_list.h"
|
|
9
|
-
#include "yarp/util/yp_string.h"
|
|
10
|
-
|
|
11
|
-
#include <stdbool.h>
|
|
12
|
-
#include <stddef.h>
|
|
13
|
-
#include <string.h>
|
|
14
|
-
|
|
15
|
-
// Parse a regular expression and extract the names of all of the named capture
|
|
16
|
-
// groups.
|
|
17
|
-
YP_EXPORTED_FUNCTION bool yp_regexp_named_capture_group_names(const uint8_t *source, size_t size, yp_string_list_t *named_captures, bool encoding_changed, yp_encoding_t *encoding);
|
|
18
|
-
|
|
19
|
-
#endif
|
data/include/yarp/unescape.h
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_UNESCAPE_H
|
|
2
|
-
#define YARP_UNESCAPE_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
#include "yarp/diagnostic.h"
|
|
6
|
-
#include "yarp/parser.h"
|
|
7
|
-
#include "yarp/util/yp_char.h"
|
|
8
|
-
#include "yarp/util/yp_list.h"
|
|
9
|
-
#include "yarp/util/yp_memchr.h"
|
|
10
|
-
#include "yarp/util/yp_string.h"
|
|
11
|
-
|
|
12
|
-
#include <assert.h>
|
|
13
|
-
#include <stdbool.h>
|
|
14
|
-
#include <stdint.h>
|
|
15
|
-
#include <string.h>
|
|
16
|
-
|
|
17
|
-
// The type of unescape we are performing.
|
|
18
|
-
typedef enum {
|
|
19
|
-
// When we're creating a string inside of a list literal like %w, we
|
|
20
|
-
// shouldn't escape anything.
|
|
21
|
-
YP_UNESCAPE_NONE,
|
|
22
|
-
|
|
23
|
-
// When we're unescaping a single-quoted string, we only need to unescape
|
|
24
|
-
// single quotes and backslashes.
|
|
25
|
-
YP_UNESCAPE_MINIMAL,
|
|
26
|
-
|
|
27
|
-
// When we're unescaping a double-quoted string, we need to unescape all
|
|
28
|
-
// escapes.
|
|
29
|
-
YP_UNESCAPE_ALL
|
|
30
|
-
} yp_unescape_type_t;
|
|
31
|
-
|
|
32
|
-
// Unescape the contents of the given token into the given string using the given unescape mode.
|
|
33
|
-
YP_EXPORTED_FUNCTION void yp_unescape_manipulate_string(yp_parser_t *parser, yp_string_t *string, yp_unescape_type_t unescape_type);
|
|
34
|
-
void yp_unescape_manipulate_char_literal(yp_parser_t *parser, yp_string_t *string, yp_unescape_type_t unescape_type);
|
|
35
|
-
|
|
36
|
-
// Accepts a source string and a type of unescaping and returns the unescaped version.
|
|
37
|
-
// The caller must yp_string_free(result); after calling this function.
|
|
38
|
-
YP_EXPORTED_FUNCTION bool yp_unescape_string(const uint8_t *start, size_t length, yp_unescape_type_t unescape_type, yp_string_t *result);
|
|
39
|
-
|
|
40
|
-
// Returns the number of bytes that encompass the first escape sequence in the
|
|
41
|
-
// given string.
|
|
42
|
-
size_t yp_unescape_calculate_difference(yp_parser_t *parser, const uint8_t *value, yp_unescape_type_t unescape_type, bool expect_single_codepoint);
|
|
43
|
-
|
|
44
|
-
#endif
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_BUFFER_H
|
|
2
|
-
#define YARP_BUFFER_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
|
|
6
|
-
#include <assert.h>
|
|
7
|
-
#include <stdbool.h>
|
|
8
|
-
#include <stdint.h>
|
|
9
|
-
#include <stdlib.h>
|
|
10
|
-
#include <string.h>
|
|
11
|
-
|
|
12
|
-
// A yp_buffer_t is a simple memory buffer that stores data in a contiguous
|
|
13
|
-
// block of memory. It is used to store the serialized representation of a
|
|
14
|
-
// YARP tree.
|
|
15
|
-
typedef struct {
|
|
16
|
-
char *value;
|
|
17
|
-
size_t length;
|
|
18
|
-
size_t capacity;
|
|
19
|
-
} yp_buffer_t;
|
|
20
|
-
|
|
21
|
-
// Return the size of the yp_buffer_t struct.
|
|
22
|
-
YP_EXPORTED_FUNCTION size_t yp_buffer_sizeof(void);
|
|
23
|
-
|
|
24
|
-
// Initialize a yp_buffer_t with its default values.
|
|
25
|
-
YP_EXPORTED_FUNCTION bool yp_buffer_init(yp_buffer_t *buffer);
|
|
26
|
-
|
|
27
|
-
// Return the value of the buffer.
|
|
28
|
-
YP_EXPORTED_FUNCTION char * yp_buffer_value(yp_buffer_t *buffer);
|
|
29
|
-
|
|
30
|
-
// Return the length of the buffer.
|
|
31
|
-
YP_EXPORTED_FUNCTION size_t yp_buffer_length(yp_buffer_t *buffer);
|
|
32
|
-
|
|
33
|
-
// Append the given amount of space as zeroes to the buffer.
|
|
34
|
-
void yp_buffer_append_zeroes(yp_buffer_t *buffer, size_t length);
|
|
35
|
-
|
|
36
|
-
// Append a string to the buffer.
|
|
37
|
-
void yp_buffer_append_str(yp_buffer_t *buffer, const char *value, size_t length);
|
|
38
|
-
|
|
39
|
-
// Append a list of bytes to the buffer.
|
|
40
|
-
void yp_buffer_append_bytes(yp_buffer_t *buffer, const uint8_t *value, size_t length);
|
|
41
|
-
|
|
42
|
-
// Append a single byte to the buffer.
|
|
43
|
-
void yp_buffer_append_u8(yp_buffer_t *buffer, uint8_t value);
|
|
44
|
-
|
|
45
|
-
// Append a 32-bit unsigned integer to the buffer.
|
|
46
|
-
void yp_buffer_append_u32(yp_buffer_t *buffer, uint32_t value);
|
|
47
|
-
|
|
48
|
-
// Free the memory associated with the buffer.
|
|
49
|
-
YP_EXPORTED_FUNCTION void yp_buffer_free(yp_buffer_t *buffer);
|
|
50
|
-
|
|
51
|
-
#endif
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#ifndef YP_MEMCHR_H
|
|
2
|
-
#define YP_MEMCHR_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
#include "yarp/enc/yp_encoding.h"
|
|
6
|
-
|
|
7
|
-
#include <stddef.h>
|
|
8
|
-
|
|
9
|
-
// We need to roll our own memchr to handle cases where the encoding changes and
|
|
10
|
-
// we need to search for a character in a buffer that could be the trailing byte
|
|
11
|
-
// of a multibyte character.
|
|
12
|
-
void * yp_memchr(const void *source, int character, size_t number, bool encoding_changed, yp_encoding_t *encoding);
|
|
13
|
-
|
|
14
|
-
#endif
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#ifndef YP_STATE_STACK_H
|
|
2
|
-
#define YP_STATE_STACK_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
|
|
6
|
-
#include <stdbool.h>
|
|
7
|
-
#include <stdint.h>
|
|
8
|
-
|
|
9
|
-
// A struct that represents a stack of bools.
|
|
10
|
-
typedef uint32_t yp_state_stack_t;
|
|
11
|
-
|
|
12
|
-
// Initializes the state stack to an empty stack.
|
|
13
|
-
#define YP_STATE_STACK_EMPTY ((yp_state_stack_t) 0)
|
|
14
|
-
|
|
15
|
-
// Pushes a value onto the stack.
|
|
16
|
-
void yp_state_stack_push(yp_state_stack_t *stack, bool value);
|
|
17
|
-
|
|
18
|
-
// Pops a value off the stack.
|
|
19
|
-
void yp_state_stack_pop(yp_state_stack_t *stack);
|
|
20
|
-
|
|
21
|
-
// Returns the value at the top of the stack.
|
|
22
|
-
bool yp_state_stack_p(yp_state_stack_t *stack);
|
|
23
|
-
|
|
24
|
-
#endif
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#ifndef YARP_STRING_LIST_H
|
|
2
|
-
#define YARP_STRING_LIST_H
|
|
3
|
-
|
|
4
|
-
#include "yarp/defines.h"
|
|
5
|
-
#include "yarp/util/yp_string.h"
|
|
6
|
-
|
|
7
|
-
#include <stddef.h>
|
|
8
|
-
#include <stdlib.h>
|
|
9
|
-
|
|
10
|
-
typedef struct {
|
|
11
|
-
yp_string_t *strings;
|
|
12
|
-
size_t length;
|
|
13
|
-
size_t capacity;
|
|
14
|
-
} yp_string_list_t;
|
|
15
|
-
|
|
16
|
-
// Initialize a yp_string_list_t with its default values.
|
|
17
|
-
YP_EXPORTED_FUNCTION void yp_string_list_init(yp_string_list_t *string_list);
|
|
18
|
-
|
|
19
|
-
// Append a yp_string_t to the given string list.
|
|
20
|
-
void yp_string_list_append(yp_string_list_t *string_list, yp_string_t *string);
|
|
21
|
-
|
|
22
|
-
// Free the memory associated with the string list.
|
|
23
|
-
YP_EXPORTED_FUNCTION void yp_string_list_free(yp_string_list_t *string_list);
|
|
24
|
-
|
|
25
|
-
#endif
|
data/include/yarp/version.h
DELETED