Add new angle parentheses and rename BRACKET to CURLY

This commit is contained in:
Bartłomiej Pluta
2019-07-06 22:18:19 +02:00
parent 756f4544e4
commit af91c8dc3b
4 changed files with 28 additions and 24 deletions

View File

@@ -13,8 +13,8 @@ class BlockNode(StatementNode):
return node
return Parser.loop(
Parser.terminalParser(TokenType.OPEN_BRACKET),
Parser.doAssert(StatementNode.parse, f"statement or '{TokenType.CLOSE_BRACKET.key}'"),
Parser.terminalParser(TokenType.CLOSE_BRACKET),
Parser.terminalParser(TokenType.OPEN_CURLY),
Parser.doAssert(StatementNode.parse, f"statement or '{TokenType.CLOSE_CURLY.key}'"),
Parser.terminalParser(TokenType.CLOSE_CURLY),
createNode=createNode,
)(input)

View File

@@ -63,8 +63,8 @@ class ExtendNode(StatementNode):
return node
return Parser.loop(
Parser.terminalParser(TokenType.OPEN_BRACKET),
Parser.doAssert(FunctionDefinitionNode.parse, f"method declaration or '{TokenType.CLOSE_BRACKET.key}'"),
Parser.terminalParser(TokenType.CLOSE_BRACKET),
Parser.terminalParser(TokenType.OPEN_CURLY),
Parser.doAssert(FunctionDefinitionNode.parse, f"method declaration or '{TokenType.CLOSE_CURLY.key}'"),
Parser.terminalParser(TokenType.CLOSE_CURLY),
createNode=createNode
)

View File

@@ -11,12 +11,14 @@ from smnp.token.type import TokenType
tokenizers = (
# Characters
defaultTokenizer(TokenType.OPEN_BRACKET),
defaultTokenizer(TokenType.CLOSE_BRACKET),
defaultTokenizer(TokenType.OPEN_CURLY),
defaultTokenizer(TokenType.CLOSE_CURLY),
defaultTokenizer(TokenType.OPEN_PAREN),
defaultTokenizer(TokenType.CLOSE_PAREN),
defaultTokenizer(TokenType.OPEN_SQUARE),
defaultTokenizer(TokenType.CLOSE_SQUARE),
defaultTokenizer(TokenType.CLOSE_PAREN),
defaultTokenizer(TokenType.OPEN_ANGLE),
defaultTokenizer(TokenType.CLOSE_ANGLE),
defaultTokenizer(TokenType.ASTERISK),
defaultTokenizer(TokenType.ASSIGN),
defaultTokenizer(TokenType.COMMA),

View File

@@ -2,30 +2,32 @@ from enum import Enum
class TokenType(Enum):
OPEN_CURLY = '{'
CLOSE_CURLY = '}'
OPEN_PAREN = '('
CLOSE_PAREN = ')'
ASTERISK = '*'
STRING = 'string'
IDENTIFIER = 'identifier'
COMMA = ','
INTEGER = 'integer'
OPEN_BRACKET = '{'
CLOSE_BRACKET = '}'
ASSIGN = '='
NOTE = 'note'
COMMENT = 'comment'
PERCENT = 'percent'
MINUS = '-'
FUNCTION = 'function'
RETURN = 'return'
DOT = '.'
OPEN_SQUARE = '['
CLOSE_SQUARE = ']'
OPEN_ANGLE = '<'
CLOSE_ANGLE = '>'
ASTERISK = '*'
ASSIGN = '='
COMMA = ','
MINUS = '-'
DOT = '.'
INTEGER = 'integer'
STRING = 'string'
NOTE = 'note'
TYPE = 'type'
FUNCTION = 'function'
RETURN = 'return'
EXTEND = 'extend'
IMPORT = 'import'
FROM = 'from'
AS = 'as'
IDENTIFIER = 'identifier'
COMMENT = 'comment'
PERCENT = 'percent'
@property
def key(self):