diff --git a/lab02 b/lab02
new file mode 100644
index 0000000000000000000000000000000000000000..8357b0f36393275acb94e404dd4e6c14ec256d7f
--- /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])