This commit is contained in:
Reid 'arrdem' McKenzie 2022-07-15 19:37:34 -06:00
parent eb128d8b54
commit 353cf72b65
16 changed files with 38 additions and 37 deletions

View file

@ -17,10 +17,9 @@ from . import (
from .v0 import PackageV0, ProfileV0 from .v0 import PackageV0, ProfileV0
from .v1 import PackageV1, ProfileV1 from .v1 import PackageV1, ProfileV1
from vfs import Vfs
import click import click
from toposort import toposort_flatten from toposort import toposort_flatten
from vfs import Vfs
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View file

@ -11,9 +11,8 @@ from typing import List, Optional, Union
from .common import Package, sh, stow from .common import Package, sh, stow
from vfs import Vfs
import toml import toml
from vfs import Vfs
def tempf(name): def tempf(name):

View file

@ -10,4 +10,3 @@ from ichor.bootstrap import * # noqa
from ichor.impl import * # noqa from ichor.impl import * # noqa
from ichor.isa import * # noqa from ichor.isa import * # noqa
from ichor.typing import * # noqa from ichor.typing import * # noqa
from ichor.assembler import *

View file

@ -4,7 +4,13 @@
ichor entrypoint ichor entrypoint
""" """
from . import Opcode, Interpreter, BOOTSTRAP, XOR3, NOT1, TRUE, FALSE from . import (
BOOTSTRAP,
Interpreter,
NOT1,
Opcode,
TRUE,
)
def main(): def main():

View file

@ -1,15 +1,14 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from dataclasses import dataclass
from random import choices from random import choices
from string import ascii_lowercase, digits from string import ascii_lowercase, digits
from typing import Generator, List, Union, Optional, Sequence from typing import List, Optional, Sequence, Union
from ichor import isa from ichor import isa
def gensym(prefix = None) -> isa.Label: def gensym(prefix = None) -> isa.Label:
frag = ''.join(choices(ascii_lowercase + digits, k=8)) frag = "".join(choices(ascii_lowercase + digits, k=8))
return isa.Label(f"{prefix or 'gensym'}_{frag}") return isa.Label(f"{prefix or 'gensym'}_{frag}")

View file

@ -6,7 +6,6 @@ Hopefully no "real" interpreter ever uses this code, since it's obviously replac
from ichor import isa from ichor import isa
from ichor.state import Module, Variant from ichor.state import Module, Variant
from ichor.assembler import FuncBuilder
BOOTSTRAP = Module() BOOTSTRAP = Module()
@ -15,8 +14,8 @@ BOOL = BOOTSTRAP.define_type(
";bool;true(),false()", ";bool;true(),false()",
) )
TRUE = Variant(BOOL, 'true', ()) TRUE = Variant(BOOL, "true", ())
FALSE = Variant(BOOL, 'false', ()) FALSE = Variant(BOOL, "false", ())
NOT1 = BOOTSTRAP.define_function( NOT1 = BOOTSTRAP.define_function(
f";not;{BOOL};{BOOL}", f";not;{BOOL};{BOOL}",

View file

@ -10,11 +10,19 @@ context (a virtual machine) which DOES have an easily introspected and serialize
from copy import deepcopy from copy import deepcopy
import typing as t
from textwrap import indent from textwrap import indent
from ichor import isa from ichor import isa
from ichor.state import Closure, FunctionRef, Identifier, Module, Function, Type, TypeRef, VariantRef, Variant, Stackframe from ichor.state import (
Closure,
FunctionRef,
Identifier,
Module,
Stackframe,
TypeRef,
Variant,
VariantRef,
)
class InterpreterError(Exception): class InterpreterError(Exception):

View file

@ -2,7 +2,6 @@
from abc import ABC from abc import ABC
from dataclasses import dataclass from dataclasses import dataclass
import typing as t
@dataclass @dataclass
@ -239,4 +238,3 @@ class VLOAD(Opcode):
@dataclass @dataclass
class BREAK(Opcode): class BREAK(Opcode):
"""Abort the interpreter.""" """Abort the interpreter."""
pass

View file

@ -5,9 +5,7 @@
import typing as t import typing as t
from ichor import isa from ichor import isa
from lark import Lark, Token, Transformer, v_args
from pyrsistent import pdeque, PDeque
from lark import Lark, Transformer, v_args, Token
class Identifier(t.NamedTuple): class Identifier(t.NamedTuple):
@ -62,7 +60,7 @@ class FuncT(Transformer):
return name return name
FUNC = Lark(GRAMMAR, start="fun", parser='lalr', transformer=FuncT()) FUNC = Lark(GRAMMAR, start="fun", parser="lalr", transformer=FuncT())
class FunctionRef(t.NamedTuple): class FunctionRef(t.NamedTuple):
@ -120,7 +118,7 @@ class TypeT(FuncT):
TYPE = Lark(GRAMMAR, start="var", parser='lalr', transformer=TypeT()) TYPE = Lark(GRAMMAR, start="var", parser="lalr", transformer=TypeT())
class TypeRef(t.NamedTuple): class TypeRef(t.NamedTuple):

View file

@ -6,12 +6,7 @@ from abc import ABC
from dataclasses import dataclass from dataclasses import dataclass
import typing as t import typing as t
from shoggoth.types import ( from shoggoth.types import Keyword, List, Symbol
Keyword,
List,
Symbol,
Vec,
)
@dataclass @dataclass

View file

@ -1,7 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from ichor import Interpreter, BOOTSTRAP from ichor import BOOTSTRAP, Interpreter
import pytest import pytest

View file

@ -1,9 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from ichor import FuncBuilder, isa from ichor import FuncBuilder, isa
import pytest import pytest
@pytest.fixture @pytest.fixture
def builder() -> FuncBuilder: def builder() -> FuncBuilder:
return FuncBuilder() return FuncBuilder()

View file

@ -2,7 +2,7 @@
from .fixtures import * # noqa from .fixtures import * # noqa
from ichor import isa, TRUE, FALSE, NOT1 from ichor import FALSE, isa, NOT1, TRUE
import pytest import pytest

View file

@ -4,7 +4,12 @@ Tests coverign the VM interpreter
from .fixtures import * # noqa from .fixtures import * # noqa
from ichor import isa, InterpreterError, TRUE, FALSE from ichor import (
FALSE,
InterpreterError,
isa,
TRUE,
)
import pytest import pytest

View file

@ -1,11 +1,10 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from ichor.state import FUNC, TYPE from ichor.state import FUNC, TYPE
import pytest import pytest
@pytest.mark.parametrize('sig,parse', [ @pytest.mark.parametrize("sig,parse", [
(";not;bool;bool", ((), "not", ("bool",), ("bool",))), (";not;bool;bool", ((), "not", ("bool",), ("bool",))),
(";and;bool,bool;bool", ((), "and", ("bool", "bool"), ("bool",))), (";and;bool,bool;bool", ((), "and", ("bool", "bool"), ("bool",))),
(";or;bool,bool,bool;bool", ((), "or", ("bool", "bool", "bool"), ("bool",))), (";or;bool,bool,bool;bool", ((), "or", ("bool", "bool", "bool"), ("bool",))),
@ -14,7 +13,7 @@ def test_func_parses(sig, parse):
assert FUNC.parse(sig) == parse assert FUNC.parse(sig) == parse
@pytest.mark.parametrize('sig,parse', [ @pytest.mark.parametrize("sig,parse", [
(";bool;true(),false()", ((), "bool", (("true", ()), ("false", ())))), (";bool;true(),false()", ((), "bool", (("true", ()), ("false", ())))),
("A,B;pair;pair(a:A,b:B)", (("A", "B"), "pair", (("pair", (("a", "A"), ("b", "B"))),))), ("A,B;pair;pair(a:A,b:B)", (("A", "B"), "pair", (("pair", (("a", "A"), ("b", "B"))),))),
]) ])

View file

@ -3,8 +3,6 @@
"""Tests covering the Ichor ISA and state model.""" """Tests covering the Ichor ISA and state model."""
from ichor.impl import Stackframe from ichor.impl import Stackframe
from ichor.state import *
import pytest import pytest