From 700669bbd0ab3ae0c5a56985ce13ca896d342a3a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 22 Jul 2019 17:56:19 +0300 Subject: kill old lexer --- crates/ra_syntax/src/parsing/lexer/strings.rs | 112 -------------------------- 1 file changed, 112 deletions(-) delete mode 100644 crates/ra_syntax/src/parsing/lexer/strings.rs (limited to 'crates/ra_syntax/src/parsing/lexer/strings.rs') diff --git a/crates/ra_syntax/src/parsing/lexer/strings.rs b/crates/ra_syntax/src/parsing/lexer/strings.rs deleted file mode 100644 index f74acff9e..000000000 --- a/crates/ra_syntax/src/parsing/lexer/strings.rs +++ /dev/null @@ -1,112 +0,0 @@ -use crate::{ - parsing::lexer::ptr::Ptr, - SyntaxKind::{self, *}, -}; - -pub(crate) fn is_string_literal_start(c: char, c1: Option, c2: Option) -> bool { - match (c, c1, c2) { - ('r', Some('"'), _) - | ('r', Some('#'), Some('"')) - | ('r', Some('#'), Some('#')) - | ('b', Some('"'), _) - | ('b', Some('\''), _) - | ('b', Some('r'), Some('"')) - | ('b', Some('r'), Some('#')) => true, - _ => false, - } -} - -pub(crate) fn scan_char(ptr: &mut Ptr) { - while let Some(c) = ptr.current() { - match c { - '\\' => { - ptr.bump(); - if ptr.at('\\') || ptr.at('\'') { - ptr.bump(); - } - } - '\'' => { - ptr.bump(); - return; - } - '\n' => return, - _ => { - ptr.bump(); - } - } - } -} - -pub(crate) fn scan_byte_char_or_string(ptr: &mut Ptr) -> SyntaxKind { - // unwrapping and not-exhaustive match are ok - // because of string_literal_start - let c = ptr.bump().unwrap(); - match c { - '\'' => { - scan_byte(ptr); - BYTE - } - '"' => { - scan_byte_string(ptr); - BYTE_STRING - } - 'r' => { - scan_raw_string(ptr); - RAW_BYTE_STRING - } - _ => unreachable!(), - } -} - -pub(crate) fn scan_string(ptr: &mut Ptr) { - while let Some(c) = ptr.current() { - match c { - '\\' => { - ptr.bump(); - if ptr.at('\\') || ptr.at('"') { - ptr.bump(); - } - } - '"' => { - ptr.bump(); - return; - } - _ => { - ptr.bump(); - } - } - } -} - -pub(crate) fn scan_raw_string(ptr: &mut Ptr) { - let mut hashes = 0; - while ptr.at('#') { - hashes += 1; - ptr.bump(); - } - if !ptr.at('"') { - return; - } - ptr.bump(); - - while let Some(c) = ptr.bump() { - if c == '"' { - let mut hashes_left = hashes; - while ptr.at('#') && hashes_left > 0 { - hashes_left -= 1; - ptr.bump(); - } - if hashes_left == 0 { - return; - } - } - } -} - -fn scan_byte(ptr: &mut Ptr) { - scan_char(ptr) -} - -fn scan_byte_string(ptr: &mut Ptr) { - scan_string(ptr) -} -- cgit v1.2.3