[pypy-svn] r17223 - pypy/dist/pypy/interpreter/pyparser
adim at codespeak.net
adim at codespeak.net
Mon Sep 5 12:16:15 CEST 2005
Author: adim
Date: Mon Sep 5 12:16:13 2005
New Revision: 17223
Modified:
pypy/dist/pypy/interpreter/pyparser/astbuilder.py
Log:
this should fix most of '.name'-related SomeObjects
Modified: pypy/dist/pypy/interpreter/pyparser/astbuilder.py
==============================================================================
--- pypy/dist/pypy/interpreter/pyparser/astbuilder.py (original)
+++ pypy/dist/pypy/interpreter/pyparser/astbuilder.py Mon Sep 5 12:16:13 2005
@@ -389,7 +389,7 @@
def reduce_slice(obj, sliceobj):
"""generic factory for Slice nodes"""
assert isinstance(sliceobj, SlicelistObject)
- if sliceobj.name == 'slice':
+ if sliceobj.fake_rulename == 'slice':
start = sliceobj.value[0]
end = sliceobj.value[1]
return ast.Slice(obj, consts.OP_APPLY, start, end)
@@ -531,14 +531,13 @@
right = atoms[i]
op_node = atoms[i-1]
assert isinstance(op_node, TokenObject)
- op = op_node.name
- if op == tok.STAR:
+ if op_node.name == tok.STAR:
left = ast.Mul( [ left, right ] )
- elif op == tok.SLASH:
+ elif op_node.name == tok.SLASH:
left = ast.Div( [ left, right ] )
- elif op == tok.PERCENT:
+ elif op_node.name == tok.PERCENT:
left = ast.Mod( [ left, right ] )
- elif op == tok.DOUBLESLASH:
+ elif op_node.name == tok.DOUBLESLASH:
left = ast.FloorDiv( [ left, right ] )
else:
raise ValueError, "unexpected token: %s" % atoms[i-1]
@@ -550,10 +549,11 @@
left = atoms[0]
for i in range(2,l,2):
right = atoms[i]
- op = atoms[i-1].name
- if op == tok.PLUS:
+ op_node = atoms[i-1]
+ assert isinstance(op_node, TokenObject)
+ if op_node.name == tok.PLUS:
left = ast.Add( [ left, right ] )
- elif op == tok.MINUS:
+ elif op_node.name == tok.MINUS:
left = ast.Sub( [ left, right ] )
else:
raise ValueError, "unexpected token: %s : %s" % atoms[i-1]
@@ -670,6 +670,7 @@
builder.push(ast.Discard(atoms[0]))
return
op = atoms[1]
+ assert isinstance(op, TokenObject)
if op.name == tok.EQUAL:
nodes = []
for i in range(0,l-2,2):
@@ -1085,7 +1086,8 @@
index += 2
names.append((name, as_name))
# move forward until next ','
- while index < l and atoms[index].name != tok.COMMA:
+ while index < l and isinstance(atoms[index], TokenObject) and \
+ atoms[index].name != tok.COMMA:
index += 1
index += 1
builder.push(ast.Import(names))
@@ -1102,6 +1104,7 @@
index = 1
incr, from_name = parse_dotted_names(atoms[index:])
index += (incr + 1) # skip 'import'
+ assert isinstance(atoms[index], TokenObject) # XXX
if atoms[index].name == tok.STAR:
names = [('*', None)]
else:
@@ -1388,7 +1391,7 @@
FIXME: think about a more appropriate name
"""
def __init__(self, name, value, src):
- self.name = name
+ self.fake_rulename = name
self.value = value
self.count = 0
self.line = 0 # src.getline()
@@ -1400,7 +1403,7 @@
self.value is the 3-tuple (names, defaults, flags)
"""
def __init__(self, arguments, stararg, dstararg):
- self.name = 'arglist'
+ self.fake_rulename = 'arglist'
self.arguments = arguments
self.stararg = stararg
self.dstararg = dstararg
More information about the Pypy-commit
mailing list