УПРАЖНЕНИЯ

Перевести в ПОЛИЗ инфиксные выражения 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. Каким образом изменится процедура восстановления от ошибок при восходящих схемах анализа ?