# Copyright (c) PARRRATE T&V 2021. All rights reserved. from bu4.evaluation.constructs.enull import ENull from bu4.evaluation.av.envtype import envtype from bu4.linking.states.linkingstate import LinkingState from bu4.parsing.codes import CODE_NULL from bu4.parsing.constructs.linked import Linked, Parsed from bu4.linking.states.linkingfinished import LinkingFinished from bu4.evaluation.constructs.evaluable import Evaluable __all__ = ('PNull',) class LNull(Linked): def __init__(self): self.future = set() def link(self) -> LinkingState: return LinkingFinished(self) def evaluable(self, env: envtype) -> Evaluable: return ENull() def __str__(self): return '?' def unlink(self) -> Parsed: return PNull() class PNull(Parsed): def link(self, promise: set[bytes]) -> Linked: return LNull() def __bytes__(self): return bytes([CODE_NULL])