Clean up based on review
This commit is contained in:
parent
20b776aeb2
commit
047956c59b
@ -3,7 +3,6 @@ from __future__ import print_function
|
|||||||
|
|
||||||
from hy.importer import (import_file_to_ast, import_file_to_module,
|
from hy.importer import (import_file_to_ast, import_file_to_module,
|
||||||
import_file_to_hst)
|
import_file_to_hst)
|
||||||
from hy.util import dump
|
|
||||||
|
|
||||||
#import astor.codegen
|
#import astor.codegen
|
||||||
import sys
|
import sys
|
||||||
@ -17,7 +16,7 @@ print("")
|
|||||||
_ast = import_file_to_ast(sys.argv[1])
|
_ast = import_file_to_ast(sys.argv[1])
|
||||||
print("")
|
print("")
|
||||||
print("")
|
print("")
|
||||||
print(dump(_ast))
|
print(ast.dump(_ast))
|
||||||
print("")
|
print("")
|
||||||
print("")
|
print("")
|
||||||
#print(astor.codegen.to_source(_ast))
|
#print(astor.codegen.to_source(_ast))
|
||||||
|
@ -190,15 +190,13 @@ class HyASTCompiler(object):
|
|||||||
|
|
||||||
def _parse_lambda_list(self, exprs):
|
def _parse_lambda_list(self, exprs):
|
||||||
""" Return FunctionDef parameter values from lambda list."""
|
""" Return FunctionDef parameter values from lambda list."""
|
||||||
exprs.reverse()
|
|
||||||
args = []
|
args = []
|
||||||
defaults = []
|
defaults = []
|
||||||
varargs = None
|
varargs = None
|
||||||
kwargs = None
|
kwargs = None
|
||||||
lambda_keyword = None
|
lambda_keyword = None
|
||||||
|
|
||||||
while exprs:
|
for expr in exprs:
|
||||||
expr = exprs.pop()
|
|
||||||
|
|
||||||
if isinstance(expr, HyLambdaListKeyword):
|
if isinstance(expr, HyLambdaListKeyword):
|
||||||
if expr not in expr._valid_types:
|
if expr not in expr._valid_types:
|
||||||
@ -236,9 +234,8 @@ class HyASTCompiler(object):
|
|||||||
"one &key argument")
|
"one &key argument")
|
||||||
# As you can see, Python has a funny way of
|
# As you can see, Python has a funny way of
|
||||||
# defining keyword arguments.
|
# defining keyword arguments.
|
||||||
for k in expr.keys():
|
for k, v in expr.items():
|
||||||
args.append(k)
|
args.append(k)
|
||||||
for v in expr.values():
|
|
||||||
defaults.append(self.compile(v))
|
defaults.append(self.compile(v))
|
||||||
elif lambda_keyword == "&optional":
|
elif lambda_keyword == "&optional":
|
||||||
# not implemented yet.
|
# not implemented yet.
|
||||||
|
40
hy/util.py
40
hy/util.py
@ -18,7 +18,6 @@
|
|||||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
# DEALINGS IN THE SOFTWARE.
|
# DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
import ast
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
@ -35,42 +34,3 @@ def flatten_literal_list(entry):
|
|||||||
yield x # needs more yield-from
|
yield x # needs more yield-from
|
||||||
else:
|
else:
|
||||||
yield e
|
yield e
|
||||||
|
|
||||||
|
|
||||||
def dump(node, annotate_fields=True, include_attributes=False, indent=' '):
|
|
||||||
"""
|
|
||||||
Return a formatted dump of the tree in *node*. This is mainly useful for
|
|
||||||
debugging purposes. The returned string will show the names and the values
|
|
||||||
for fields. This makes the code impossible to evaluate, so if evaluation is
|
|
||||||
wanted *annotate_fields* must be set to False. Attributes such as line
|
|
||||||
numbers and column offsets are not dumped by default. If this is wanted,
|
|
||||||
*include_attributes* can be set to True.
|
|
||||||
|
|
||||||
Original author: Alex Leone (acleone ~AT~ gmail.com), 2010-01-30
|
|
||||||
"""
|
|
||||||
def _format(node, level=0):
|
|
||||||
if isinstance(node, ast.AST):
|
|
||||||
fields = [(a, _format(b, level)) for a, b in ast.iter_fields(node)]
|
|
||||||
if include_attributes and node._attributes:
|
|
||||||
fields.extend([(a, _format(getattr(node, a), level))
|
|
||||||
for a in node._attributes])
|
|
||||||
return ''.join([
|
|
||||||
node.__class__.__name__,
|
|
||||||
'(',
|
|
||||||
', '.join(('%s=%s' % field for field in fields)
|
|
||||||
if annotate_fields else
|
|
||||||
(b for a, b in fields)),
|
|
||||||
')'])
|
|
||||||
elif isinstance(node, list):
|
|
||||||
lines = ['[']
|
|
||||||
lines.extend((indent * (level + 2) + _format(x, level + 2) + ','
|
|
||||||
for x in node))
|
|
||||||
if len(lines) > 1:
|
|
||||||
lines.append(indent * (level + 1) + ']')
|
|
||||||
else:
|
|
||||||
lines[-1] += ']'
|
|
||||||
return '\n'.join(lines)
|
|
||||||
return repr(node)
|
|
||||||
if not isinstance(node, ast.AST):
|
|
||||||
raise TypeError('expected AST, got %r' % node.__class__.__name__)
|
|
||||||
return _format(node)
|
|
||||||
|
@ -24,7 +24,6 @@ from __future__ import unicode_literals
|
|||||||
from hy import HyString
|
from hy import HyString
|
||||||
from hy.compiler import hy_compile, HyCompileError
|
from hy.compiler import hy_compile, HyCompileError
|
||||||
from hy.lex import tokenize
|
from hy.lex import tokenize
|
||||||
from hy.util import dump
|
|
||||||
|
|
||||||
import ast
|
import ast
|
||||||
import sys
|
import sys
|
||||||
|
Loading…
x
Reference in New Issue
Block a user