fix: stop excluding single quote (') in unquoted arguments
This commit is contained in:
parent
3dfc596025
commit
d748fb2821
|
@ -136,3 +136,21 @@ message($var)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
=====================================================
|
||||||
|
Single quote in unquoted_argument [unquoted_argument]
|
||||||
|
=====================================================
|
||||||
|
|
||||||
|
message(hello'world)
|
||||||
|
|
||||||
|
---
|
||||||
|
(source_file
|
||||||
|
(normal_command
|
||||||
|
(identifier)
|
||||||
|
(argument_list
|
||||||
|
(argument
|
||||||
|
(unquoted_argument)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
|
@ -49,7 +49,7 @@ module.exports = grammar({
|
||||||
|
|
||||||
unquoted_argument: ($) =>
|
unquoted_argument: ($) =>
|
||||||
prec.right(repeat1(choice($.variable_ref, $.gen_exp, $._unquoted_text, $.escape_sequence))),
|
prec.right(repeat1(choice($.variable_ref, $.gen_exp, $._unquoted_text, $.escape_sequence))),
|
||||||
_unquoted_text: (_) => prec.left(repeat1(choice("$", /[^()#"\\']/))),
|
_unquoted_text: (_) => prec.left(repeat1(choice("$", /[^()#"\\]/))),
|
||||||
|
|
||||||
body: ($) => prec.right(repeat1($._untrimmed_command_invocation)),
|
body: ($) => prec.right(repeat1($._untrimmed_command_invocation)),
|
||||||
argument_list: ($) => repeat1($._untrimmed_argument),
|
argument_list: ($) => repeat1($._untrimmed_argument),
|
||||||
|
|
|
@ -427,7 +427,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "PATTERN",
|
"type": "PATTERN",
|
||||||
"value": "[^()#\"\\\\']"
|
"value": "[^()#\"\\\\]"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
32
src/parser.c
32
src/parser.c
|
@ -1616,8 +1616,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead == '\n' ||
|
if (lookahead == '\n' ||
|
||||||
lookahead == '\r') ADVANCE(42);
|
lookahead == '\r') ADVANCE(42);
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '#' &&
|
lookahead != '#') ADVANCE(49);
|
||||||
lookahead != '\'') ADVANCE(49);
|
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 1:
|
case 1:
|
||||||
if (lookahead == '"') ADVANCE(45);
|
if (lookahead == '"') ADVANCE(45);
|
||||||
|
@ -1635,8 +1634,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
lookahead == '\r' ||
|
lookahead == '\r' ||
|
||||||
lookahead == ' ') ADVANCE(42);
|
lookahead == ' ') ADVANCE(42);
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '#' &&
|
lookahead != '#') ADVANCE(49);
|
||||||
lookahead != '\'') ADVANCE(49);
|
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 2:
|
case 2:
|
||||||
if (lookahead == '"') ADVANCE(45);
|
if (lookahead == '"') ADVANCE(45);
|
||||||
|
@ -1650,8 +1648,7 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
lookahead == '\r' ||
|
lookahead == '\r' ||
|
||||||
lookahead == ' ') ADVANCE(42);
|
lookahead == ' ') ADVANCE(42);
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '#' &&
|
lookahead != '#') ADVANCE(49);
|
||||||
lookahead != '\'') ADVANCE(49);
|
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 3:
|
case 3:
|
||||||
if (lookahead == '"') ADVANCE(45);
|
if (lookahead == '"') ADVANCE(45);
|
||||||
|
@ -1661,7 +1658,6 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead == '\\') ADVANCE(13);
|
if (lookahead == '\\') ADVANCE(13);
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
lookahead != '\'' &&
|
|
||||||
lookahead != '(') ADVANCE(49);
|
lookahead != '(') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 4:
|
case 4:
|
||||||
|
@ -1677,7 +1673,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead == '{') ADVANCE(34);
|
if (lookahead == '{') ADVANCE(34);
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
(lookahead < '\'' || ')' < lookahead)) ADVANCE(49);
|
lookahead != '(' &&
|
||||||
|
lookahead != ')') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 5:
|
case 5:
|
||||||
if (lookahead == '"') ADVANCE(45);
|
if (lookahead == '"') ADVANCE(45);
|
||||||
|
@ -1688,7 +1685,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead == '\\') ADVANCE(13);
|
if (lookahead == '\\') ADVANCE(13);
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
(lookahead < '\'' || ')' < lookahead)) ADVANCE(49);
|
lookahead != '(' &&
|
||||||
|
lookahead != ')') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 6:
|
case 6:
|
||||||
if (lookahead == '"') ADVANCE(45);
|
if (lookahead == '"') ADVANCE(45);
|
||||||
|
@ -1709,7 +1707,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead == '\\') ADVANCE(13);
|
if (lookahead == '\\') ADVANCE(13);
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
(lookahead < '\'' || ')' < lookahead)) ADVANCE(49);
|
lookahead != '(' &&
|
||||||
|
lookahead != ')') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 8:
|
case 8:
|
||||||
if (lookahead == '"') ADVANCE(45);
|
if (lookahead == '"') ADVANCE(45);
|
||||||
|
@ -1744,7 +1743,6 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '"' &&
|
lookahead != '"' &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
lookahead != '\'' &&
|
|
||||||
lookahead != '(') ADVANCE(49);
|
lookahead != '(') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 11:
|
case 11:
|
||||||
|
@ -1760,7 +1758,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '"' &&
|
lookahead != '"' &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
(lookahead < '\'' || ')' < lookahead)) ADVANCE(49);
|
lookahead != '(' &&
|
||||||
|
lookahead != ')') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 12:
|
case 12:
|
||||||
if (lookahead == '$') ADVANCE(33);
|
if (lookahead == '$') ADVANCE(33);
|
||||||
|
@ -1771,7 +1770,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '"' &&
|
lookahead != '"' &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
(lookahead < '\'' || ')' < lookahead)) ADVANCE(49);
|
lookahead != '(' &&
|
||||||
|
lookahead != ')') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 13:
|
case 13:
|
||||||
if (lookahead == ';') ADVANCE(31);
|
if (lookahead == ';') ADVANCE(31);
|
||||||
|
@ -2053,7 +2053,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '"' &&
|
lookahead != '"' &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
(lookahead < '\'' || ')' < lookahead)) ADVANCE(49);
|
lookahead != '(' &&
|
||||||
|
lookahead != ')') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 55:
|
case 55:
|
||||||
ACCEPT_TOKEN(aux_sym_endwhile_command_token1);
|
ACCEPT_TOKEN(aux_sym_endwhile_command_token1);
|
||||||
|
@ -2067,7 +2068,8 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) {
|
||||||
if (lookahead != 0 &&
|
if (lookahead != 0 &&
|
||||||
lookahead != '"' &&
|
lookahead != '"' &&
|
||||||
lookahead != '#' &&
|
lookahead != '#' &&
|
||||||
(lookahead < '\'' || ')' < lookahead)) ADVANCE(49);
|
lookahead != '(' &&
|
||||||
|
lookahead != ')') ADVANCE(49);
|
||||||
END_STATE();
|
END_STATE();
|
||||||
case 56:
|
case 56:
|
||||||
ACCEPT_TOKEN(aux_sym_endwhile_command_token1);
|
ACCEPT_TOKEN(aux_sym_endwhile_command_token1);
|
||||||
|
|
Loading…
Reference in a new issue