Tooling around with some things.

This commit is contained in:
Paul Tagliamonte 2012-12-16 09:39:37 -05:00
parent 73e43d71b7
commit c2b87efc6c
6 changed files with 29 additions and 4 deletions

0
hy/emitters/__init__.py Normal file
View File

View File

@ -1,5 +1,17 @@
#
import ast
def emit_node(node):
print type(node)
body = []
for sn in node.get_children():
body.append(emit_node(sn))
print body
def emit(tree):
pass
ret = []
for node in tree:
ret.append(emit_node(node))
return ret

View File

@ -2,6 +2,12 @@ class HYExpression(list):
def __init__(self, nodes):
self += nodes
def get_children(self):
ret = []
for node in self.get_invocation()['args']:
ret.append(node)
return ret
def get_invocation(self):
fn = self[0] if len(self) > 0 else ""
args = self[1:] if len(self) > 1 else []

View File

@ -1,3 +1,6 @@
class HYList(list):
def __init__(self, nodes):
self += nodes
def get_children(self):
return []

View File

@ -1,3 +1,6 @@
class HYString(str):
class HYString(unicode):
def __init__(self, string):
self = string # NOQA
self += string
def get_children(self):
return []

View File

@ -1,5 +1,6 @@
from hy.lang.expression import HYExpression
from hy.lex.errors import LexException
from hy.lang.string import HYString
from hy.lex.machine import Machine
from hy.lang.list import HYList
@ -107,7 +108,7 @@ class String(State):
self.esc = False
def exit(self):
self.machine.nodes.append(self.buf)
self.machine.nodes.append(HYString(self.buf))
def p(self, x):
if x == "\\":