Rename terminalParser() to terminal()

This commit is contained in:
Bartłomiej Pluta
2019-07-12 00:18:53 +02:00
parent eb28976704
commit f459873574
11 changed files with 35 additions and 35 deletions

View File

@@ -45,10 +45,10 @@ class TypeLiteral(Atom):
def IntegerParser(input): def IntegerParser(input):
return Parser.oneOf( return Parser.oneOf(
Parser.terminalParser(TokenType.INTEGER, lambda val, pos: IntegerLiteral.withValue(int(val), pos)), Parser.terminal(TokenType.INTEGER, lambda val, pos: IntegerLiteral.withValue(int(val), pos)),
Parser.allOf( Parser.allOf(
Parser.terminalParser(TokenType.MINUS), Parser.terminal(TokenType.MINUS),
Parser.terminalParser(TokenType.INTEGER, lambda val, pos: IntegerLiteral.withValue(int(val), pos)), Parser.terminal(TokenType.INTEGER, lambda val, pos: IntegerLiteral.withValue(int(val), pos)),
createNode=lambda minus, integer: IntegerLiteral.withValue(-integer.value, minus.pos), createNode=lambda minus, integer: IntegerLiteral.withValue(-integer.value, minus.pos),
name="negative integer" name="negative integer"
) )
@@ -56,19 +56,19 @@ def IntegerParser(input):
def StringParser(input): def StringParser(input):
return Parser.terminalParser(TokenType.STRING, createNode=StringLiteral.withValue)(input) return Parser.terminal(TokenType.STRING, createNode=StringLiteral.withValue)(input)
def NoteParser(input): def NoteParser(input):
return Parser.terminalParser(TokenType.NOTE, createNode=NoteLiteral.withValue)(input) return Parser.terminal(TokenType.NOTE, createNode=NoteLiteral.withValue)(input)
def BoolParser(input): def BoolParser(input):
return Parser.terminalParser(TokenType.BOOL, createNode=BoolLiteral.withValue)(input) return Parser.terminal(TokenType.BOOL, createNode=BoolLiteral.withValue)(input)
def TypeLiteralParser(input): def TypeLiteralParser(input):
return Parser.terminalParser(TokenType.TYPE, createNode=TypeLiteral.withValue)(input) return Parser.terminal(TokenType.TYPE, createNode=TypeLiteral.withValue)(input)
def LiteralParser(input): def LiteralParser(input):

View File

@@ -10,8 +10,8 @@ class Block(Node):
def BlockParser(input): def BlockParser(input):
return Parser.loop( return Parser.loop(
Parser.terminalParser(TokenType.OPEN_CURLY), Parser.terminal(TokenType.OPEN_CURLY),
Parser.doAssert(StatementParser, f"statement or '{TokenType.CLOSE_CURLY.key}'"), Parser.doAssert(StatementParser, f"statement or '{TokenType.CLOSE_CURLY.key}'"),
Parser.terminalParser(TokenType.CLOSE_CURLY), Parser.terminal(TokenType.CLOSE_CURLY),
createNode=lambda open, statements, close: Block.withChildren(statements, open.pos) createNode=lambda open, statements, close: Block.withChildren(statements, open.pos)
)(input) )(input)

View File

@@ -46,22 +46,22 @@ class IfElse(Node):
def IfElseStatementParser(input): def IfElseStatementParser(input):
ifStatementParser = Parser.allOf( ifStatementParser = Parser.allOf(
Parser.terminalParser(TokenType.IF), Parser.terminal(TokenType.IF),
Parser.terminalParser(TokenType.OPEN_PAREN), Parser.terminal(TokenType.OPEN_PAREN),
ExpressionParser, ExpressionParser,
Parser.terminalParser(TokenType.CLOSE_PAREN), Parser.terminal(TokenType.CLOSE_PAREN),
StatementParser, StatementParser,
createNode=lambda _, __, condition, ___, ifStatement: IfElse.createNode(ifStatement, condition), createNode=lambda _, __, condition, ___, ifStatement: IfElse.createNode(ifStatement, condition),
name="if statement" name="if statement"
) )
ifElseStatementParser = Parser.allOf( ifElseStatementParser = Parser.allOf(
Parser.terminalParser(TokenType.IF), Parser.terminal(TokenType.IF),
Parser.terminalParser(TokenType.OPEN_PAREN), Parser.terminal(TokenType.OPEN_PAREN),
ExpressionParser, ExpressionParser,
Parser.terminalParser(TokenType.CLOSE_PAREN), Parser.terminal(TokenType.CLOSE_PAREN),
StatementParser, StatementParser,
Parser.terminalParser(TokenType.ELSE), Parser.terminal(TokenType.ELSE),
StatementParser, StatementParser,
createNode=lambda _, __, condition, ___, ifStatement, ____, elseStatement: IfElse.createNode(ifStatement, condition, elseStatement), createNode=lambda _, __, condition, ___, ifStatement, ____, elseStatement: IfElse.createNode(ifStatement, condition, elseStatement),
name="if-else statement" name="if-else statement"

View File

@@ -44,9 +44,9 @@ def ExpressionParser(input):
ifElseExpression = Parser.allOf( ifElseExpression = Parser.allOf(
expr4, expr4,
Parser.terminalParser(TokenType.IF), Parser.terminal(TokenType.IF),
expr4, expr4,
Parser.terminalParser(TokenType.ELSE), Parser.terminal(TokenType.ELSE),
expr4, expr4,
createNode=lambda ifNode, _, condition, __, elseNode: IfElse.createNode(ifNode, condition, elseNode) createNode=lambda ifNode, _, condition, __, elseNode: IfElse.createNode(ifNode, condition, elseNode)
) )

View File

@@ -29,9 +29,9 @@ def FactorParser(input):
) )
exprFactor = Parser.allOf( exprFactor = Parser.allOf(
Parser.terminalParser(TokenType.OPEN_PAREN), Parser.terminal(TokenType.OPEN_PAREN),
ExpressionParser, ExpressionParser,
Parser.terminalParser(TokenType.CLOSE_PAREN), Parser.terminal(TokenType.CLOSE_PAREN),
createNode=lambda open, expr, close: expr, createNode=lambda open, expr, close: expr,
name="grouping parentheses" name="grouping parentheses"
) )
@@ -43,7 +43,7 @@ def FactorParser(input):
) )
notOperator = Parser.allOf( notOperator = Parser.allOf(
Parser.terminalParser(TokenType.NOT, Operator.withValue), Parser.terminal(TokenType.NOT, Operator.withValue),
factorParser, factorParser,
createNode=NotOperator.withValues, createNode=NotOperator.withValues,
name="not" name="not"
@@ -51,7 +51,7 @@ def FactorParser(input):
loopFactor = Parser.allOf( loopFactor = Parser.allOf(
factorParser, factorParser,
Parser.terminalParser(TokenType.DASH, createNode=Operator.withValue), Parser.terminal(TokenType.DASH, createNode=Operator.withValue),
StatementParser, StatementParser,
createNode=Loop.withValues, createNode=Loop.withValues,
name="dash-loop" name="dash-loop"

View File

@@ -102,7 +102,7 @@ def ArgumentParser(input):
return Parser.allOf( return Parser.allOf(
Parser.optional(TypeParser), Parser.optional(TypeParser),
IdentifierLiteralParser, IdentifierLiteralParser,
Parser.optional(Parser.terminalParser(TokenType.DOTS, lambda val, pos: True)), Parser.optional(Parser.terminal(TokenType.DOTS, lambda val, pos: True)),
createNode=createNode, createNode=createNode,
name="function argument" name="function argument"
)(input) )(input)
@@ -119,7 +119,7 @@ def ArgumentsDeclarationParser(input):
def FunctionDefinitionParser(input): def FunctionDefinitionParser(input):
return Parser.allOf( return Parser.allOf(
Parser.terminalParser(TokenType.FUNCTION), Parser.terminal(TokenType.FUNCTION),
IdentifierLiteralParser, IdentifierLiteralParser,
ArgumentsDeclarationParser, ArgumentsDeclarationParser,
BlockParser, BlockParser,

View File

@@ -50,7 +50,7 @@ class Assignment(BinaryOperator):
def IdentifierLiteralParser(input): def IdentifierLiteralParser(input):
return Parser.terminalParser(TokenType.IDENTIFIER, createNode=Identifier.withValue)(input) return Parser.terminal(TokenType.IDENTIFIER, createNode=Identifier.withValue)(input)
def IdentifierParser(input): def IdentifierParser(input):
@@ -64,7 +64,7 @@ def IdentifierParser(input):
assignmentParser = Parser.allOf( assignmentParser = Parser.allOf(
IdentifierLiteralParser, IdentifierLiteralParser,
Parser.terminalParser(TokenType.ASSIGN, createNode=Operator.withValue), Parser.terminal(TokenType.ASSIGN, createNode=Operator.withValue),
ExpressionParser, ExpressionParser,
createNode=lambda identifier, assign, expr: Assignment.withValues(identifier, assign, expr) createNode=lambda identifier, assign, expr: Assignment.withValues(identifier, assign, expr)
) )

View File

@@ -34,7 +34,7 @@ class Import(Node):
def ImportParser(input): def ImportParser(input):
return Parser.allOf( return Parser.allOf(
Parser.terminalParser(TokenType.IMPORT), Parser.terminal(TokenType.IMPORT),
StringParser, StringParser,
createNode=lambda imp, source: Import.withValue(source), createNode=lambda imp, source: Import.withValue(source),
name="import" name="import"

View File

@@ -45,8 +45,8 @@ def abstractIterableParser(iterableNodeType, openTokenType, closeTokenType, item
return node return node
return Parser.allOf( return Parser.allOf(
Parser.terminalParser(openTokenType), Parser.terminal(openTokenType),
Parser.terminalParser(closeTokenType), Parser.terminal(closeTokenType),
createNode=createNode createNode=createNode
)(input) )(input)
@@ -58,7 +58,7 @@ def abstractIterableParser(iterableNodeType, openTokenType, closeTokenType, item
return node return node
return Parser.allOf( return Parser.allOf(
Parser.terminalParser(openTokenType), Parser.terminal(openTokenType),
itemParser, itemParser,
abstractIterableTailParser, abstractIterableTailParser,
createNode=createNode createNode=createNode
@@ -78,14 +78,14 @@ def abstractIterableParser(iterableNodeType, openTokenType, closeTokenType, item
return node return node
return Parser.allOf( return Parser.allOf(
Parser.terminalParser(TokenType.COMMA, doAssert=True), Parser.terminal(TokenType.COMMA, doAssert=True),
itemParser, itemParser,
abstractIterableTailParser, abstractIterableTailParser,
createNode=createNode createNode=createNode
)(input) )(input)
def closeIterable(input): def closeIterable(input):
return Parser.terminalParser(closeTokenType)(input) return Parser.terminal(closeTokenType)(input)
return toFlatDesiredNode(iterableNodeType, abstractIterableParser) return toFlatDesiredNode(iterableNodeType, abstractIterableParser)

View File

@@ -36,7 +36,7 @@ def MapParser(input):
mapEntryParser = Parser.allOf( mapEntryParser = Parser.allOf(
keyParser, keyParser,
Parser.terminalParser(TokenType.ARROW, createNode=Operator.withValue), Parser.terminal(TokenType.ARROW, createNode=Operator.withValue),
valueParser, valueParser,
createNode=MapEntry.withValues createNode=MapEntry.withValues
) )

View File

@@ -41,7 +41,7 @@ class Parser:
# a -> A # a -> A
@staticmethod @staticmethod
def terminalParser(expectedType, createNode=None, doAssert=False): def terminal(expectedType, createNode=None, doAssert=False):
def provideNode(value, pos): def provideNode(value, pos):
if createNode is None: if createNode is None:
return IgnoredNode(pos) return IgnoredNode(pos)
@@ -140,7 +140,7 @@ class Parser:
@staticmethod @staticmethod
def oneOfTerminals(*tokenTypes, createNode=None): def oneOfTerminals(*tokenTypes, createNode=None):
return Parser.oneOf(*[ Parser.terminalParser(expectedType, createNode=createNode) for expectedType in tokenTypes ], name='|'.join([t.value for t in tokenTypes])) return Parser.oneOf(*[Parser.terminal(expectedType, createNode=createNode) for expectedType in tokenTypes], name='|'.join([t.value for t in tokenTypes]))
# loop -> start item* end # loop -> start item* end
@staticmethod @staticmethod