# 1. Objective / Мета роботи **Design and implement a finite state machine that scans a string and extracts numbers from it, in four stages of increasing capability.** By the end of the work the student should be able to: - describe a **finite state machine** by its **states**, input **alphabet**, **transition** rules, start state, and accepting states; - scan a string **character by character**, classifying each character and driving the machine's state; - recognise, in growing order of difficulty, **all digits**, **all integers**, **all positive rational numbers**, and **all (signed) rational numbers** in a string; - express the scanner as a **transition table** or **state diagram** and translate it into code; - reason about the scanner's **linear** time complexity in the length of the input. The work connects the abstract model of automata to a concrete, everyday task — tokenising text — and lays the groundwork for lexical analysis in compilers.