Compare commits
5 commits
2326d709fb
...
4e60cf3c2e
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e60cf3c2e | |||
| 6b0cdd9122 | |||
| 1fd9b67dbe | |||
| 3e685cb691 | |||
| 970241b323 |
12 changed files with 1679 additions and 1419 deletions
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "tree-sitter-bp"
|
||||
description = "Blueprint grammar for the tree-sitter parsing library"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
keywords = ["incremental", "parsing", "android", "blueprint"]
|
||||
categories = ["parsing", "text-editors"]
|
||||
repository = "https://git.belanyi.fr/ambroisie/tree-sitter-bp"
|
||||
|
|
|
|||
|
|
@ -163,9 +163,17 @@ module.exports = grammar({
|
|||
_select_pattern: ($) => choice(
|
||||
$._string_literal,
|
||||
$.boolean_literal,
|
||||
alias("any", $.any),
|
||||
$.pattern_binding,
|
||||
alias("default", $.default),
|
||||
),
|
||||
|
||||
pattern_binding: ($) => seq(
|
||||
field("value", alias("any", $.any)),
|
||||
field("operator", alias("@", $.operator)),
|
||||
field("binding", $.identifier),
|
||||
),
|
||||
|
||||
_case_value: ($) => choice(
|
||||
alias("unset", $.unset),
|
||||
$._expr,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tree-sitter-bp",
|
||||
"version": "0.4.0",
|
||||
"version": "0.5.0",
|
||||
"description": "Blueprint grammar for tree-sitter",
|
||||
"main": "bindings/node",
|
||||
"types": "bindings/node",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|||
[project]
|
||||
name = "tree-sitter-bp"
|
||||
description = "Bp grammar for tree-sitter"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
keywords = ["incremental", "parsing", "tree-sitter", "bp"]
|
||||
classifiers = [
|
||||
"Intended Audience :: Developers",
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
[
|
||||
(unset)
|
||||
(default)
|
||||
(any)
|
||||
] @variable.builtin
|
||||
(condition
|
||||
name: (identifier) @function.builtin)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@
|
|||
(assignment
|
||||
left: (identifier) @local.definition.var)
|
||||
|
||||
(pattern_binding
|
||||
binding: (identifier) @local.definition.var)
|
||||
|
||||
(identifier) @local.reference
|
||||
|
||||
; vim: sw=2 foldmethod=marker
|
||||
|
|
|
|||
52
src/grammar.json
generated
52
src/grammar.json
generated
|
|
@ -735,6 +735,19 @@
|
|||
"type": "SYMBOL",
|
||||
"name": "boolean_literal"
|
||||
},
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
"type": "STRING",
|
||||
"value": "any"
|
||||
},
|
||||
"named": true,
|
||||
"value": "any"
|
||||
},
|
||||
{
|
||||
"type": "SYMBOL",
|
||||
"name": "pattern_binding"
|
||||
},
|
||||
{
|
||||
"type": "ALIAS",
|
||||
"content": {
|
||||
|
|
@ -746,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": {
|
||||
"type": "CHOICE",
|
||||
"members": [
|
||||
|
|
|
|||
48
src/node-types.json
generated
48
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",
|
||||
"named": true,
|
||||
|
|
@ -483,6 +519,10 @@
|
|||
"multiple": true,
|
||||
"required": true,
|
||||
"types": [
|
||||
{
|
||||
"type": "any",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "boolean_literal",
|
||||
"named": true
|
||||
|
|
@ -495,6 +535,10 @@
|
|||
"type": "interpreted_string_literal",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "pattern_binding",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "raw_string_literal",
|
||||
"named": true
|
||||
|
|
@ -584,6 +628,10 @@
|
|||
"type": "]",
|
||||
"named": false
|
||||
},
|
||||
{
|
||||
"type": "any",
|
||||
"named": true
|
||||
},
|
||||
{
|
||||
"type": "default",
|
||||
"named": true
|
||||
|
|
|
|||
2960
src/parser.c
generated
2960
src/parser.c
generated
File diff suppressed because it is too large
Load diff
|
|
@ -4,6 +4,7 @@ Select
|
|||
|
||||
foo = select(release_variable("RELEASE_TEST"), {
|
||||
"d": "d2",
|
||||
any: unset,
|
||||
default: unset,
|
||||
})
|
||||
|
||||
|
|
@ -23,6 +24,10 @@ foo = select(release_variable("RELEASE_TEST"), {
|
|||
(select_pattern
|
||||
(interpreted_string_literal))
|
||||
(interpreted_string_literal))
|
||||
(select_case
|
||||
(select_pattern
|
||||
(any))
|
||||
(unset))
|
||||
(select_case
|
||||
(select_pattern
|
||||
(default))
|
||||
|
|
@ -35,6 +40,7 @@ Select (soong config variable)
|
|||
foo = select(soong_config_variable("my_namespace", "my_var"), {
|
||||
"foo": unset,
|
||||
"default": "bar",
|
||||
any @ foo: unset,
|
||||
})
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
|
@ -57,7 +63,14 @@ foo = select(soong_config_variable("my_namespace", "my_var"), {
|
|||
(select_case
|
||||
(select_pattern
|
||||
(interpreted_string_literal))
|
||||
(interpreted_string_literal))))))
|
||||
(interpreted_string_literal))
|
||||
(select_case
|
||||
(select_pattern
|
||||
(pattern_binding
|
||||
(any)
|
||||
(operator)
|
||||
(identifier)))
|
||||
(unset))))))
|
||||
|
||||
================================================================================
|
||||
Select (no default)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@ foo = select(soong_config_variable("my_namespace", "my_var"), {
|
|||
// ^ function.builtin
|
||||
"foo": unset,
|
||||
// ^ variable.builtin
|
||||
any: unset,
|
||||
// <- variable.builtin
|
||||
default: select(variant("VARIANT"), {}),
|
||||
// <- variable.builtin
|
||||
// ^ function.builtin
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
foo = select(soong_config_variable("my_namespace", "my_var"), {
|
||||
// ^ keyword.conditional
|
||||
"foo": unset,
|
||||
any @ foo: unset,
|
||||
// ^ operator
|
||||
// ^ variable
|
||||
default: "bar",
|
||||
})
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue