Add @let statement support

This commit is contained in:
Michael Netshipise 2026-01-19 08:00:36 +02:00
parent f3a7ee0c2e
commit 6d858472b2
5 changed files with 23496 additions and 17752 deletions

View File

@ -199,6 +199,7 @@ module.exports = grammar({
// Control flow
template_control_flow: ($) =>
choice(
$.let_statement,
$.if_statement,
$.for_loop,
$.match_statement,
@ -206,6 +207,10 @@ module.exports = grammar({
$.continue_statement,
),
// Let binding: @let name = expression
let_statement: ($) =>
seq("@let", $.pattern, "=", $.expression),
if_statement: ($) =>
seq(
"@if",

View File

@ -13,6 +13,7 @@
"@struct" @keyword
"@enum" @keyword
"@func" @keyword
"@let" @keyword
"@if" @keyword
"@for" @keyword
"@match" @keyword

View File

@ -975,6 +975,10 @@
"template_control_flow": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "let_statement"
},
{
"type": "SYMBOL",
"name": "if_statement"
@ -997,6 +1001,27 @@
}
]
},
"let_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@let"
},
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"if_statement": {
"type": "SEQ",
"members": [

View File

@ -826,6 +826,25 @@
"named": true,
"fields": {}
},
{
"type": "let_statement",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "expression",
"named": true
},
{
"type": "pattern",
"named": true
}
]
}
},
{
"type": "literal",
"named": true,
@ -1418,6 +1437,10 @@
"type": "if_statement",
"named": true
},
{
"type": "let_statement",
"named": true
},
{
"type": "match_statement",
"named": true
@ -1802,6 +1825,10 @@
"type": "@import",
"named": false
},
{
"type": "@let",
"named": false
},
{
"type": "@match",
"named": false

41190
src/parser.c

File diff suppressed because it is too large Load Diff