Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК по СПО.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.79 Mб
Скачать

Контрольные вопросы

  1. Как игнорировать возможные ошибки данных?

  2. Опишите работу с мета-файлом.

  3. Какие переменная и массив служат для взаимосвязи Yacc’a и Lex’a?

  4. Как должна быть описана переменная, чтобы она была доступна функции main, Yacc’у и Lex’у?

Приложение 4. Организация рейтингового контроля по дисциплине «Системное программное обеспечение. Синтаксические анализаторы»

Рейтинг студента по дисциплине определяется суммой баллов, заработанных им и отражающих успешность его обучения и овладения данной дисциплиной. Рейтинговая система контроля в семестре включает три направления оценки успешности обучения.

1.   Оценка отношения студента к выполнению своих обязанностей на этапе изучения дисциплины (в течение семестра).

2.   Текущий контроль успеваемости студента.

3.   Оценка активности и творческого отношения студента к овладению выбранной специальностью при изучении дисциплины.

Для оценки студента по первому из трех представленных выше направлений выделяется общее количество баллов (максимальное) = 64, которые распределяются следующим образом:

·        3 балла – за каждое посещение лекции в семестре;

·        4 балла – за посещение каждого лабораторного занятия

Для оценки успеваемости студента по второму направлению предназначены 3 теста и 4 защиты лабораторных работ. Каждый тест оценивается в 30 баллов (максимум), успешно пройденная защита лабораторной работы в 20 баллов.

Для оценки успеваемости студента по третьему направлению выделяется общее количество баллов = 200, в т.ч.:

·        НИРС по кафедре – 20 баллов;

·        УИРС по кафедре – 20 баллов;

·        Республиканский НИРС – 50 баллов;

·        Конкурсные работы 1 – 3 категории – 60 баллов;

·        Публикации – 50 баллов.

В конце семестра подводится итог работы студента за период суммированием набранных им баллов. Если рейтинг (набранное количество баллов) студента удовлетворяет условию Р ³ 144 (трети максимально возможного рейтинга), то студент считается выполнившим учебный план по дисциплине и имеет право на автоматическое получение зачета.

 

1 В литературе встречается также обозначение α0β, которое означает, что цепочка а вы­водима из цепочки β за 0 шагов — иными словами, в таком случае эти цепочки равны: α=β. Подразумевается, что обозначение вывода α*β допускает и такое толкование — включает в себя вариант α0β.

1 Требование k > 0, безусловно, является разумным — для принятия решения о выборе той или иной альтернативы МП-автомату надо рассмотреть хотя бы один символ входной цепочки. Если представить себе LL-грамматику с k = 0, то в такой грамматике вывод со­всем не будет зависеть от входной цепочки. В принципе такая грамматика возможна, но в ней будет всего одна единственная цепочка вывода. Поэтому практическое применение языка, заданного такого рода грамматикой, представляется весьма сомнительным

2 Может показаться, что класс LL(1)-грамматик соответствует классу грамматик, анализи­руемых методом рекурсивного спуска, где набор альтернативны также основан на теку­щем символе входной цепочки. На самом деле это не так — класс LL(1)-грамматик является более широким, чем класс грамматик, анализируемым методом рекурсивно­го спуска. Любая грамматика, анализируемая методом рекурсивного спуска, является LL(1)-грамматикой, но не наоборот: существуют LL(1)-грамматики, которые напрямую методом рекурсивного спуска не анализируются. Дело в том, что распознаватель на базе LL(1)-грамматики (который основан на множествах FIRST и FOLLOW) при выборе альтернативы фактически анализирует не одно, а сразу несколько правил, связанных с текущим символом на верхушке стека, в то время как рекурсивный спуск основан па ана­лизе только одного правила, непосредственно относящегося к этому символу.

3 Можно убедиться, что две приведенные грамматики задают один и тот же язык: L(G) = L(G'). Это легко сделать, поскольку обе они являются не только КС-грамматиками, но и регулярными праволинейными грамматиками Кроме того, формальное преобразова­ние G' в G существует — достаточно устранить в грамматике G' -правила и цепные пра­вила, и будет получена исходная грамматика G. А вот формального преобразования G в G' нет. В общем случае все может быть гораздо сложнее.

4 Устранение левой рекурсии — это, конечно, необходимое, но не достаточное условие для преобразования грамматики к виду LL-грамматики. Это будет видно далее из примера

1 Существование LR(0)-грамматик уже не является бессмыслицей в отличие от LL(О)-грамматик. В данном случае используется расширенный МП-автомат, который анализи­рует не один, а сразу несколько символов, находящихся на верхушке стека. Причем среди этих символом могут быть и терминальные символы из входной цепочки, попавшие в стек при выполнении сдвигов (переносов). Поэтому даже если автомат при k = 0 и не бу­дет смотреть на текущий символ входной цепочки, построенный им вывод все равно бу­дет зависеть от содержимого стека, а значит, и от содержимого входной цепочки.

1 Говоря о соотношении классов LL-грамматик и LR-грамматик, мм не затрагиваем вопрос о значениях k дли этих грамматик. Если для некоторой LL(k)- грамматики всегда сущест­вует эквивалентная ей LR-грамматика, то это вовсе не значит, что она будет LR(k)- грамматикой с тем же значением k, и наоборот. Но если говорится, что существуют LR-грамматики, для которых нет эквивалентных им LL-грамматик, то это означает, что нет эквивалентных им LL(k)- грамматик для всех возможных значении k>0.

1 Более того, доказано даже, что любой детерминированный КС-язык может быть задан LR(1)-грамматикой.

1 Чтобы доказать, что две рассмотренные грамматики эквивалентны (определяют один и тот же язык: L(G) = L(G")), предлагаем читателям выполнить преобразования G в G" са­мостоятельно. Это несложно: первым шагом будет устранение левой рекурсии, затем не­обходимо несколько раз выполнить левую факторизацию

2 Безусловно, мри любых значениях k распознаватель для LR(k)- грамматик остается ли­нейным распознавателелем — необходимые вычислительные ресурсы для него линейно за­висят от длины входной цепочки символов. Но с ростом k будет расти и коэффициент зависимости. Из алгоритма функционирования распознавателя видно, что это коэффи­циент напрямую связан с объемом управляющей таблицы, причем се объем возрастает в квадратичной зависимости от величины k.

3 Число состояний управляющей таблицы для практически интересных LR(1)-грамматик также весьма велико. А к классу LR(0)-грамматик такие грамматики почти никогда не относятся. На практике чаще всего используются промежуточные между LR(0) и LR(1) методы, известные под названиями SLR(l) — Simple («Простые») LR(1) — и LALR(l) — Look Ahead («С заглядыванием вперед») LR(1).

196