26 lines
782 B
Python
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
|