From 13866f5c1571932acef929147f0635e8fc976754 Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Fri, 18 Aug 2023 04:17:40 -0400 Subject: [PATCH] feat: support multiple variable assignnments --- grammar.js | 4 ++++ test/corpus/literals.txt | 22 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/grammar.js b/grammar.js index eb4eaf6e0..24662fafe 100644 --- a/grammar.js +++ b/grammar.js @@ -27,6 +27,7 @@ module.exports = grammar({ conflicts: $ => [ [$._expression, $.command_name], + [$.command, $.variable_assignments], ], inline: $ => [ @@ -110,6 +111,7 @@ module.exports = grammar({ _statement_not_subshell: $ => choice( $.redirected_statement, $.variable_assignment, + $.variable_assignments, $.command, $.declaration_command, $.unset_command, @@ -397,6 +399,8 @@ module.exports = grammar({ )), ), + variable_assignments: $ => seq($.variable_assignment, repeat1($.variable_assignment)), + subscript: $ => seq( field('name', $.variable_name), '[', diff --git a/test/corpus/literals.txt b/test/corpus/literals.txt index a4ee01b50..41c12da62 100644 --- a/test/corpus/literals.txt +++ b/test/corpus/literals.txt @@ -765,6 +765,28 @@ loop=; variables=& here=;; (variable_assignment (variable_name))) +================================================================================ +Multiple variable assignments +================================================================================ + +component_type="${1}" item_name="${2?}" + +-------------------------------------------------------------------------------- + +(program + (variable_assignments + (variable_assignment + (variable_name) + (string + (expansion + (variable_name)))) + (variable_assignment + (variable_name) + (string + (expansion + (variable_name) + (word)))))) + ================================================================================ Arithmetic expansions ================================================================================