deep_trace + refactor
This commit is contained in:
parent
de5a8ed899
commit
609371048d
@ -1,17 +1,18 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
from bu4.combinatory.lcombinatory import LCombinatory
|
from bu4.combinatory.lcombinatory import LCombinatory
|
||||||
|
from bu4.encoding.codes import CODE_CMBI
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.evaluation.constructs.evalue import EValue
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.linkable.evaluation.elvtype import elvtype
|
from bu4.linkable.evaluation.elvtype import elvtype
|
||||||
from bu4.parsing.codes import CODE_CMBI
|
from bu4.linking.constructs.linked import Linked
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('EIC', 'IIC', 'XII', 'LIC',)
|
__all__ = ('EIC', 'IIC', 'XII', 'LIC', 'XLI',)
|
||||||
|
|
||||||
|
|
||||||
class EIC(EValue):
|
class EIC(EValue):
|
||||||
@ -51,3 +52,8 @@ class LIC(LCombinatory):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'I'
|
return f'I'
|
||||||
|
|
||||||
|
|
||||||
|
class XLI(CodeExtension[Linked], code=CODE_CMBI):
|
||||||
|
def apply(self) -> TransformState[Linked]:
|
||||||
|
return TransformFinished(LIC())
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
from bu4.combinatory.lcombinatory import LCombinatory
|
from bu4.combinatory.lcombinatory import LCombinatory
|
||||||
|
from bu4.encoding.codes import CODE_CMBK
|
||||||
from bu4.evaluation.constructs.edelayed import EDelayed
|
from bu4.evaluation.constructs.edelayed import EDelayed
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.evaluation.constructs.evalue import EValue
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.linkable.evaluation.elvtype import elvtype
|
from bu4.linkable.evaluation.elvtype import elvtype
|
||||||
from bu4.parsing.codes import CODE_CMBK
|
from bu4.linking.constructs.linked import Linked
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('EKC', 'IKC', 'XIK', 'LKC',)
|
__all__ = ('EKC', 'IKC', 'XIK', 'LKC', 'XLK',)
|
||||||
|
|
||||||
|
|
||||||
class EKC(EValue):
|
class EKC(EValue):
|
||||||
@ -52,3 +53,8 @@ class LKC(LCombinatory):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'K'
|
return f'K'
|
||||||
|
|
||||||
|
|
||||||
|
class XLK(CodeExtension[Linked], code=CODE_CMBK):
|
||||||
|
def apply(self) -> TransformState[Linked]:
|
||||||
|
return TransformFinished(LKC())
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
from bu4.combinatory.lcombinatory import LCombinatory
|
from bu4.combinatory.lcombinatory import LCombinatory
|
||||||
|
from bu4.encoding.codes import CODE_CMBS
|
||||||
from bu4.evaluation.av.aftervalue import AfterValue
|
from bu4.evaluation.av.aftervalue import AfterValue
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.evaluation.constructs.evalue import EValue
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
@ -9,12 +10,12 @@ from bu4.evaluation.targets.avcall import AVCall
|
|||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.linkable.evaluation.elvtype import elvtype
|
from bu4.linkable.evaluation.elvtype import elvtype
|
||||||
from bu4.parsing.codes import CODE_CMBS
|
from bu4.linking.constructs.linked import Linked
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('ESC', 'ESC1', 'ESC2', 'ISC', 'XIS', 'LSC',)
|
__all__ = ('ESC', 'ESC1', 'ESC2', 'ISC', 'XIS', 'LSC', 'XLS',)
|
||||||
|
|
||||||
|
|
||||||
class ESC2(EValue):
|
class ESC2(EValue):
|
||||||
@ -86,3 +87,8 @@ class LSC(LCombinatory):
|
|||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'S'
|
return f'S'
|
||||||
|
|
||||||
|
|
||||||
|
class XLS(CodeExtension[Linked], code=CODE_CMBS):
|
||||||
|
def apply(self) -> TransformState[Linked]:
|
||||||
|
return TransformFinished(LSC())
|
||||||
|
16
bu4/encoding/codes.py
Normal file
16
bu4/encoding/codes.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
CODE_NULL = 0x00
|
||||||
|
CODE_CALL = 0x01
|
||||||
|
CODE_MAKE = 0x02
|
||||||
|
CODE_NAME = 0x03
|
||||||
|
CODE_SKIP = 0x04
|
||||||
|
CODE_QUOT = 0x05
|
||||||
|
CODE_QOPN = 0x06
|
||||||
|
CODE_QCLS = 0x07
|
||||||
|
CODE_XCPT = 0x08
|
||||||
|
CODE_DLYD = 0x09
|
||||||
|
|
||||||
|
CODE_CMBI = 0x49
|
||||||
|
CODE_CMBK = 0x4b
|
||||||
|
CODE_CMBS = 0x53
|
@ -1,12 +1,12 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_CALL
|
||||||
from bu4.evaluation.av.aftervalue import AfterValue
|
from bu4.evaluation.av.aftervalue import AfterValue
|
||||||
from bu4.evaluation.constructs.eattachable import EAttachable
|
from bu4.evaluation.constructs.eattachable import EAttachable
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.evaluation.targets.avcall import AVCall
|
from bu4.evaluation.targets.avcall import AVCall
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.parsing.codes import CODE_CALL
|
|
||||||
from bu4.transform.states.aftertransform import AfterTransform
|
from bu4.transform.states.aftertransform import AfterTransform
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstart import TransformStart
|
from bu4.transform.states.transformstart import TransformStart
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_DLYD
|
||||||
from bu4.evaluation.constructs.eattachable import EAttachable
|
from bu4.evaluation.constructs.eattachable import EAttachable
|
||||||
from bu4.evaluation.constructs.edelayed import EDelayed
|
from bu4.evaluation.constructs.edelayed import EDelayed
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.parsing.codes import CODE_DLYD
|
|
||||||
from bu4.transform.states.aftertransform import AfterTransform
|
from bu4.transform.states.aftertransform import AfterTransform
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstart import TransformStart
|
from bu4.transform.states.transformstart import TransformStart
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_XCPT
|
||||||
from bu4.evaluation.constructs.eexception import EException
|
from bu4.evaluation.constructs.eexception import EException
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.parsing.codes import CODE_XCPT
|
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_MAKE
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eilambda import EILambda
|
from bu4.indexing.evaluation.eilambda import EILambda
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.parsing.codes import CODE_MAKE
|
|
||||||
from bu4.transform.states.aftertransform import AfterTransform
|
from bu4.transform.states.aftertransform import AfterTransform
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstart import TransformStart
|
from bu4.transform.states.transformstart import TransformStart
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_NAME
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.parsing.codes import CODE_NAME
|
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_NULL
|
||||||
from bu4.evaluation.constructs.enull import ENull
|
from bu4.evaluation.constructs.enull import ENull
|
||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.evaluation.eivtype import eivtype
|
from bu4.indexing.evaluation.eivtype import eivtype
|
||||||
from bu4.parsing.codes import CODE_NULL
|
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_CALL
|
||||||
from bu4.indexing.constructs.icall import ICall
|
from bu4.indexing.constructs.icall import ICall
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.parsing.codes import CODE_CALL
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_DLYD
|
||||||
from bu4.indexing.constructs.idelayed import IDelayed
|
from bu4.indexing.constructs.idelayed import IDelayed
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.parsing.codes import CODE_DLYD
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# 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.ilambda import ILambda
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.parsing.codes import CODE_MAKE
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_NAME
|
||||||
from bu4.indexing.constructs.iname import IName
|
from bu4.indexing.constructs.iname import IName
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.parsing.codes import CODE_NAME
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_NULL
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.indexing.constructs.inull import INull
|
from bu4.indexing.constructs.inull import INull
|
||||||
from bu4.parsing.codes import CODE_NULL
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_XCPT
|
||||||
from bu4.indexing.constructs.iexception import IException
|
from bu4.indexing.constructs.iexception import IException
|
||||||
from bu4.indexing.constructs.indexed import Indexed
|
from bu4.indexing.constructs.indexed import Indexed
|
||||||
from bu4.parsing.codes import CODE_XCPT
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.combinatory.tocombinatory import to_combinatory
|
||||||
from bu4.evaluation.constructs.evalue import EValue
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
from bu4.evaluation.sync import sync
|
from bu4.evaluation.sync import sync
|
||||||
from bu4.linkable.toolchain.parse import parse
|
from bu4.linkable.toolchain.parse import parse
|
||||||
@ -10,10 +11,12 @@ from bu4.transform.transform import transform
|
|||||||
__all__ = ('isynced',)
|
__all__ = ('isynced',)
|
||||||
|
|
||||||
|
|
||||||
def isynced(source: str) -> EValue:
|
def isynced(source: str, *, combinatory=False) -> EValue:
|
||||||
bsource = transply(source)
|
bsource = transply(source)
|
||||||
parsed = parse(bsource, standard_extensions)
|
parsed = parse(bsource, standard_extensions)
|
||||||
linked = transform(parsed.link(set()))
|
linked = transform(parsed.link(set()))
|
||||||
|
if combinatory:
|
||||||
|
linked = transform(to_combinatory(linked))
|
||||||
indexed = transform(linked.index([]))
|
indexed = transform(linked.index([]))
|
||||||
evaluable = indexed.attach([])
|
evaluable = indexed.attach([])
|
||||||
return sync(evaluable)
|
return sync(evaluable)
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_CALL
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.linkable.constructs.pcall import PCall
|
from bu4.linkable.constructs.pcall import PCall
|
||||||
from bu4.parsing.codes import CODE_CALL
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XCall',)
|
__all__ = ('XLCall',)
|
||||||
|
|
||||||
|
|
||||||
class XCall(CodeExtension[Parsed], code=CODE_CALL):
|
class XLCall(CodeExtension[Parsed], code=CODE_CALL):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return self.readlambda(
|
return self.readlambda(
|
||||||
lambda argument: self.readlambdafinished(
|
lambda argument: self.readlambdafinished(
|
@ -1,15 +1,15 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_DLYD
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.linkable.constructs.pdelayed import PDelayed
|
from bu4.linkable.constructs.pdelayed import PDelayed
|
||||||
from bu4.parsing.codes import CODE_DLYD
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XDlyd',)
|
__all__ = ('XLDlyd',)
|
||||||
|
|
||||||
|
|
||||||
class XDlyd(CodeExtension[Parsed], code=CODE_DLYD):
|
class XLDlyd(CodeExtension[Parsed], code=CODE_DLYD):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return self.readlambdafinished(
|
return self.readlambdafinished(
|
||||||
lambda value: PDelayed(value)
|
lambda value: PDelayed(value)
|
@ -1,15 +1,15 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_MAKE
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.linkable.constructs.plambda import PLambda
|
from bu4.linkable.constructs.plambda import PLambda
|
||||||
from bu4.parsing.codes import CODE_MAKE
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XMake',)
|
__all__ = ('XLMake',)
|
||||||
|
|
||||||
|
|
||||||
class XMake(CodeExtension[Parsed], code=CODE_MAKE):
|
class XLMake(CodeExtension[Parsed], code=CODE_MAKE):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
name = self.parser.parse_name()
|
name = self.parser.parse_name()
|
||||||
return self.readlambdafinished(
|
return self.readlambdafinished(
|
@ -1,15 +1,15 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_NAME
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.linkable.constructs.pname import PName
|
from bu4.linkable.constructs.pname import PName
|
||||||
from bu4.parsing.codes import CODE_NAME
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XName',)
|
__all__ = ('XLName',)
|
||||||
|
|
||||||
|
|
||||||
class XName(CodeExtension[Parsed], code=CODE_NAME):
|
class XLName(CodeExtension[Parsed], code=CODE_NAME):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return TransformFinished(PName(self.parser.parse_name()))
|
return TransformFinished(PName(self.parser.parse_name()))
|
@ -1,15 +1,15 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_NULL
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.linkable.constructs.pnull import PNull
|
from bu4.linkable.constructs.pnull import PNull
|
||||||
from bu4.parsing.codes import CODE_NULL
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XNull',)
|
__all__ = ('XLNull',)
|
||||||
|
|
||||||
|
|
||||||
class XNull(CodeExtension[Parsed], code=CODE_NULL):
|
class XLNull(CodeExtension[Parsed], code=CODE_NULL):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return TransformFinished(PNull())
|
return TransformFinished(PNull())
|
@ -1,13 +1,13 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_QOPN, CODE_QCLS
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.parsing.codes import CODE_QOPN, CODE_QCLS
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XQopn',)
|
__all__ = ('XLQopn',)
|
||||||
|
|
||||||
|
|
||||||
class XQopn(CodeExtension[Parsed], code=CODE_QOPN):
|
class XLQopn(CodeExtension[Parsed], code=CODE_QOPN):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return self.endswith(CODE_QCLS, 'quot expected')
|
return self.endswith(CODE_QCLS, 'quot expected')
|
@ -1,13 +1,13 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_QUOT
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.parsing.codes import CODE_QUOT
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XQuot',)
|
__all__ = ('XLQuot',)
|
||||||
|
|
||||||
|
|
||||||
class XQuot(CodeExtension[Parsed], code=CODE_QUOT):
|
class XLQuot(CodeExtension[Parsed], code=CODE_QUOT):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return self.endswith(CODE_QUOT, 'quot expected')
|
return self.endswith(CODE_QUOT, 'quot expected')
|
@ -1,14 +1,14 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_SKIP
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.parsing.codes import CODE_SKIP
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.parsing.states.parsingread import ParsingRead
|
from bu4.parsing.states.parsingread import ParsingRead
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XSkip',)
|
__all__ = ('XLSkip',)
|
||||||
|
|
||||||
|
|
||||||
class XSkip(CodeExtension[Parsed], code=CODE_SKIP):
|
class XLSkip(CodeExtension[Parsed], code=CODE_SKIP):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return ParsingRead(self.parser)
|
return ParsingRead(self.parser)
|
@ -1,15 +1,15 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from bu4.encoding.codes import CODE_XCPT
|
||||||
from bu4.linkable.constructs.parsed import Parsed
|
from bu4.linkable.constructs.parsed import Parsed
|
||||||
from bu4.linkable.constructs.pexception import PException
|
from bu4.linkable.constructs.pexception import PException
|
||||||
from bu4.parsing.codes import CODE_XCPT
|
|
||||||
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
from bu4.parsing.extensions.CodeExtension import CodeExtension
|
||||||
from bu4.transform.states.transformfinished import TransformFinished
|
from bu4.transform.states.transformfinished import TransformFinished
|
||||||
from bu4.transform.states.transformstate import TransformState
|
from bu4.transform.states.transformstate import TransformState
|
||||||
|
|
||||||
__all__ = ('XXcpt',)
|
__all__ = ('XLXcpt',)
|
||||||
|
|
||||||
|
|
||||||
class XXcpt(CodeExtension[Parsed], code=CODE_XCPT):
|
class XLXcpt(CodeExtension[Parsed], code=CODE_XCPT):
|
||||||
def apply(self) -> TransformState[Parsed]:
|
def apply(self) -> TransformState[Parsed]:
|
||||||
return TransformFinished(PException(self.parser.parse_name()))
|
return TransformFinished(PException(self.parser.parse_name()))
|
@ -1,25 +1,25 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
from bu4.linkable.extensions.xcall import XCall
|
from bu4.linkable.extensions.xlcall import XLCall
|
||||||
from bu4.linkable.extensions.xdlyd import XDlyd
|
from bu4.linkable.extensions.xldlyd import XLDlyd
|
||||||
from bu4.linkable.extensions.xmake import XMake
|
from bu4.linkable.extensions.xlmake import XLMake
|
||||||
from bu4.linkable.extensions.xname import XName
|
from bu4.linkable.extensions.xlname import XLName
|
||||||
from bu4.linkable.extensions.xnull import XNull
|
from bu4.linkable.extensions.xlnull import XLNull
|
||||||
from bu4.linkable.extensions.xqopn import XQopn
|
from bu4.linkable.extensions.xlqopn import XLQopn
|
||||||
from bu4.linkable.extensions.xquot import XQuot
|
from bu4.linkable.extensions.xlquot import XLQuot
|
||||||
from bu4.linkable.extensions.xskip import XSkip
|
from bu4.linkable.extensions.xlskip import XLSkip
|
||||||
from bu4.linkable.extensions.xxcpt import XXcpt
|
from bu4.linkable.extensions.xlxcpt import XLXcpt
|
||||||
|
|
||||||
__all__ = ('standard_extensions',)
|
__all__ = ('standard_extensions',)
|
||||||
|
|
||||||
standard_extensions = (
|
standard_extensions = (
|
||||||
XNull,
|
XLNull,
|
||||||
XCall,
|
XLCall,
|
||||||
XMake,
|
XLMake,
|
||||||
XName,
|
XLName,
|
||||||
XSkip,
|
XLSkip,
|
||||||
XQuot,
|
XLQuot,
|
||||||
XQopn,
|
XLQopn,
|
||||||
XXcpt,
|
XLXcpt,
|
||||||
XDlyd,
|
XLDlyd,
|
||||||
)
|
)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
from bu4.parsing.codes import *
|
from bu4.encoding.codes import *
|
||||||
|
|
||||||
__all__ = ('transply',)
|
__all__ = ('transply',)
|
||||||
|
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
|
||||||
|
|
||||||
CODE_NULL = 0
|
|
||||||
CODE_CALL = 1
|
|
||||||
CODE_MAKE = 2
|
|
||||||
CODE_NAME = 3
|
|
||||||
CODE_SKIP = 4
|
|
||||||
CODE_QUOT = 5
|
|
||||||
CODE_QOPN = 6
|
|
||||||
CODE_QCLS = 7
|
|
||||||
CODE_XCPT = 8
|
|
||||||
CODE_DLYD = 9
|
|
||||||
CODE_CMBI = 10
|
|
||||||
CODE_CMBK = 11
|
|
||||||
CODE_CMBS = 12
|
|
30
bu4/tracing/deep_trace.py
Normal file
30
bu4/tracing/deep_trace.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
|
from bu4.tracing.probe import Probe
|
||||||
|
from bu4.tracing.trace import trace
|
||||||
|
|
||||||
|
__all__ = ('deep_trace',)
|
||||||
|
|
||||||
|
|
||||||
|
def deep_trace(sysx, *, length=1000, depth=10000):
|
||||||
|
hist = []
|
||||||
|
queue = deque([(0, 0, sysx)])
|
||||||
|
for trace_index in range(1, length + 1):
|
||||||
|
hist.append(trace_index)
|
||||||
|
if not queue:
|
||||||
|
break
|
||||||
|
tab, parent, evaluable = queue.popleft()
|
||||||
|
hist.append(parent)
|
||||||
|
for _ in range(depth):
|
||||||
|
evaluable = evaluable.next()
|
||||||
|
_probe_index, probe = trace(evaluable)
|
||||||
|
hist.append(_probe_index)
|
||||||
|
if isinstance(probe, Probe):
|
||||||
|
start, list_ = probe.start_and_list()
|
||||||
|
hist.append(start)
|
||||||
|
queue.extend((tab + 1, trace_index, deeper_evaluable) for deeper_evaluable in list_)
|
||||||
|
else:
|
||||||
|
hist.append(None)
|
||||||
|
return hist
|
@ -3,10 +3,13 @@
|
|||||||
from bu4.evaluation.constructs.evaluable import Evaluable
|
from bu4.evaluation.constructs.evaluable import Evaluable
|
||||||
from bu4.evaluation.constructs.evalue import EValue
|
from bu4.evaluation.constructs.evalue import EValue
|
||||||
|
|
||||||
__all__ = ('Probe', 'ProbeA',)
|
__all__ = ('Probe',)
|
||||||
|
|
||||||
|
|
||||||
class Probe(EValue):
|
class Probe(EValue):
|
||||||
|
def __new__(cls, *args, **kwargs):
|
||||||
|
return object.__new__(ProbeA if cls == Probe else cls)
|
||||||
|
|
||||||
def call(self, argument: Evaluable) -> Evaluable:
|
def call(self, argument: Evaluable) -> Evaluable:
|
||||||
return ProbeB(self, argument)
|
return ProbeB(self, argument)
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ from bu4.evaluation.constructs.evalue import EValue
|
|||||||
from bu4.evaluation.sync import sync
|
from bu4.evaluation.sync import sync
|
||||||
from bu4.indexing.evaluation.eilambda import EILambda
|
from bu4.indexing.evaluation.eilambda import EILambda
|
||||||
from bu4.linkable.evaluation.ellambda import ELLambda
|
from bu4.linkable.evaluation.ellambda import ELLambda
|
||||||
from bu4.tracing.probe import ProbeA
|
from bu4.tracing.probe import Probe
|
||||||
|
|
||||||
__all__ = ('trace', 'probe_index_reset',)
|
__all__ = ('trace', 'probe_index_reset',)
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ def trace(lambda_: EValue):
|
|||||||
while True:
|
while True:
|
||||||
if not isinstance(lambda_, (ELLambda, EILambda, EIC, EKC, ESC, ESC1, ESC2, EDelayed)):
|
if not isinstance(lambda_, (ELLambda, EILambda, EIC, EKC, ESC, ESC1, ESC2, EDelayed)):
|
||||||
return size, lambda_
|
return size, lambda_
|
||||||
lambda_ = sync(lambda_.call(ProbeA(_probe_index)))
|
lambda_ = sync(lambda_.call(Probe(_probe_index)))
|
||||||
_probe_index += 1
|
_probe_index += 1
|
||||||
size += 1
|
size += 1
|
||||||
|
|
||||||
|
43
main.py
43
main.py
@ -1,56 +1,15 @@
|
|||||||
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
# Copyright (c) PARRRATE T&V 2021. All rights reserved.
|
||||||
|
|
||||||
import random
|
import random
|
||||||
from collections import deque
|
|
||||||
|
|
||||||
from bu4.common_interface import with_common_interface
|
from bu4.common_interface import with_common_interface
|
||||||
from bu4.evaluation.constructs.proxy import antiproxy, eproxy
|
from bu4.evaluation.constructs.proxy import antiproxy, eproxy
|
||||||
from bu4.evaluation.sync import sync
|
from bu4.evaluation.sync import sync
|
||||||
from bu4.isynced import isynced as synced
|
from bu4.isynced import isynced as synced
|
||||||
from bu4.linkable.toolchain.parse import parse
|
|
||||||
from bu4.linkable.toolchain.readfile import readfile
|
from bu4.linkable.toolchain.readfile import readfile
|
||||||
from bu4.linkable.toolchain.stdext import standard_extensions
|
from bu4.tracing.deep_trace import deep_trace
|
||||||
from bu4.linkable.toolchain.transply import transply
|
|
||||||
from bu4.combinatory.tocombinatory import to_combinatory
|
|
||||||
from bu4.tracing.probe import Probe
|
|
||||||
from bu4.tracing.trace import trace
|
|
||||||
from bu4.transform.transform import transform
|
|
||||||
from timesample import TimeSample
|
from timesample import TimeSample
|
||||||
|
|
||||||
|
|
||||||
def deep_trace(sysx):
|
|
||||||
hist = []
|
|
||||||
queue = deque([(0, 0, sysx)])
|
|
||||||
for trace_index in range(1, 1000 + 1):
|
|
||||||
hist.append(trace_index)
|
|
||||||
if not queue:
|
|
||||||
break
|
|
||||||
tab, parent, evaluable = queue.popleft()
|
|
||||||
hist.append(parent)
|
|
||||||
for _ in range(10000):
|
|
||||||
evaluable = evaluable.next()
|
|
||||||
_probe_index, probe = trace(evaluable)
|
|
||||||
hist.append(_probe_index)
|
|
||||||
# prefix = ('.', ' ' * tab, parent, trace_index)
|
|
||||||
if isinstance(probe, Probe):
|
|
||||||
start, list_ = probe.start_and_list()
|
|
||||||
hist.append(start)
|
|
||||||
for i in range(len(list_)):
|
|
||||||
for _ in range(10000):
|
|
||||||
list_[i] = list_[i].next()
|
|
||||||
# TimeSample.print(*prefix, _probe_index, 'probe', start, f'[ {" ; ".join(map(str, list_))} ]')
|
|
||||||
queue.extend((tab + 1, trace_index, deeper_evaluable) for deeper_evaluable in list_)
|
|
||||||
else:
|
|
||||||
hist.append(None)
|
|
||||||
# TimeSample.print(*prefix, '...')
|
|
||||||
return hist
|
|
||||||
|
|
||||||
|
|
||||||
print(transform(to_combinatory(transform(parse(transply(
|
|
||||||
'/[b]/[a](x)(y)/[x][y]'
|
|
||||||
), standard_extensions).link({b'a', b'b'})))))
|
|
||||||
|
|
||||||
|
|
||||||
with TimeSample('all'):
|
with TimeSample('all'):
|
||||||
with TimeSample('sys0'):
|
with TimeSample('sys0'):
|
||||||
with TimeSample('compilation'):
|
with TimeSample('compilation'):
|
||||||
|
Loading…
Reference in New Issue
Block a user