Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
cython
Commits
b5860e73
Commit
b5860e73
authored
Jul 03, 2009
by
Stefan Behnel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
clean up compiled code in Visitor.py
parent
311e2182
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
5 additions
and
10 deletions
+5
-10
Cython/Compiler/Visitor.pxd
Cython/Compiler/Visitor.pxd
+1
-1
Cython/Compiler/Visitor.py
Cython/Compiler/Visitor.py
+4
-9
No files found.
Cython/Compiler/Visitor.pxd
View file @
b5860e73
...
...
@@ -5,9 +5,9 @@ cdef class BasicVisitor:
cdef
class
TreeVisitor
(
BasicVisitor
):
cdef
public
list
access_path
cpdef
visitchild
(
self
,
child
,
parent
,
attrname
,
idx
)
cpdef
visitchildren
(
self
,
parent
,
attrs
=*
)
cdef
class
VisitorTransform
(
TreeVisitor
):
cdef
object
_super_visitchildren
cpdef
visitchildren
(
self
,
parent
,
attrs
=*
)
cpdef
recurse_to_children
(
self
,
node
)
...
...
Cython/Compiler/Visitor.py
View file @
b5860e73
...
...
@@ -187,14 +187,13 @@ class TreeVisitor(BasicVisitor):
or a list of return values (in the case of multiple children
in an attribute)).
"""
if
parent
is
None
:
return
None
result
=
{}
for
attr
in
parent
.
child_attrs
:
if
attrs
is
not
None
and
attr
not
in
attrs
:
continue
child
=
getattr
(
parent
,
attr
)
if
child
is
not
None
:
if
isinstance
(
child
,
list
)
:
if
type
(
child
)
is
list
:
childretval
=
[
self
.
visitchild
(
x
,
parent
,
attr
,
idx
)
for
idx
,
x
in
enumerate
(
child
)]
else
:
childretval
=
self
.
visitchild
(
child
,
parent
,
attr
,
None
)
...
...
@@ -223,22 +222,18 @@ class VisitorTransform(TreeVisitor):
was not, an exception will be raised. (Typically you want to ensure that you
are within a StatListNode or similar before doing this.)
"""
def
__init__
(
self
):
super
(
VisitorTransform
,
self
).
__init__
()
self
.
_super_visitchildren
=
super
(
VisitorTransform
,
self
).
visitchildren
def
visitchildren
(
self
,
parent
,
attrs
=
None
):
result
=
cython
.
declare
(
dict
)
result
=
self
.
_super_visitchildren
(
parent
,
attrs
)
result
=
TreeVisitor
.
visitchildren
(
self
,
parent
,
attrs
)
for
attr
,
newnode
in
result
.
iteritems
():
if
not
isinstance
(
newnode
,
list
)
:
if
not
type
(
newnode
)
is
list
:
setattr
(
parent
,
attr
,
newnode
)
else
:
# Flatten the list one level and remove any None
newlist
=
[]
for
x
in
newnode
:
if
x
is
not
None
:
if
isinstance
(
x
,
list
)
:
if
type
(
x
)
is
list
:
newlist
+=
x
else
:
newlist
.
append
(
x
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment