Содержание
- 2. Трансляция Трансляция (англ. translation) программы – преобразование программы, написанной на некотором языке программирования в форму, пригодную
- 3. Фазы трансляции Лексический анализ Синтаксический анализ Семантический анализ Оптимизация Генерация кода Редактирование связей Исходный код Объектный
- 4. Лексический анализ Лексический анализ (англ. lexical analysis, scanning) – процесс аналитического разбора входной последовательности символов (исходного
- 5. Функции лексического анализа удаление «пустых» символов и комментариев распознавание идентификаторов и ключевых слов распознавание констант распознавание
- 6. Регулярные выражения Регулярное выражение (англ. regular expression) определяет множество строк над некоторым алфавитом Σ, дополненным символом
- 7. Операции, определенные для регулярных выражений
- 8. Регулярные выражения и КА Любое регулярное выражение r соответствует абстрактной машине, которая распознает язык L(r). Такая
- 9. Формальное определение КА r digit digit* s0 s1 s2 r digit digit
- 10. Детерминированные и недетерминированные КА Детерминированным конечным автоматом (ДКА) называется такой автомат, в котором нет пустых и
- 11. Правила преобразования регулярного выражения в НКА a, b – регулярные выражения Конкатенация - ab Альтерация –
- 12. Пример построения НКА (ab(c|d)*)* s0 s2 ε ab(c|d)* ε s0 s2 ε ab ε s3 (c|d)*
- 13. Пример построения НКА s0 s2 ε b s3 (c|d)* s4 a s0 s2 ε b ε
- 14. Пример построения НКА s0 s2 ε s1 b ε s3 d s4 a s5 ε ε
- 15. Пример построения НКА - Упражнение s0 s2 x s1 y s6 s4 s5 ε ε x((xy)*|(yx)*)y
- 16. Построение ДКА на основе НКА q0 q2 ε q1 b ε q3 d q4 a q5
- 17. Построение ДКА на основе НКА (избавление от ε-переходов) S0 S4 a S1 S2 a S3 a
- 18. Построение минимального ДКА S0 S4 a S1 S2 a S3 a d S5 c c d
- 19. Минимальный ДКА S0 S1 a d S2 c a b Σ = {a,b,c,d} Q = {s0,
- 20. Пример построения минимального ДКА - Упражнение s0 s1 (xy | yz | zx)* Σ = {x,y,z}
- 21. Построения ДКА на основе НКА (xy | yz | xz)* q0 q1 q2 q3 q4 q5
- 22. Построения ДКА на основе НКА (xy | yz | xz)* x y S0 S6 S4 S2
- 23. Построения минимального ДКА (xy | yz | xz)* S1 S2 S0 x y z y z
- 24. Проверка строк на соответствие РВ по ДКА S0 S1 a d S2 c a b (ab(c|d)*)*
- 25. Программирование ДКА S0 S1 a d S2 c a b (ab(c|d)*)*
- 26. Программирование ДКА (основная функция)
- 27. Минимальные ДКА для основных лексем Целое неотрицательное число digit ::= 0 | 1 | 2 |
- 28. Минимальные ДКА для основных лексем Вещественное положительное число digit ::= 0 | 1 | 2 |
- 29. Минимальные ДКА для основных лексем Идентификатор digit ::= 0 | 1 | 2 | 3 |
- 30. Детерминированный синтаксис Если две лексемы описываются регулярными выражениями re1 и re2, то First(re1) ∩ First(re2) =
- 31. Реализация анализатора по набору ДКА для детерминированного синтаксиса ident ::= (alpha | _ ) ( alpha
- 32. Реализация анализатора по набору ДКА для недетерминированного синтаксиса ident ::= (alpha | _ ) ( alpha
- 33. Пример лексического разбора с помощью ДКА ident ::= (alpha | _ ) ( alpha | digit
- 34. Реализация анализатора непосредственно по РВ
- 35. Реализация анализатора непосредственно по РВ. Пример a(b*c) | bc* if (sym IN FIRST(‘a(b*c)’)) P(‘a(b*c)’); else if
- 36. Реализация анализатора непосредственно по РВ Идентификатор ident ::= (alpha | _) (alpha | digit | _)*
- 37. Реализация анализатора непосредственно по РВ Вещественное положительное число floatcon ::= digit* . digit digit* ((E|e)(+|-|ε) digit
- 38. Пример лексического разбора с помощью РВ ident ::= (alpha | _ ) ( alpha | digit
- 39. Примеры работы лексического анализатора
- 41. Скачать презентацию