Петрова Елена Александровна: Контрольные

Последнее изменение: 13/05/2017 22:37:53

ЛОИ весна 2017

Для допуска к зачёту по ЛОИ необходимо написать либо контрольную, либо программу, вычисляющую множества FIRST и FOLLOW по КС-грамматике. Индивидуальные варианты контрольной в файле ниже
Контрольная ЛОИ
Поскольку у нас балльно-рейтинговая система, то для простоты по контрольной устанавливаются следующие ограничения: сдающие на практике 18.05 получают максимум 100 баллов, на лекции 25.05 максимум 75 баллов, после - максимум 50 баллов. Контрольная, сданная на зачёте, на самом зачёте проверяться НЕ БУДЕТ, следовательно, это автоматический поход на пересдачу. Программу можно присылать по почте вплоть до зачёта или показать на самом зачёте.

Требования к программе
Есть небольшие изменения с тем, что было озвучено ранее. Сдаётся исполняемый файл .exe, исходный текст и хелп в виде readme.txt. Приложение консольное с двумя параметрами - имя входного файла, имя выходного файла. Ввод и вывод только через файлы.

Формат входного файла:
<Заглавная буква латинского алфавита><пробел><Строка из заглавных и прописных букв лат. алфавита либо ничего>
<Заглавная буква латинского алфавита><пробел><Строка из заглавных и прописных букв лат. алфавита либо ничего>
...
<Заглавная буква латинского алфавита><пробел><Строка из заглавных и прописных букв лат. алфавита либо ничего>

<s1 = Строка из заглавных и прописных букв лат. алфавита>
...
<sn = Строка из заглавных и прописных букв лат. алфавита>

Итого: в первой части (до пустой строки) содержится описание грамматики. Заглавные буквы - нетерминалы. Самый первый - аксиома. Если после пробела перевод строки - значит, описано аннулирующее правило.

Формат выходного файла:
<Заглавная буква латинского алфавита><пробел><множество FOLLOW (формат ниже)>
... <Заглавная буква латинского алфавита><пробел><множество FOLLOW (формат ниже)>

<множество FIRST для s1(формат ниже)
...
<множество FIRST для sn(формат ниже)>

Формат записи FOLLOW: список терминалов через пробел, в алфавитном порядке, конец строки ($) в конце списка, если есть. Порядок нетерминалов - такой же, как во входном файле.
Формат записи FIRST: список терминалов через пробел, в алфавитном порядке, пустое слово (lambda) в конце списка, если есть

Понятно, что файл readme, скорее всего, будет просто содержать эти описания (если только вы не решите ещё чего-нибудь добавить). Однако нужно приучать себя всегда писать мануалы :)

По всем вопросам - в почту. Успехов!