Allow to use types as expressions
This commit is contained in:
@@ -56,6 +56,7 @@ class ExpressionNode(Node):
|
|||||||
from smnp.ast.node.identifier import IdentifierNode
|
from smnp.ast.node.identifier import IdentifierNode
|
||||||
from smnp.ast.node.list import ListNode
|
from smnp.ast.node.list import ListNode
|
||||||
from smnp.ast.node.map import MapNode
|
from smnp.ast.node.map import MapNode
|
||||||
|
from smnp.ast.node.type import TypeNode
|
||||||
|
|
||||||
return Parser.oneOf(
|
return Parser.oneOf(
|
||||||
IntegerLiteralNode.parse,
|
IntegerLiteralNode.parse,
|
||||||
@@ -63,5 +64,6 @@ class ExpressionNode(Node):
|
|||||||
NoteLiteralNode.parse,
|
NoteLiteralNode.parse,
|
||||||
IdentifierNode.parse,
|
IdentifierNode.parse,
|
||||||
MapNode.parse,
|
MapNode.parse,
|
||||||
ListNode.parse
|
ListNode.parse,
|
||||||
|
TypeNode.parse,
|
||||||
)
|
)
|
||||||
@@ -8,6 +8,7 @@ from smnp.ast.node.list import ListNode
|
|||||||
from smnp.ast.node.map import MapNode
|
from smnp.ast.node.map import MapNode
|
||||||
from smnp.ast.node.note import NoteLiteralNode
|
from smnp.ast.node.note import NoteLiteralNode
|
||||||
from smnp.ast.node.string import StringLiteralNode
|
from smnp.ast.node.string import StringLiteralNode
|
||||||
|
from smnp.ast.node.type import TypeNode
|
||||||
from smnp.error.runtime import RuntimeException
|
from smnp.error.runtime import RuntimeException
|
||||||
from smnp.runtime.evaluator import Evaluator
|
from smnp.runtime.evaluator import Evaluator
|
||||||
from smnp.type.model import Type
|
from smnp.type.model import Type
|
||||||
@@ -26,11 +27,13 @@ def expressionEvaluator(doAssert=False):
|
|||||||
from smnp.runtime.evaluators.assignment import AssignmentEvaluator
|
from smnp.runtime.evaluators.assignment import AssignmentEvaluator
|
||||||
from smnp.runtime.evaluators.asterisk import AsteriskEvaluator
|
from smnp.runtime.evaluators.asterisk import AsteriskEvaluator
|
||||||
from smnp.runtime.evaluators.map import MapEvaluator
|
from smnp.runtime.evaluators.map import MapEvaluator
|
||||||
|
from smnp.runtime.evaluators.type import TypeEvaluator
|
||||||
result = Evaluator.oneOf(
|
result = Evaluator.oneOf(
|
||||||
Evaluator.forNodes(FunctionCallEvaluator.evaluate, FunctionCallNode),
|
Evaluator.forNodes(FunctionCallEvaluator.evaluate, FunctionCallNode),
|
||||||
Evaluator.forNodes(StringEvaluator.evaluate, StringLiteralNode),
|
Evaluator.forNodes(StringEvaluator.evaluate, StringLiteralNode),
|
||||||
Evaluator.forNodes(IntegerEvaluator.evaluate, IntegerLiteralNode),
|
Evaluator.forNodes(IntegerEvaluator.evaluate, IntegerLiteralNode),
|
||||||
Evaluator.forNodes(NoteEvaluator.evaluate, NoteLiteralNode),
|
Evaluator.forNodes(NoteEvaluator.evaluate, NoteLiteralNode),
|
||||||
|
Evaluator.forNodes(TypeEvaluator.evaluate, TypeNode),
|
||||||
Evaluator.forNodes(IdentifierEvaluator.evaluate, IdentifierNode),
|
Evaluator.forNodes(IdentifierEvaluator.evaluate, IdentifierNode),
|
||||||
Evaluator.forNodes(ListEvaluator.evaluate, ListNode),
|
Evaluator.forNodes(ListEvaluator.evaluate, ListNode),
|
||||||
Evaluator.forNodes(AccessEvaluator.evaluate, AccessNode),
|
Evaluator.forNodes(AccessEvaluator.evaluate, AccessNode),
|
||||||
|
|||||||
Reference in New Issue
Block a user