xx2b, bitwise, b_halve
This commit is contained in:
parent
ecdda4f059
commit
efc87e30f4
@ -1,6 +1,8 @@
|
|||||||
from bu4.evaluation.proxy import eproxy
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
from bu4.evaluation.aftervalue import EValue
|
from bu4.evaluation.constructs.proxy import eproxy
|
||||||
from bu4.toolchain.sync import sync
|
from bu4.evaluation.sync import sync
|
||||||
|
|
||||||
|
__all__ = ('to_bool', 'with_common_interface',)
|
||||||
|
|
||||||
|
|
||||||
def to_bool(_01):
|
def to_bool(_01):
|
@ -1,19 +1,8 @@
|
|||||||
import abc
|
from bu4.evaluation.targets.avtarget import AVTarget
|
||||||
from typing import Mapping
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
|
||||||
from bu4.evaluation.evaluable import Evaluable
|
__all__ = ('AfterValue',)
|
||||||
|
|
||||||
try:
|
|
||||||
from typing import TypeAlias
|
|
||||||
except ImportError:
|
|
||||||
TypeAlias = type
|
|
||||||
|
|
||||||
envtype: TypeAlias = Mapping[bytes, 'AfterValue']
|
|
||||||
|
|
||||||
|
|
||||||
class AVTarget:
|
|
||||||
def given(self, value: 'EValue') -> Evaluable:
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
|
|
||||||
class AfterValue(Evaluable):
|
class AfterValue(Evaluable):
|
||||||
@ -21,30 +10,22 @@ class AfterValue(Evaluable):
|
|||||||
self.evaluable = evaluable
|
self.evaluable = evaluable
|
||||||
self.target = target
|
self.target = target
|
||||||
|
|
||||||
def next(self) -> 'Evaluable':
|
def next(self) -> Evaluable:
|
||||||
if isinstance(self.evaluable, EValue):
|
if isinstance(self.evaluable, EValue):
|
||||||
if isinstance(self.target, AVAV):
|
if isinstance(self.target, AVChain):
|
||||||
self.evaluable, self.target = self.target.target.given(self.evaluable), self.target.aftertarget
|
self.evaluable, self.target = self.target.target.given(self.evaluable), self.target.aftertarget
|
||||||
return self
|
return self
|
||||||
return self.target.given(self.evaluable)
|
return self.target.given(self.evaluable)
|
||||||
if isinstance(self.evaluable, AfterValue):
|
if isinstance(self.evaluable, AfterValue):
|
||||||
self.evaluable, self.target = self.evaluable.evaluable, AVAV(self.evaluable.target, self.target)
|
self.evaluable, self.target = self.evaluable.evaluable, AVChain(self.evaluable.target, self.target)
|
||||||
self.evaluable = self.evaluable.next()
|
self.evaluable = self.evaluable.next()
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
class AVAV(AVTarget):
|
class AVChain(AVTarget):
|
||||||
def __init__(self, target: AVTarget, aftertarget: AVTarget):
|
def __init__(self, target: AVTarget, aftertarget: AVTarget):
|
||||||
self.target = target
|
self.target = target
|
||||||
self.aftertarget = aftertarget
|
self.aftertarget = aftertarget
|
||||||
|
|
||||||
def given(self, value: 'EValue') -> Evaluable:
|
def given(self, value: EValue) -> Evaluable:
|
||||||
return AfterValue(self.target.given(value), self.aftertarget)
|
return AfterValue(self.target.given(value), self.aftertarget)
|
||||||
|
|
||||||
|
|
||||||
class EValue(Evaluable, abc.ABC):
|
|
||||||
def next(self) -> 'EValue':
|
|
||||||
return self
|
|
||||||
|
|
||||||
def call(self, argument: Evaluable) -> Evaluable:
|
|
||||||
raise NotImplementedError
|
|
12
bu4/evaluation/av/envtype.py
Normal file
12
bu4/evaluation/av/envtype.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from typing import Mapping
|
||||||
|
|
||||||
|
from bu4.evaluation.av.aftervalue import AfterValue
|
||||||
|
|
||||||
|
__all__ = ('envtype',)
|
||||||
|
|
||||||
|
try:
|
||||||
|
from typing import TypeAlias
|
||||||
|
except ImportError:
|
||||||
|
TypeAlias = type
|
||||||
|
|
||||||
|
envtype: TypeAlias = Mapping[bytes, AfterValue]
|
@ -1,7 +1,11 @@
|
|||||||
from typing import Mapping, Iterator
|
from typing import Mapping, Iterator
|
||||||
|
|
||||||
from bu4.evaluation.avcontainer import AVContainer
|
from bu4.evaluation.av.aftervalue import AfterValue
|
||||||
from bu4.evaluation.aftervalue import AfterValue, envtype, Evaluable
|
from bu4.evaluation.targets.avcontainer import AVContainer
|
||||||
|
from bu4.evaluation.av.envtype import envtype
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
|
||||||
|
__all__ = ('LambdaEnv',)
|
||||||
|
|
||||||
|
|
||||||
class LambdaEnv(Mapping):
|
class LambdaEnv(Mapping):
|
@ -1,14 +0,0 @@
|
|||||||
from bu4.evaluation.elinked import ELinked
|
|
||||||
from bu4.parsing.linked import Linked
|
|
||||||
from bu4.evaluation.aftervalue import Evaluable, EValue, AVTarget, envtype
|
|
||||||
|
|
||||||
__all__ = ('AVCall',)
|
|
||||||
|
|
||||||
|
|
||||||
class AVCall(AVTarget):
|
|
||||||
def __init__(self, env: envtype, argument: Linked):
|
|
||||||
self.env = env
|
|
||||||
self.argument = argument
|
|
||||||
|
|
||||||
def given(self, value: EValue) -> Evaluable:
|
|
||||||
return value.call(ELinked(self.env, self.argument))
|
|
@ -1,7 +1,9 @@
|
|||||||
from bu4.evaluation.elinked import ELinked
|
from bu4.evaluation.constructs.elinked import ELinked
|
||||||
from bu4.evaluation.lambdaenv import LambdaEnv
|
from bu4.evaluation.av.envtype import envtype
|
||||||
from bu4.parsing.linked import Linked
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.evaluation.aftervalue import EValue, envtype, Evaluable
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
from bu4.evaluation.av.lambdaenv import LambdaEnv
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
__all__ = ('ELambda',)
|
__all__ = ('ELambda',)
|
||||||
|
|
@ -1,5 +1,8 @@
|
|||||||
from bu4.parsing.linked import Linked
|
from bu4.evaluation.av.envtype import envtype
|
||||||
from bu4.evaluation.aftervalue import Evaluable, envtype
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
|
__all__ = ('ELinked',)
|
||||||
|
|
||||||
|
|
||||||
class ELinked(Evaluable):
|
class ELinked(Evaluable):
|
@ -1,4 +1,5 @@
|
|||||||
from bu4.evaluation.aftervalue import EValue, Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
|
||||||
__all__ = ('ENull',)
|
__all__ = ('ENull',)
|
||||||
|
|
@ -1,3 +1,6 @@
|
|||||||
|
__all__ = ('Evaluable',)
|
||||||
|
|
||||||
|
|
||||||
class Evaluable:
|
class Evaluable:
|
||||||
def next(self) -> 'Evaluable':
|
def next(self) -> 'Evaluable':
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
13
bu4/evaluation/constructs/evalue.py
Normal file
13
bu4/evaluation/constructs/evalue.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import abc
|
||||||
|
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
|
||||||
|
__all__ = ('EValue',)
|
||||||
|
|
||||||
|
|
||||||
|
class EValue(Evaluable, abc.ABC):
|
||||||
|
def next(self) -> 'EValue':
|
||||||
|
return self
|
||||||
|
|
||||||
|
def call(self, argument: Evaluable) -> Evaluable:
|
||||||
|
raise NotImplementedError
|
@ -1,7 +1,12 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from bu4.evaluation.aftervalue import AVTarget, EValue, Evaluable, AfterValue
|
from bu4.evaluation.av.aftervalue import AfterValue
|
||||||
from bu4.toolchain.sync import sync
|
from bu4.evaluation.targets.avtarget import AVTarget
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
from bu4.evaluation.sync import sync
|
||||||
|
|
||||||
|
__all__ = ('eproxy', 'antiproxy')
|
||||||
|
|
||||||
|
|
||||||
class AVProxyCall(AVTarget):
|
class AVProxyCall(AVTarget):
|
@ -1,4 +1,7 @@
|
|||||||
from bu4.evaluation.aftervalue import Evaluable, EValue
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
|
||||||
|
__all__ = ('sync',)
|
||||||
|
|
||||||
|
|
||||||
def sync(evaluable: Evaluable) -> EValue:
|
def sync(evaluable: Evaluable) -> EValue:
|
14
bu4/evaluation/synced.py
Normal file
14
bu4/evaluation/synced.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
from bu4.evaluation.sync import sync
|
||||||
|
from bu4.linking.evaluable_from_parsed import evaluable_from_parsed
|
||||||
|
from bu4.parsing.toolchain.parse import parse
|
||||||
|
from bu4.parsing.toolchain.transply import transply
|
||||||
|
|
||||||
|
__all__ = ('synced',)
|
||||||
|
|
||||||
|
|
||||||
|
def synced(source: str) -> EValue:
|
||||||
|
bsource = transply(source)
|
||||||
|
parsed = parse(bsource)
|
||||||
|
evaluable = evaluable_from_parsed({}, parsed)
|
||||||
|
return sync(evaluable)
|
17
bu4/evaluation/targets/avcall.py
Normal file
17
bu4/evaluation/targets/avcall.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
from bu4.evaluation.targets.avtarget import AVTarget
|
||||||
|
from bu4.evaluation.constructs.elinked import ELinked
|
||||||
|
from bu4.evaluation.av.envtype import envtype
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
|
__all__ = ('AVCall',)
|
||||||
|
|
||||||
|
|
||||||
|
class AVCall(AVTarget):
|
||||||
|
def __init__(self, env: envtype, argument: Linked):
|
||||||
|
self.env = env
|
||||||
|
self.argument = argument
|
||||||
|
|
||||||
|
def given(self, value: EValue) -> Evaluable:
|
||||||
|
return value.call(ELinked(self.env, self.argument))
|
@ -1,4 +1,9 @@
|
|||||||
from bu4.evaluation.aftervalue import EValue, AfterValue, Evaluable, AVTarget
|
from bu4.evaluation.av.aftervalue import AfterValue
|
||||||
|
from bu4.evaluation.targets.avtarget import AVTarget
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
|
||||||
|
__all__ = ('AVContainer',)
|
||||||
|
|
||||||
|
|
||||||
class AVContainer(AVTarget):
|
class AVContainer(AVTarget):
|
9
bu4/evaluation/targets/avtarget.py
Normal file
9
bu4/evaluation/targets/avtarget.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
|
||||||
|
__all__ = ('AVTarget',)
|
||||||
|
|
||||||
|
|
||||||
|
class AVTarget:
|
||||||
|
def given(self, value: EValue) -> Evaluable:
|
||||||
|
raise NotImplementedError
|
@ -1,6 +0,0 @@
|
|||||||
from bu4.parsing.linked import Linked, LinkingState
|
|
||||||
|
|
||||||
|
|
||||||
class ALTarget:
|
|
||||||
def given(self, linked: Linked) -> LinkingState:
|
|
||||||
raise NotImplementedError
|
|
12
bu4/linking/evaluable_from_parsed.py
Normal file
12
bu4/linking/evaluable_from_parsed.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from bu4.evaluation.constructs.elinked import ELinked
|
||||||
|
from bu4.evaluation.av.envtype import envtype
|
||||||
|
from bu4.linking.prepare import prepare
|
||||||
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
|
|
||||||
|
__all__ = ('evaluable_from_parsed',)
|
||||||
|
|
||||||
|
|
||||||
|
def evaluable_from_parsed(env: envtype, parsed: Parsed):
|
||||||
|
linked = parsed.link(set(env))
|
||||||
|
prepare(linked)
|
||||||
|
return ELinked(env, linked)
|
@ -1,6 +0,0 @@
|
|||||||
from bu4.parsing.linked import LinkingState, Linked
|
|
||||||
|
|
||||||
|
|
||||||
class LinkingFinished(LinkingState):
|
|
||||||
def __init__(self, linked: Linked):
|
|
||||||
self.linked = linked
|
|
@ -1,15 +1,18 @@
|
|||||||
from bu4.linking.afterlinking import AfterLinking
|
from bu4.linking.states.afterlinking import AfterLinking
|
||||||
from bu4.linking.alal import ALAL
|
from bu4.linking.targets.alchain import ALChain
|
||||||
from bu4.parsing.linked import LinkingState, Linked
|
from bu4.linking.states.linkingfinished import LinkingFinished
|
||||||
from bu4.linking.linkingfinished import LinkingFinished
|
from bu4.linking.states.linkingparsed import LinkingParsed
|
||||||
from bu4.linking.linkingparsed import LinkingParsed
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
|
__all__ = ('prepare',)
|
||||||
|
|
||||||
|
|
||||||
def _afterlinking_iteration(state: AfterLinking) -> LinkingState:
|
def _afterlinking_iteration(state: AfterLinking) -> LinkingState:
|
||||||
if isinstance(state.state, LinkingFinished):
|
if isinstance(state.state, LinkingFinished):
|
||||||
state = state.target.given(state.state.linked)
|
state = state.target.given(state.state.linked)
|
||||||
elif isinstance(state.state, AfterLinking):
|
elif isinstance(state.state, AfterLinking):
|
||||||
state.state, state.target = state.state.state, ALAL(state.state.target, state.target)
|
state.state, state.target = state.state.state, ALChain(state.state.target, state.target)
|
||||||
elif isinstance(state.state, LinkingParsed):
|
elif isinstance(state.state, LinkingParsed):
|
||||||
state.state = state.state.parsed.link(state.state.promise).link()
|
state.state = state.state.parsed.link(state.state.promise).link()
|
||||||
else:
|
else:
|
@ -1,5 +1,8 @@
|
|||||||
from bu4.linking.altarget import ALTarget
|
from bu4.linking.targets.altarget import ALTarget
|
||||||
from bu4.parsing.linked import LinkingState
|
|
||||||
|
__all__ = ('AfterLinking',)
|
||||||
|
|
||||||
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
|
|
||||||
|
|
||||||
class AfterLinking(LinkingState):
|
class AfterLinking(LinkingState):
|
9
bu4/linking/states/linkingfinished.py
Normal file
9
bu4/linking/states/linkingfinished.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
|
__all__ = ('LinkingFinished',)
|
||||||
|
|
||||||
|
|
||||||
|
class LinkingFinished(LinkingState):
|
||||||
|
def __init__(self, linked: Linked):
|
||||||
|
self.linked = linked
|
@ -1,4 +1,7 @@
|
|||||||
from bu4.parsing.linked import LinkingState, Parsed
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
|
|
||||||
|
__all__ = ('LinkingParsed',)
|
||||||
|
|
||||||
|
|
||||||
class LinkingParsed(LinkingState):
|
class LinkingParsed(LinkingState):
|
5
bu4/linking/states/linkingstate.py
Normal file
5
bu4/linking/states/linkingstate.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
__all__ = ('LinkingState',)
|
||||||
|
|
||||||
|
|
||||||
|
class LinkingState:
|
||||||
|
pass
|
@ -1,9 +1,12 @@
|
|||||||
from bu4.linking.afterlinking import AfterLinking
|
from bu4.linking.states.afterlinking import AfterLinking
|
||||||
from bu4.linking.altarget import ALTarget
|
from bu4.linking.targets.altarget import ALTarget
|
||||||
from bu4.parsing.linked import Linked, LinkingState
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
|
__all__ = ('ALChain',)
|
||||||
|
|
||||||
|
|
||||||
class ALAL(ALTarget):
|
class ALChain(ALTarget):
|
||||||
def __init__(self, target: ALTarget, aftertarget: ALTarget):
|
def __init__(self, target: ALTarget, aftertarget: ALTarget):
|
||||||
self.target = target
|
self.target = target
|
||||||
self.aftertarget = aftertarget
|
self.aftertarget = aftertarget
|
@ -1,7 +1,10 @@
|
|||||||
from typing import Callable
|
from typing import Callable
|
||||||
|
|
||||||
from bu4.linking.altarget import ALTarget
|
from bu4.linking.targets.altarget import ALTarget
|
||||||
from bu4.parsing.linked import Linked, LinkingState
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
|
__all__ = ('ALLambda',)
|
||||||
|
|
||||||
|
|
||||||
class ALLambda(ALTarget):
|
class ALLambda(ALTarget):
|
9
bu4/linking/targets/altarget.py
Normal file
9
bu4/linking/targets/altarget.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
|
from bu4.parsing.constructs.linked import Linked
|
||||||
|
|
||||||
|
__all__ = ('ALTarget',)
|
||||||
|
|
||||||
|
|
||||||
|
class ALTarget:
|
||||||
|
def given(self, linked: Linked) -> LinkingState:
|
||||||
|
raise NotImplementedError
|
6
bu4/parsing/abstractparser.py
Normal file
6
bu4/parsing/abstractparser.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
__all__ = ('AbstractParser',)
|
||||||
|
|
||||||
|
|
||||||
|
class AbstractParser:
|
||||||
|
def read(self) -> int:
|
||||||
|
raise NotImplementedError
|
@ -1,14 +1,17 @@
|
|||||||
from bu4.codes import CODE_CALL
|
from bu4.evaluation.av.aftervalue import AfterValue
|
||||||
from bu4.evaluation.avcall import AVCall
|
from bu4.evaluation.av.envtype import envtype
|
||||||
from bu4.evaluation.elinked import ELinked
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
from bu4.linking.afterlinking import AfterLinking
|
from bu4.parsing.codes import CODE_CALL
|
||||||
from bu4.linking.allambda import ALLambda
|
from bu4.evaluation.targets.avcall import AVCall
|
||||||
from bu4.parsing.linked import Linked, Parsed, LinkingState
|
from bu4.evaluation.constructs.elinked import ELinked
|
||||||
from bu4.linking.linkingfinished import LinkingFinished
|
from bu4.linking.states.afterlinking import AfterLinking
|
||||||
from bu4.linking.linkingparsed import LinkingParsed
|
from bu4.linking.targets.allambda import ALLambda
|
||||||
from bu4.evaluation.aftervalue import envtype, Evaluable, AfterValue
|
from bu4.parsing.constructs.linked import Linked, Parsed
|
||||||
|
from bu4.linking.states.linkingfinished import LinkingFinished
|
||||||
|
from bu4.linking.states.linkingparsed import LinkingParsed
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
|
||||||
__all__ = ('LCall', 'PCall',)
|
__all__ = ('PCall',)
|
||||||
|
|
||||||
|
|
||||||
class LCall(Linked):
|
class LCall(Linked):
|
@ -1,8 +1,9 @@
|
|||||||
from bu4.evaluation.aftervalue import envtype, Evaluable
|
from bu4.evaluation.av.envtype import envtype
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
|
||||||
|
__all__ = ('Linked', 'Parsed',)
|
||||||
|
|
||||||
class LinkingState:
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class Linked:
|
class Linked:
|
@ -1,13 +1,15 @@
|
|||||||
from bu4.codes import CODE_MAKE, CODE_NULL
|
from bu4.evaluation.av.envtype import envtype
|
||||||
from bu4.evaluation.elambda import ELambda
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
from bu4.linking.afterlinking import AfterLinking
|
from bu4.parsing.codes import CODE_MAKE, CODE_NULL
|
||||||
from bu4.linking.allambda import ALLambda
|
from bu4.evaluation.constructs.elambda import ELambda
|
||||||
from bu4.parsing.linked import Linked, Parsed, LinkingState
|
from bu4.linking.states.afterlinking import AfterLinking
|
||||||
from bu4.linking.linkingfinished import LinkingFinished
|
from bu4.linking.targets.allambda import ALLambda
|
||||||
from bu4.linking.linkingparsed import LinkingParsed
|
from bu4.parsing.constructs.linked import Linked, Parsed
|
||||||
from bu4.evaluation.aftervalue import envtype, Evaluable
|
from bu4.linking.states.linkingfinished import LinkingFinished
|
||||||
|
from bu4.linking.states.linkingparsed import LinkingParsed
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
|
||||||
__all__ = ('LLambda', 'PLambda',)
|
__all__ = ('PLambda',)
|
||||||
|
|
||||||
|
|
||||||
class LLambda(Linked):
|
class LLambda(Linked):
|
@ -1,10 +1,12 @@
|
|||||||
from bu4.codes import CODE_NAME, CODE_NULL
|
from bu4.evaluation.av.envtype import envtype
|
||||||
from bu4.parsing.linked import Linked, LinkingState, Parsed
|
from bu4.linking.states.linkingstate import LinkingState
|
||||||
from bu4.linking.linkingfinished import LinkingFinished
|
from bu4.parsing.codes import CODE_NAME, CODE_NULL
|
||||||
from bu4.evaluation.aftervalue import envtype, Evaluable
|
from bu4.parsing.constructs.linked import Linked, Parsed
|
||||||
|
from bu4.linking.states.linkingfinished import LinkingFinished
|
||||||
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
|
|
||||||
|
|
||||||
__all__ = ('LName', 'PName',)
|
__all__ = ('PName',)
|
||||||
|
|
||||||
|
|
||||||
class LName(Linked):
|
class LName(Linked):
|
35
bu4/parsing/constructs/lnull.py
Normal file
35
bu4/parsing/constructs/lnull.py
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
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])
|
@ -1,33 +0,0 @@
|
|||||||
from bu4.evaluation.enull import ENull
|
|
||||||
from bu4.codes import CODE_NULL
|
|
||||||
from bu4.parsing.linked import Linked, LinkingState, Parsed
|
|
||||||
from bu4.linking.linkingfinished import LinkingFinished
|
|
||||||
from bu4.evaluation.aftervalue import envtype, Evaluable
|
|
||||||
|
|
||||||
|
|
||||||
__all__ = ('LNull', '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])
|
|
@ -1,86 +1,23 @@
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from typing import Callable
|
|
||||||
|
|
||||||
from bu4.parsing.linked import Parsed
|
from bu4.parsing.abstractparser import AbstractParser
|
||||||
from bu4.parsing.lname import PName
|
from bu4.parsing.codes import *
|
||||||
from bu4.codes import CODE_NULL, CODE_CALL, CODE_MAKE, CODE_NAME, CODE_SKIP, CODE_QUOT, CODE_QOPN, CODE_QCLS
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
from bu4.parsing.lcall import PCall
|
from bu4.parsing.constructs.llambda import PLambda
|
||||||
from bu4.parsing.lnull import PNull
|
from bu4.parsing.constructs.lname import PName
|
||||||
|
from bu4.parsing.constructs.lnull import PNull
|
||||||
|
from bu4.parsing.states.psafter import PSAfter
|
||||||
|
from bu4.parsing.states.pscall import pscall
|
||||||
|
from bu4.parsing.states.psfinal import PSFinal
|
||||||
|
from bu4.parsing.states.psread import PSRead
|
||||||
|
from bu4.parsing.targets.pschain import PSChain
|
||||||
|
from bu4.parsing.targets.psendswith import PSEndsWith
|
||||||
|
from bu4.parsing.targets.pslambda import PSLambda
|
||||||
|
|
||||||
from bu4.parsing.llambda import PLambda
|
__all__ = ('Parser',)
|
||||||
|
|
||||||
|
|
||||||
class ParseState:
|
class Parser(AbstractParser):
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class PSRead(ParseState):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class PSFinal(ParseState):
|
|
||||||
def __init__(self, parsed: Parsed):
|
|
||||||
self.parsed = parsed
|
|
||||||
|
|
||||||
|
|
||||||
class PSATarget:
|
|
||||||
def given(self, parsed: Parsed) -> ParseState:
|
|
||||||
raise NotImplementedError
|
|
||||||
|
|
||||||
|
|
||||||
class PSAfter(ParseState):
|
|
||||||
def __init__(self, state, target: PSATarget):
|
|
||||||
self.state = state
|
|
||||||
self.target = target
|
|
||||||
|
|
||||||
|
|
||||||
class PSAA(PSATarget):
|
|
||||||
def __init__(self, target: PSATarget, aftertarget: PSATarget):
|
|
||||||
self.target = target
|
|
||||||
self.aftertarget = aftertarget
|
|
||||||
|
|
||||||
def given(self, parsed: Parsed) -> ParseState:
|
|
||||||
return PSAfter(self.target.given(parsed), self.aftertarget)
|
|
||||||
|
|
||||||
|
|
||||||
class PSALambda(PSATarget):
|
|
||||||
def __init__(self, lambda_: Callable[[Parsed], ParseState]):
|
|
||||||
self.lambda_ = lambda_
|
|
||||||
|
|
||||||
def given(self, parsed: Parsed) -> ParseState:
|
|
||||||
return self.lambda_(parsed)
|
|
||||||
|
|
||||||
|
|
||||||
class PSAEndsWith(PSATarget):
|
|
||||||
def __init__(self, parser: 'Parser', c: int, msg: str):
|
|
||||||
self.parser = parser
|
|
||||||
self.c = c
|
|
||||||
self.msg = msg
|
|
||||||
|
|
||||||
def given(self, parsed: Parsed) -> ParseState:
|
|
||||||
assert self.parser.read() == self.c, self.msg
|
|
||||||
return PSFinal(parsed)
|
|
||||||
|
|
||||||
|
|
||||||
_apacall = PSAfter(
|
|
||||||
PSRead(),
|
|
||||||
PSALambda(
|
|
||||||
lambda argument: PSAfter(
|
|
||||||
PSRead(),
|
|
||||||
PSALambda(
|
|
||||||
lambda lambda_: PSFinal(
|
|
||||||
PCall(
|
|
||||||
argument,
|
|
||||||
lambda_
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Parser:
|
|
||||||
def __init__(self, s: bytes):
|
def __init__(self, s: bytes):
|
||||||
self.__s = BytesIO(s)
|
self.__s = BytesIO(s)
|
||||||
|
|
||||||
@ -101,11 +38,11 @@ class Parser:
|
|||||||
if c == CODE_NULL:
|
if c == CODE_NULL:
|
||||||
state.state = PSFinal(PNull())
|
state.state = PSFinal(PNull())
|
||||||
elif c == CODE_CALL:
|
elif c == CODE_CALL:
|
||||||
state.state = _apacall
|
state.state = pscall
|
||||||
elif c == CODE_MAKE:
|
elif c == CODE_MAKE:
|
||||||
state.state = (lambda name: PSAfter(
|
state.state = (lambda name: PSAfter(
|
||||||
PSRead(),
|
PSRead(),
|
||||||
PSALambda(
|
PSLambda(
|
||||||
lambda value: PSFinal(PLambda(name, value))
|
lambda value: PSFinal(PLambda(name, value))
|
||||||
)
|
)
|
||||||
))(self.parse_name())
|
))(self.parse_name())
|
||||||
@ -114,16 +51,16 @@ class Parser:
|
|||||||
elif c == CODE_SKIP:
|
elif c == CODE_SKIP:
|
||||||
pass
|
pass
|
||||||
elif c == CODE_QUOT:
|
elif c == CODE_QUOT:
|
||||||
state.target = PSAA(PSAEndsWith(self, CODE_QUOT, "quot expected"), state.target)
|
state.target = PSChain(PSEndsWith(self, CODE_QUOT, "quot expected"), state.target)
|
||||||
elif c == CODE_QOPN:
|
elif c == CODE_QOPN:
|
||||||
state.target = PSAA(PSAEndsWith(self, CODE_QCLS, "qcls expected"), state.target)
|
state.target = PSChain(PSEndsWith(self, CODE_QCLS, "qcls expected"), state.target)
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"unknown control: {hex(c)}")
|
raise ValueError(f"unknown control: {hex(c)}")
|
||||||
return state
|
return state
|
||||||
|
|
||||||
def _state_next(self, state: PSAfter):
|
def _state_next(self, state: PSAfter):
|
||||||
if isinstance(state.state, PSAfter):
|
if isinstance(state.state, PSAfter):
|
||||||
state.state, state.target = state.state.state, PSAA(state.state.target, state.target)
|
state.state, state.target = state.state.state, PSChain(state.state.target, state.target)
|
||||||
elif isinstance(state.state, PSFinal):
|
elif isinstance(state.state, PSFinal):
|
||||||
state = state.target.given(state.state.parsed)
|
state = state.target.given(state.state.parsed)
|
||||||
elif isinstance(state.state, PSRead):
|
elif isinstance(state.state, PSRead):
|
||||||
@ -131,7 +68,7 @@ class Parser:
|
|||||||
return state
|
return state
|
||||||
|
|
||||||
def parse(self) -> Parsed:
|
def parse(self) -> Parsed:
|
||||||
state = PSAfter(PSRead(), PSALambda(lambda parsed: PSFinal(parsed)))
|
state = PSAfter(PSRead(), PSLambda(lambda parsed: PSFinal(parsed)))
|
||||||
while True:
|
while True:
|
||||||
if isinstance(state, PSFinal):
|
if isinstance(state, PSFinal):
|
||||||
return state.parsed
|
return state.parsed
|
||||||
|
5
bu4/parsing/states/parsestate.py
Normal file
5
bu4/parsing/states/parsestate.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
__all__ = ('ParseState',)
|
||||||
|
|
||||||
|
|
||||||
|
class ParseState:
|
||||||
|
pass
|
10
bu4/parsing/states/psafter.py
Normal file
10
bu4/parsing/states/psafter.py
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
from bu4.parsing.states.parsestate import ParseState
|
||||||
|
from bu4.parsing.targets.pstarget import PSTarget
|
||||||
|
|
||||||
|
__all__ = ('PSAfter',)
|
||||||
|
|
||||||
|
|
||||||
|
class PSAfter(ParseState):
|
||||||
|
def __init__(self, state: ParseState, target: PSTarget):
|
||||||
|
self.state = state
|
||||||
|
self.target = target
|
24
bu4/parsing/states/pscall.py
Normal file
24
bu4/parsing/states/pscall.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
from bu4.parsing.constructs.lcall import PCall
|
||||||
|
from bu4.parsing.states.psafter import PSAfter
|
||||||
|
from bu4.parsing.states.psfinal import PSFinal
|
||||||
|
from bu4.parsing.targets.pslambda import PSLambda
|
||||||
|
from bu4.parsing.states.psread import PSRead
|
||||||
|
|
||||||
|
__all__ = ('pscall',)
|
||||||
|
|
||||||
|
pscall = PSAfter(
|
||||||
|
PSRead(),
|
||||||
|
PSLambda(
|
||||||
|
lambda argument: PSAfter(
|
||||||
|
PSRead(),
|
||||||
|
PSLambda(
|
||||||
|
lambda lambda_: PSFinal(
|
||||||
|
PCall(
|
||||||
|
argument,
|
||||||
|
lambda_
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
9
bu4/parsing/states/psfinal.py
Normal file
9
bu4/parsing/states/psfinal.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
|
from bu4.parsing.states.parsestate import ParseState
|
||||||
|
|
||||||
|
__all__ = ('PSFinal',)
|
||||||
|
|
||||||
|
|
||||||
|
class PSFinal(ParseState):
|
||||||
|
def __init__(self, parsed: Parsed):
|
||||||
|
self.parsed = parsed
|
7
bu4/parsing/states/psread.py
Normal file
7
bu4/parsing/states/psread.py
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from bu4.parsing.states.parsestate import ParseState
|
||||||
|
|
||||||
|
__all__ = ('PSRead',)
|
||||||
|
|
||||||
|
|
||||||
|
class PSRead(ParseState):
|
||||||
|
pass
|
15
bu4/parsing/targets/pschain.py
Normal file
15
bu4/parsing/targets/pschain.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
|
from bu4.parsing.states.parsestate import ParseState
|
||||||
|
from bu4.parsing.states.psafter import PSAfter
|
||||||
|
from bu4.parsing.targets.pstarget import PSTarget
|
||||||
|
|
||||||
|
__all__ = ('PSChain',)
|
||||||
|
|
||||||
|
|
||||||
|
class PSChain(PSTarget):
|
||||||
|
def __init__(self, target: PSTarget, aftertarget: PSTarget):
|
||||||
|
self.target = target
|
||||||
|
self.aftertarget = aftertarget
|
||||||
|
|
||||||
|
def given(self, parsed: Parsed) -> ParseState:
|
||||||
|
return PSAfter(self.target.given(parsed), self.aftertarget)
|
18
bu4/parsing/targets/psendswith.py
Normal file
18
bu4/parsing/targets/psendswith.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from bu4.parsing.abstractparser import AbstractParser
|
||||||
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
|
from bu4.parsing.states.parsestate import ParseState
|
||||||
|
from bu4.parsing.states.psfinal import PSFinal
|
||||||
|
from bu4.parsing.targets.pstarget import PSTarget
|
||||||
|
|
||||||
|
__all__ = ('PSEndsWith',)
|
||||||
|
|
||||||
|
|
||||||
|
class PSEndsWith(PSTarget):
|
||||||
|
def __init__(self, parser: AbstractParser, c: int, msg: str):
|
||||||
|
self.parser = parser
|
||||||
|
self.c = c
|
||||||
|
self.msg = msg
|
||||||
|
|
||||||
|
def given(self, parsed: Parsed) -> ParseState:
|
||||||
|
assert self.parser.read() == self.c, self.msg
|
||||||
|
return PSFinal(parsed)
|
15
bu4/parsing/targets/pslambda.py
Normal file
15
bu4/parsing/targets/pslambda.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from typing import Callable
|
||||||
|
|
||||||
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
|
from bu4.parsing.states.parsestate import ParseState
|
||||||
|
from bu4.parsing.targets.pstarget import PSTarget
|
||||||
|
|
||||||
|
__all__ = ('PSLambda',)
|
||||||
|
|
||||||
|
|
||||||
|
class PSLambda(PSTarget):
|
||||||
|
def __init__(self, lambda_: Callable[[Parsed], ParseState]):
|
||||||
|
self.lambda_ = lambda_
|
||||||
|
|
||||||
|
def given(self, parsed: Parsed) -> ParseState:
|
||||||
|
return self.lambda_(parsed)
|
9
bu4/parsing/targets/pstarget.py
Normal file
9
bu4/parsing/targets/pstarget.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
|
from bu4.parsing.states.parsestate import ParseState
|
||||||
|
|
||||||
|
__all__ = ('PSTarget',)
|
||||||
|
|
||||||
|
|
||||||
|
class PSTarget:
|
||||||
|
def given(self, parsed: Parsed) -> ParseState:
|
||||||
|
raise NotImplementedError
|
@ -1,6 +1,9 @@
|
|||||||
from bu4.parsing.linked import Parsed
|
from bu4.parsing.constructs.linked import Parsed
|
||||||
from bu4.parsing.parser import Parser
|
from bu4.parsing.parser import Parser
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = ('parse',)
|
||||||
|
|
||||||
|
|
||||||
def parse(source: bytes) -> Parsed:
|
def parse(source: bytes) -> Parsed:
|
||||||
return Parser(source).parse()
|
return Parser(source).parse()
|
@ -1,13 +1,15 @@
|
|||||||
import os
|
import os
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
|
__all__ = ('readfile',)
|
||||||
|
|
||||||
|
|
||||||
def readfile(path: str) -> str:
|
def readfile(path: str) -> str:
|
||||||
srcio = StringIO()
|
srcio = StringIO()
|
||||||
with open(path + '.bu4') as file:
|
with open(path + '.bu4') as file:
|
||||||
for line in file:
|
for line in file:
|
||||||
if line.startswith('@'):
|
if line.startswith('@'):
|
||||||
srcio.write(readfile(os.path.join(path, '..', line.removeprefix('@').strip())))
|
srcio.write(readfile(os.path.join(path, os.path.pardir, line.removeprefix('@').strip())))
|
||||||
else:
|
else:
|
||||||
srcio.write(line)
|
srcio.write(line)
|
||||||
return srcio.getvalue()
|
return srcio.getvalue()
|
@ -1,6 +1,8 @@
|
|||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
from bu4.codes import CODE_CALL, CODE_QOPN, CODE_MAKE, CODE_QCLS, CODE_NULL, CODE_SKIP, CODE_NAME, CODE_QUOT
|
from bu4.parsing.codes import *
|
||||||
|
|
||||||
|
__all__ = ('transply',)
|
||||||
|
|
||||||
|
|
||||||
def transply(source: str) -> bytes:
|
def transply(source: str) -> bytes:
|
@ -1,10 +0,0 @@
|
|||||||
from bu4.evaluation.elinked import ELinked
|
|
||||||
from bu4.parsing.linked import Parsed
|
|
||||||
from bu4.evaluation.aftervalue import envtype
|
|
||||||
from bu4.toolchain.prepare import prepare
|
|
||||||
|
|
||||||
|
|
||||||
def elinked(env: envtype, parsed: Parsed):
|
|
||||||
linked = parsed.link(set(env))
|
|
||||||
prepare(linked)
|
|
||||||
return ELinked(env, linked)
|
|
@ -1,12 +0,0 @@
|
|||||||
from bu4.evaluation.aftervalue import EValue
|
|
||||||
from bu4.toolchain.elinked import elinked
|
|
||||||
from bu4.toolchain.parse import parse
|
|
||||||
from bu4.toolchain.sync import sync
|
|
||||||
from bu4.toolchain.transply import transply
|
|
||||||
|
|
||||||
|
|
||||||
def synced(source: str) -> EValue:
|
|
||||||
bsource = transply(source)
|
|
||||||
parsed = parse(bsource)
|
|
||||||
evaluable = elinked({}, parsed)
|
|
||||||
return sync(evaluable)
|
|
15
main.py
15
main.py
@ -1,8 +1,8 @@
|
|||||||
from bu4.evaluation.proxy import antiproxy, eproxy
|
from bu4.common_interface import with_common_interface
|
||||||
from bu4.toolchain.readfile import readfile
|
from bu4.evaluation.constructs.proxy import antiproxy, eproxy
|
||||||
from bu4.toolchain.sync import sync
|
from bu4.evaluation.sync import sync
|
||||||
from bu4.toolchain.synced import synced
|
from bu4.evaluation.synced import synced
|
||||||
from bu4.utils import with_common_interface
|
from bu4.parsing.toolchain.readfile import readfile
|
||||||
from timesample import TimeSample
|
from timesample import TimeSample
|
||||||
|
|
||||||
with TimeSample(' compilation'):
|
with TimeSample(' compilation'):
|
||||||
@ -49,3 +49,8 @@ with TimeSample(' full'):
|
|||||||
sys3 = with_common_interface(synced(readfile('src/sys3')))
|
sys3 = with_common_interface(synced(readfile('src/sys3')))
|
||||||
sys3 = sync(sys3.call(eproxy(5)))
|
sys3 = sync(sys3.call(eproxy(5)))
|
||||||
print(sys3)
|
print(sys3)
|
||||||
|
with TimeSample(' full'):
|
||||||
|
sys1 = with_common_interface(synced(readfile('src/sys1')))
|
||||||
|
sys1 = sync(sys1.call(eproxy(77)))
|
||||||
|
sys1 = sync(sys1.call(eproxy(194)))
|
||||||
|
print(sys1)
|
||||||
|
@ -3,4 +3,5 @@
|
|||||||
@binary/@
|
@binary/@
|
||||||
@convert/@
|
@convert/@
|
||||||
@io/@
|
@io/@
|
||||||
|
@serialization/@
|
||||||
@numbers
|
@numbers
|
||||||
|
@ -3,3 +3,4 @@
|
|||||||
@add
|
@add
|
||||||
@mul
|
@mul
|
||||||
@sub
|
@sub
|
||||||
|
@bitwise
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{ (b) </[b ]/[0][b!]> | b_double }
|
{ (b) </[b]/[0][b!]> | b_double }
|
||||||
|
{ (b) </ <(zq)(lb)(hb!) [hb!]> [b]> | b_halve }
|
||||||
|
|
||||||
{
|
{
|
||||||
/(b_add)
|
/(b_add)
|
||||||
|
99
src/binary/bitwise.bu4
Normal file
99
src/binary/bitwise.bu4
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
/(b_and)
|
||||||
|
(bA)(bB)
|
||||||
|
/(zqA)(lbA)(hb!A)
|
||||||
|
/
|
||||||
|
/(zqB)(lbB)(hb!B)
|
||||||
|
/
|
||||||
|
/
|
||||||
|
/[hb!B]/[hb!A][b_and]
|
||||||
|
/
|
||||||
|
/[lbB]/[lbA][and]
|
||||||
|
[b!]
|
||||||
|
/
|
||||||
|
[b0]
|
||||||
|
[zqB]
|
||||||
|
[bB]
|
||||||
|
/
|
||||||
|
[b0]
|
||||||
|
[zqA]
|
||||||
|
[bA]
|
||||||
|
[YC]
|
||||||
|
|
|
||||||
|
b_and
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
/(b_or)
|
||||||
|
(bA)(bB)
|
||||||
|
/(zqA)(lbA)(hb!A)
|
||||||
|
/
|
||||||
|
/(zqB)(lbB)(hb!B)
|
||||||
|
/
|
||||||
|
/
|
||||||
|
/[hb!B]/[hb!A][b_or]
|
||||||
|
/
|
||||||
|
/[lbB]/[lbA][or]
|
||||||
|
[b!]
|
||||||
|
/
|
||||||
|
[bA]
|
||||||
|
[zqB]
|
||||||
|
[bB]
|
||||||
|
/
|
||||||
|
[bB]
|
||||||
|
[zqA]
|
||||||
|
[bA]
|
||||||
|
[YC]
|
||||||
|
|
|
||||||
|
b_or
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
/(b_xor)
|
||||||
|
(bA)(bB)
|
||||||
|
/(zqA)(lbA)(hb!A)
|
||||||
|
/
|
||||||
|
/(zqB)(lbB)(hb!B)
|
||||||
|
/
|
||||||
|
/
|
||||||
|
/[hb!B]/[hb!A][b_xor]
|
||||||
|
/
|
||||||
|
/[lbB]/[lbA][xor]
|
||||||
|
[b!]
|
||||||
|
/
|
||||||
|
[bA]
|
||||||
|
[zqB]
|
||||||
|
[bB]
|
||||||
|
/
|
||||||
|
[bB]
|
||||||
|
[zqA]
|
||||||
|
[bA]
|
||||||
|
[YC]
|
||||||
|
|
|
||||||
|
b_xor
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
/(b_exclude)
|
||||||
|
(bA)(bB)
|
||||||
|
/(zqA)(lbA)(hb!A)
|
||||||
|
/
|
||||||
|
/(zqB)(lbB)(hb!B)
|
||||||
|
/
|
||||||
|
/
|
||||||
|
/[hb!B]/[hb!A][b_exclude]
|
||||||
|
/
|
||||||
|
/</[lbB][not]>/[lbA][and]
|
||||||
|
[b!]
|
||||||
|
/
|
||||||
|
[bA]
|
||||||
|
[zqB]
|
||||||
|
[bB]
|
||||||
|
/
|
||||||
|
[b0]
|
||||||
|
[zqA]
|
||||||
|
[bA]
|
||||||
|
[YC]
|
||||||
|
|
|
||||||
|
b_exclude
|
||||||
|
}
|
1
src/serialization/@.bu4
Normal file
1
src/serialization/@.bu4
Normal file
@ -0,0 +1 @@
|
|||||||
|
@hex
|
15
src/serialization/hex.bu4
Normal file
15
src/serialization/hex.bu4
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
(b) ////[b][b_double][b_double][b_double][b_double]
|
||||||
|
|
|
||||||
|
x16
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
{ (higher) (zq)(lb)(hb) / [higher] /[lb][b!] | 2x2b }
|
||||||
|
{ (higher) (zq)(lb)(hb) ///[higher][2x2b][hb ]/[lb][b!] | 4x2b }
|
||||||
|
{ (higher) (zq)(lb)(hb) ///[higher][4x2b][hb ]/[lb][b!] | 8x2b }
|
||||||
|
{ (higher) (zq)(lb)(hb) ///[higher][8x2b][hb ]/[lb][b!] | xx2b }
|
||||||
|
(lower) (higher) ////[b0][xx2b][higher][xx2b][lower]
|
||||||
|
|
|
||||||
|
xx2b
|
||||||
|
}
|
15
src/sys1.bu4
Normal file
15
src/sys1.bu4
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
@@
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
@ci
|
||||||
|
|
||||||
|
(a)(b)
|
||||||
|
|
||||||
|
/
|
||||||
|
/
|
||||||
|
/[b][n_to_bx]
|
||||||
|
/
|
||||||
|
/[a][n_to_bx]
|
||||||
|
[xx2b]
|
||||||
|
[b_to_nx]
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
@ -1,5 +1,7 @@
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
|
__all__ = ('TimeSample',)
|
||||||
|
|
||||||
|
|
||||||
class TimeSample:
|
class TimeSample:
|
||||||
level = 0
|
level = 0
|
||||||
|
Loading…
Reference in New Issue
Block a user