comptime expandable match statements

This commit is contained in:
2026-07-17 14:29:50 +02:00
parent 1f25e6cd1d
commit 97f1c06057
22 changed files with 120821 additions and 119318 deletions
+182 -69
View File
@@ -2402,7 +2402,7 @@
"members": [
{
"type": "STRING",
"value": "inline"
"value": "expand"
},
{
"type": "BLANK"
@@ -2593,90 +2593,127 @@
]
},
"match_arm": {
"type": "SEQ",
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "SEQ",
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
"type": "STRING",
"value": "else"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "expression"
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
]
}
}
]
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "match_capture"
},
{
"type": "BLANK"
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "match_capture"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_branch_body"
}
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_branch_body"
}
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "expand"
},
{
"type": "SYMBOL",
"name": "expand_match_capture"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_newline"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_branch_body"
}
}
]
}
]
},
@@ -2722,6 +2759,82 @@
}
]
},
"expand_match_capture": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "sink"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "tag",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "sink"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|"
}
]
},
"_branch_body": {
"type": "SYMBOL",
"name": "statement"
+43 -5
View File
@@ -658,6 +658,40 @@
]
}
},
{
"type": "expand_match_capture",
"named": true,
"fields": {
"tag": {
"multiple": false,
"required": false,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "sink",
"named": true
}
]
},
"value": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "sink",
"named": true
}
]
}
}
},
{
"type": "expression",
"named": true,
@@ -1429,7 +1463,7 @@
},
"pattern": {
"multiple": true,
"required": true,
"required": false,
"types": [
{
"type": ",",
@@ -1450,6 +1484,10 @@
"multiple": false,
"required": false,
"types": [
{
"type": "expand_match_capture",
"named": true
},
{
"type": "match_capture",
"named": true
@@ -2575,6 +2613,10 @@
"type": "escape_sequence",
"named": true
},
{
"type": "expand",
"named": false
},
{
"type": "f32",
"named": false
@@ -2635,10 +2677,6 @@
"type": "import",
"named": false
},
{
"type": "inline",
"named": false
},
{
"type": "int",
"named": false
+119691 -119134
View File
File diff suppressed because it is too large Load Diff