builtup4/bu4/parsing/states/parsing_call.py

32 lines
1.0 KiB
Python

# Copyright (c) PARRRATE T&V 2021. All rights reserved.
from bu4.parsing.abstractparser import AbstractParser
from bu4.parsing.constructs.parsed import Parsed
from bu4.parsing.constructs.pcall import PCall
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__ = ('parsing_call',)
def parsing_call(parser: AbstractParser[Parsed]) -> TransformState[Parsed]:
return AfterTransform(
ParsingRead(parser),
ATLambda(
lambda argument: AfterTransform(
ParsingRead(parser),
ATLambda(
lambda lambda_: TransformFinished(
PCall(
argument,
lambda_
)
)
)
)
)
)