feat!: Labeled switch

This commit is contained in:
FalsePattern 2024-10-17 11:22:08 +02:00
parent bba1874840
commit 8d56f9cadf
Signed by: falsepattern
GPG key ID: E930CDEC50C50E23
2 changed files with 8 additions and 4 deletions

View file

@ -17,6 +17,11 @@ Changelog structure reference:
## [Unreleased] ## [Unreleased]
### Added
- Zig
- Labeled switch statements
### Changed ### Changed
- LSP - LSP

View file

@ -197,7 +197,6 @@ Statement
| KEYWORD_ERRDEFER Payload? BlockExprStatement | KEYWORD_ERRDEFER Payload? BlockExprStatement
| IfStatement | IfStatement
| LabeledStatement | LabeledStatement
| SwitchExpr
| VarDeclExprStatement | VarDeclExprStatement
ComptimeStatement ComptimeStatement
@ -211,7 +210,7 @@ private ZB_IfStatement_Body
::= BlockExpr ( KEYWORD_ELSE Payload? Statement )? ::= BlockExpr ( KEYWORD_ELSE Payload? Statement )?
| AssignExpr ( SEMICOLON | KEYWORD_ELSE Payload? Statement ) | AssignExpr ( SEMICOLON | KEYWORD_ELSE Payload? Statement )
LabeledStatement ::= BlockLabel? (Block | LoopStatement) LabeledStatement ::= BlockLabel? (Block | LoopStatement | SwitchExpr)
LoopStatement ::= KEYWORD_INLINE? (ForStatement | WhileStatement) LoopStatement ::= KEYWORD_INLINE? (ForStatement | WhileStatement)
@ -273,7 +272,7 @@ PrimaryExpr
| KEYWORD_BREAK BreakLabel? Expr? | KEYWORD_BREAK BreakLabel? Expr?
| KEYWORD_COMPTIME Expr | KEYWORD_COMPTIME Expr
| KEYWORD_NOSUSPEND Expr | KEYWORD_NOSUSPEND Expr
| KEYWORD_CONTINUE BreakLabel? | KEYWORD_CONTINUE BreakLabel? Expr?
| KEYWORD_RESUME Expr | KEYWORD_RESUME Expr
| KEYWORD_RETURN Expr? | KEYWORD_RETURN Expr?
| BlockLabel? LoopExpr | BlockLabel? LoopExpr
@ -336,7 +335,6 @@ PrimaryTypeExpr
| KEYWORD_ANYFRAME | KEYWORD_ANYFRAME
| KEYWORD_UNREACHABLE | KEYWORD_UNREACHABLE
| StringLiteral | StringLiteral
| SwitchExpr
ContainerDecl ::= (KEYWORD_EXTERN | KEYWORD_PACKED)? ContainerDeclAuto ContainerDecl ::= (KEYWORD_EXTERN | KEYWORD_PACKED)? ContainerDeclAuto
@ -349,6 +347,7 @@ IfTypeExpr ::= IfPrefix TypeExpr (KEYWORD_ELSE Payload? TypeExpr)?
LabeledTypeExpr LabeledTypeExpr
::= BlockLabel Block ::= BlockLabel Block
| BlockLabel? LoopTypeExpr | BlockLabel? LoopTypeExpr
| BlockLabel? SwitchExpr
LoopTypeExpr ::= KEYWORD_INLINE? (ForTypeExpr | WhileTypeExpr) LoopTypeExpr ::= KEYWORD_INLINE? (ForTypeExpr | WhileTypeExpr)