Докладчик: Евгений Тюменцев, HWdTech, Омск.
«Будет дано небольшое введение в теорию формальных языков программирования. Разобран пример построения транслятора для небольшого языка программирования и рассказано, как это можно применять на проектах или, например, при выполнении лабораторных работ в ВУЗе
Опыт работы в ИТ-отрасли 12 лет. Был программистом, системным архитектором, руководителем проектов. Специализируюсь на разработке серверных, многопоточных, высокопроизводительных приложений.
16 лет преподаю в ОмГУ (ИМИТ, ФКН). Читаемые дисциплины: Проектирование ПО, разработка серверов и серверных приложений. Руковожу курсовыми и дипломными работами.»
3. Определение 2. (Слово в алфавите)
𝑎1 𝑎2 … 𝑎 𝑛
Словом в алфавите A называется конечная цепочка (в том числе, пустая)
записанных подряд символов этого алфавита
5. Определение 4. (Формальный язык)
Множество всех слов в алфавите A обозначается через 𝐴∗
(пустое слово
принадлежит 𝐴∗).
Формальным языком (или просто языком) в алфавите A называется какое
угодно подмножество множества 𝐴∗.
6. Пример 5. (язык С++)
Алфавит: do, while, if, {, }, (, ), +, -, …
Слово:
void f(int a, int b)
{
return a + b;
}
7. Определение 6. (Исчисление)
Пусть A - произвольный алфавит, а L - некоторый язык в алфавите A.
Тогда говорят, что задано исчисление C, если задано
1. множество Ax слов языка L,
2. конечное множество R не менее, чем двухместных отношений на L.
Каждое слово из множества Ax называется аксиомой исчисления C, а каждое
отношение из R - правилом вывода исчисления C.
8. Определение 7. (n+1-местное отношение)
Пусть r ∈ R - (n+1)-местное правило вывода, где n - положительное целое
число. Тогда, если (𝑎1, 𝑎2, … , 𝑎 𝑛, 𝑎) ∈ r, то говорят, что 𝑎 получается из
𝑎1, 𝑎2, … , 𝑎 𝑛 по правилу вывода r.
𝑎1, 𝑎2, … , 𝑎 𝑛
𝑎
9. Определение 8. (Выводимость)
Пусть D – множество формул, B – формула.
Тогда D ⊦ B, если ∃ B1, B2, …, Bn , что
1.Bn – это B,
2.Bi – это
либо формула из L,
либо аксиома,
либо формула полученная при
помощи правила вывода
10. Определение 9. (Грамматика)
Формальная грамматика — четверка
T — множество терминальных символов (термов);
N — множество нетерминальных символов;
S — начальный символ;
P — набор правил вывода (продукций).
11. Теорема 10.
1. Для любой формальной грамматики существует машина Тьюринга,
распознающая язык этой грамматики.
2. Если язык распознается некоторой машиной Тьюринга, то существует
формальная грамматика, которая его генерирует.
20. Практическое применение
На практике используются КС-грамматики
Регулярные – слишком узкий класс {0 𝑛1 𝑚|𝑛, 𝑚 ∈ ℕ}
КЗ и неограниченные – слишком трудоемкие
22. Определение 16. Множество First
Для каждого нетерминала A вычисляется First(A):
• если в грамматике есть правило с A в левой части и правой частью,
начинающейся с терминала, то данный терминал входит в First(A)
• если в грамматике есть правило с A в левой части и правой частью,
начинающейся с нетерминала (обозначим B), то First(B) строго входит в
First(A)
• никакие иные терминалы не входят в First(A)
23. Определение 17. Множество направляющих
символов
если правая часть правила начинается с терминала, то множество
направляющих символов состоит из одного этого терминала
иначе правая часть начинается с нетерминала A, тогда множество
направляющих символов есть First(A)