Improve 'extend' statement
This commit is contained in:
@@ -45,14 +45,34 @@ class Extend(Node):
|
||||
node.methods = methods
|
||||
return node
|
||||
|
||||
|
||||
def ExtendParser(input):
|
||||
return Parser.allOf(
|
||||
|
||||
simpleExtend = Parser.allOf(
|
||||
Parser.terminal(TokenType.EXTEND),
|
||||
TypeParser,
|
||||
Parser.terminal(TokenType.AS),
|
||||
IdentifierLiteralParser,
|
||||
Parser.terminal(TokenType.WITH),
|
||||
Parser.wrap(FunctionDefinitionParser, lambda method: Block.withChildren([ method ], method.pos)),
|
||||
createNode=lambda extend, type, _, variable, __, methods: Extend.withValues(extend.pos, type, variable, methods),
|
||||
name="simple extend"
|
||||
)
|
||||
|
||||
multiExtend = Parser.allOf(
|
||||
Parser.terminal(TokenType.EXTEND),
|
||||
TypeParser,
|
||||
Parser.terminal(TokenType.AS),
|
||||
IdentifierLiteralParser,
|
||||
MethodsDeclarationParser,
|
||||
createNode=lambda extend, type, _, variable, methods: Extend.withValues(extend.pos, type, variable, methods),
|
||||
name="multiple extend"
|
||||
)
|
||||
|
||||
|
||||
return Parser.oneOf(
|
||||
simpleExtend,
|
||||
multiExtend,
|
||||
name="extend"
|
||||
)(input)
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@ tokenizers = (
|
||||
separated(defaultTokenizer(TokenType.EXTEND)),
|
||||
separated(defaultTokenizer(TokenType.IMPORT)),
|
||||
separated(defaultTokenizer(TokenType.FROM)),
|
||||
separated(defaultTokenizer(TokenType.WITH)),
|
||||
separated(defaultTokenizer(TokenType.ELSE)),
|
||||
separated(defaultTokenizer(TokenType.AND)),
|
||||
separated(defaultTokenizer(TokenType.NOT)),
|
||||
|
||||
@@ -36,6 +36,7 @@ class TokenType(Enum):
|
||||
EXTEND = 'extend'
|
||||
IMPORT = 'import'
|
||||
FROM = 'from'
|
||||
WITH = 'with'
|
||||
ELSE = 'else'
|
||||
IF = 'if'
|
||||
AS = 'as'
|
||||
|
||||
Reference in New Issue
Block a user