Adding in the Integer bits.

This commit is contained in:
Paul R. Tagliamonte 2013-03-02 19:28:10 -05:00
parent ea326ee29b
commit f14ccb6d22
3 changed files with 21 additions and 1 deletions

View File

@ -1,6 +1,8 @@
from hy.models.expression import HyExpression from hy.models.expression import HyExpression
from hy.models.integer import HyInteger
from hy.models.symbol import HySymbol from hy.models.symbol import HySymbol
from hy.models.string import HyString from hy.models.string import HyString
from hy.errors import HyError from hy.errors import HyError
@ -12,6 +14,11 @@ class LexException(HyError):
def _resolve_atom(obj): def _resolve_atom(obj):
try:
return HyInteger(obj)
except ValueError:
pass
return HySymbol(obj) return HySymbol(obj)

7
hy/models/integer.py Normal file
View File

@ -0,0 +1,7 @@
from hy.models import HyObject
class HyInteger(HyObject, int):
def __new__(cls, number, *args, **kwargs):
number = int(number)
return super(HyInteger, cls).__new__(cls, number)

View File

@ -1,8 +1,10 @@
from hy.lex import tokenize
from hy.models.expression import HyExpression from hy.models.expression import HyExpression
from hy.models.integer import HyInteger
from hy.models.symbol import HySymbol from hy.models.symbol import HySymbol
from hy.models.string import HyString from hy.models.string import HyString
from hy.lex import tokenize
def test_lex_expression_symbols(): def test_lex_expression_symbols():
objs = tokenize("(foo bar)") objs = tokenize("(foo bar)")
@ -11,3 +13,7 @@ def test_lex_expression_symbols():
def test_lex_expression_strings(): def test_lex_expression_strings():
objs = tokenize("(foo \"bar\")") objs = tokenize("(foo \"bar\")")
assert objs == [HyExpression([HySymbol("foo"), HyString("bar")])] assert objs == [HyExpression([HySymbol("foo"), HyString("bar")])]
def test_lex_expression_integer():
objs = tokenize("(foo 2)")
assert objs == [HyExpression([HySymbol("foo"), HyInteger(2)])]