# Copyright (c) PARRRATE T&V 2021. All rights reserved. from bu4.linkable.constructs.parsed import Parsed from bu4.linkable.constructs.pcall import PCall from bu4.parsing.codes import CODE_CALL from bu4.parsing.extensions.extension import Extension from bu4.parsing.states.parsingread import ParsingRead from bu4.transform.states.aftertransform import AfterTransform from bu4.transform.states.transformfinished import TransformFinished from bu4.transform.states.transformstate import TransformState from bu4.transform.targets.atlambda import ATLambda __all__ = ('XCall',) class XCall(Extension[Parsed], code=CODE_CALL): def apply(self) -> TransformState[Parsed]: return AfterTransform( ParsingRead(self.parser), ATLambda( lambda argument: AfterTransform( ParsingRead(self.parser), ATLambda( lambda lambda_: TransformFinished( PCall( argument, lambda_ ) ) ) ) ) )