НО! Подчёркиваю, что до сих пор остаются неотвеченными следующие вопросы:
20. Объектная модель лексического анализатора. Схема его работы.
26. Объектная модель синтаксического анализатора.
34. Использование исключений С++ при обработке ошибок периода выполнения.
36. Принципы реализации виртуальных функций. (Лёхин ответ мне не понравился)
А до экзамена остальсь 1,5 дня. Если есть идеи, выкладывайте! Вместе что-нить наклепаем...
Сегодня на консультации все эти вопросы задавались. Но поскольку я слушал не очень внимательно, скажу только то, что запомнилось, мб Дима или Леха меня дополнят...
20 и 26 - по сути надо своими словами описать свои анализаторы, написанные в семестре, т.е. пишешь, что есть класс "лексема", есть класс "таблица лексем", класс "анализатор" и его основные методы... Вообще я сомневаюсь, что вопросы будут сформулированы таким образом, вроде об этом и лектора сегодня говорили... Каждый вопрос - это довольно широкий кусок знаний, вопросы будут более конкретно поставлены, каждый ответ будет умещаться в небольшой абзац рукописного текста...
Про 36 - по-моему сегодня было сказано практически то, что назвал Леха - про таблицу указателей на ф-ции, но я как-то прослушал конкретно этот вопрос...
Про обрабоку ошибок времени выполнения - ну видимо имеются в виду ошибки, могущие возникнуть при интерпертации ПОЛИЗа, что ли, правда какие это ошибки, хз... Тогда по сути надо сказать, что мы всю интерпертацию заворачиваем в try-блок, и делаем некую иерархию классов-exception'ов, позволяющих передать информацию об ошибке, скажем, ZeroDivideException (внутри него передавать информацию об адресе переменной, в которой был ноль (если это переменная конечно), в адресном пространстве нашей интерпретируемой программы, чтобы catch-блок по этому адресу мог вычислить и имя переменной), или InputException (если нам ввели строчку вместо числа, напрмер; внутри объектов этого класса можно передавать опять же адрес переменной, куда производилось чтение, и введенное значение); если в ПОЛИЗе с каждой лексемой хранить еще и номер строки исходного тескта, в которой она встречалась, то в родительский класс RuntimeException, от которого все эти наследуются, можно добавить поле line...
Замечу, что последний абзац - мое собственное видение процесса (кстати больше относится к теме "объектная модель интерпретатора"), а так вообще там можно до бесконечности распинаться, а вот что именно от нас хотят, я так и не понял
Отредактировано z-off (2007-06-05 17:03:20)