summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoruvok2026-01-14 20:26:20 +0100
committeruvok2026-01-14 20:26:20 +0100
commit281414ea9b42e213b85b95b7072b73d1f1e3f240 (patch)
treef3121258ec8796e45794c866881dd439e5b5fa34
parentb9923e600058348f1272bd99bc9b93350509c6aa (diff)
relative imports
-rwxr-xr-xnandgame/assembler/disas.py6
-rwxr-xr-xnandgame/assembler/disas_ins.py2
-rwxr-xr-xnandgame/assembler/disas_test.py4
-rwxr-xr-xnandgame/assembler/parser.py26
-rw-r--r--nandgame/assembler/parser_types.py3
-rwxr-xr-xnandgame/assembler/tlexer.py2
6 files changed, 22 insertions, 21 deletions
diff --git a/nandgame/assembler/disas.py b/nandgame/assembler/disas.py
index 9353bb5..6f520bc 100755
--- a/nandgame/assembler/disas.py
+++ b/nandgame/assembler/disas.py
@@ -51,7 +51,7 @@ def decode_jump(ins: int) -> str:
# return op, and whether it's a one-op or two-op
-def decode_ins(ins: int) -> (str, bool):
+def decode_ins(ins: int) -> tuple[str, bool]:
opcode = (ins >> 8) & 0x03
ar_n_log = (ins & (1 << 10)) != 0
opcode |= ar_n_log << 2
@@ -73,7 +73,7 @@ def decode_ins(ins: int) -> (str, bool):
if opcode == 0b111:
return "dec", False
- return "<?>"
+ return "<?>", False
# normally, X = arg1 = D
@@ -206,8 +206,8 @@ def main():
print(f"Usage: {sys.argv[0]} [filename]")
sys.exit(1)
+ filename = sys.argv[1]
try:
- filename = sys.argv[1]
with open(filename, "rb") as f:
while True:
insb = f.read(2)
diff --git a/nandgame/assembler/disas_ins.py b/nandgame/assembler/disas_ins.py
index 4841087..369d3c6 100755
--- a/nandgame/assembler/disas_ins.py
+++ b/nandgame/assembler/disas_ins.py
@@ -2,7 +2,7 @@
import sys
-from disas import print_decoded
+from .disas import print_decoded
if __name__ == "__main__":
if len(sys.argv) != 2:
diff --git a/nandgame/assembler/disas_test.py b/nandgame/assembler/disas_test.py
index 6c0ccbe..ed4430c 100755
--- a/nandgame/assembler/disas_test.py
+++ b/nandgame/assembler/disas_test.py
@@ -6,7 +6,7 @@ Test bench for dsassembler.
import unittest
-from disas import decode_instruction_complete as di
+from .disas import decode_instruction as di
def make_instruction(ins):
@@ -184,7 +184,7 @@ class DisasUnitTest(unittest.TestCase):
self.assertEqual(Y, "")
# ~A | 0 | 1 | 1 | 0 | 1
- def test_negD(self):
+ def test_negA(self):
ins = 0b01101
ins = make_instruction(ins)
(mnemonic, _, X, Y, _) = di(ins)
diff --git a/nandgame/assembler/parser.py b/nandgame/assembler/parser.py
index 0b34ebe..7cc4930 100755
--- a/nandgame/assembler/parser.py
+++ b/nandgame/assembler/parser.py
@@ -70,12 +70,12 @@ def p_line(p: P) -> None:
# if error handling
else:
p[0] = p[1]
- assert(False)
+ assert False
def p_instruction(p: P) -> None:
"""instruction : valid_instruction
- | one_arg_invalid
+ | one_arg_invalid
"""
p[0] = p[1]
@@ -102,8 +102,10 @@ def p_no_arg(p: P) -> None:
def p_onearg_invalid(p: P) -> None:
"""one_arg_invalid : opcode argument"""
- op: Tuple[str,str] = p[1]
- p[0] = pt.ErrorInstruction(p.lineno(1), op[1], "No opcode only supports one argument.")
+ op: tuple[str, str] = p[1]
+ p[0] = pt.ErrorInstruction(
+ p.lineno(1), op[1], "No opcode only supports one argument."
+ )
pass
@@ -146,14 +148,12 @@ def p_opcode(p: P) -> None:
def p_opcode_jmp(p: P) -> None:
- """opcode_jmp : OP DOT JUMP
- """
+ """opcode_jmp : OP DOT JUMP"""
p[0] = (p[1], p[3])
def p_opcode_njmp(p: P) -> None:
- """opcode_njmp : OP
- """
+ """opcode_njmp : OP"""
p[0] = (p[1], None)
@@ -164,19 +164,21 @@ def p_number(p: P) -> None:
p[0] = pt.Immediate(p[1])
-def p_error(p: LexToken) -> LexToken:
+def p_error(p: LexToken | None) -> LexToken|None:
if p:
- print(f"WARNING: Unexpected {repr(p.value)} on line {p.lineno}", file=sys.stderr)
+ print(
+ f"WARNING: Unexpected {repr(p.value)} on line {p.lineno}", file=sys.stderr
+ )
else:
print("WARNING: Unexpected end of file.", file=sys.stderr)
return
while True:
- tok = parser.token()
+ tok: LexToken = parser.token()
if not tok or tok.type == 'NL':
break
parser.errok()
return tok
-parser = yacc.yacc()
+parser: yacc.LRParser = yacc.yacc()
diff --git a/nandgame/assembler/parser_types.py b/nandgame/assembler/parser_types.py
index 473242d..3dd44b9 100644
--- a/nandgame/assembler/parser_types.py
+++ b/nandgame/assembler/parser_types.py
@@ -1,5 +1,4 @@
from dataclasses import dataclass
-from typing import Any
@dataclass
@@ -39,7 +38,7 @@ class AsmLine:
class Instruction(AsmLine):
opcode: str
jumptarget: str
- dest: Register|None
+ dest: Register | None
arg1: Symbol | Register | Immediate | None
arg2: Symbol | Register | Immediate | None
diff --git a/nandgame/assembler/tlexer.py b/nandgame/assembler/tlexer.py
index a285401..13ee095 100755
--- a/nandgame/assembler/tlexer.py
+++ b/nandgame/assembler/tlexer.py
@@ -2,7 +2,7 @@
import sys
-from lexer import lexer
+from .lexer import lexer
with open(sys.argv[1], "rb") as f:
data = f.read()