Fix comments being regconized incorrectly inside quoted arguments
This commit is contained in:
parent
52cbc7add1
commit
44a026bbf5
|
@ -116,3 +116,43 @@ message("${var_${var}}")
|
|||
)
|
||||
)
|
||||
)
|
||||
|
||||
======================================================================
|
||||
Lookalike bracket comment inside quoted argument [quoted_argument]
|
||||
======================================================================
|
||||
|
||||
message("${var_${var}} #[[comment]]")
|
||||
|
||||
---
|
||||
(source_file
|
||||
(normal_command
|
||||
(identifier)
|
||||
(argument
|
||||
(quoted_argument
|
||||
(quoted_element
|
||||
(variable_ref (normal_var (variable (variable_ref (normal_var (variable))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
======================================================================
|
||||
Lookalike line comment inside quoted argument [quoted_argument]
|
||||
======================================================================
|
||||
|
||||
message("${var_${var}} #comment")
|
||||
|
||||
---
|
||||
(source_file
|
||||
(normal_command
|
||||
(identifier)
|
||||
(argument
|
||||
(quoted_argument
|
||||
(quoted_element
|
||||
(variable_ref (normal_var (variable (variable_ref (normal_var (variable))))))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -17,7 +17,7 @@ module.exports = grammar({
|
|||
name: "cmake",
|
||||
|
||||
externals: ($) => [$.bracket_argument, $.bracket_comment, $.line_comment],
|
||||
extras: ($) => [$.bracket_comment, $.line_comment],
|
||||
extras: (_) => [],
|
||||
|
||||
rules: {
|
||||
source_file: ($) => repeat($._untrimmed_command_invocation),
|
||||
|
@ -34,7 +34,7 @@ module.exports = grammar({
|
|||
cache_var: ($) => seq("$", "CACHE", "{", $.variable, "}"),
|
||||
|
||||
argument: ($) => choice($.bracket_argument, $.quoted_argument, $.unquoted_argument),
|
||||
_untrimmed_argument: ($) => choice(/\s/, $.argument),
|
||||
_untrimmed_argument: ($) => choice(/\s/, $.bracket_comment, $.line_comment, $.argument),
|
||||
|
||||
quoted_argument: ($) => seq('"', optional($.quoted_element), '"'),
|
||||
quoted_element: ($) => repeat1(choice($.variable_ref, /[^\\"]/, $.escape_sequence)),
|
||||
|
@ -72,7 +72,7 @@ module.exports = grammar({
|
|||
|
||||
_command_invocation: ($) =>
|
||||
choice($.normal_command, $.if_condition, $.foreach_loop, $.while_loop, $.function_def, $.macro_def),
|
||||
_untrimmed_command_invocation: ($) => choice(/\s/, $._command_invocation),
|
||||
_untrimmed_command_invocation: ($) => choice(/\s/, $.bracket_comment, $.line_comment, $._command_invocation),
|
||||
|
||||
...commandNames(...commands),
|
||||
identifier: (_) => /[A-Za-z_][A-Za-z0-9_]*/,
|
||||
|
|
|
@ -186,6 +186,14 @@
|
|||
"type": "PATTERN",
|
||||
"value": "\\s"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "bracket_comment"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "line_comment"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "argument"
|
||||
|
@ -872,6 +880,14 @@
|
|||
"type": "PATTERN",
|
||||
"value": "\\s"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "bracket_comment"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "line_comment"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "_command_invocation"
|
||||
|
@ -935,16 +951,7 @@
|
|||
"value": "[+-]*\\d+"
|
||||
}
|
||||
},
|
||||
"extras": [
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "bracket_comment"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "line_comment"
|
||||
}
|
||||
],
|
||||
"extras": [],
|
||||
"conflicts": [],
|
||||
"precedences": [],
|
||||
"externals": [
|
||||
|
|
|
@ -68,9 +68,17 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "elseif",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -106,9 +114,17 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "endfunction",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -144,9 +160,17 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "endmacro",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -202,9 +226,17 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "foreach",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -217,6 +249,10 @@
|
|||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "endforeach_command",
|
||||
"named": true
|
||||
|
@ -237,6 +273,10 @@
|
|||
"type": "if_condition",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "macro_def",
|
||||
"named": true
|
||||
|
@ -264,9 +304,17 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "function",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -279,6 +327,10 @@
|
|||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "endfunction_command",
|
||||
"named": true
|
||||
|
@ -299,6 +351,10 @@
|
|||
"type": "if_condition",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "macro_def",
|
||||
"named": true
|
||||
|
@ -326,9 +382,17 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "if",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -341,6 +405,10 @@
|
|||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "else_command",
|
||||
"named": true
|
||||
|
@ -369,6 +437,10 @@
|
|||
"type": "if_condition",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "macro_def",
|
||||
"named": true
|
||||
|
@ -396,6 +468,14 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "macro",
|
||||
"named": true
|
||||
|
@ -411,6 +491,10 @@
|
|||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "endmacro_command",
|
||||
"named": true
|
||||
|
@ -427,6 +511,10 @@
|
|||
"type": "if_condition",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "macro_command",
|
||||
"named": true
|
||||
|
@ -458,9 +546,17 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "identifier",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -522,6 +618,10 @@
|
|||
"multiple": true,
|
||||
"required": false,
|
||||
"types": [
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "foreach_loop",
|
||||
"named": true
|
||||
|
@ -534,6 +634,10 @@
|
|||
"type": "if_condition",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "macro_def",
|
||||
"named": true
|
||||
|
@ -622,6 +726,14 @@
|
|||
"type": "argument",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "while",
|
||||
"named": true
|
||||
|
@ -637,6 +749,10 @@
|
|||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "bracket_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "endwhile_command",
|
||||
"named": true
|
||||
|
@ -653,6 +769,10 @@
|
|||
"type": "if_condition",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "line_comment",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "macro_def",
|
||||
"named": true
|
||||
|
|
21101
src/parser.c
21101
src/parser.c
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue