19 lines
686 B
Python
19 lines
686 B
Python
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
|
|
|
from bu4.encoding.codes import CODE_MAKE
|
|
from bu4.indexing.constructs.ilambda import ILambda
|
|
from bu4.indexing.constructs.indexed import Indexed
|
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
|
from bu4.transform.states.transformstate import TransformState
|
|
|
|
__all__ = ('XIMake',)
|
|
|
|
|
|
class XIMake(CodeExtension[Indexed], code=CODE_MAKE):
|
|
def apply(self) -> TransformState[Indexed]:
|
|
memoize = bool(self.parser.read())
|
|
table = [self.parser.read() for _ in range(self.parser.read())]
|
|
return self.readlambdafinished(
|
|
lambda value: ILambda(value, table, memoize=memoize)
|
|
)
|