finally allow escaped quotes in strings
This commit is contained in:
@@ -242,8 +242,14 @@ impl Tokenizer {
|
|||||||
self.add_token(TokenType::Char)?
|
self.add_token(TokenType::Char)?
|
||||||
}
|
}
|
||||||
'"' => {
|
'"' => {
|
||||||
while !self.eof() && self.peek() != '"' {
|
let start_loc = self.loc.clone();
|
||||||
if self.peek() == '\n' {
|
|
||||||
|
while !self.eof() {
|
||||||
|
if self.peek() == '\\' {
|
||||||
|
self.advance();
|
||||||
|
} else if self.peek() == '"' {
|
||||||
|
break;
|
||||||
|
} else if self.peek() == '\n' {
|
||||||
self.loc.line += 1;
|
self.loc.line += 1;
|
||||||
self.loc.column = 1;
|
self.loc.column = 1;
|
||||||
}
|
}
|
||||||
@@ -251,7 +257,10 @@ impl Tokenizer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.eof() {
|
if self.eof() {
|
||||||
return error!(self.loc, "unterminated string");
|
return error!(
|
||||||
|
self.loc,
|
||||||
|
format!("unterminated string, started at {}", start_loc)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.advance();
|
self.advance();
|
||||||
@@ -402,6 +411,7 @@ impl Tokenizer {
|
|||||||
Some('n') => result.push('\n'),
|
Some('n') => result.push('\n'),
|
||||||
Some('r') => result.push('\r'),
|
Some('r') => result.push('\r'),
|
||||||
Some('t') => result.push('\t'),
|
Some('t') => result.push('\t'),
|
||||||
|
Some('0') => result.push('\0'),
|
||||||
Some('\\') => result.push('\\'),
|
Some('\\') => result.push('\\'),
|
||||||
Some('\'') => result.push('\''),
|
Some('\'') => result.push('\''),
|
||||||
Some('"') => result.push('"'),
|
Some('"') => result.push('"'),
|
||||||
|
|||||||
Reference in New Issue
Block a user