feat: Grammar error recovery

This commit is contained in:
FalsePattern 2024-03-15 16:50:14 +01:00
parent 4b2e9b44f6
commit 1ff76b15a7
Signed by: falsepattern
GPG key ID: E930CDEC50C50E23
2 changed files with 11 additions and 5 deletions

View file

@ -22,6 +22,7 @@ Changelog structure reference:
- Zig
- Parameter info (CTRL + P) is now properly integrated
- Parser error recovery (completion will still work even with missing semicolons in a statement)
### Fixed

View file

@ -192,7 +192,7 @@ ContainerField ::= DOC_COMMENT? KEYWORD_COMPTUME? !KEYWORD_FN (IDENTIFIER COLON)
// *** Block Level ***
Statement
::= KEYWORD_COMPTIME? ComptimeStatement
::= KEYWORD_COMPTIME ComptimeStatement
| KEYWORD_NOSUSPEND BlockExprStatement
| KEYWORD_DEFER BlockExprStatement
| KEYWORD_ERRDEFER Payload? BlockExprStatement
@ -272,7 +272,9 @@ PrimaryExpr
IfExpr ::= IfPrefix Expr (KEYWORD_ELSE Payload? Expr)?
Block ::= LBRACE Statement* RBRACE
Block ::= LBRACE ZB_Block_Statement* RBRACE {pin(".*")=1}
private ZB_Block_Statement ::= Statement {recoverWhile="#auto"}
LoopExpr ::= KEYWORD_INLINE? (ForExpr | WhileExpr)
@ -283,9 +285,12 @@ WhileExpr ::= WhilePrefix Expr (KEYWORD_ELSE Payload? Expr)?
CurlySuffixExpr ::= TypeExpr InitList?
InitList
::= LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
| LBRACE Expr (COMMA Expr)* COMMA? RBRACE
| LBRACE RBRACE
::= LBRACE FieldInit (COMMA ZB_InitList_FieldInit)* COMMA? RBRACE
| LBRACE Expr (COMMA ZB_InitList_Expr)* COMMA? RBRACE
| LBRACE RBRACE {pin=1}
private ZB_InitList_FieldInit ::= FieldInit {recoverWhile="#auto"}
private ZB_InitList_Expr ::= Expr {recoverWhile="#auto"}
TypeExpr ::= PrefixTypeOp* ErrorUnionExpr