From e5c6a18a05a47510e1cc7816184d39358abb0233 Mon Sep 17 00:00:00 2001 From: Chris <Christopher.Happe@uni-duesseldorf.de> Date: Wed, 25 Nov 2020 08:12:39 +0100 Subject: [PATCH] =?UTF-8?q?Bugfix:=20Falsches=20Zur=C3=BCcksetzen=20der=20?= =?UTF-8?q?Zeilennummer=20und=20Position?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- info4/kapitel-8/Interpreter/gotointerpreter.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/info4/kapitel-8/Interpreter/gotointerpreter.py b/info4/kapitel-8/Interpreter/gotointerpreter.py index bcd6576..040b4d3 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): -- GitLab