Перевести в ПОЛИЗ инфиксные выражения 1 - 3
1. ( x2 + Ö xy ) / ( x + y)
2. ( ( x + y ) * ( x - y ) ) / ( x 2 + y 2 )
3. ( a + b ) 2 - ( a - b ) 2
Вычислить следующие выражения, записанные в форме ПОЛИЗ, причём в качестве операнда здесь используются цифры позиционной системы исчисления:
4. 1 2 * 3 5 4 * + +
5. 1 2 3 5 4 * * + +
6. 1 2 + 3 * 5 + 4
7. 1 2 + 3 * 5 4 + - .
8. Для каждого выражения ПОЛИЗ (в задачах 4 - 7) написать инфиксную форму.
9. Пусть G[S] определена следующими продукциями:
a) S®0S1|01
b) S®+SS|-SS|a
c) S®S(S)S|e
Построить для G[S] синтаксически управляемый анализатор, работающий по методу рекурсивного спуска.
10. Построить алгоритм синтаксически управляемой трансляции перевода целых чисел в римские.
11. Написать алгоритм преобразования инфиксной цепочки словаря Vт = {a,b+,*,(,)} в постфиксную.
12. Написать алгоритм преобразования постфиксной цепочки словаря Vт = {a,b+,*,(,)} в инфиксную.
13. Написать алгоритм реализации синтаксического анализа арифметических выражений со словарем Vт = {a, b, + ,*} и соответствующими семантическими атрибутами преобразования инфиксной формы в ПОЛИЗ, используя схему Дейкстры.
14. Для оператора if stmt then stmt [else stmt]; (stmt - оператор) представить схему алгоритма синтаксического анализа с диагностикой ошибок.
15. В языке С++ возможны два типа комментариев: обычный комментарий, ограниченный символами «/*» «*/» и строчный – начинающийся символами «//» и заканчивающийся концом строки.
Построить сканер который бы исключал из текста на языке С++ все
комментарии.
16. Построить сканер, который бы исключал из текста на языке Borland Pascal все строковые константы. Строковые константы на этом языке состоят из строк, единичных символов и кодов, которые могут быть объединены между собой символом «+». Строки ограничены символами “ ” (двойные кавычки), символы – ‘ ‘ (одинарные кавычки), а коды начинаются с символа «#» (диез) и содержат только цифры.
17. Написать на языке С++ алгоритм бинарного поиска в таблице символов.
18. Что такое тупиковая ситуация и как ее избежать.
19. Какие существуют способы организации таблиц символов. Дать сравнительную характеристику.
20. Какие проблемы необходимо разрешить при построении сканера на основе регулярных выражений.
21. В чем состоит нейтрализация ошибок и чем нейтрализация отличается от диагностики.
22. Позволяет ли КА организовать процедуру нейтрализации и диагностики ошибок.
23. Построить алгоритм в виде графа синтаксического анализа длинных целых констант языка С++.
24. В чём разница нисходящих методов анализа от восходящих ?
25. Для каких грамматик целесообразно использовать восходящие методы анализа ?
26. Дать определение грамматик прстого предшествования.
27. Можно ли МП- автоматы использовать для анализа снизу – вверх ?
28. Каким образом изменится процедура восстановления от ошибок при восходящих схемах анализа ?