diff --git a/grammar.js b/grammar.js index cb7cc8c5f..ad943b38b 100644 --- a/grammar.js +++ b/grammar.js @@ -700,7 +700,13 @@ module.exports = grammar({ $.command_substitution, ), optional(seq( - token(prec(1, '/')), + choice( + alias(token(prec(1, '/')), '/'), + alias(token(prec(1, ',')), ','), + alias(token(prec(1, ',,')), ',,'), + alias(token(prec(1, '^')), '^'), + alias(token(prec(1, '^^')), '^^'), + ), optional($.regex), )), repeat(prec.right(choice( diff --git a/test/corpus/literals.txt b/test/corpus/literals.txt index b91d77b2e..ab5516d5b 100644 --- a/test/corpus/literals.txt +++ b/test/corpus/literals.txt @@ -168,6 +168,8 @@ X="${Y%<}" Z="${A#*}" C="${D%*}" F="${#!}" +G=${H,,[I]} +J=${K^^[L]} -------------------------------------------------------------------------------- @@ -261,7 +263,17 @@ F="${#!}" (variable_assignment (variable_name) (string - (expansion)))) + (expansion))) + (variable_assignment + (variable_name) + (expansion + (variable_name) + (regex))) + (variable_assignment + (variable_name) + (expansion + (variable_name) + (regex)))) ================================================================================ Variable expansions in strings