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.node.access import AccessNode
from smnp.newast.parser import Parser from smnp.newast.node.literal import LiteralNode
from smnp.token.type import TokenType 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 @classmethod
def _parse(cls, input): def _getTokenType(cls):
return Parser.terminalParser(TokenType.NOTE, lambda v, pos: NoteLiteralNode.withValue(v, pos))(input) return TokenType.NOTE

View File

@@ -1,11 +1,13 @@
from smnp.newast.node.expression import ExpressionNode from smnp.newast.node.access import AccessNode
from smnp.newast.parser import Parser from smnp.newast.node.literal import LiteralNode
from smnp.token.type import TokenType 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 @classmethod
def _parse(cls, input): def _getTokenType(cls):
createNode = lambda v, pos: StringLiteralNode.withValue(pos, v[1:len(v)-1]) return TokenType.STRING
return Parser.terminalParser(TokenType.STRING, createNode)(input)