Темы курсовых по Матем. Лингв.ppt
- Количество слайдов: 17
Темы Курсовых Работ по Математической Лингвистике лучший способ изучения компиляторов – создать один
Символьные преобразования • Дано уравнение/неравенство – (2 x + 3)y - 1 = 5 • Нужно выразить переменные – y = 6 / (2 x +3) – x = 3/y – 1. 5 Задача: Владелец ранчо предложил ковбою купить 4 коровы и 3 лошади и заплатить 370 долларов, либо 3 коровы и 4 лошади за 330 долларов. Сколько стоит одна корова и одна лошадь? 4*x + 3*y = 370 3*x + 4*y = 330
Удобочитаемое отображение математических выражений (текстовое) • Дано: 7 * (x + 1. 5) / (y + 7)^2 >= 2 1 + Sqrt(x + b) = 3 • Вывести: x + 1. 5 7 * --------- >= 2 2 (y + 7) +-------+ 1 + | x + b = 3
Удобочитаемое отображение математических выражений (графическое) • Дано: 7 * (x + 1. 5) / (y + 7)^2 >= 2 • Вывести: 1 + Sqrt(x + b) = 3
Транслятор текстовых описаний дорожных ситуаций и ПДД в табличную форму • Дано: • Нужно: Прецедент Одновременное перестроение: Субъекты: Дорога(Кол. Полос = 2, Кол. Встречных. Полос = ), Легк. Авто(Правый. Поворотник = Включен), Мотоцикл(Левый. Поворотник = Включен); Действия: Перестроиться(Легк. Авто), Перестроиться(Мотоцикл); Связи: Легк. Авто На Полоса[2], Мотоцикл На Полоса[1], Легк. Авто Рядом Мотоцикл.
Поиск подстановок алгоритмом матчинга • Дано: – Формула • A(x, y, z) & ¬ B(x) ¬ (¬(B(x) & B(y) C(y)) & (D(y, x) ¬ B(y))) – Предикаты • A(3, 7, 9), A(8, 7, 9), A(4, 9, 9), B(3), B(8), B(4), C(7), C(5), C(3), D(7, 3), D(5, 8), D(9, 8) • Найти: подстановки под переменные формулы – – – x|y|z любое, кроме 3, 8, 4 | любое 3 | любое 8 | 3 | любое 4 | 3 | любое …
Транслятор/интерпретатор программы на упрощенном ЯП (1) class Factorial { public static void main(String[] a) { System. out. println(new Fac(). Compute. Fac(10)); } } class Fac { public int Compute. Fac(int num) { int num_aux; if (num < 1) num_aux = 1; else num_aux = num * (this. Compute. Fac(num-1)); return num_aux; } } • Достаточно большой язык, чтобы был интересным - объектно-ориентированные элементы (классы, экземпляры, методы, наследование) - базовые структуры управления (if, while) - целые переменные и выражения • Достаточно малый, чтобы было легко реализовывать
Транслятор/интерпретатор программы на упрощенном ЯП (2) Program → Main. Class. Decl∗ Main. Class → class id { public static void main ( String [] id ) { Statement } } Class. Decl → class id { Var. Decl∗ Method. Decl∗ } → class id extends id { Var. Decl∗ Method. Decl∗ } Var. Decl → Type id ; Method. Decl → public Type id ( Formal. List ) { Var. Decl∗ Statement∗ return Exp ; } Formal. List → Type id Formal. Rest∗ → Formal. Rest → , Type id Type → int [] → boolean → int → id Statement → { Statement∗ } → if ( Exp ) Statement else Statement → while ( Exp ) Statement → System. out. println ( Exp ) ; → id = Exp ; → id [ Exp ] = Exp ; Exp → Exp op Exp → Exp [ Exp ] → Exp. length → Exp. id ( Exp. List ) → INTEGER LITERAL → true → false → id → this → new int [ Exp ] → new id ( ) → ! Exp → ( Exp ) Exp. List → Exp. Rest∗ → Exp. Rest → , Exp
Транслятор/интерпретатор программы на упрощенном ЯП (3) • Цель: – – – – исполнить программу выровнять текст программы (ступеньками) найти все бесконтекстные/контекстные ошибки предлагать конструкции по ходу набора текста программы рефакторинг программы (быстрое изменение имен типов, переменных, функций) нарисовать блок-схему программы перевести на другой язык программирования …
Транслятор/интерпретатор программы на упрощенном ЯП (4) • Реализация: – Полностью вручную – С помощью генератора трансляторов • • • Yacc Bison Coco/R ANTLR Java. CC …
Отрисовка молекул, описанных текстово
Отрисовка регистров, описанных текстово
Отрисовка блок-схем, описанных текстово
Интерпретатор арифметических/логических функций • Пример: Ар. Функция Промежуток. Времени. ВЧасах (В 1: время, В 2: время) = (В 2. Часов – В 1. Часов) + (В 2. Минут – В 1. Минут) / 60. Лог. Функция Время. Больше(В 1: время, В 2: время) = (В 1. Часов > В 2. Часов) ((В 1. Часов = В 2. Часов) & (В 1. Минут > В 2. Минут)) • Вложенные вызовы • Составные типы данных
Простой табличный процессор • Дано: таблица, между ячейками которой установлены взаимосвязи с помощью арифметических выражений • Найти: значение каждой ячейки
Или предложите свою тему • Так или иначе должна быть связана с обработкой формального языка
Требования • • • ТЗ Введение Обзорная глава – методы анализа формальных языков, их достоинства и недостатки – фичи современных компиляторов: рефакторинг, подсказки и т. п. • Глава с описанием языка – Лексика – регулярной грамматикой – Синтаксис – КС-грамматикой – Контекстные условия – атрибутной грамматикой или словесно • Глава с описанием лингвистического процессора – Структурная схема – Регулярная грамматика => НКА => ДКА => объединенный алгоритм (матем. ) • substr(…), pos(…) - недопустимо – Таблицы слов, алгоритм поиска в них (хеш-поиск) – КС-грамматика => LL: множества First/Follow, устранение левой рекурсии; LR: таблицы действие/переход => алгоритм (матем. ) – Структуры данных: тэг/значение – Построение синтаксического дерева предложения – Описание генератора выходного текста / интерпретатора • Экспериментальная глава – Работа на правильных предложениях – Работа на неправильных предложениях • • Заключение Приложения (исходный текст программы и др. )
Темы курсовых по Матем. Лингв.ppt