builtup4/bu4/parsing/extensions/xmake.py
2021-08-20 05:41:23 +03:00

26 lines
782 B
Python

# Copyright (c) PARRRATE T&V 2021. All rights reserved.
from bu4.parsing.codes import CODE_MAKE
from bu4.parsing.constructs.plambda import PLambda
from bu4.parsing.extensions.extension import Extension
from bu4.parsing.states.parsestate import ParseState
from bu4.parsing.states.psafter import PSAfter
from bu4.parsing.states.psfinal import PSFinal
from bu4.parsing.states.psread import PSRead
__all__ = ('XMake',)
from bu4.parsing.targets.pslambda import PSLambda
class XMake(Extension, code=CODE_MAKE):
def apply(self, state: PSAfter) -> ParseState:
name = self.parser.parse_name()
state.state = PSAfter(
PSRead(),
PSLambda(
lambda value: PSFinal(PLambda(name, value))
)
)
return state