Fix grammar to have more than one argument between parentheses

This commit is contained in:
Uy Ha 2021-07-01 17:02:13 +02:00
parent 19bb3af0d5
commit f3ecd63233
4 changed files with 8045 additions and 8018 deletions

View file

@ -36,3 +36,17 @@ message(STATUS ((TEST))
(argument (unquoted_argument)) (MISSING ")") (argument (unquoted_argument)) (MISSING ")")
) )
) )
===============================================
Many arguments inside parentheses [parentheses]
===============================================
message(STATUS (TEST SECOND_TEST))
---
(source_file
(normal_command
(identifier)
(argument (unquoted_argument))
(argument (unquoted_argument))
(argument (unquoted_argument))
)
)

View file

@ -35,7 +35,7 @@ module.exports = grammar({
argument: ($) => choice($.bracket_argument, $.quoted_argument, $.unquoted_argument), argument: ($) => choice($.bracket_argument, $.quoted_argument, $.unquoted_argument),
_untrimmed_argument: ($) => choice(/\s/, $.bracket_comment, $.line_comment, $.argument, $._paren_argument), _untrimmed_argument: ($) => choice(/\s/, $.bracket_comment, $.line_comment, $.argument, $._paren_argument),
_paren_argument: ($) => seq("(", $._untrimmed_argument, ")"), _paren_argument: ($) => seq("(", repeat($._untrimmed_argument), ")"),
quoted_argument: ($) => seq('"', optional($.quoted_element), '"'), quoted_argument: ($) => seq('"', optional($.quoted_element), '"'),
quoted_element: ($) => repeat1(choice($.variable_ref, /[^\\"]/, $.escape_sequence)), quoted_element: ($) => repeat1(choice($.variable_ref, /[^\\"]/, $.escape_sequence)),

View file

@ -212,8 +212,11 @@
"value": "(" "value": "("
}, },
{ {
"type": "REPEAT",
"content": {
"type": "SYMBOL", "type": "SYMBOL",
"name": "_untrimmed_argument" "name": "_untrimmed_argument"
}
}, },
{ {
"type": "STRING", "type": "STRING",

16040
src/parser.c

File diff suppressed because it is too large Load diff