Merge pull request #4 from Eyenseo/main

Fix conditionals not accepting string
add_libdifftastic
Alexandre A. Muller 2021-12-16 17:14:17 +07:00 committed by GitHub
commit a4b9187417
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 21911 additions and 17609 deletions

@ -62,6 +62,7 @@ module.exports = grammar({
$._primary,
$._name,
$._string,
],
extras: $ => [
@ -375,7 +376,6 @@ module.exports = grammar({
),
_conditional_args_cmp: $ => choice(
// (arg0,arg1)
seq(
'(',
optional(field('arg0', $._primary)),
@ -383,20 +383,12 @@ module.exports = grammar({
optional(field('arg1', $._primary)),
')'
),
// 'arg0' 'arg1'
// "arg0" "arg1"
// 'arg0' 'arg1'
// 'arg0' "arg1"
seq(
field('arg0', $._conditional_arg_cmp),
field('arg1', $._conditional_arg_cmp),
field('arg0', $._primary),
field('arg1', $._primary),
),
),
_conditional_arg_cmp: $ => choice(
seq('"', optional($._primary), '"'),
seq("'", optional($._primary), "'"),
),
// }}}
// Variables {{{
_variable: $ => choice(
@ -507,6 +499,7 @@ module.exports = grammar({
$._variable,
$._function,
$.concatenation,
$.string,
),
concatenation: $ => prec.right(seq(
@ -517,6 +510,17 @@ module.exports = grammar({
// Names {{{
_name: $ => field('name',$.word),
string: $ => field('string',choice(
seq('"', optional($._string), '"'),
seq("'", optional($._string), "'"),
)),
_string: $ => repeat1(choice(
$._variable,
$._function,
token(prec(-1,/([^'"$\r\n\\]|\\\\|\\[^\r\n])+/)),
)),
word: $ => token(repeat1(choice(
new RegExp ('['+CHARSET+']'),
new RegExp ('\\\\['+ESCAPE_SET+']'),

@ -41,6 +41,7 @@
[
(text)
(string)
(raw_text)
] @string

@ -1734,7 +1734,7 @@
"name": "arg0",
"content": {
"type": "SYMBOL",
"name": "_conditional_arg_cmp"
"name": "_primary"
}
},
{
@ -1742,68 +1742,13 @@
"name": "arg1",
"content": {
"type": "SYMBOL",
"name": "_conditional_arg_cmp"
"name": "_primary"
}
}
]
}
]
},
"_conditional_arg_cmp": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_primary"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_primary"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
}
]
},
"_variable": {
"type": "CHOICE",
"members": [
@ -2972,6 +2917,10 @@
{
"type": "SYMBOL",
"name": "concatenation"
},
{
"type": "SYMBOL",
"name": "string"
}
]
},
@ -3007,6 +2956,92 @@
"name": "word"
}
},
"string": {
"type": "FIELD",
"name": "string",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
}
]
}
},
"_string": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function"
},
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "PATTERN",
"value": "([^'\"$\\r\\n\\\\]|\\\\\\\\|\\\\[^\\r\\n])+"
}
}
}
]
}
},
"word": {
"type": "TOKEN",
"content": {
@ -3785,7 +3820,8 @@
"_order_only_prerequisites",
"_target_or_pattern_assignment",
"_primary",
"_name"
"_name",
"_string"
],
"supertypes": []
}

@ -178,6 +178,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -759,6 +763,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -780,17 +788,9 @@
"named": true,
"fields": {
"arg0": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
"type": "\"",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": "archive",
"named": true
@ -811,6 +811,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -826,17 +830,9 @@
]
},
"arg1": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
"type": "\"",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": "archive",
"named": true
@ -857,6 +853,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -901,6 +901,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -922,17 +926,9 @@
"named": true,
"fields": {
"arg0": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
"type": "\"",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": "archive",
"named": true
@ -953,6 +949,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -968,17 +968,9 @@
]
},
"arg1": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
"type": "\"",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": "archive",
"named": true
@ -999,6 +991,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1059,6 +1055,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1200,6 +1200,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1243,6 +1247,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1286,6 +1294,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1547,6 +1559,46 @@
]
}
},
{
"type": "string",
"named": true,
"fields": {
"string": {
"multiple": true,
"required": true,
"types": [
{
"type": "\"",
"named": false
},
{
"type": "'",
"named": false
},
{
"type": "automatic_variable",
"named": true
},
{
"type": "function_call",
"named": true
},
{
"type": "shell_function",
"named": true
},
{
"type": "substitution_reference",
"named": true
},
{
"type": "variable_reference",
"named": true
}
]
}
}
},
{
"type": "substitution_reference",
"named": true,
@ -1575,6 +1627,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1613,6 +1669,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1651,6 +1711,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1695,6 +1759,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true
@ -1867,6 +1935,10 @@
"type": "shell_function",
"named": true
},
{
"type": "string",
"named": true
},
{
"type": "substitution_reference",
"named": true

File diff suppressed because it is too large Load Diff

@ -102,8 +102,8 @@ struct TSLanguage {
const uint16_t *small_parse_table;
const uint32_t *small_parse_table_map;
const TSParseActionEntry *parse_actions;
const char **symbol_names;
const char **field_names;
const char * const *symbol_names;
const char * const *field_names;
const TSFieldMapSlice *field_map_slices;
const TSFieldMapEntry *field_map_entries;
const TSSymbolMetadata *symbol_metadata;

@ -1,7 +1,7 @@
=======================================
Conditionals, ifeq, ifneq, ifdef, ifdef
=======================================
ifeq (arg0, arg1)
ifeq ("string $(sort 1 2 3)", 'string ${VAR}')
endif
ifneq (arg0, arg1)
@ -18,8 +18,13 @@ endif
(makefile
(conditional
condition: (ifeq_directive
arg0: (word)
arg1: (word)))
arg0: (string
string: (function_call
(arguments
argument: (text))))
arg1: (string
string: (variable_reference
(word)))))
(conditional
condition: (ifneq_directive
arg0: (word)
@ -56,8 +61,8 @@ endif
(makefile
(conditional
condition: (ifeq_directive
arg0: (word)
arg1: (word))))
arg0: (string)
arg1: (string))))
========================================
Conditionals, double quote, double quote
@ -70,8 +75,8 @@ endif
(makefile
(conditional
condition: (ifeq_directive
arg0: (word)
arg1: (word))))
arg0: (string)
arg1: (string))))
========================================
Conditionals, double quote, single quote
@ -84,8 +89,8 @@ endif
(makefile
(conditional
condition: (ifeq_directive
arg0: (word)
arg1: (word))))
arg0: (string)
arg1: (string))))
========================================
Conditionals, single quote, double quote
@ -98,8 +103,8 @@ endif
(makefile
(conditional
condition: (ifeq_directive
arg0: (word)
arg1: (word))))
arg0: (string)
arg1: (string))))
======================================
Conditionals, else