builtup4/bu4/parsing/extensions/xmake.py

25 lines
899 B
Python

# Copyright (c) PARRRATE T&V 2021. All rights reserved.
from bu4.parsing.codes import CODE_MAKE
from bu4.parsing.constructs.parsed import Parsed
from bu4.parsing.constructs.plambda import PLambda
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__ = ('XMake',)
class XMake(Extension[Parsed], code=CODE_MAKE):
def apply(self) -> TransformState[Parsed]:
name = self.parser.parse_name()
return AfterTransform(
ParsingRead(self.parser),
ATLambda(
lambda value: TransformFinished(PLambda(name, value))
)
)