Add support for parsing BOOL to AST
This commit is contained in:
13
smnp/ast/node/bool.py
Normal file
13
smnp/ast/node/bool.py
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
from smnp.ast.node.access import AccessNode
|
||||||
|
from smnp.ast.node.literal import LiteralNode
|
||||||
|
from smnp.token.type import TokenType
|
||||||
|
|
||||||
|
|
||||||
|
class BoolLiteralNode(LiteralNode, AccessNode):
|
||||||
|
def __init__(self, pos):
|
||||||
|
super().__init__(pos)
|
||||||
|
del self.children[1]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _getTokenType(cls):
|
||||||
|
return TokenType.BOOL
|
||||||
@@ -53,6 +53,7 @@ class ExpressionNode(Node):
|
|||||||
from smnp.ast.node.integer import IntegerLiteralNode
|
from smnp.ast.node.integer import IntegerLiteralNode
|
||||||
from smnp.ast.node.string import StringLiteralNode
|
from smnp.ast.node.string import StringLiteralNode
|
||||||
from smnp.ast.node.note import NoteLiteralNode
|
from smnp.ast.node.note import NoteLiteralNode
|
||||||
|
from smnp.ast.node.bool import BoolLiteralNode
|
||||||
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
|
||||||
@@ -62,6 +63,7 @@ class ExpressionNode(Node):
|
|||||||
IntegerLiteralNode.parse,
|
IntegerLiteralNode.parse,
|
||||||
StringLiteralNode.parse,
|
StringLiteralNode.parse,
|
||||||
NoteLiteralNode.parse,
|
NoteLiteralNode.parse,
|
||||||
|
BoolLiteralNode.parse,
|
||||||
IdentifierNode.parse,
|
IdentifierNode.parse,
|
||||||
MapNode.parse,
|
MapNode.parse,
|
||||||
ListNode.parse,
|
ListNode.parse,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from smnp.ast.node.access import AccessNode
|
from smnp.ast.node.access import AccessNode
|
||||||
|
from smnp.ast.node.bool import BoolLiteralNode
|
||||||
from smnp.ast.node.expression import ExpressionNode
|
from smnp.ast.node.expression import ExpressionNode
|
||||||
from smnp.ast.node.integer import IntegerLiteralNode
|
from smnp.ast.node.integer import IntegerLiteralNode
|
||||||
from smnp.ast.node.iterable import abstractIterableParser
|
from smnp.ast.node.iterable import abstractIterableParser
|
||||||
@@ -57,5 +58,6 @@ class MapNode(AccessNode):
|
|||||||
IntegerLiteralNode._literalParser(),
|
IntegerLiteralNode._literalParser(),
|
||||||
StringLiteralNode._literalParser(),
|
StringLiteralNode._literalParser(),
|
||||||
NoteLiteralNode._literalParser(),
|
NoteLiteralNode._literalParser(),
|
||||||
|
BoolLiteralNode._literalParser(),
|
||||||
TypeNode.parse
|
TypeNode.parse
|
||||||
)
|
)
|
||||||
@@ -8,7 +8,7 @@ from smnp.program.interpreter import Interpreter
|
|||||||
def main():
|
def main():
|
||||||
try:
|
try:
|
||||||
stdLibraryEnv = loadStandardLibrary()
|
stdLibraryEnv = loadStandardLibrary()
|
||||||
Interpreter.interpretFile(sys.argv[1], printTokens=True, printAst=False, baseEnvironment=stdLibraryEnv)
|
Interpreter.interpretFile(sys.argv[1], printTokens=False, printAst=True, baseEnvironment=stdLibraryEnv)
|
||||||
|
|
||||||
except SmnpException as e:
|
except SmnpException as e:
|
||||||
print(e.message())
|
print(e.message())
|
||||||
|
|||||||
Reference in New Issue
Block a user