Piet_interpreter/interpreter/programState.py
2020-04-29 13:42:12 +02:00

25 lines
862 B
Python

from typing import Dict, List, Tuple
from copy import deepcopy
import interpreter.lexerTokens as lexerTokens
class programState():
def __init__(self, graph: Dict[int, Dict[int, Tuple[lexerTokens.baseLexerToken, Tuple[int, int]]]], position: Tuple[int, int], pointers: Tuple[int, int], dataStack: List[int] = None):
if dataStack is None:
dataStack = []
self.graph = graph
self.pointers = pointers
self.position = position
self.dataStack = dataStack
def __str__(self):
return "{pos} / {pointers}. Stack: {stack}".format(pos=self.position, pointers=self.pointers, stack=self.dataStack)
def __repr__(self):
return str(self)
def __deepcopy__(self, memodict):
return programState(self.graph, deepcopy(self.position), deepcopy(self.pointers), deepcopy(self.dataStack))