using ast rather then native now

This commit is contained in:
Paul Tagliamonte 2012-12-22 21:56:05 -05:00
parent 952ba5811e
commit 81820abace
2 changed files with 12 additions and 6 deletions

View File

@ -1,5 +1,6 @@
# output ast for cpython 2.7
import ast
import imp
from hy.lang.expression import HYExpression
from hy.lang.number import HYNumber
@ -40,11 +41,6 @@ def _ast_binop(node, children, obj):
def _ast_cmp(node, children, obj):
# Compare(left=Num(n=1), ops=[LtE()], comparators=[Num(n=2)])
# Compare(left=Num(n=1), ops=[Gt(), Gt()],
# comparators=[Num(n=2), Num(n=3)])
# opscmpop = Eq | NotEq | Lt | LtE | Gt | GtE | Is | IsNot | In | NotIn
inv = node.get_invocation()
ops = {
"==": ast.Eq, "<=": ast.LtE, ">=": ast.GtE, ">": ast.Gt, "<": ast.Lt,
@ -297,3 +293,11 @@ def forge_ast(name, forest):
statements.append(ret)
return ast.fix_missing_locations(ast.Module(body=statements))
def forge_module(name, fpath, forest):
mod = imp.new_module(name)
mod.__file__ = fpath
ast = forge_ast(name, forest)
eval(compile(ast, fpath, "exec"), mod.__dict__)
return mod

View File

@ -1,4 +1,6 @@
from hy.compiler.modfaker import forge_module
# from hy.compiler.modfaker import forge_module
from hy.compiler.ast27 import forge_module
from hy.lex.tokenize import tokenize
import sys
import imp