Add support for parsing BOOL to AST

This commit is contained in:
Bartłomiej Pluta
2019-07-10 13:54:21 +02:00
parent 26a2b27def
commit 9408c63e06
4 changed files with 18 additions and 1 deletions

13
smnp/ast/node/bool.py Normal file
View 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

View File

@@ -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,

View File

@@ -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
) )

View File

@@ -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())