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
|
- Zig
|
||||||
- Parameter info (CTRL + P) is now properly integrated
|
- Parameter info (CTRL + P) is now properly integrated
|
||||||
|
- Parser error recovery (completion will still work even with missing semicolons in a statement)
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,7 @@ ContainerField ::= DOC_COMMENT? KEYWORD_COMPTUME? !KEYWORD_FN (IDENTIFIER COLON)
|
||||||
|
|
||||||
// *** Block Level ***
|
// *** Block Level ***
|
||||||
Statement
|
Statement
|
||||||
::= KEYWORD_COMPTIME? ComptimeStatement
|
::= KEYWORD_COMPTIME ComptimeStatement
|
||||||
| KEYWORD_NOSUSPEND BlockExprStatement
|
| KEYWORD_NOSUSPEND BlockExprStatement
|
||||||
| KEYWORD_DEFER BlockExprStatement
|
| KEYWORD_DEFER BlockExprStatement
|
||||||
| KEYWORD_ERRDEFER Payload? BlockExprStatement
|
| KEYWORD_ERRDEFER Payload? BlockExprStatement
|
||||||
|
@ -272,7 +272,9 @@ PrimaryExpr
|
||||||
|
|
||||||
IfExpr ::= IfPrefix Expr (KEYWORD_ELSE Payload? Expr)?
|
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)
|
LoopExpr ::= KEYWORD_INLINE? (ForExpr | WhileExpr)
|
||||||
|
|
||||||
|
@ -283,9 +285,12 @@ WhileExpr ::= WhilePrefix Expr (KEYWORD_ELSE Payload? Expr)?
|
||||||
CurlySuffixExpr ::= TypeExpr InitList?
|
CurlySuffixExpr ::= TypeExpr InitList?
|
||||||
|
|
||||||
InitList
|
InitList
|
||||||
::= LBRACE FieldInit (COMMA FieldInit)* COMMA? RBRACE
|
::= LBRACE FieldInit (COMMA ZB_InitList_FieldInit)* COMMA? RBRACE
|
||||||
| LBRACE Expr (COMMA Expr)* COMMA? RBRACE
|
| LBRACE Expr (COMMA ZB_InitList_Expr)* COMMA? RBRACE
|
||||||
| LBRACE RBRACE
|
| LBRACE RBRACE {pin=1}
|
||||||
|
|
||||||
|
private ZB_InitList_FieldInit ::= FieldInit {recoverWhile="#auto"}
|
||||||
|
private ZB_InitList_Expr ::= Expr {recoverWhile="#auto"}
|
||||||
|
|
||||||
TypeExpr ::= PrefixTypeOp* ErrorUnionExpr
|
TypeExpr ::= PrefixTypeOp* ErrorUnionExpr
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue