Add @let statement support
This commit is contained in:
parent
f3a7ee0c2e
commit
6d858472b2
|
|
@ -199,6 +199,7 @@ module.exports = grammar({
|
||||||
// Control flow
|
// Control flow
|
||||||
template_control_flow: ($) =>
|
template_control_flow: ($) =>
|
||||||
choice(
|
choice(
|
||||||
|
$.let_statement,
|
||||||
$.if_statement,
|
$.if_statement,
|
||||||
$.for_loop,
|
$.for_loop,
|
||||||
$.match_statement,
|
$.match_statement,
|
||||||
|
|
@ -206,6 +207,10 @@ module.exports = grammar({
|
||||||
$.continue_statement,
|
$.continue_statement,
|
||||||
),
|
),
|
||||||
|
|
||||||
|
// Let binding: @let name = expression
|
||||||
|
let_statement: ($) =>
|
||||||
|
seq("@let", $.pattern, "=", $.expression),
|
||||||
|
|
||||||
if_statement: ($) =>
|
if_statement: ($) =>
|
||||||
seq(
|
seq(
|
||||||
"@if",
|
"@if",
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
"@struct" @keyword
|
"@struct" @keyword
|
||||||
"@enum" @keyword
|
"@enum" @keyword
|
||||||
"@func" @keyword
|
"@func" @keyword
|
||||||
|
"@let" @keyword
|
||||||
"@if" @keyword
|
"@if" @keyword
|
||||||
"@for" @keyword
|
"@for" @keyword
|
||||||
"@match" @keyword
|
"@match" @keyword
|
||||||
|
|
|
||||||
|
|
@ -975,6 +975,10 @@
|
||||||
"template_control_flow": {
|
"template_control_flow": {
|
||||||
"type": "CHOICE",
|
"type": "CHOICE",
|
||||||
"members": [
|
"members": [
|
||||||
|
{
|
||||||
|
"type": "SYMBOL",
|
||||||
|
"name": "let_statement"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "SYMBOL",
|
"type": "SYMBOL",
|
||||||
"name": "if_statement"
|
"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": {
|
"if_statement": {
|
||||||
"type": "SEQ",
|
"type": "SEQ",
|
||||||
"members": [
|
"members": [
|
||||||
|
|
|
||||||
|
|
@ -826,6 +826,25 @@
|
||||||
"named": true,
|
"named": true,
|
||||||
"fields": {}
|
"fields": {}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "let_statement",
|
||||||
|
"named": true,
|
||||||
|
"fields": {},
|
||||||
|
"children": {
|
||||||
|
"multiple": true,
|
||||||
|
"required": true,
|
||||||
|
"types": [
|
||||||
|
{
|
||||||
|
"type": "expression",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "pattern",
|
||||||
|
"named": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "literal",
|
"type": "literal",
|
||||||
"named": true,
|
"named": true,
|
||||||
|
|
@ -1418,6 +1437,10 @@
|
||||||
"type": "if_statement",
|
"type": "if_statement",
|
||||||
"named": true
|
"named": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "let_statement",
|
||||||
|
"named": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "match_statement",
|
"type": "match_statement",
|
||||||
"named": true
|
"named": true
|
||||||
|
|
@ -1802,6 +1825,10 @@
|
||||||
"type": "@import",
|
"type": "@import",
|
||||||
"named": false
|
"named": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "@let",
|
||||||
|
"named": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "@match",
|
"type": "@match",
|
||||||
"named": false
|
"named": false
|
||||||
|
|
|
||||||
41190
src/parser.c
41190
src/parser.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue