34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
# 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_
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|