From 5b5ffb1fb65fdb4edb43b6576fc1935b69436c30 Mon Sep 17 00:00:00 2001 From: Shunsuke Shibayama Date: Fri, 16 Sep 2022 14:57:58 +0900 Subject: [PATCH] Update lex.rs --- compiler/erg_parser/lex.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/compiler/erg_parser/lex.rs b/compiler/erg_parser/lex.rs index 0683f316..6acdfba4 100644 --- a/compiler/erg_parser/lex.rs +++ b/compiler/erg_parser/lex.rs @@ -558,14 +558,25 @@ impl Lexer /*<'a>*/ { if c == '\\' { let next_c = self.consume().unwrap(); match next_c { + '0' => s.push('\0'), + 'r' => s.push('\r'), 'n' => s.push('\n'), '\'' => s.push('\''), 't' => s.push_str(" "), // tab is invalid, so changed into 4 whitespace + '\\' => s.push('\\'), _ => { - s.push(next_c); - if Self::is_bidi(next_c) { - return Err(self._invalid_unicode_character(&s)); - } + let token = self.emit_token(Illegal, &format!("\\{next_c}")); + return Err(LexError::syntax_error( + 0, + token.loc(), + switch_lang!( + "japanese" => format!("不正なエスケープシーケンスです: \\{}", next_c), + "simplified_chinese" => format!("不合法的转义序列: \\{}", next_c), + "traditional_chinese" => format!("不合法的轉義序列: \\{}", next_c), + "english" => format!("illegal escape sequence: \\{}", next_c), + ), + None, + )); } } } else {