# 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) )