diff --git a/info4/kapitel-8/Interpreter/gotointerpreter.py b/info4/kapitel-8/Interpreter/gotointerpreter.py index bcd6576d759658186d575e41d1be6a3cf0e17ba2..040b4d36fa4f44b6f92738e6e805d7cb227563b8 100644 --- a/info4/kapitel-8/Interpreter/gotointerpreter.py +++ b/info4/kapitel-8/Interpreter/gotointerpreter.py @@ -115,13 +115,17 @@ class GOTOInterpreter: if not self.next_nonempty_token('GOTO', 'SEMICOLON').k == 'SEMICOLON': self.error_handler.handle_error('SEMICOLON zum Abschluss eines GOTO erwartet') marker_number = int(marker_token.v[1:]) + saved_position = marker_token.p + saved_line = self.error_handler.line_number current_token = self.next_token() while current_token is not None and max(self.marker_to_position.keys()) < int(marker_number): current_token = self.verify_line(current_token) - self.lex.current_position = self.marker_to_position.get(marker_number) - self.error_handler.line_number = self.marker_to_line.get(marker_number) if marker_number not in self.marker_to_position.keys(): + self.lex.current_position = saved_position + self.error_handler.line_number = saved_line self.error_handler.handle_error('GOTO zu nicht vorhandener Markierung') + self.lex.current_position = self.marker_to_position.get(marker_number) + self.error_handler.line_number = self.marker_to_line.get(marker_number) return self.next_token() def verify_goto(self, goto_token):