Page 38 - 4761
P. 38
в другий відображається направленими дугами, при чому умова при якій здійснюється
перехід та необхідні дії, що виконуються в процесі переходу є значення
поточного(чергового символу рядка що аналізується, а наявна дія –це переміщення до
наступного символа рядка).
Стани автомата:
0- початковий стан звичайний текст;
1- виявлено « / »;
2- виявлено смвол « * » після символа « / » -початок коментаря;
3- виявлено « * » після входу в коментар.
Рисунок 3.2 – Діаграма станів і переходів при виявленні коментарів
За кожним переходом передбачене поточне зчитування символу з рядка і
виконання переходів.
Проектування кінцевого автомату здійснюється (як правило) в наступній
послідовності :
- визначаємо можливі стани кінцевого автомату (кожному стану відповідає
певна смислова напруга,що реалізовується в процесі аналізу їх рядка).
- визначаємо при яких умовах відбувається перехід з одного стану в інший ,а
також які операції будуть вионуватись при переході між станами (для кожного переходу
може бути свій перелік операцій).
На основі діаграми станів переходів напояму реалізують программу лексичного
аналізу на основі попередньго прикладу це можна зробити наступним чином:
- основний цикл програми забезпечує послідовний перегляд вхідного рядка.
- на основі змінної (s) реалізовано поточний стан кінцевого автомату на
основі якого здійснюється переключення .
- в кожній гілці переключення відповідає один стан кінцевого автомату(один
вузол діаграми станів) для якого програмується поведінка кінцевого автомату і на основі
аналізу поточного символу визначається повний стан кінцевого автомату іоперації що
будуть виконуватись при переході в цей стан.
Приклад 3.3. Побудувати діаграму станів-переходів для звичайної десяткової
константи та ідентифікатора.
Стани автомата:
0 – звичайний текст.
1 – знайдено букву і накопичення ідентифікатора;
2 – знайдено цифру і накопичення цифри;
36