Зарегистрироваться
Восстановить пароль
FAQ по входу

Лексический и Синтаксический анализ c ply.lex и ply.yacc (a'la lex и yacc/bizon)

  • Файл формата zip
  • размером 642,09 КБ
  • содержит документы форматов archive txt
  • Добавлен пользователем , дата добавления неизвестна
  • Описание отредактировано
Пользуясь полученными в Лр1 (/file/85885/)
знаниями и результатами, достигнутыми при выполнении Лр2 (-- /file/85890/) и Лр3 (-- /file/85893/)
написать программу, реализующую указанный вариант.
При обнаружении ошибок программа должна сообщать о них в понятной пользователю форме. Программа должна завершаться с кодом 0, если завершилась успешно,
и с отличным от 0 кодом в случае ошибки.
Конфигурационный файл команды { \it sudo /etc/sudoers }
Работа с {\it ply.yacc} была весьма интересной.
Несмотря на нарушение стандарта языка, {\it ply.yacc} оказалась достаточно мощным и простым
построителем синтаксических анализаторов.
Вместе с {\it ply.lex} они позволили проверить правильность файла {\it /etc/sudoers}.
Если это делать обычным способом, то это займет много времени и сил.
Правда и в данном случае пришлось потрудиться.
В грамматике {\it /etc/sudoers} оказалось достаточно много повторяющихся элементов.
Было бы глупо все это забивать руками. Я воспользовался возможностями Python.
Половина программы создается в процессе выполнения. Удобно. Правда из-за
нарушения стандарта языка, тут возникли некоторые проблемы, которые были легко преодолены.
Интересной оказалась работа со словарями имен пользователей.
Сначала она несколько пугала своим объемом и количеством проверок.
Но потом была сделана и оказалась простой, хотя и объемной.
Работа выполнена на языках
* Python (требуется модуль ply -- как установить написано в л. р. #1 )
Отчет в формате — PDF
Исходники отчета — LaTeX2e
МАИ.
Факультет прикладной математики.
Кафедра вычислительной математики и программирования.
Преподаватели:
Алексей AVL Лебедев
Илья US-Marine Перетягин
  • Чтобы скачать этот файл зарегистрируйтесь и/или войдите на сайт используя форму сверху.
  • Регистрация