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):
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.terminalParser(TokenType.MINUS),
Parser.terminalParser(TokenType.INTEGER, lambda val, pos: IntegerLiteral.withValue(int(val), pos)),
Parser.terminal(TokenType.MINUS),
Parser.terminal(TokenType.INTEGER, lambda val, pos: IntegerLiteral.withValue(int(val), pos)),
createNode=lambda minus, integer: IntegerLiteral.withValue(-integer.value, minus.pos),
name="negative integer"
)
@@ -56,19 +56,19 @@ def IntegerParser(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):
return Parser.terminalParser(TokenType.NOTE, createNode=NoteLiteral.withValue)(input)
return Parser.terminal(TokenType.NOTE, createNode=NoteLiteral.withValue)(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):
return Parser.terminalParser(TokenType.TYPE, createNode=TypeLiteral.withValue)(input)
return Parser.terminal(TokenType.TYPE, createNode=TypeLiteral.withValue)(input)
def LiteralParser(input):

View File

@@ -10,8 +10,8 @@ class Block(Node):
def BlockParser(input):
return Parser.loop(
Parser.terminalParser(TokenType.OPEN_CURLY),
Parser.terminal(TokenType.OPEN_CURLY),
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)
)(input)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -41,7 +41,7 @@ class Parser:
# a -> A
@staticmethod
def terminalParser(expectedType, createNode=None, doAssert=False):
def terminal(expectedType, createNode=None, doAssert=False):
def provideNode(value, pos):
if createNode is None:
return IgnoredNode(pos)
@@ -140,7 +140,7 @@ class Parser:
@staticmethod
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
@staticmethod