Rename terminalParser() to terminal()
This commit is contained in:
@@ -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):
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user