Add multi-valued select expression

This commit is contained in:
Bruno BELANYI 2024-04-23 15:43:10 +00:00
parent 0816633d9a
commit d01bcf0f6d
5 changed files with 1926 additions and 1178 deletions

162
src/grammar.json generated
View file

@ -487,6 +487,65 @@
]
},
"select_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_select_value"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_select_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_select_value"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_select_value": {
"type": "SEQ",
"members": [
{
@ -588,26 +647,8 @@
"type": "FIELD",
"name": "pattern",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string_literal"
},
{
"type": "SYMBOL",
"name": "boolean_literal"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "default"
},
"named": true,
"value": "default"
}
]
"type": "SYMBOL",
"name": "select_pattern"
}
},
{
@ -624,6 +665,87 @@
}
]
},
"select_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_select_pattern"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_select_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_select_pattern"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_select_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string_literal"
},
{
"type": "SYMBOL",
"name": "boolean_literal"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "default"
},
"named": true,
"value": "default"
}
]
},
"_case_value": {
"type": "CHOICE",
"members": [

43
src/node-types.json generated
View file

@ -354,19 +354,7 @@
"required": true,
"types": [
{
"type": "boolean_literal",
"named": true
},
{
"type": "default",
"named": true
},
{
"type": "interpreted_string_literal",
"named": true
},
{
"type": "raw_string_literal",
"type": "select_pattern",
"named": true
}
]
@ -453,6 +441,33 @@
]
}
},
{
"type": "select_pattern",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "boolean_literal",
"named": true
},
{
"type": "default",
"named": true
},
{
"type": "interpreted_string_literal",
"named": true
},
{
"type": "raw_string_literal",
"named": true
}
]
}
},
{
"type": "select_value",
"named": true,
@ -476,7 +491,7 @@
]
},
"name": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{

2753
src/parser.c generated

File diff suppressed because it is too large Load diff