diff --git a/CHANGELOG.md b/CHANGELOG.md index b08bfa4a..07ea53ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,11 @@ Changelog structure reference: ## [Unreleased] +### Fixed + +- Zig + - Unterminated string at the end of the file soft-locks the editor + ## [20.1.0] ### Added diff --git a/core/src/main/grammar/Zig.flex b/core/src/main/grammar/Zig.flex index 307239dc..00af51a9 100644 --- a/core/src/main/grammar/Zig.flex +++ b/core/src/main/grammar/Zig.flex @@ -222,6 +222,7 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* "'" { yybegin(CHAR_LIT); } {char_char}*"'" { yybegin(YYINITIAL); return CHAR_LITERAL; } + <> { yybegin(YYINITIAL); return BAD_SQUOT; } [^] { yypushback(1); yybegin(UNT_SQUOT); } {FLOAT} { return FLOAT; } @@ -229,6 +230,7 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* "\"" { yybegin(STR_LIT); } {string_char}*"\"" { yybegin(YYINITIAL); return STRING_LITERAL_SINGLE; } + <> { yybegin(YYINITIAL); return BAD_DQUOT; } [^] { yypushback(1); yybegin(UNT_DQUOT); } "\\\\" { yybegin(STR_MULT_LINE); } {all_nl_wrap} "\\\\" { } @@ -237,12 +239,17 @@ BUILTINIDENTIFIER="@"[A-Za-z_][A-Za-z0-9_]* {IDENTIFIER_PLAIN} { return IDENTIFIER; } "@\"" { yybegin(ID_QUOT); } {string_char}*"\"" { yybegin(YYINITIAL); return IDENTIFIER; } + <> { yybegin(YYINITIAL); return BAD_DQUOT; } [^] { yypushback(1); yybegin(UNT_DQUOT); } {BUILTINIDENTIFIER} { return BUILTINIDENTIFIER; } - [^\n]*{CRLF} { yybegin(YYINITIAL); return BAD_SQUOT; } - [^\n]*{CRLF} { yybegin(YYINITIAL); return BAD_DQUOT; } + <> { yybegin(YYINITIAL); return BAD_SQUOT; } + {CRLF} { yybegin(YYINITIAL); return BAD_SQUOT; } + [^\n]* { } + <> { yybegin(YYINITIAL); return BAD_DQUOT; } + {CRLF} { yybegin(YYINITIAL); return BAD_DQUOT; } + [^\n]* { } {WHITE_SPACE} { return WHITE_SPACE; }