Support r"xxx" raw strings

Review URL: https://chromiumcodereview.appspot.com//10914213

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12225 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
hausner@google.com 2012-09-11 22:53:45 +00:00
parent 3317817025
commit 8f5eea3291
2 changed files with 31 additions and 21 deletions

View file

@ -831,6 +831,16 @@ void Scanner::Scan() {
ScanLiteralString(true);
}
break;
case 'r':
if ((LookaheadChar(1) == '"') || (LookaheadChar(1) == '\'')) {
ReadChar();
ScanLiteralString(true);
} else {
ScanIdent();
}
break;
case '"':
case '\'':
ScanLiteralString(false);

View file

@ -4,35 +4,35 @@
class RawStringTest {
static testMain() {
Expect.equals("abcd", @"abcd");
Expect.equals("", @"");
Expect.equals("", @'');
Expect.equals("", @"""""");
Expect.equals("", @'''''');
Expect.equals("''''", @"''''");
Expect.equals('""""', @'""""');
Expect.equals("1\n2\n3", @"""1
Expect.equals("abcd", r"abcd");
Expect.equals("", r"");
Expect.equals("", r'');
Expect.equals("", r"""""");
Expect.equals("", r'''''');
Expect.equals("''''", r"''''");
Expect.equals('""""', r'""""');
Expect.equals("1\n2\n3", r"""1
2
3""");
Expect.equals("1\n2\n3", @'''1
Expect.equals("1\n2\n3", r'''1
2
3''');
Expect.equals("1", @"""
Expect.equals("1", r"""
1""");
Expect.equals("1", @'''
Expect.equals("1", r'''
1''');
Expect.equals("'", @"'");
Expect.equals('"', @'"');
Expect.equals("1", @"1");
Expect.equals("1", @"1");
Expect.equals("\$", @"$");
Expect.equals("\\", @"\");
Expect.equals("\\", @'\');
Expect.equals("\${12}", @"${12}");
Expect.equals("'", r"'");
Expect.equals('"', r'"');
Expect.equals("1", r"1");
Expect.equals("1", r"1");
Expect.equals("\$", r"$");
Expect.equals("\\", r"\");
Expect.equals("\\", r'\');
Expect.equals("\${12}", r"${12}");
Expect.equals("\\a\\b\\c\\d\\e\\f\\g\\h\\i\\j\\k\\l\\m",
@"\a\b\c\d\e\f\g\h\i\j\k\l\m");
r"\a\b\c\d\e\f\g\h\i\j\k\l\m");
Expect.equals("\\n\\o\\p\\q\\r\\s\\t\\u\\v\\w\\x\\y\\z",
@"\n\o\p\q\r\s\t\u\v\w\x\y\z");
r"\n\o\p\q\r\s\t\u\v\w\x\y\z");
}
}
main() {