Add support for accessing properties to strings and notes

This commit is contained in:
Bartłomiej Pluta
2019-07-05 21:31:38 +02:00
parent d92dd2f41a
commit 8b72dcb9a4
2 changed files with 16 additions and 11 deletions

View File

@@ -1,10 +1,13 @@
from smnp.newast.node.expression import ExpressionNode
from smnp.newast.parser import Parser
from smnp.newast.node.access import AccessNode
from smnp.newast.node.literal import LiteralNode
from smnp.token.type import TokenType
class NoteLiteralNode(ExpressionNode):
class NoteLiteralNode(LiteralNode, AccessNode):
def __init__(self, pos):
super().__init__(pos)
del self.children[1]
@classmethod
def _parse(cls, input):
return Parser.terminalParser(TokenType.NOTE, lambda v, pos: NoteLiteralNode.withValue(v, pos))(input)
def _getTokenType(cls):
return TokenType.NOTE

View File

@@ -1,11 +1,13 @@
from smnp.newast.node.expression import ExpressionNode
from smnp.newast.parser import Parser
from smnp.newast.node.access import AccessNode
from smnp.newast.node.literal import LiteralNode
from smnp.token.type import TokenType
class StringLiteralNode(ExpressionNode):
class StringLiteralNode(LiteralNode, AccessNode):
def __init__(self, pos):
super().__init__(pos)
del self.children[1]
@classmethod
def _parse(cls, input):
createNode = lambda v, pos: StringLiteralNode.withValue(pos, v[1:len(v)-1])
return Parser.terminalParser(TokenType.STRING, createNode)(input)
def _getTokenType(cls):
return TokenType.STRING