# 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