@@ -29,6 +29,7 @@ Nonterminals
2929 call_args_optional
3030 tuple
3131 list
32+ list_args
3233 bin_base_expr
3334 bin_specifier
3435 bin_specifier_list
@@ -172,8 +173,8 @@ np_call_exprs -> brackets_call : '$1'.
172173np_call_exprs -> brackets_expr : '$1' .
173174
174175% 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' ).
177178
178179% Method call
179180np_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'.
182183without_args_method_call_expr -> np_call_exprs dot_eol method_name : build_method_call ('$1' , '$3' , []).
183184
184185% 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' ).
186187brackets_expr -> call_exprs : '$1' .
187188
188189% Calls with parens
@@ -230,8 +231,8 @@ _np_call_exprs -> _brackets_call : '$1'.
230231_np_call_exprs -> _brackets_expr : '$1' .
231232
232233% 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' ).
235236
236237% Method call
237238_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'.
240241_without_args_method_call_expr -> _np_call_exprs dot_eol method_name : build_method_call ('$1' , '$3' , []).
241242
242243% 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' ).
244245_brackets_expr -> _call_exprs : '$1' .
245246
246247% Calls with parens
@@ -303,6 +304,8 @@ list -> open_bracket ']' : build_list(?line('$1'), []).
303304list -> open_bracket comma_expr close_bracket : build_list (? line ('$1' ), '$2' ).
304305list -> open_bracket comma_expr '|' expr close_bracket : build_list (? line ('$1' ), '$2' , '$4' ).
305306
307+ list_args -> open_bracket comma_expr close_bracket : { ? line ('$1' ), '$2' }.
308+
306309% Binaries declaration.
307310bin_base_expr -> expr : build_bin_element ('$1' , default , default ).
308311bin_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
437440np_erlang_call_expr -> Erlang '.' base_identifier call_args_no_parens : build_erlang_call ('$1' , erlang , ? chars ('$3' ), '$4' ).
438441np_erlang_call_expr -> Erlang '.' base_identifier : build_erlang_call ('$1' , erlang , ? chars ('$3' ), []).
439442
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
440448erlang_call_expr -> Erlang '.' base_identifier '.' base_identifier call_args_parens : build_erlang_call ('$1' , ? chars ('$3' ), ? chars ('$5' ), '$6' ).
441449erlang_call_expr -> Erlang '.' base_identifier call_args_parens : build_erlang_call ('$1' , erlang , ? chars ('$3' ), '$4' ).
442450
@@ -562,8 +570,8 @@ Erlang code.
562570build_identifier (Thing ) ->
563571 { identifier , ? line (Thing ), ? chars (Thing ) }.
564572
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 ) ).
567575
568576build_fun_call (Target , Args ) ->
569577 { fun_call , ? line (Target ), Target , Args }.
0 commit comments