From a013e4b77590cabe9bf02faf900987baa331b0b8 Mon Sep 17 00:00:00 2001 From: doa0010 <chinh.thuan.doan.st@vsb.cz> Date: Tue, 5 Mar 2024 20:36:57 +0000 Subject: [PATCH] Add new file --- lab02 | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lab02 diff --git a/lab02 b/lab02 new file mode 100644 index 0000000..8357b0f --- /dev/null +++ b/lab02 @@ -0,0 +1,36 @@ +def tokenize(input_string): + tokens = [] + i = 0 + while i < len(input_string): + if input_string[i].isdigit() or (input_string[i] == '-' and i + 1 < len(input_string) and input_string[i + 1].isdigit()): + j = i + while j < len(input_string) and (input_string[j].isdigit() or input_string[j] == '-'): + j += 1 + tokens.append(('NUM', input_string[i:j])) + i = j + elif input_string[i].isalpha() or input_string[i] == '_': + j = i + while j < len(input_string) and (input_string[j].isalnum() or input_string[j] == '_'): + j += 1 + tokens.append(('ID', input_string[i:j])) + i = j + elif input_string[i] == '(': + tokens.append(('LPAR', input_string[i])) + i += 1 + elif input_string[i] == ')': + tokens.append(('RPAR', input_string[i])) + i += 1 + elif input_string[i] in '+-*/%{}[];': + tokens.append(('OP', input_string[i])) + i += 1 + elif input_string[i] in (' ', '\t', '\n'): + i += 1 + else: + print("Unexpected character:", input_string[i]) + i += 1 + return tokens + +input_string = "-2 + (245 div 3); note\n2 mod 3 * hello" +tokens = tokenize(input_string) +for token in tokens: + print(token[0].upper(), ':', token[1]) -- GitLab