ruby-next-parser 2.8.0.8 → 3.0.0.3
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/lib/parser/ruby-next/AST_FORMAT.md +29 -29
- data/lib/parser/ruby-next/ast/processor.rb +6 -4
- data/lib/parser/ruby-next/builder.rb +14 -1
- data/lib/parser/ruby-next/lexer.rb +821 -811
- data/lib/parser/ruby-next/lexer.rl +9 -3
- data/lib/parser/ruby-next/meta.rb +1 -1
- data/lib/parser/ruby-next/parser_ext.rb +0 -1
- data/lib/parser/ruby-next/version.rb +1 -1
- data/lib/parser/rubynext.rb +3661 -3585
- data/lib/parser/rubynext.y +84 -27
- metadata +4 -4
data/lib/parser/rubynext.y
CHANGED
|
@@ -46,7 +46,17 @@ preclow
|
|
|
46
46
|
|
|
47
47
|
rule
|
|
48
48
|
|
|
49
|
-
program:
|
|
49
|
+
program: {
|
|
50
|
+
@current_arg_stack.push(nil)
|
|
51
|
+
@max_numparam_stack.push
|
|
52
|
+
}
|
|
53
|
+
top_compstmt
|
|
54
|
+
{
|
|
55
|
+
result = val[1]
|
|
56
|
+
|
|
57
|
+
@current_arg_stack.pop
|
|
58
|
+
@max_numparam_stack.pop
|
|
59
|
+
}
|
|
50
60
|
|
|
51
61
|
top_compstmt: top_stmts opt_terms
|
|
52
62
|
{
|
|
@@ -206,25 +216,8 @@ rule
|
|
|
206
216
|
{
|
|
207
217
|
result = @builder.multi_assign(val[0], val[1], val[2])
|
|
208
218
|
}
|
|
209
|
-
| rassign
|
|
210
219
|
| expr
|
|
211
220
|
|
|
212
|
-
rassign: arg_value tASSOC lhs
|
|
213
|
-
{
|
|
214
|
-
result = @builder.rassign(val[0], val[1], val[2])
|
|
215
|
-
}
|
|
216
|
-
| arg_value tASSOC mlhs
|
|
217
|
-
{
|
|
218
|
-
result = @builder.multi_rassign(val[0], val[1], val[2])
|
|
219
|
-
}
|
|
220
|
-
| rassign tASSOC lhs
|
|
221
|
-
{
|
|
222
|
-
result = @builder.rassign(val[0], val[1], val[2])
|
|
223
|
-
}
|
|
224
|
-
| rassign tASSOC mlhs
|
|
225
|
-
{
|
|
226
|
-
result = @builder.multi_rassign(val[0], val[1], val[2])
|
|
227
|
-
}
|
|
228
221
|
|
|
229
222
|
command_asgn: lhs tEQL command_rhs
|
|
230
223
|
{
|
|
@@ -301,19 +294,35 @@ rule
|
|
|
301
294
|
{
|
|
302
295
|
result = @builder.not_op(val[0], nil, val[1], nil)
|
|
303
296
|
}
|
|
297
|
+
| arg tASSOC
|
|
298
|
+
{
|
|
299
|
+
@lexer.state = :expr_beg
|
|
300
|
+
@lexer.command_start = false
|
|
301
|
+
@pattern_variables.push
|
|
302
|
+
|
|
303
|
+
result = @lexer.in_kwarg
|
|
304
|
+
@lexer.in_kwarg = true
|
|
305
|
+
}
|
|
306
|
+
p_expr
|
|
307
|
+
{
|
|
308
|
+
@pattern_variables.pop
|
|
309
|
+
@lexer.in_kwarg = val[2]
|
|
310
|
+
result = @builder.match_pattern(val[0], val[1], val[3])
|
|
311
|
+
}
|
|
304
312
|
| arg kIN
|
|
305
313
|
{
|
|
306
314
|
@lexer.state = :expr_beg
|
|
307
315
|
@lexer.command_start = false
|
|
308
|
-
pattern_variables.push
|
|
316
|
+
@pattern_variables.push
|
|
309
317
|
|
|
310
318
|
result = @lexer.in_kwarg
|
|
311
319
|
@lexer.in_kwarg = true
|
|
312
320
|
}
|
|
313
321
|
p_expr
|
|
314
322
|
{
|
|
323
|
+
@pattern_variables.pop
|
|
315
324
|
@lexer.in_kwarg = val[2]
|
|
316
|
-
result = @builder.
|
|
325
|
+
result = @builder.match_pattern_p(val[0], val[1], val[3])
|
|
317
326
|
}
|
|
318
327
|
| arg =tLBRACE_ARG
|
|
319
328
|
|
|
@@ -328,7 +337,7 @@ rule
|
|
|
328
337
|
result = [ val[1], val[2] ]
|
|
329
338
|
}
|
|
330
339
|
|
|
331
|
-
def_name:
|
|
340
|
+
def_name: fname
|
|
332
341
|
{
|
|
333
342
|
@static_env.extend_static
|
|
334
343
|
@lexer.cmdarg.push(false)
|
|
@@ -864,8 +873,11 @@ rule
|
|
|
864
873
|
result = @builder.ternary(val[0], val[1],
|
|
865
874
|
val[2], val[4], val[5])
|
|
866
875
|
}
|
|
867
|
-
| defn_head
|
|
876
|
+
| defn_head f_opt_paren_args tEQL arg
|
|
868
877
|
{
|
|
878
|
+
_def_t, name_t = val[0]
|
|
879
|
+
endless_method_name(name_t)
|
|
880
|
+
|
|
869
881
|
result = @builder.def_endless_method(*val[0],
|
|
870
882
|
val[1], val[2], val[3])
|
|
871
883
|
|
|
@@ -875,8 +887,11 @@ rule
|
|
|
875
887
|
@context.pop
|
|
876
888
|
@current_arg_stack.pop
|
|
877
889
|
}
|
|
878
|
-
| defn_head
|
|
890
|
+
| defn_head f_opt_paren_args tEQL arg kRESCUE_MOD arg
|
|
879
891
|
{
|
|
892
|
+
_def_t, name_t = val[0]
|
|
893
|
+
endless_method_name(name_t)
|
|
894
|
+
|
|
880
895
|
rescue_body = @builder.rescue_body(val[4],
|
|
881
896
|
nil, nil, nil,
|
|
882
897
|
nil, val[5])
|
|
@@ -892,8 +907,11 @@ rule
|
|
|
892
907
|
@context.pop
|
|
893
908
|
@current_arg_stack.pop
|
|
894
909
|
}
|
|
895
|
-
| defs_head
|
|
910
|
+
| defs_head f_opt_paren_args tEQL arg
|
|
896
911
|
{
|
|
912
|
+
_def_t, _recv, _dot_t, name_t = val[0]
|
|
913
|
+
endless_method_name(name_t)
|
|
914
|
+
|
|
897
915
|
result = @builder.def_endless_singleton(*val[0],
|
|
898
916
|
val[1], val[2], val[3])
|
|
899
917
|
|
|
@@ -903,8 +921,11 @@ rule
|
|
|
903
921
|
@context.pop
|
|
904
922
|
@current_arg_stack.pop
|
|
905
923
|
}
|
|
906
|
-
| defs_head
|
|
924
|
+
| defs_head f_opt_paren_args tEQL arg kRESCUE_MOD arg
|
|
907
925
|
{
|
|
926
|
+
_def_t, _recv, _dot_t, name_t = val[0]
|
|
927
|
+
endless_method_name(name_t)
|
|
928
|
+
|
|
908
929
|
rescue_body = @builder.rescue_body(val[4],
|
|
909
930
|
nil, nil, nil,
|
|
910
931
|
nil, val[5])
|
|
@@ -1847,6 +1868,8 @@ opt_block_args_tail:
|
|
|
1847
1868
|
}
|
|
1848
1869
|
p_top_expr then
|
|
1849
1870
|
{
|
|
1871
|
+
@pattern_variables.pop
|
|
1872
|
+
@pattern_hash_keys.pop
|
|
1850
1873
|
@lexer.in_kwarg = val[1]
|
|
1851
1874
|
}
|
|
1852
1875
|
compstmt p_cases
|
|
@@ -2615,6 +2638,12 @@ keyword_variable: kNIL
|
|
|
2615
2638
|
result = nil
|
|
2616
2639
|
}
|
|
2617
2640
|
|
|
2641
|
+
f_opt_paren_args: f_paren_args
|
|
2642
|
+
| none
|
|
2643
|
+
{
|
|
2644
|
+
result = @builder.args(nil, [], nil)
|
|
2645
|
+
}
|
|
2646
|
+
|
|
2618
2647
|
f_paren_args: tLPAREN2 f_args rparen
|
|
2619
2648
|
{
|
|
2620
2649
|
result = @builder.args(val[0], val[1], val[2])
|
|
@@ -2960,7 +2989,24 @@ keyword_variable: kNIL
|
|
|
2960
2989
|
{
|
|
2961
2990
|
result = []
|
|
2962
2991
|
}
|
|
2963
|
-
|
|
|
2992
|
+
| assoc_items trailer
|
|
2993
|
+
|
|
2994
|
+
assoc_items : assoc_item
|
|
2995
|
+
{
|
|
2996
|
+
result = [ val[0] ]
|
|
2997
|
+
}
|
|
2998
|
+
| assoc_items tCOMMA assoc_item
|
|
2999
|
+
{
|
|
3000
|
+
result = val[0] << val[2]
|
|
3001
|
+
}
|
|
3002
|
+
|
|
3003
|
+
assoc_item: assoc
|
|
3004
|
+
|
|
|
3005
|
+
tIDENTIFIER
|
|
3006
|
+
{
|
|
3007
|
+
lvar = @builder.accessible(@builder.ident(val[0]))
|
|
3008
|
+
result = @builder.ipair(lvar)
|
|
3009
|
+
}
|
|
2964
3010
|
|
|
2965
3011
|
assocs: assoc
|
|
2966
3012
|
{
|
|
@@ -2979,6 +3025,11 @@ keyword_variable: kNIL
|
|
|
2979
3025
|
{
|
|
2980
3026
|
result = @builder.pair_keyword(val[0], val[1])
|
|
2981
3027
|
}
|
|
3028
|
+
| tLABEL
|
|
3029
|
+
{
|
|
3030
|
+
lvar = @builder.accessible(@builder.ident(val[0]))
|
|
3031
|
+
result = @builder.ipair_keyword(lvar)
|
|
3032
|
+
}
|
|
2982
3033
|
| tSTRING_BEG string_contents tLABEL_END arg_value
|
|
2983
3034
|
{
|
|
2984
3035
|
result = @builder.pair_quoted(val[0], val[1], val[2], val[3])
|
|
@@ -3041,9 +3092,15 @@ require 'parser/ruby-next/parser_ext'
|
|
|
3041
3092
|
prepend Parser::NextExt
|
|
3042
3093
|
|
|
3043
3094
|
def version
|
|
3044
|
-
|
|
3095
|
+
30
|
|
3045
3096
|
end
|
|
3046
3097
|
|
|
3047
3098
|
def default_encoding
|
|
3048
3099
|
Encoding::UTF_8
|
|
3049
3100
|
end
|
|
3101
|
+
|
|
3102
|
+
def endless_method_name(name_t)
|
|
3103
|
+
if name_t[0].end_with?('=')
|
|
3104
|
+
diagnostic :error, :endless_setter, nil, name_t
|
|
3105
|
+
end
|
|
3106
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ruby-next-parser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vladimir Dementyev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-12-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: parser
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 2.7.
|
|
19
|
+
version: 2.7.2.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 2.7.
|
|
26
|
+
version: 2.7.2.0
|
|
27
27
|
description: "\n Parser extension to support edge and experimental Ruby syntax\n
|
|
28
28
|
\ "
|
|
29
29
|
email:
|