16 lines
747 B
Python
16 lines
747 B
Python
from smnp.ast.node.integer import IntegerLiteralNode
|
|
from smnp.ast.node.note import NoteLiteralNode
|
|
from smnp.error.runtime import RuntimeException
|
|
from smnp.note.model import Note
|
|
from smnp.type.model import Type
|
|
from smnp.type.value import Value
|
|
|
|
|
|
def evaluateColon(colon, environment):
|
|
if isinstance(colon.a, NoteLiteralNode) and isinstance(colon.b, NoteLiteralNode):
|
|
return Value(Type.LIST, [Value(Type.NOTE, n) for n in Note.range(colon.a.value, colon.b.value)])
|
|
|
|
elif isinstance(colon.a, IntegerLiteralNode) and isinstance(colon.b, IntegerLiteralNode):
|
|
return Value(Type.LIST, [Value(Type.INTEGER, i) for i in range(colon.a.value, colon.b.value + 1)])
|
|
|
|
raise RuntimeException("Invalid colon arguments", colon.pos) |