pass
m = re.match(
- r'^(?P<var>[a-z]+)\.(?P<member>[^(]+)(?:\(+(?P<args>[^()]*)\))?$',
+ r'^(?P<var>[$a-zA-Z0-9_]+)\.(?P<member>[^(]+)(?:\(+(?P<args>[^()]*)\))?$',
expr)
if m:
variable = m.group('var')
return argvals[0].join(obj)
if member == 'reverse':
assert len(argvals) == 0
- return obj[::-1]
+ obj.reverse()
+ return obj
if member == 'slice':
assert len(argvals) == 1
return obj[argvals[0]:]
index, howMany = argvals
res = []
for i in range(index, min(index + howMany, len(obj))):
- res.append(obj.pop(i))
+ res.append(obj.pop(index))
return res
return obj[member](argvals)
return a % b
m = re.match(
- r'^(?P<func>[.a-zA-Z$]+)\((?P<args>[a-z0-9,]+)\)$', expr)
+ r'^(?P<func>[a-zA-Z$]+)\((?P<args>[a-z0-9,]+)\)$', expr)
if m:
fname = m.group('func')
argvals = tuple([