From e9201f5ced4ba3b19d4e548deb8e8d3b461f77ab Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Mon, 3 Aug 2009 05:29:22 +0000 Subject: [PATCH] lit: Don't treat '\' as an escape in unquoted strings, on Win32. This turns out to not be a very good idea. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77957 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/test/ShUtil.py | 20 ++++++++++---------- utils/test/TestRunner.py | 3 ++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/utils/test/ShUtil.py b/utils/test/ShUtil.py index bf56a11413..dd4b584ac0 100644 --- a/utils/test/ShUtil.py +++ b/utils/test/ShUtil.py @@ -2,14 +2,12 @@ import itertools import Util -# FIXME: It would be nice to at least match a few other things like `...`, $( -# ... ), $VAR, etc., if only so we can nicely say "we don't support this". - class ShLexer: - def __init__(self, data): + def __init__(self, data, win32Escapes = False): self.data = data self.pos = 0 self.end = len(data) + self.win32Escapes = win32Escapes def eat(self): c = self.data[self.pos] @@ -67,8 +65,8 @@ class ShLexer: return (tok[0], num) elif c == '"': self.eat() - str += self.lex_arg_quoted('"') - elif c == '\\': + str += self.lex_arg_quoted('"') + elif not self.win32Escapes and c == '\\': # Outside of a string, '\\' escapes everything. self.eat() if self.pos == self.end: @@ -211,9 +209,9 @@ class Seq: (other.lhs, other.op, other.rhs)) class ShParser: - def __init__(self, data): + def __init__(self, data, win32Escapes = False): self.data = data - self.tokens = ShLexer(data).lex() + self.tokens = ShLexer(data, win32Escapes = win32Escapes).lex() def lex(self): try: @@ -294,8 +292,8 @@ class ShParser: import unittest class TestShLexer(unittest.TestCase): - def lex(self, str): - return list(ShLexer(str).lex()) + def lex(self, str, *args, **kwargs): + return list(ShLexer(str, *args, **kwargs).lex()) def test_basic(self): self.assertEqual(self.lex('a|b>c&d