aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/language.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2014-10-26 16:27:25 +1300
committerAldo Cortesi <aldo@nullcube.com>2014-10-26 16:27:25 +1300
commitbd1f7ebb5c3cf3dfa613e194f4728bae1420b241 (patch)
tree1b7f5cc713b766c9cc088436033a36ee49600045 /libpathod/language.py
parent974bd9d0f9f3d231ff99496c55ae40355398cfc6 (diff)
downloadmitmproxy-bd1f7ebb5c3cf3dfa613e194f4728bae1420b241.tar.gz
mitmproxy-bd1f7ebb5c3cf3dfa613e194f4728bae1420b241.tar.bz2
mitmproxy-bd1f7ebb5c3cf3dfa613e194f4728bae1420b241.zip
Improve netability of grammars
Diffstat (limited to 'libpathod/language.py')
-rw-r--r--libpathod/language.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/libpathod/language.py b/libpathod/language.py
index 42fffcf8..e1f6820f 100644
--- a/libpathod/language.py
+++ b/libpathod/language.py
@@ -14,6 +14,11 @@ import utils
BLOCKSIZE = 1024
TRUNCATE = 1024
+
+def escape_backslash(s):
+ return s.replace("\\", "\\\\")
+
+
def quote(s):
quotechar = s[0]
s = s[1:-1]
@@ -186,7 +191,7 @@ class LiteralGenerator:
return self.s.__getslice__(a, b)
def __repr__(self):
- return '"%s"'%self.s
+ return "'%s'"%self.s
class RandomGenerator:
@@ -274,10 +279,16 @@ class ValueLiteral(_ValueLiteral):
@classmethod
def expr(klass):
e = v_literal.copy()
- return e.setParseAction(lambda x: klass(*x))
+ return e.setParseAction(klass.parseAction)
+
+ @classmethod
+ def parseAction(klass, x):
+ v = klass(*x)
+ return v
def spec(self):
- return quote("'%s'"%self.val.encode("string_escape"))
+ ret = "'%s'"%self.val.encode("string_escape")
+ return ret
class ValueNakedLiteral(_ValueLiteral):
@@ -361,7 +372,7 @@ class ValueFile(_Token):
return FileGenerator(s)
def spec(self):
- return '<"%s"'%self.path.encode("string_escape")
+ return "<'%s'"%self.path.encode("string_escape")
Value = pp.MatchFirst(
@@ -561,8 +572,7 @@ class PathodSpec(_Token):
def freeze(self, settings):
f = self.parsed.freeze(settings).spec()
- print [f]
- return PathodSpec(ValueLiteral(f))
+ return PathodSpec(ValueLiteral(f.encode("string_escape")))
class Path(_Component):