@@ -29,6 +29,7 @@ Nonterminals
29
29
call_args_optional
30
30
tuple
31
31
list
32
+ list_args
32
33
bin_base_expr
33
34
bin_specifier
34
35
bin_specifier_list
@@ -172,8 +173,8 @@ np_call_exprs -> brackets_call : '$1'.
172
173
np_call_exprs -> brackets_expr : '$1' .
173
174
174
175
% Brackets call
175
- brackets_call -> np_call_exprs dot_eol bracket_identifier open_bracket comma_expr close_bracket : build_bracket_call (build_method_call ('$1' , '$3' , []), '$4' , '$5 ' ).
176
- brackets_call -> bracket_identifier open_bracket comma_expr close_bracket : build_bracket_call (build_identifier ('$1' ), '$2' , '$3 ' ).
176
+ brackets_call -> np_call_exprs dot_eol bracket_identifier list_args : build_bracket_call (build_method_call ('$1' , '$3' , []), '$4' ).
177
+ brackets_call -> bracket_identifier list_args : build_bracket_call (build_identifier ('$1' ), '$2' ).
177
178
178
179
% Method call
179
180
np_method_call_expr -> np_call_exprs dot_eol method_name call_args_no_parens : build_method_call ('$1' , '$3' , '$4' ).
@@ -182,7 +183,7 @@ np_method_call_expr -> without_args_method_call_expr : '$1'.
182
183
without_args_method_call_expr -> np_call_exprs dot_eol method_name : build_method_call ('$1' , '$3' , []).
183
184
184
185
% Brackets expression
185
- brackets_expr -> call_exprs open_bracket comma_expr close_bracket : build_bracket_call ('$1' , '$2' , '$3 ' ).
186
+ brackets_expr -> call_exprs list_args : build_bracket_call ('$1' , '$2' ).
186
187
brackets_expr -> call_exprs : '$1' .
187
188
188
189
% Calls with parens
@@ -230,8 +231,8 @@ _np_call_exprs -> _brackets_call : '$1'.
230
231
_np_call_exprs -> _brackets_expr : '$1' .
231
232
232
233
% Brackets call
233
- _brackets_call -> _np_call_exprs dot_eol bracket_identifier open_bracket comma_expr close_bracket : build_bracket_call (build_method_call ('$1' , '$3' , []), '$4' , '$5 ' ).
234
- _brackets_call -> bracket_identifier open_bracket comma_expr close_bracket : build_bracket_call (build_identifier ('$1' ), '$2' , '$3 ' ).
234
+ _brackets_call -> _np_call_exprs dot_eol bracket_identifier list_args : build_bracket_call (build_method_call ('$1' , '$3' , []), '$4' ).
235
+ _brackets_call -> bracket_identifier list_args : build_bracket_call (build_identifier ('$1' ), '$2' ).
235
236
236
237
% Method call
237
238
_np_method_call_expr -> _np_call_exprs dot_eol method_name call_args_no_parens : build_method_call ('$1' , '$3' , '$4' ).
@@ -240,7 +241,7 @@ _np_method_call_expr -> _without_args_method_call_expr : '$1'.
240
241
_without_args_method_call_expr -> _np_call_exprs dot_eol method_name : build_method_call ('$1' , '$3' , []).
241
242
242
243
% Brackets expression
243
- _brackets_expr -> _call_exprs open_bracket comma_expr close_bracket : build_bracket_call ('$1' , '$2' , '$3 ' ).
244
+ _brackets_expr -> _call_exprs list_args : build_bracket_call ('$1' , '$2' ).
244
245
_brackets_expr -> _call_exprs : '$1' .
245
246
246
247
% Calls with parens
@@ -303,6 +304,8 @@ list -> open_bracket ']' : build_list(?line('$1'), []).
303
304
list -> open_bracket comma_expr close_bracket : build_list (? line ('$1' ), '$2' ).
304
305
list -> open_bracket comma_expr '|' expr close_bracket : build_list (? line ('$1' ), '$2' , '$4' ).
305
306
307
+ list_args -> open_bracket comma_expr close_bracket : { ? line ('$1' ), '$2' }.
308
+
306
309
% Binaries declaration.
307
310
bin_base_expr -> expr : build_bin_element ('$1' , default , default ).
308
311
bin_base_expr -> expr ':' integer : build_bin_element ('$1' , '$3' , default ).
@@ -437,6 +440,11 @@ np_erlang_call_expr -> Erlang '.' base_identifier '.' base_identifier : build_er
437
440
np_erlang_call_expr -> Erlang '.' base_identifier call_args_no_parens : build_erlang_call ('$1' , erlang , ? chars ('$3' ), '$4' ).
438
441
np_erlang_call_expr -> Erlang '.' base_identifier : build_erlang_call ('$1' , erlang , ? chars ('$3' ), []).
439
442
443
+ % Erlang bracket calls
444
+ np_erlang_call_expr -> Erlang '.' base_identifier '.' bracket_identifier list_args : build_bracket_call (build_erlang_call ('$1' , ? chars ('$3' ), ? chars ('$5' ), []), '$6' ).
445
+ np_erlang_call_expr -> Erlang '.' bracket_identifier list_args : build_bracket_call (build_erlang_call ('$1' , erlang , ? chars ('$3' ), []), '$4' ).
446
+
447
+ % Erlang calls with explicit parens
440
448
erlang_call_expr -> Erlang '.' base_identifier '.' base_identifier call_args_parens : build_erlang_call ('$1' , ? chars ('$3' ), ? chars ('$5' ), '$6' ).
441
449
erlang_call_expr -> Erlang '.' base_identifier call_args_parens : build_erlang_call ('$1' , erlang , ? chars ('$3' ), '$4' ).
442
450
@@ -562,8 +570,8 @@ Erlang code.
562
570
build_identifier (Thing ) ->
563
571
{ identifier , ? line (Thing ), ? chars (Thing ) }.
564
572
565
- build_bracket_call (Expr , Bracket , Args ) ->
566
- build_method_call (Expr , { identifier , ? line ( Bracket ), '[]' }, Args ).
573
+ build_bracket_call (Expr , Args ) ->
574
+ build_method_call (Expr , { identifier , element ( 1 , Args ), '[]' }, element ( 2 , Args ) ).
567
575
568
576
build_fun_call (Target , Args ) ->
569
577
{ fun_call , ? line (Target ), Target , Args }.
0 commit comments