Fmt.
This commit is contained in:
parent
56b6ddd3ea
commit
88b4e7da1f
15 changed files with 44 additions and 38 deletions
|
@ -22,9 +22,9 @@ from hashlib import sha256, sha512
|
|||
from pathlib import Path
|
||||
import re
|
||||
from shutil import copy2 as copyfile
|
||||
import stat
|
||||
import sys
|
||||
import typing as t
|
||||
import stat
|
||||
|
||||
from .util import *
|
||||
|
||||
|
|
|
@ -2,4 +2,3 @@
|
|||
|
||||
"""A syntax analyzer for Shogoth."""
|
||||
|
||||
from .impl import *
|
||||
|
|
|
@ -6,7 +6,12 @@ from abc import ABC
|
|||
from dataclasses import dataclass
|
||||
import typing as t
|
||||
|
||||
from shogoth.types import List, Vec, Keyword, Symbol
|
||||
from shogoth.types import (
|
||||
Keyword,
|
||||
List,
|
||||
Symbol,
|
||||
Vec,
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
|
@ -1,3 +1,2 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from .impl import *
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
"""The shogoth reader."""
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
assert sys.version_info > (3, 10, 0), "`match` support is required"
|
||||
|
||||
import re
|
||||
|
@ -10,7 +12,12 @@ from typing import Any
|
|||
|
||||
from lark import Token, Tree
|
||||
from shogoth.parser import parse
|
||||
from shogoth.types import Keyword, Symbol, List, Vec
|
||||
from shogoth.types import (
|
||||
Keyword,
|
||||
List,
|
||||
Symbol,
|
||||
Vec,
|
||||
)
|
||||
|
||||
|
||||
# Monkeypatching for py3.10 matching
|
||||
|
|
|
@ -1,18 +1,16 @@
|
|||
"""A testing REPL."""
|
||||
|
||||
from shogoth.reader import Reader
|
||||
from shogoth.types import Symbol
|
||||
from shogoth.analyzer import Analyzer, SPECIALS, GLOBALS, Namespace
|
||||
|
||||
from prompt_toolkit import (
|
||||
print_formatted_text,
|
||||
PromptSession,
|
||||
)
|
||||
from prompt_toolkit.formatted_text import (
|
||||
FormattedText,
|
||||
)
|
||||
from prompt_toolkit import PromptSession
|
||||
from prompt_toolkit.history import FileHistory
|
||||
from prompt_toolkit.styles import Style
|
||||
from shogoth.analyzer import (
|
||||
Analyzer,
|
||||
GLOBALS,
|
||||
Namespace,
|
||||
SPECIALS,
|
||||
)
|
||||
from shogoth.reader import Reader
|
||||
from shogoth.types import Symbol
|
||||
from yaspin import Spinner, yaspin
|
||||
|
||||
|
||||
|
@ -49,7 +47,7 @@ def main():
|
|||
|
||||
with yaspin(SPINNER):
|
||||
expr = analyzer.analyze(ns, read)
|
||||
print('analyze ]', expr, type(expr))
|
||||
print("analyze ]", expr, type(expr))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
"""The public interface for shogoth's baked-in types."""
|
||||
|
||||
from .keyword import Keyword
|
||||
from .symbol import Symbol
|
||||
|
||||
from abc import ABC
|
||||
import typing as t
|
||||
|
||||
from uuid import UUID, uuid4
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# noqa
|
||||
|
||||
from .isa import * # noqa
|
||||
from .bootstrap import * # noqa
|
||||
from .impl import * # noqa
|
||||
from .isa import * # noqa
|
||||
|
|
|
@ -5,8 +5,10 @@ Hopefully no "real" interpreter ever uses this code, since it's obviously replac
|
|||
"""
|
||||
|
||||
from .isa import Module, Opcode
|
||||
|
||||
from shogoth.types import *
|
||||
|
||||
|
||||
BOOTSTRAP = Module()
|
||||
|
||||
NOT = BOOTSTRAP.define_function(
|
||||
|
|
|
@ -18,6 +18,8 @@ context (a virtual machine) which DOES have an easily introspected and serialize
|
|||
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
assert sys.version_info > (3, 10, 0), "`match` support is required"
|
||||
|
||||
from copy import deepcopy
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
from typing import NamedTuple
|
||||
|
||||
from shogoth.types import Function, FunctionRef
|
||||
from shogoth.types import FunctionRef
|
||||
|
||||
|
||||
class Opcode:
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
import pytest
|
||||
from shogoth.vm import *
|
||||
|
||||
import pytest
|
||||
|
||||
@pytest.fixture
|
||||
def vm():
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import pytest
|
||||
from shogoth.parser import parse
|
||||
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.parametrize('example', [
|
||||
@pytest.mark.parametrize("example", [
|
||||
"true",
|
||||
"false",
|
||||
"nil",
|
||||
"foo",
|
||||
'"this is a trivial string"',
|
||||
r'/this is a trivial pattern/',
|
||||
r"/this is a trivial pattern/",
|
||||
"[]",
|
||||
"[[]]",
|
||||
"[[[]]]",
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from .fixtures import * # noqa
|
||||
|
||||
import pytest
|
||||
from shogoth.vm import *
|
||||
|
||||
from .fixtures import * # noqa
|
||||
|
||||
|
||||
@pytest.mark.parametrize('stack,ret', [
|
||||
@pytest.mark.parametrize("stack,ret", [
|
||||
[[True], [False]],
|
||||
[[True], [False]],
|
||||
])
|
||||
|
@ -14,7 +14,7 @@ def test_not(vm, stack, ret):
|
|||
assert vm.run([Opcode.CALLS(NOT)], stack = stack) == ret
|
||||
|
||||
|
||||
@pytest.mark.parametrize('stack,ret', [
|
||||
@pytest.mark.parametrize("stack,ret", [
|
||||
[[False, False], [False]],
|
||||
[[True, False], [True]],
|
||||
[[False, True], [True]],
|
||||
|
@ -24,7 +24,7 @@ def test_or(vm, stack, ret):
|
|||
assert vm.run([Opcode.CALLS(OR)], stack = stack) == ret
|
||||
|
||||
|
||||
@pytest.mark.parametrize('stack,ret', [
|
||||
@pytest.mark.parametrize("stack,ret", [
|
||||
[[False, False], [False]],
|
||||
[[True, False], [False]],
|
||||
[[False, True], [False]],
|
||||
|
@ -34,7 +34,7 @@ def test_and(vm, stack, ret):
|
|||
assert vm.run([Opcode.CALLS(AND)], stack = stack) == ret
|
||||
|
||||
|
||||
@pytest.mark.parametrize('stack,ret', [
|
||||
@pytest.mark.parametrize("stack,ret", [
|
||||
[[False, False], [False]],
|
||||
[[True, False], [True]],
|
||||
[[False, True], [True]],
|
||||
|
@ -44,14 +44,14 @@ def test_xor(vm, stack, ret):
|
|||
assert vm.run([Opcode.CALLS(XOR)], stack = stack) == ret
|
||||
|
||||
|
||||
@pytest.mark.parametrize('stack,ret', [
|
||||
@pytest.mark.parametrize("stack,ret", [
|
||||
[[], [FunctionRef.parse(NOT)]]
|
||||
])
|
||||
def test_funref(vm, stack, ret):
|
||||
assert vm.run([Opcode.FUNREF(NOT), Opcode.RETURN(1)], stack = stack) == ret
|
||||
|
||||
|
||||
@pytest.mark.parametrize('stack,ret', [
|
||||
@pytest.mark.parametrize("stack,ret", [
|
||||
[[], [True]]
|
||||
])
|
||||
def test_callf(vm, stack, ret):
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
Tests coverign the VM interpreter
|
||||
"""
|
||||
|
||||
from .fixtures import * # noqa
|
||||
|
||||
import pytest
|
||||
from shogoth.vm import *
|
||||
|
||||
from .fixtures import * # noqa
|
||||
|
||||
|
||||
def test_true(vm):
|
||||
assert vm.run([Opcode.TRUE(), Opcode.RETURN(1)]) == [True]
|
||||
|
|
Loading…
Reference in a new issue