ТЕОРИЯ ФОРМАЛЬНЫХ ЯЗЫКОВ И ТРАНСЛЯЦИЙ Мартыненко Борис Константинович д.ф.-м.н., проф. кафедры информатики Лекции для студентов 3 курса отделения информатики Часть I: ЯЗЫКИ, ГРАММАТИКИ, АВТОМАТЫ • • • • • • • • Введение Глава 1. Языки и их представление Глава 2. Грамматики (N.Chomsky, 1956) Глава 3. Конечные автоматы и регулярные грамматики Глава 4. Контекстно-свободные грамматики Глава 5. Магазинные автоматы Глава 6. Машины Тьюринга Глава 7. Машины Тьюринга: проблема остановки, языки типа 0 • Глава 8. Линейно ограниченные автоматы и контекстно-зависимые языки Часть II: Я З Ы К И И Т Р А Н С Л Я Ц И И ТРАНСЛЯЦИИ И СИНТАКСИЧЕСКИЕ МЕТОДЫ ИХ РЕАЛИЗАЦИИ Глава 1. Трансляции, их представление и реализация Глава 2. LL(k)-Грамматики и трансляции Глава 3. LR(k)-Грамматики и трансляции Приложение: Неразрешимые и разрешимые проблемы, касающиеся формальных языков Указатель литературы Введение В современных информационных технологиях синтаксические методы играют существенную роль. На использовании синтаксических методов основаны: • трансляторы языков программирования (компиляторы, интерпретаторы, конверторы), • синтаксические редакторы, • машинный перевод, • различные средства обработки текстовой информации и т. п. Теория формальных языков и трансляций составляет теоретический фундамент этих методов. Введение ВВЕДЕНИЕ Курс является введением в формальную теорию языков. Как во всякой теории мы будем иметь дело не с языками, будь то естественные или искусственные, как, например, языки программирования, а с моделями, более или менее адекватно отражающими их свойства. Будут изучаться четыре модели языков, построенных Н. Хомским в середине 50-х годов прошлого века, на основе его понятия формальной грамматики. Публикации его работ на эту тему в свое время наделали много шуму среди лингвистов и математиков, ищущих пути использования электронных вычислительных машин для целей перевода с естественных языков. Его работы положили начало математической лингвистики, а понятие формальной грамматики легло в основу математической теории формальных языков. Введение Что мы подразумеваем под термином язык? Энциклопедическое определение языка как ”важнейшего средства общения, обмена мыслями и взаимного понимания в человеческом обществе” *) не годится для построения математической теории языков, ибо оно говорит о том, для чего язык служит, а не о том, чем он является сам по себе. Поэтому мы определим язык абстрактно — как математический объект. Это даст нам возможность делать строгие утверждения о языках, а вернее, о математических моделях, которые более или менее адекватно отражают свойства реальных языков, естественных или искусственных, как, например, языки программирования. *) Энциклопедический словарь. М.: Большая советская энциклопедия, 1955. С. 716. Введение В формальной теории язык определяется как множество конечных цепочек символов из фиксированного алфавита, которые называются предложениями. Эти множества могут быть как конечными, так и бесконечными. Такое определение языка абстрагируется от понятия смысла предложения. Нас будет интересовать лишь строение предложений языка, в частности, какие предложения входят в данный язык, а какие не входят. По этому-то языки и называются формальными. Это естественно приводит нас к вопросу о том, как представлять языки – объекты не всегда конечные. И существует ли вообще возможность представить любой язык конечным образом? Ответы на эти вопросы дает гл. 1. Введение Грамматики, которые рассматриваются в гл. 2, являются одним из способов конечного описания языков. Следуя Н. Хомскому, мы определим понятие формальной грамматики и способ ее интерпретации, связывающий ее с языком, через понятие вывода. В этой главе мы рассмотрим еще три типа грамматик, отличающихся ограничениями на вид их правил. Это грамматики типов 1 или контекстно зависимые, 2 или контекстно свободные и 3 или регулярные. Свойства классов языков, порождаемых грамматиками соответствующих типов, вместе с соответствующими типами распознавателей – абстрактных устройств способных определять принадлежность цепочки символов данному языку, обсуждаются в последующих главах первой части курса. Введение Поскольку ограничения на вид правил грамматик усиливаются нарастающим порядком от типа 0 (исходное определение) к типу 3, то рассматривать мы будем, начиная с простейшего класса – регулярных множеств и конечных автоматов, затем КС-языков и магазинных автоматов. Именно эти классы языков и распознавателей имеют большое практическое применение. Затем мы определим понятие машины Тьюринга – распознавателя языков типа 0 или рекурсивно перечислимых множеств, и закончим классом контекстно зависимых языков и линейно-ограниченными автоматами в качестве их распознавателей. Введение В части II: ЯЗЫКИ И ТРАНСЛЯЦИИ в КС-языки вводится понятие семантики посредством схем синтаксически-управляемой трансляции и рассматриваются два типа трансляторов: на основе kпредсказывающего алгоритма анализа - для LL(k)грамматик и анализатора Д. Кнута - для LR(k)-грамматик. Эти подклассы КС-грамматик широко используются на практике (CDL, YACC) и потому включены в предлагаемый курс. Хочется закончить введение высказыванием, услышанным мною когда-то давно от С. Я. Фитиалова: “Наука превращает искусство в ремесло”. С этим и приступим к изложению основного содержания курса. Литература 1. Greibach S.A. A note on undecidable properties of formal languages // Math. Systems Theory. 1968. Vol. 2, №1. P.1–6. 2. Hopcroft J.E., Ullman J.D. Formal languages and their relation to automata. — Reading, MA: Addison-Wesley Pub. Co., Inc., 1969. 242 p. 3. Rozenberg G., Salomaa A. Handbook of Formal Languages. — Berlin, Heidelberg: Springer-Verlag, 1997. Vol.1: 873 p., Vol. 2: 528 p., Vol. 3: 625 p. 4. Salomaa A. Formal languages. — N.Y.: Academic Press, 1973. 335 p. 5. Агафонов В.Н. Синтаксический анализ языков программирования: Учеб. пособие. — Новосибирск: Изд-во НГУ, 1981. 91 с. 6. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. Т. 1: Синтаксический анализ. 612 с.; Т.2: Компиляция. 487 с. — М.: Мир, 1978. 7. Братчиков И.Л. Синтаксис языков программирования. — М.: Наука, 1975. 232 с. 8. Гинзбург С. Математическая теория контекстно-свободных языков. — М.: Мир, 1970. 326 с. 9. Гладкий А.В. Формальные грамматики и языки. — М.: Наука, 1973. 368 с. 10. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. — М.: Мир, 1975. 544 с. Литература 11. Гросс М., Лантен А. Теория формальных грамматик. — М.: Мир, 1971. 294 с. 12. Кнут Д. Искусство программирования для ЭВМ. Т.1. — М.: Мир, 1976. 735 с. 13. Льюис Ф., Розенкранц Д., Стирнз Р. Теоретические основы проектирования компиляторов. — М.: Мир, 1979. 654 с. 14. Рейуорд-Смит В. Дж. Теория формальных языков: Вводный курс. — М.: Радио и связь, 1988. 129 с. 15. Саломаа А. Жемчужины теории формальных языков. — М.: Мир, 1986. 159 с. 16. Семантика языков программирования: Сб. статей под ред. А.Н.Маслова и Э.Д.Стоцкого — М.: Мир, 1980. 394 с. 17. Фитиалов С.Я. Формальные грамматики. — Л..: Изд-во Ленингр. ун-та, 1984. 99 с. 18. Фостер Дж. Автоматический синтаксический анализ. — М.: Мир, 1975. 71 с. 19. Хантер Р. Проектирование и конструирование компиляторов. — М.: Финансы и статистика, 1984. 232 с. 20. Языки и автоматы: Сб. статей под ред. В.М.Курочкина. — М.: Мир, 1975. 358 с.