From ef9007c2296441e4cef921904a0bc823f5cb1a9e Mon Sep 17 00:00:00 2001 From: "Paul R. Tagliamonte" Date: Sun, 3 Mar 2013 16:26:17 -0500 Subject: [PATCH] Futzing about. --- bin/hy | 2 ++ hy/compiler.py | 29 +++++++++++++++++++++++++++++ setup.py | 1 + tests/compilers/test_ast.py | 9 ++++----- 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 bin/hy create mode 100644 hy/compiler.py diff --git a/bin/hy b/bin/hy new file mode 100644 index 0000000..cf529d7 --- /dev/null +++ b/bin/hy @@ -0,0 +1,2 @@ +#!/usr/bin/env python + diff --git a/hy/compiler.py b/hy/compiler.py new file mode 100644 index 0000000..4052435 --- /dev/null +++ b/hy/compiler.py @@ -0,0 +1,29 @@ +# Copyright (c) 2012 Paul Tagliamonte +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +from hy.compilers.pyast import HyASTCompiler + + +compiler = HyASTCompiler() + + +def compile(tree): + " Compile a HyObject tree into a Python AST tree. " + return compiler.compile(tree) diff --git a/setup.py b/setup.py index 98911ef..38efead 100755 --- a/setup.py +++ b/setup.py @@ -31,6 +31,7 @@ setup( name=__appname__, version=__version__, scripts=[ + "bin/hy", ], packages=[ 'hy', diff --git a/tests/compilers/test_ast.py b/tests/compilers/test_ast.py index 64a3a86..7c26106 100644 --- a/tests/compilers/test_ast.py +++ b/tests/compilers/test_ast.py @@ -18,7 +18,8 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. -from hy.compilers.pyast import HyASTCompiler, HyCompileError +from hy.compilers.pyast import HyCompileError +from hy.compiler import compile from hy.lex import tokenize import ast @@ -33,9 +34,8 @@ def _ast_spotcheck(arg, root, secondary): def test_ast_bad_type(): - compiler = HyASTCompiler() try: - compiler.compile("foo") + compile("foo") assert True == False except HyCompileError: pass @@ -43,8 +43,7 @@ def test_ast_bad_type(): def test_ast_expression_basics(): """ Ensure basic AST expression conversion works. """ - compiler = HyASTCompiler() - code = compiler.compile(tokenize("(foo bar)"))[0] + code = compile(tokenize("(foo bar)"))[0] tree = ast.Call( func=ast.Name( id="foo",