- •4. Таблица идентификаторов.
- •5. Кэш адресация
- •6. Формальные языки и грамматики.
- •7. Понятие языка
- •8. Запись грамматики в форме Бэкуса-Наура.
- •9. Запись правил грамматики с использованием метасимволов.
- •10. Запись правил гр-ки в граф-м виде
- •11. Классификация грамматик
- •12. Классификация языков.
- •Цепочки вывода
- •Дерево вывода
- •Правила задающие неоднозначность грамматик
- •Распознаватель
- •Задача разбора
- •Этапы семантического анализа
10. Запись правил гр-ки в граф-м виде
Предполагает,что каждому нетерм символу соотв диаграмма,постр-я в виде напр-го графа.
Название |
Обозначение |
Назначение |
Точка входа |
Никак не обозн |
Из нее начин вх дуга графа |
Нетерм символ |
|
Внутрь вписано обозн-е нетерм символов |
Цепочка терм символов |
|
В нее вписаны цепочки терм символов |
Узловая точка |
Перекресток | |
Точка выхода |
Никак не обозн-ся |
В нее вх вых-я дуга графа |
11. Классификация грамматик
Нулевой тип: грамматика с фразовой структурой. На структуру правил не накладывается никаких ограничений: α→β, где αєV+, βєV* - попарно все без исключения грамматики Практическое применения не имеют, V=VTUVN, G(VN,VV,P,S).
Первый тип: контекстно-зависимые: а)укорачивающие: α1Aα2→ α1βα2, где α1 и α2 є V*, A є VN, β є V+. G(VT,VV,P,S) б) не укорачивающие грам: α→β, где α и β єV+, |β|>=|α|. Структура правил контекстно-зависимых грамматик предполагает что при построении предложений данного языка один и тот же нетерминальный символ м/б замещен на ту или иную цепочку симв, в зависимости от контекста, в котором он встречается: α1Aα2→(либо α1 ,либо α2 равно нулю). Не укорачивающая грамматика: имеет такую же структуру, но длина цепочек A и β одинакова. При построении компиляторов данная грамматика не используется.
Второй тип: контекстно-свободная граматика: А→β, где AєVN, βєV+(не укорачивающая к-с грам). Укорачивающая к-с: А→β, где AєVN, βєV*. В правой части правила может присутствовать пустая цепочка символов.К-с грамматика используется при описании синтаксической конструкции языков программирования.
Третий тип:Регулярная грамматика: лево-линейная : А→Bγ, А→γ ,где A и B єVN, γ єVT*, право-лин: А→γB, А→γ, где A и B єVN, γ єVT*. Регулярная грамматика используется при описании простых конструкций языков программирования. В компиляторе на их основе строят функции лексического анализа входного языка.
Самой сложной является нулевого типа грамматика.Самой простой типа 3
12. Классификация языков.
Тип 0: языки с фразовой структурой: самый сложный язык, который м/б
задан только грамматикой нулевого типа. Невозможно построить компилятор,который гарант-но выполнял разбор предложений языка за огромное время на ограниченных ресурсах.Невозможно построить компилятор естественного языка.
Тип 1: контекстно-зависимые языки:зад-ся грамм-кой ТИПа 1,время на распознавание предложений языка экспоненциально зависит от длины цепочки символов. Используется при анализе и переводе текста на естественный язык.
Тип 2: контекстно-свободные языки: зад-ся грамм-кой ТИПа 2,лежат в основе синтаксической конструкции современных языков программирования. Время распознавания языка полиномиально зависит от длины исходной цепочки. М/б квадратичная или кубическая зависимость. КС-языки лежат в основе синт-х констр-ций языков программирования.
Тип 3: регулярные: самый простой, время распознавания линейно зависит от длины исходной цепочки.Лежат в основе простейших конструкций языков программирования.