From 2f24fb4f2c5d8708533a1b0155e1e884bd4b2ba2 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 31 Dec 2017 14:02:55 +0300 Subject: Lexer: byte strings --- src/lexer/strings.rs | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'src/lexer') diff --git a/src/lexer/strings.rs b/src/lexer/strings.rs index 40e5e4528..283ce8feb 100644 --- a/src/lexer/strings.rs +++ b/src/lexer/strings.rs @@ -33,30 +33,51 @@ pub(crate) fn scan_byte_char_or_string(ptr: &mut Ptr) -> SyntaxKind { match c { '\'' => { scan_byte(ptr); - CHAR + BYTE } '"' => { scan_byte_string(ptr); - CHAR + BYTE_STRING } 'r' => { scan_raw_byte_string(ptr); - CHAR + RAW_BYTE_STRING } _ => unreachable!(), } } fn scan_byte(ptr: &mut Ptr) { - + if ptr.next_is('\'') { + ptr.bump(); + return + } + ptr.bump(); + if ptr.next_is('\'') { + ptr.bump(); + return + } } fn scan_byte_string(ptr: &mut Ptr) { - + while let Some(c) = ptr.bump() { + if c == '"' { + return + } + } } fn scan_raw_byte_string(ptr: &mut Ptr) { + if !ptr.next_is('"') { + return + } + ptr.bump(); + while let Some(c) = ptr.bump() { + if c == '"' { + return + } + } } fn scan_char_or_byte(ptr: &mut Ptr) { -- cgit v1.2.3