From ac6e31c8dec676be7c22977cff7ff5a9a937a7ed Mon Sep 17 00:00:00 2001 From: uvok Date: Tue, 13 Jan 2026 20:47:13 +0100 Subject: Create errorinstruction from instruction --- nandgame/assembler/parsetypes.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/nandgame/assembler/parsetypes.py b/nandgame/assembler/parsetypes.py index 8ebb206..ccc1101 100644 --- a/nandgame/assembler/parsetypes.py +++ b/nandgame/assembler/parsetypes.py @@ -1,20 +1,26 @@ from dataclasses import dataclass from typing import Any + @dataclass class Symbol: """Define a symbol""" + name: str + @dataclass class Register: """Define a source or dest register""" + name: str + @dataclass class LinedElement: lineno: int + @dataclass class Instruction(LinedElement): opcode: str @@ -23,10 +29,34 @@ class Instruction(LinedElement): arg1: Any arg2: Any + @property + def num_args(self) -> int: + if not self.dest: + return 0 + if not self.arg1: + return 1 + if not self.arg2: + return 2 + return 3 + + @dataclass class ErrorInstruction(Instruction): error_message: str + @staticmethod + def from_instruction(i: Instruction, error_message: str): + return ErrorInstruction( + lineno=i.lineno, + opcode=i.opcode, + jumptarget=i.jumptarget, + dest=i.dest, + arg1=i.arg1, + arg2=i.arg2, + error_message=error_message, + ) + + @dataclass class JumpTarget(LinedElement): label: str -- cgit v1.2.3