adding in array access
This commit is contained in:
parent
5bdebdf5fc
commit
f97cb5e4cb
@ -25,6 +25,7 @@ from hy.models.integer import HyInteger
|
|||||||
from hy.models.string import HyString
|
from hy.models.string import HyString
|
||||||
from hy.models.symbol import HySymbol
|
from hy.models.symbol import HySymbol
|
||||||
from hy.models.list import HyList
|
from hy.models.list import HyList
|
||||||
|
from hy.models.dict import HyDict
|
||||||
|
|
||||||
import ast
|
import ast
|
||||||
|
|
||||||
@ -115,6 +116,19 @@ class HyASTCompiler(object):
|
|||||||
lineno=e.start_line,
|
lineno=e.start_line,
|
||||||
col_offset=e.start_column)
|
col_offset=e.start_column)
|
||||||
|
|
||||||
|
@builds("get")
|
||||||
|
def compile_index_expression(self, expr):
|
||||||
|
expr.pop(0) # index
|
||||||
|
val = self.compile(expr.pop(0)) # target
|
||||||
|
sli = self.compile(expr.pop(0)) # slice
|
||||||
|
|
||||||
|
return ast.Subscript(
|
||||||
|
lineno=expr.start_line,
|
||||||
|
col_offset=expr.start_column,
|
||||||
|
value=val,
|
||||||
|
slice=ast.Index(value=sli),
|
||||||
|
ctx=ast.Load())
|
||||||
|
|
||||||
@builds("=")
|
@builds("=")
|
||||||
@builds("<")
|
@builds("<")
|
||||||
@builds("<=")
|
@builds("<=")
|
||||||
@ -292,6 +306,20 @@ class HyASTCompiler(object):
|
|||||||
return ast.Str(s=str(string), lineno=string.start_line,
|
return ast.Str(s=str(string), lineno=string.start_line,
|
||||||
col_offset=string.start_column)
|
col_offset=string.start_column)
|
||||||
|
|
||||||
|
@builds(HyDict)
|
||||||
|
def compile_dict(self, m):
|
||||||
|
keys = []
|
||||||
|
vals = []
|
||||||
|
for entry in m:
|
||||||
|
keys.append(self.compile(entry))
|
||||||
|
vals.append(self.compile(m[entry]))
|
||||||
|
|
||||||
|
return ast.Dict(
|
||||||
|
lineno=m.start_line,
|
||||||
|
col_offset=m.start_column,
|
||||||
|
keys=keys,
|
||||||
|
values=vals)
|
||||||
|
|
||||||
|
|
||||||
def hy_compile(tree):
|
def hy_compile(tree):
|
||||||
" Compile a HyObject tree into a Python AST tree. "
|
" Compile a HyObject tree into a Python AST tree. "
|
||||||
|
@ -57,3 +57,8 @@
|
|||||||
(cond
|
(cond
|
||||||
(= 1 2) (assert (= true false))
|
(= 1 2) (assert (= true false))
|
||||||
(is null null) (assert (= true true))))
|
(is null null) (assert (= true true))))
|
||||||
|
|
||||||
|
|
||||||
|
(defn test_index []
|
||||||
|
"NATIVE: Test that dict access works"
|
||||||
|
(assert (get {"one" "two"} "one") "two"))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user