Fix: rename enterpreter to interpreter

This commit is contained in:
2025-04-10 14:24:55 +01:00
parent 753f65384b
commit 17fd5f7acf
10 changed files with 59 additions and 17 deletions

View File

@@ -1,6 +1,7 @@
from sys import stdin, stdout
from os import PathLike
from enterpreter import Enterpreter, opcode
from interpreter import Interpreter, opcode
from pathlib import Path
BrainFuckByteCode = {
@@ -31,7 +32,7 @@ class BrainFuckByteCodeCompiler:
)
class BrainFuckEnterpreter(Enterpreter):
class BrainFuckInterpreter(Interpreter):
@opcode(BrainFuckByteCode[">"])
def forward(self):
self._memory_pointer += 1
@@ -84,12 +85,12 @@ class BrainFuckEnterpreter(Enterpreter):
return search_pointer
def bf(program_path: PathLike, bits=8, mem=2**8) -> BrainFuckEnterpreter:
def bf(program_path: PathLike, bits=8, mem=None) -> BrainFuckInterpreter:
bf_c = BrainFuckByteCodeCompiler()
bf_c.load_file(program_path)
program = bf_c.compile()
bf_e = BrainFuckEnterpreter(bits=bits, memsize=mem)
bf_e = BrainFuckInterpreter(bits=bits, memsize=mem)
bf_e.load_program(program)
bf_e.run()
@@ -97,7 +98,6 @@ def bf(program_path: PathLike, bits=8, mem=2**8) -> BrainFuckEnterpreter:
if __name__ == "__main__":
from pathlib import Path
bf(Path("examples", "HelloWorld.bf"))
bf(Path("examples", "GameOfLife.bf"), bits=16, mem=2**16)
bf(Path("examples", "Mandlebrot.bf"), bits=16, mem=2**16)

View File

@@ -0,0 +1,36 @@
import argparse
from pathlib import Path
from .__brainfuck import bf
def main():
parser = argparse.ArgumentParser(
description="Brainfuck interpreter using a custom compiler and virtual machine."
)
parser.add_argument(
"file", type=Path, help="Path to the Brainfuck program file (.bf)"
)
parser.add_argument(
"-b",
"--bits",
type=int,
default=8,
help="Bit width of each memory cell (default: 8)",
)
parser.add_argument(
"-m", "--mem", type=int, default=None, help="Size of memory tape (default: 256)"
)
args = parser.parse_args()
# Validate file existence
if not args.file.exists():
parser.error(f"File not found: {args.file}")
# Run the brainfuck program
bf(program_path=args.file, bits=args.bits, mem=args.mem)
if __name__ == "__main__":
main()

View File

@@ -1,3 +0,0 @@
from .__enterpreter import Enterpreter, opcode
__all__ = ["Enterpreter", "opcode"]

View File

@@ -0,0 +1,3 @@
from .__interpreter import Interpreter, opcode
__all__ = ["Interpreter", "opcode"]

View File

@@ -20,8 +20,9 @@ def opcode(opcode: Operation):
return _helper
class Enterpreter:
def __init__(self, bits=8, memsize=256) -> None:
class Interpreter:
def __init__(self, bits=8, memsize=None) -> None:
memsize = memsize or 2**bits
self.__bits = bits
self.__memory_max_size = 2**self.__bits
self.__memory_size = min(memsize, self.__memory_max_size)