feat: Grammar error recovery
This commit is contained in:
parent
4b2e9b44f6
commit
1ff76b15a7
2 changed files with 11 additions and 5 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue