builtup4/bu4/parsing/constructs/pcall.py
2021-08-01 01:17:46 +03:00

31 lines
1.0 KiB
Python

# Copyright (c) PARRRATE T&V 2021. All rights reserved.
__all__ = ('PCall',)
from bu4.linking.constructs.lcall import LCall
from bu4.linking.states.afterlinking import AfterLinking
from bu4.linking.states.linkingfinished import LinkingFinished
from bu4.linking.states.linkingparsed import LinkingParsed
from bu4.linking.states.linkingstate import LinkingState
from bu4.linking.targets.allambda import ALLambda
from bu4.parsing.constructs.parsed import Parsed
class PCall(Parsed):
def __init__(self, argument: Parsed, lambda_: Parsed):
self.argument = argument
self.lambda_ = lambda_
def link(self, promise: set[bytes]) -> LinkingState:
return AfterLinking(
LinkingParsed(promise, self.argument),
ALLambda(
lambda argument: AfterLinking(
LinkingParsed(promise, self.lambda_),
ALLambda(
lambda lambda_: LinkingFinished(LCall(argument, lambda_))
)
)
)
)