Add select binding
This commit is contained in:
parent
3e685cb691
commit
1fd9b67dbe
|
@ -164,9 +164,16 @@ module.exports = grammar({
|
||||||
$._string_literal,
|
$._string_literal,
|
||||||
$.boolean_literal,
|
$.boolean_literal,
|
||||||
alias("any", $.any),
|
alias("any", $.any),
|
||||||
|
$.pattern_binding,
|
||||||
alias("default", $.default),
|
alias("default", $.default),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
pattern_binding: ($) => seq(
|
||||||
|
field("value", alias("any", $.any)),
|
||||||
|
field("operator", alias("@", $.operator)),
|
||||||
|
field("binding", $.identifier),
|
||||||
|
),
|
||||||
|
|
||||||
_case_value: ($) => choice(
|
_case_value: ($) => choice(
|
||||||
alias("unset", $.unset),
|
alias("unset", $.unset),
|
||||||
$._expr,
|
$._expr,
|
||||||
|
|
43
src/grammar.json
generated
43
src/grammar.json
generated
|
@ -744,6 +744,10 @@
|
||||||
"named": true,
|
"named": true,
|
||||||
"value": "any"
|
"value": "any"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "pattern_binding"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "ALIAS",
|
"type": "ALIAS",
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -755,6 +759,45 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"pattern_binding": {
|
||||||
|
"type": "SEQ",
|
||||||
|
"members": [
|
||||||
|
{
|
||||||
|
"type": "FIELD",
|
||||||
|
"name": "value",
|
||||||
|
"content": {
|
||||||
|
"type": "ALIAS",
|
||||||
|
"content": {
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "any"
|
||||||
|
},
|
||||||
|
"named": true,
|
||||||
|
"value": "any"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "FIELD",
|
||||||
|
"name": "operator",
|
||||||
|
"content": {
|
||||||
|
"type": "ALIAS",
|
||||||
|
"content": {
|
||||||
|
"type": "STRING",
|
||||||
|
"value": "@"
|
||||||
|
},
|
||||||
|
"named": true,
|
||||||
|
"value": "operator"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "FIELD",
|
||||||
|
"name": "binding",
|
||||||
|
"content": {
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "identifier"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"_case_value": {
|
"_case_value": {
|
||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
"members": [
|
"members": [
|
||||||
|
|
40
src/node-types.json
generated
40
src/node-types.json
generated
|
@ -321,6 +321,42 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "pattern_binding",
|
||||||
|
"named": true,
|
||||||
|
"fields": {
|
||||||
|
"binding": {
|
||||||
|
"multiple": false,
|
||||||
|
"required": true,
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "identifier",
|
||||||
|
"named": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"operator": {
|
||||||
|
"multiple": false,
|
||||||
|
"required": true,
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "operator",
|
||||||
|
"named": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"multiple": false,
|
||||||
|
"required": true,
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "any",
|
||||||
|
"named": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "property",
|
"type": "property",
|
||||||
"named": true,
|
"named": true,
|
||||||
|
@ -499,6 +535,10 @@
|
||||||
"type": "interpreted_string_literal",
|
"type": "interpreted_string_literal",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "pattern_binding",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "raw_string_literal",
|
"type": "raw_string_literal",
|
||||||
"named": true
|
"named": true
|
||||||
|
|
2398
src/parser.c
generated
2398
src/parser.c
generated
File diff suppressed because it is too large
Load diff
|
@ -40,6 +40,7 @@ Select (soong config variable)
|
||||||
foo = select(soong_config_variable("my_namespace", "my_var"), {
|
foo = select(soong_config_variable("my_namespace", "my_var"), {
|
||||||
"foo": unset,
|
"foo": unset,
|
||||||
"default": "bar",
|
"default": "bar",
|
||||||
|
any @ foo: unset,
|
||||||
})
|
})
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
@ -62,7 +63,14 @@ foo = select(soong_config_variable("my_namespace", "my_var"), {
|
||||||
(select_case
|
(select_case
|
||||||
(select_pattern
|
(select_pattern
|
||||||
(interpreted_string_literal))
|
(interpreted_string_literal))
|
||||||
(interpreted_string_literal))))))
|
(interpreted_string_literal))
|
||||||
|
(select_case
|
||||||
|
(select_pattern
|
||||||
|
(pattern_binding
|
||||||
|
(any)
|
||||||
|
(operator)
|
||||||
|
(identifier)))
|
||||||
|
(unset))))))
|
||||||
|
|
||||||
================================================================================
|
================================================================================
|
||||||
Select (no default)
|
Select (no default)
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
foo = select(soong_config_variable("my_namespace", "my_var"), {
|
foo = select(soong_config_variable("my_namespace", "my_var"), {
|
||||||
// ^ keyword.conditional
|
// ^ keyword.conditional
|
||||||
"foo": unset,
|
"foo": unset,
|
||||||
|
any @ foo: unset,
|
||||||
|
// ^ operator
|
||||||
|
// ^ variable
|
||||||
default: "bar",
|
default: "bar",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue