Главная / Программирование / Разработка компиляторов

Разработка компиляторов - ответы на тесты Интуит

Правильные ответы выделены зелёным цветом.
Все ответы: В данном курсе рассматриваются теоретические основы и практические методы создания компиляторов языков программирования. Изложение ведется на основе языка программирования C# и платформы .NET.
Когда появилась платформа .NET?
(1) 1999 году
(2) 2000 году
(3) 2001 году
(4) 2002 году
Управление памятью с точки зрения компилятора существенно ограничено возможностями:
(1) целевой архитектуры
(2) языков программирования
(3) сред разработки
(4) операционной системы
Последовательность эквивалентных преобразований исходной программы, уменьшающих ее стоимость - это:
(1) отладка
(2) тестирование
(3) оптимизация
(4) чистка
В задачу анализа потока управления входит определение свойств:
(1) передачи управления между операторами программы
(2) передачи управления между блоками программы
(3) передачи управления между классами программы
(4) передачи управления между объектами программы
Задачей анализа потоков данных является:
(1) определение глобальных свойств программы
(2) проверка контекстных условий оптимизирующих преобразований
(3) определение локальных свойств программы
(4) проверка условий оптимизирующих преобразований
Трансляторы, ориентированные на платформу .NET, должны генерировать код:
(1) SIL
(2) MSIL
(3) Java
(4) ILM
Выбор инструкций - это:
(1) одна из стадий написания машинного кода
(2) одна из стадий генерации высокоуровнего кода
(3) одна из стадий генерации машинного кода
(4) одна из стадий написания высокоуровнего кода
Для языка C# верны следующие утверждения:
(1) идеальный язык для быстрой разработки приложений
(2) изначальная ориентация на платформу .NET
(3) имеет максимальную степень скрытия деталей от разработчика
(4) новый язык, не связанный проблемами обратной совместимости
Если оператор языка ассемблера отображается при трансляции чаще всего в одну машинную инструкцию, предложения языков более высокого уровня отображаются
(1) в одну машинную инструкцию
(2) в несколько машинных инструкций
(3) в пустую машинную инструкцию
(4) в произвольную машинную инструкцию
Одна из первых задач, возникающих в процессе компиляции - это:
(1) определение рассматриваемого языка программирования
(2) определение типа необходимого семантического анализа
(3) определение типа необходимого лексического анализа
(4) определение типа рассматриваемого языка программирования
Во время лексического анализа программа разбивается на:
(1) последовательность строк
(2) лексемы
(3) блоки
(4) последовательность секций
Наиболее удобным формализмом для описания синтаксических конструкций языка программирования являются:
(1) контекстно-свободные
(2) бесконтекстные
(3) контекстно-зависимые
(4) праволинейные
Предназначен для построения дерева разбора, начиная с листьев и двигаясь вверх к корню дерева разбора:
(1) восходящий анализ
(2) нисходящий анализатор
(3) линейный анализатор
(4) системный анализатор
Программа, которая строит LALR- анализаторы - это:
(1) генератор лексических анализаторов YACC
(2) генератор синтаксических анализаторов YACC
(3) генератор синтаксических анализаторов LACC
(4) генератор лексических анализаторов YACC
Задача, решение которой необходимо для проверки правильности использования типов:
(1) идентификация идентификаторов
(2) идентификация типов
(3) идентификация данных
(4) идентификация операторов
В .NET все сервисы, предоставляемые программисту платформой, оформлены в виде:
(1) единой иерархии объектов
(2) единой иерархии типов
(3) единой иерархии классов
(4) единой иерархии блоков
Основными фазами работы с памятью являются:
(1) выделение памяти под ресурс
(2) очистка памяти/освобождение ресурса
(3) повторное использование памяти
(4) инициализация памяти
Применение оптимизаций способствует:
(1) улучшению качества кода
(2) выявлению неочевидных ошибок
(3) выявлению очевидных ошибок
(4) ухудшению качества кода
Основным способом представления потока управления программы является:
(1) подграф потока управления
(2) граф потока управления
(3) блок потока управления
Идея анализа потока управления заключается в следующем:
(1) выделение специальной части
(2) определение свойств исполнения программы для каждого пути в графе управления
(3) выделение общей части
(4) определение свойств исполнения программы для каждого пути в вершине управления
Программы на MSIL переводятся в исполняемый код реального процессора c помощью:
(1) Just-In-Time compilation
(2) динамической компиляции
(3) компиляции времени исполнения
(4) статической компиляции
Деревянные языки позволяют описать:
(1) множества вершин, обладающих определенными свойствами
(2) множества дуг, обладающих определенными свойствами
(3) множества графов, обладающих определенными свойствами
(4) множества деревьев, обладающих определенными свойствами
C# поддерживает структурную обработку исключений с помощью конструкций:
(1) try
(2) finally
(3) catch
(4) foreach
Можно сказать, что результатом работы интерпретатора является:
(1) "программа"
(2) "код"
(3) "число"
(4) "исполняемый файл"
Грамматики представляют собой:
(1) наименее распространенный класс описаний языков
(2) наиболее распространенный класс описаний языков
(3) наиболее распространенный блок описаний языков
(4) наименее распространенный блок описаний языков
В большинстве языков программирования имеются следующие лексические классы:
(1) ключевые слова
(2) идентификаторы
(3) строковые литералы
(4) числовые константы
Если программа выводима в грамматике, это еще не означает, что она полностью:
(1) семантически правильна
(2) лексически правильна
(3) синтаксически правильна
LR(k) означает, что:
(1) входная цепочка обрабатывается слева направо
(2) выполняется правый вывод
(3) не более k символов цепочки используются для принятия решения
(4) не более l символов цепочки используются для принятия решения
YACC - это имя генератора в операционной системе UNIX, в остальных операционных системах программа называется:
(1) PYACC
(2) WINYACC
(3) PCYACC
(4) AYACC
Чтобы выяснить, каков тип идентификатора, являющегося, получателем присваивания, надо понять:
(1) как этот идентификатор был объявлен в программе
(2) что представляет собой этот идентификатор
(3) как этот идентификатор появился в программе
(4) как этот идентификатор был добавлен в программу
Существуют следующие версии MSIL:
(1) для мобильных 16-разрядных устройств
(2) для мобильных 8-разрядных устройств
(3) стандартная 32-разрядная версия
(4) специальная версия для работы с 64-разрядными устройствами
Необходимо различать:
(1) уничтожение памяти
(2) опустошение памяти
(3) утилизацию памяти
(4) заполнение памяти
В зависимости от размера фрагмента оптимизации различают следующие виды оптимизации:
(1) локальная
(2) квазилокальная
(3) глобальная
(4) межпроцедурная
Отношение обязательного предшествования обозначается символом:
(1) '>'
(2) '#'
(3) '$'
(4) '<'
При наличии контуров множество всех путей в графе управления становится:
(1) бесконечным
(2) конечным
(3) равным единице
(4) равным нулю
Статическая область памяти предназначена:
(1) для статических полей класса
(2) глобальных переменных
(3) констант
(4) для автоматических переменных
(5) для параметров
Для определения операции подстановки, в одном из двух деревьев выбирается лист, который затем:
(1) заменяется на граф другого дерева
(2) заменяется на вершину другого дерева
(3) заменяется на лист другого дерева
(4) заменяется на корень другого дерева
Ссылочными типами в C# являются:
(1) object
(2) интерфейсы
(3) class
(4) string
(5) массивы
(6) представители
Крайне важной частью процесса трансляции является:
(1) исправление ошибок, допущенных во входной программе
(2) игнорирование ошибок, допущенных во входной программе
(3) точная диагностика ошибок, допущенных во входной программе
Различные грамматики могут порождать:
(1) один и тот же язык
(2) эквивалентные языки
(3) различные языки
Основной тенденцией современных языков программирования является:
(1) свободное размещение текста программы
(2) открытое размещение текста программы
(3) закрытое размещение текста программы
Символы входной цепочки переносятся в магазин до тех пор, пока на вершине магазина не накопится цепочка, совпадающая с правой частью какого-нибудь из правил:
(1) операция "свертка"
(2) "shift"
(3) операция "перенос""
(4) "reduce"
Выходом YACC могут быть файлы:
(1) name.yy.c
(2) name.c
(3) name.yy.h
(4) y.output
Использующим вхождением идентификатора является:
(1) i = 10
(2) int i
(3) int a
(4) a+20
В единой объектно-ориентированная модель классов .NET которой все классы унаследованы от:
(1) базового класса System
(2) базового класса Object
(3) базового класса Type
(4) базового класса Block
Данный пример:void* p = malloc (32000); p = q;иллюстрирует:
(1) висячие ссылки
(2) как паямять становится мусором
(3) ссылки
(4) структуры
Если преобразование T1 открывает дополнительные возможности для проведения преобразования T2, то - это:
(1) тупиковость
(2) независимость
(3) повторность
Задачи проверки сводимости и построения статической формы единственного присваивания могут быть решены с помощью:
(1) непосредственного предшествования
(2) отношения не обязательного предшествования
(3) отношения обязательного предшествования
(4) простого предшествования
Для каждого вхождения переменной требуется определить множество присваиваний, такое, что для каждого из них существует путь, в котором между ним и данным вхождением отсутствуют другие присваивания той же переменной - так формулируется задача:
(1) не достижимых определений
(2) глобальных определений
(3) произвольных определений
(4) достижимых определений
При реализации языков со вложенными процедурами и процедурными значениями, необходимо обеспечить доступ:
(1) из вложенной процедуры к переменным из объемлющей среды
(2) из вложенной процедуры к константам из объемлющей среды
(3) из вложенной процедуры к переменным из внешней среды
(4) из вложенной процедуры к переменным из глобальной среды
В отличие от обычных контекстно-свободных грамматик, в деревянной грамматике в правой части правила находится:
(1) деревянный образец
(2) грамматический образец
(3) стандартный образец
(4) функциональный образец
Модификаторами класса в C# являются:
(1) abstract
(2) const
(3) sealed
(4) public
Подход при котором применяется трансляция программы в ассемблер:
(1) упрощает конструирование компилятора
(2) сокращает технологическую цепочку выполнения программы
(3) удлиняет технологическую цепочку выполнения программы
(4) усложняет конструирование компилятора
Иерархия Хомского - это классификация грамматик согласно:
(1) их внешнему виду
(2) их внутренней структуре
(3) их времени появления
(4) их принципов создания
Сколько атрибутов обычно имеет лексема:
(1) 0
(2) 1
(3) 2
(4) 3
Большинство методов анализа принадлежит к следующим классам:
(1) нисходящие анализаторы
(2) восходящие анализаторы
(3) линейные анализаторы
(4) нелинейные анализаторы
Комбинация символа состояния на вершине магазина и текущего входного символа используется:
(1) для индексирования контекстной таблицы
(2) для индексирования управляющей таблицы
(3) для определения операции переноса-свертки
(4) для определения операции переноса
Файл со спецификациями name.y должен быть устроен следующим образом:
(1) Секция описаний %% Секция грамматических правил %%
(2) Секция описаний %% Секция грамматических правил %% Секция определений %% Секция процедур
(3) Секция описаний %% Секция грамматических правил %% Секция процедур
Таблица идентификаторов содержит:
(1) ссылку на внешнее представление
(2) ссылку на тип
(3) ссылку на предыдущее определение идентификатора
(4) значение hash-функции для лексемы
В первом приближении сборка - это:
(1) аналог EXE
(2) аналог DLL
(3) аналог COM
(4) аналог BAT
В языке C используется следующая методика управления памятью:
(1) исключительное использование неявного освобождения памяти
(2) исключительное использование явного освобождения памяти
(3) исключительное использование явного заполнения памяти
(4) исключительное использование неявного заполнения памяти
Задачу фрагментации решает:
(1) анализ стурктуры управления
(2) анализ процесса управления
(3) анализ потока управления
(4) анализ блока управления
Глубинное остовное дерево - это:
(1) дерево, полученное при обходе в глубину
(2) остовное дерево, полученное при обходе в глубину
(3) простое дерево, полученное при обходе в глубину
(4) сложное дерево, полученное при обходе в глубину
Cледующим свойством: существует путь через данную вершину, начинающийся присваиванием данной переменной и кончающийся ее использованием, не содержащий иных присваиваний той же переменной - обладают:
(1) живые переменные
(2) достижимые определения
(3) не достижимые определения
В безопасном режиме указатели на локальные переменные могут быть только:
(1) переданы параметрами в другие функции
(2) переданы параметрами в другие указатели
(3) переданы параметрами в другие объекты
(4) переданы параметрами в другие операторы
Правила грамматики в нормальной форме содержат в правой части:
(1) образцы произвольного вида
(2) образцы специального вида
(3) образцы произвольной формы
(4) образцы специальной формы
Проверку допустимости присваиваемого значения можно провести с помощью следующего кода:
(1) private int m_stateOfVeryCriticalResource; public int stateOfVeryCriticalResource { get { if (IsAllowedUser()) return m_stateOfVeryCriticalResource; } set { if (IsAdmin()) m_stateOfVeryCriticalResource = value; } } ... stateOfVeryCriticalResource = vcrCompletelyScrewedUp;
(2) private int m_AgeOfClient; public int AgeOfClient { get { if (AccessToPersonalInfoAllowed()) return m_AgeOfClient; } set { if (value > 0 && value <= 120) m_AgeOfClient = value; else MessageBox.Show("This client is not recommended for insurance"); } }
(3) Hashtable ziphash = new Hashtable(); ... foreach (string zip in ziphash.Keys) { Console.WriteLine(zip + " " + ziphash[zip]); }
Написание компилятора может потребоваться в следующих условиях:
(1) для различных языков
(2) для целевых платформ
(3) при создании новой компьютерной архитектуры
Обобщенный алгоритм, позволяющий определить некоторое множество и использующий в своей работе следующие компоненты: входную ленту, управляющее устройство с конечной памятью и дополнительную рабочую память - это:
(1) интерпретатор
(2) распознаватель
(3) определитель
Простейший вид таблицы представлений – это:
(1) массив указателей на индексы
(2) массив указателей на числа
(3) массив указателей на строки
(4) массив указателей на символы
От корня к листьям узлы синтаксического дерева строятся:
(1) в bottom-down алгоритмах
(2) в top-down алгоритмах
(3) в left-down алгоритмах
(4) в right-down алгоритмах
LR(0)-ситуации не должны содержать:
(1) терминальной цепочки
(2) нетерминальной цепочки
(3) специальной цепочки
(4) контекстной цепочки
Примером определения типов, значения которых возвращаются как значения семантик является:
(1) %{ int myCount; }%
(2) %type <id1> conditional_stmt
(3) %union { type1 id1; ... }
(4) %token MINUS_LC PLUS_LC TIMES_LC
Обработка определяющего вхождения идентификатора происходит:
(1) на фазе видозависимого анализа
(2) на фазе семантического анализа
(3) на фазе лексического анализа
(4) на фазе синтаксического анализа
Манифест: описание сборки позволяет:
(1) скрыть от потребителя детали реализации
(2) открыть потребителю детали реализации
(3) ничего не скрывать от потребителя
(4) все скрыть от потребителя
Недостатком неявного управления памятью является:
(1) потенциальное замедление программ, использующих сборку мусора
(2) потенциальное ускорение программ, использующих сборку мусора
(3) системное ускорение программ, использующих сборку мусора
(4) логическое замедление программ, использующих сборку мусора
Пара конечных множеств (V, E), называемых соответственно множествами вершин и дуг, при этом множество дуг представляет собой совокупность пар вершин - это:
(1) ориентированным графом
(2) ассоциированным графом
(3) простым графом
(4) локальным графом
Дуги, которые входят в состав остовного дерева - это:
(1) деревянные
(2) прямые
(3) обратные
(4) поперечные
На какой стадии анализа потоков данных, происходит решение задачи анализа для каждого пути, ведущего в данную вершину и затем выделение общей части всех таких решений:
(1) внешней
(2) внутренней
(3) локальной
(4) глобальной
Какая команда MSIL осуществляет загрузку константы:
(1) ldind
(2) ldflda
(3) ldstr
(4) ldimm
Две грамматики назовем эквивалентными, если совпадают:
(1) порождаемые ими языки
(2) их языки
(3) порождаемые ими правила
(4) порождаемые ими грамматики
Для реализации модели "публикация/подписка" в C# используются:
(1) представители
(2) события
(3) индексаторы
(4) модификаторы
Для того, чтобы справиться с проблемой большой потери времени при написании и отладке компилятора на языке ассемблера был разработан:
(1) метод раскрутки
(2) метод упаковки
(3) метод генерации
(4) метод распаковки
Основная часть конечного автомата - это:
(1) функция перехода
(2) функция распознавания
(3) функция определения
(4) функция остановки
На практике чаще используется эквивалентный праволинейным грамматикам механизм:
(1) встроенных анализаторов
(2) регулярных выражений
(3) хэш-функций
(4) хэш-массивов
С восходящими анализаторами связаны:
(1) LL-грамматики
(2) LR-грамматики
(3) LP-грамматики
(4) LM-грамматики
Данная ситуация:[S->x.]определяет состояние:
(1) 0
(2) 1
(3) 2
(4) 3
В следующем правиле (секция грамматических правил файла name.y):A: production_body;именем нетерминала является:
(1) production_body;
(2) A: production_body;
(3) A
(4) production_body
В программе следующей структуры:{int n; …; n++; .. {float n; … n = 3.14; … } …n--; … }после входа во внутренний блок будет добавлен еще один элемент:
(1) в таблицу представлений, соответствующий идентификатору n
(2) в таблицу идентификаторов, соответствующий идентификатору n
(3) в таблицу идентификаторов, не соответствующий идентификатору n
(4) в таблицу представлений, не соответствующий идентификатору n
Типами проверок безопасности в .NET являются:
(1) безопасность типов
(2) подлинность кода
(3) разрешения на доступ к ресурсам
(4) декларативная безопасность
(5) общая безопасность
(6) императивная безопасность
Фазами управления памятью являются:
(1) утилизация памяти
(2) начальное выделение памяти
(3) удаление памяти
(4) уплотнение и повторное использование
В качестве алфавита операторов данной программы:int F (int a, int b) { int g = a, m = b; if (a < b) {g = b; m = a;} while (m) { int s = g; g = m; m = s % m; } return g; } выступает следующее множество:
(1) {'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m', 'm=s%a'}
(2) {'g=a', 'm=b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m'}
(3) {'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m'}
(4) {'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a'}
Состояние вершины, когда вершина еще не рассматривалась алгоритмом обозначается:
(1) InProcess
(2) Done
(3) Init
(4) Start
Разметка представляет собой некоторый:
(1) набор потоковых утверждений для одной вершины графа
(2) набор потоковых утверждений для определенной вершины графа
(3) набор потоковых утверждений для каждой вершины графа
(4) набор потоковых утверждений для двух вершин графа
Для загрузки значений на стек предназначены следующие команды MSIL:
(1) ldsfld
(2) ldloc
(3) ldloca
(4) ldfld
Для представления множества выводов можно построить разметку C, которая вершине дерева v и нетерминалу K сопоставляет:
(1) множество листьев
(2) множество дуг
(3) множество правил
(4) множество инструкций
В данном случае:int v2 = v1; происходит:
(1) неявное приведение переменной v1 к типу int
(2) явное приведение переменной v1 к типу int
(3) приведение переменной v1 к типу int
(4) сопоставление переменной v1 с типом int
Одна из первых широко известных виртуальных машин была разработана в 70-х годах Н. Виртом:
(1) при написании компилятора Pascal-P
(2) при написании компилятора Pascal
(3) при написании компилятора Simula-P
(4) при написании компилятора Simula
Удобная форма записи конечных автоматов – это:
(1) графы переходов
(2) диаграммы переходов
(3) дерево переходов
(4) графики переходов
По имеющемуся регулярному выражению легко написать:
(1) синтаксический анализатор вручную
(2) стандартный анализатор вручную
(3) лексический анализатор вручную
(4) семантический анализатор вручную
Можно разделить все формулы на следующие классы:
(1) простейшие формулы
(2) формулы, содержащие операции типа умножения
(3) формулы, содержащие операции типа сложения
(4) формулы, содержащие операции типа деления
Какая операция добавляет ситуации к множеству ситуаций, у которых точка стоит слева от нетерминала:
(1) goto
(2) add
(3) closure
(4) point
Какая литера может использоваться для объединения всех правил в одно, если имеется несколько грамматических правил с одинаковой левой частью:
(1) "|"
(2) "-"
(3) "/"
(4) "\"
Конструктор struct применяется к кортежу пар:
(1) индекс поля, тип поля
(2) имя поля, номер поля
(3) имя поля, тип поля
(4) индекс поля, номер поля
В Common Type System все типы делятся на следующие категории:
(1) примитивные типы, типы-значения и ссылочные типы
(2) объектные и интерфейсные типы
(3) специальные типы
(4) блочные и системные типы
Для статического управления памятью верны следующие утверждения:
(1) простейший способ распределения памяти
(2) производится во время трансляции
(3) не подходит для рекурсивных вызовов
(4) вполне достаточен для Фортрана
При использовании def-use chains необходимо, чтобы множества входов и выходов для разных операторов:
(1) не пересекались
(2) пересекались
(3) не были параллельны
(4) были параллельны
Каждая обратная дуга определяет в графе потока управления:
(1) контур
(2) фон
(3) круг
(4) вершину
Основной проблемой разметки и потоковых функции является:
(1) проблема остановки алгоритма
(2) проблема запуска алгоритма
(3) проблема написания алгоритма
(4) проблема реализации алгоритма
Команды целочисленной арифметики существуют в:
(1) знаковом варианте
(2) локальном варианте
(3) глобальном варианте
(4) беззнаковом варианте
Пусть задана грамматика G=(A,N,S,R) и дерево t. Индукцией по числу шагов можно доказать, что приведенный алгоритм действительно:
(1) строит разметку, обладающую заявленными свойствами
(2) не строит разметку, обладающую заявленными свойствами
(3) строит вершину, обладающую заявленными свойствами
(4) не строит вершину, обладающую заявленными свойствами
Для препроцессор C# верны следующие утверждения:
(1) в C# запрещены подстановки текста
(2) #define, #undef служат для определения/отмены идентификаторов
(3) реализован механизм #if DEBUG… #else … #endif
(4) реализована генерация ошибок и предупреждений
Для того, чтобы увеличить скорость работы приложений, была разработана технология:
(1) compiling
(2) Just-In-Time compiling
(3) Just compiling
(4) Fats compiling
Если мы предположим, что начальные состояния конечных автоматов эквивалентны, то мы можем получить:
(1) и другие пары начальных состояний
(2) и другие пары эквивалентных состояний
(3) и другие пары конечных состояний
(4) и другие пары промежуточных состояний
В Lex действия, связанные с реакцией на встреченные регулярные выражения, пишутся непосредственно на:
(1) C
(2) C++
(3) C#
(4) Pascal
Следующая процедура:int Factor () { char ch = getChar(); if (isDigit (ch)) return getValue(ch); if (ch == '(') { int result = Formula (); if (getChar() == ')') return result; error ("Неожиданный символ"); return 0; } return error ("Неожиданный символ"); } вычисляет значение:
(1) формулы, содержащие операции типа сложения
(2) формулы, содержащие операции типа умножения
(3) простейшие формулы
В данном примере:R = empty set; for (each state I in T) { for (each item [A->w.] in I) { R+={(I, A->w)}; } }вычисляется:
(1) множество сверток A
(2) множество сверток R
(3) множество сверток T
(4) множество сверток I
Для того, чтобы нетерминал мог иметь значение некоторого типа, который указан в объединении, определенном в секции объявлений, он должен быть объявлен следующим образом:
(1) %type имя-нетерминала <имя-вида>
(2) %type <myCounter> counter
(3) %type <имя-вида> имя-нетерминала
(4) %type counter <myCounter>
К способам представления типов можно отнести:
(1) деревья
(2) ориентированные ациклические графы
(3) линейное представление деревьев или dag'ов
(4) битовые шкалы
Типы данных, напрямую поддержанные компилятором и допускающие определенные сокращения записи - это:
(1) примитивные типы
(2) ссылочные типы
(3) блочные типы
(4) системные типы
В сложных языках программирования для распределения памяти приходится отталкиваться от значений, которые:
(1) известны до времени исполнения
(2) не могут стать известны во время исполнения
(3) станут известны или до или во время исполнения
(4) станут известны только во время исполнения
При формализации удаления пустого оператора вершина графа, помеченная пустым оператором:
(1) удаляется вместе с входящими дугами
(2) удаляется вместе с исходящими дугами
(3) удаляется вместе с входящими и исходящими дугами
(4) удаляется вместе с помеченными дугами
Алгоритм выделения максимального альта, для которого данная вершина p является начальной, включает следующие шаги:
(1) вначале все вершины графа помечаются как "черные"
(2) вначале все вершины графа помечаются как "белые"
(3) все вершины, достижимые из p, помечаются как "серые"
(4) все вершины, достижимые из p, помечаются как "красные"
Если функция является гомоморфизмом относительно полурешеточной операции, то она называется:
(1) дистрибутивной
(2) не дистрибутивной
(3) монотонной
(4) интегрируемой
Если команда вызова снабжена префиксом tail, то это означает, что значение, возвращаемое вызываемой процедурой, является также:
(1) возвращаемым значением и для следующей процедуры
(2) возвращаемым значением и для предыдущей процедуры
(3) возвращаемым значением и для всех процедур
(4) возвращаемым значением и для вызывающей процедуры
BURS на сегодняшний день являются одним из наиболее распространенных способов описания:
(1) кодогенераторов
(2) генераторов
(3) кода
(4) графов
Атрибуты в C# представляют собой:
(1) "примечания" к элементам исходного текста программы
(2) "примечания" к классам исходного текста программы
(3) "примечания" к методам исходного текста программы
(4) "примечания" к параметрам методов исходного текста программы
Обычно компилятор состоит из следующих фаз:
(1) лексический анализ
(2) синтаксический анализ
(3) видозависимый анализ
(4) оптимизация
(5) генерация кода
Класс языков, задаваемых праволинейными грамматиками, очень удобен в задачах:
(1) трансляции
(2) интерпретации
(3) компиляции
Lex-программа состоит из следующих частей:
(1) описаний
(2) правил трансляции
(3) методов
(4) процедур
Общий вид формулы, содержащей операции типа сложения:
(1) T1+T2*Tn
(2) T1+T2+…+ Tn
(3) T1+T2+…Tn
(4) *T1+T2*Tn
LR(1)-ситуация состоит из:
(1) правила грамматики
(2) позиции правой части
(3) одного символа входной строки
Какая из секций является необязательной:
(1) секция описаний
(2) секция грамматических правил
(3) секция описаний процедур
При кодировании типов с использованием битовых шкал <boolean> имеет значение:
(1) 0000
(2) 0001
(3) 0010
(4) 0011
Для типа-значения верно:
(1) содержит само значение, а не ссылку на него
(2) тип-значение не может наследовать от другого типа
(3) тип-значение не может быть наследуемым
(4) редко передаются в качестве параметров
Данная программа:var in : integer; function Digits (integer n) : integer; var m : integer; begin if n < 10 then return n else begin m := n div 10; return n - m*10 + Digits (m); end; end; begin read (in); writeln(Digits(in)); end. используется:
(1) для вычисления частного чисел
(2) для вычисления остатка от деления
(3) для вычисления суммы цифр числа
(4) для вычисления квадрата числа
Удаление мертвого кода заключается в удалении такого оператора, у которого:
(1) не используются его выходы
(2) не используются его входы
(3) не используются его входы и выходы
Множество максимальных лучей образует:
(1) разбиение множества вершин контура
(2) разметку множества вершин графа
(3) разбиение множества вершин графа
(4) разметку множества вершин контура
Набор монотонных функций f1,f2,...,fk соответственно на полурешетках L1,L2,...,Lk индуцирует:
(1) дистрибутивную функцию на их декартовом произведении
(2) простую функцию на их декартовом произведении
(3) монотонную функцию на их декартовом произведении
Следующая программа:using System; class Fib { public static void Main (String[] args) { int a = 1, b = 1; for (int i = 1; i != 10; ++i) { Console.WriteLine (a); int c = a + b; a = b; b = c; } } }вычисляет:
(1) ряды Фурье
(2) число Пи
(3) числа Фибоначчи
(4) тригонометрические функции
В системе восходящего переписывания деревьев язык интерпретируется как:
(1) преобразования типов или пересылки
(2) типы операндов
(3) последовательность инструкций
(4) формат промежуточного представления
Для того, чтобы определить собственные, пользовательские атрибуты достаточно создать класс, унаследованный от:
(1) New.Attribute
(2) System.Attribute
(3) Users.Attribute
(4) Special.Attribute
После синтаксического анализа можно считать, что исходная программа преобразована:
(1) в некоторое промежуточное представление
(2) в некоторое промежуточное состояние
(3) в объектное представление
(4) в исполняемый файл
В нормальной форме Грейбах все правые части правил начинаются:
(1) с терминалов
(2) с нетерминалов
(3) с формул
(4) с инструкций
В регулярных выражениях в Lex-программе специальные символы записываются после префикса:
(1) "/"
(2) "$"
(3) "\"
(4) "#"
Метод getChar:
(1) выдает очередную литеру из входного потока
(2) возвращает неиспользованную литеру обратно во входной поток
(3) используется для вывода сообщений об ошибках
(4) извлекает из входного потока все цифры
LALR анализатор имеет значительное преимущество в размере таблиц по сравнению с:
(1) LR
(2) LP
(3) TL
(4) TR
Данная функция:int yylex (void) { int ch; while ((ch = getchar ()) == ' '); if (isdigit (ch)) { ungetc (ch, stdin); scanf (%i, &yylval); return NUMBER_LC; } return ch; } вычисляет следующую пару значений:
(1) лексический класс
(2) атрибут, связанный с лексическим классом
(3) семантический класс
(4) атрибут, связанный с семантическим классом
Если контроль типов производится во время исполнения объектной программы, то - это:
(1) линейный контроль типов
(2) логический контроль типов
(3) статический контроль типов
(4) динамический контроль типов
В следующем примере:ArrayList a = new ArrayList(); for (int i=0; i < 10; i++) { Point p; p.x = p.y = i; a.Add(p); } мы добавляем тип-значение:
(1) в коллекцию
(2) в секцию
(3) в блок
(4) в массив
Самая сложная часть управления кучей - это:
(1) сборка мусора
(2) сборка ссылок
(3) адресация в памяти
(4) сборка секций
Границы, переменная и инкремент циклов должны быть одинаковыми, что является контекстным условием корректности:
(1) чистки циклов вниз
(2) чистки циклов вверх
(3) объединения циклов
(4) удаления пустого оператора
Для выделения сильно связных подграфов, достаточно научиться:
(1) выделять фрагменты
(2) выделять вершины
(3) выделять дуги
(4) выделять области
Достижимые определения являются:
(1) обратной задачей
(2) кривой задачей
(3) прямой задачей
(4) развернутой задачей
Структура MSIL задает определенную последовательность генерации кода, в которой код генерируется в во время следующих проходов:
(1) все начинается с создания AssemblyBuilder
(2) на втором шаге создаются ModuleBuilders
(3) на третье шаге создается TypeBuilders для классов всех уровней
(4) на четвертом шаге создаются MethodBuilders и FieldBuilders
(5) на последнем шаге генерируется собственно код
Поскольку BURS-грамматика однозначна, каждый нетерминал может быть выведен:
(1) одним правилом
(2) двумя правилами
(3) тремя правилами
(4) четырьмя правилами
Обязательность описания переменных может служить примером:
(1) предварительных условий
(2) контекстных условий
(3) дополнительных условий
(4) временных условий
МП-автоматы обладают одним существенным недостатком:
(1) они недетерминированны по своей природе
(2) они детерминированны по своей природе
(3) они имеют сложную структуру
(4) они имеют простую структуру
В Lex-программе регулярному выражению< соответствует следующий лексический класс:
(1) relop_LC
(2) Identifier_LC
(3) if_LC
(4) else_LC
Для данной грамматики:S -> B A A -> +B A A -> e B -> D C C -> * D C C -> e D -> (S) D -> a множества FIRST определяются следующим образом:
(1) FIRST (D) = {(, e}, FIRST (C) = {*, a }, FIRST (B) = FIRST (D), FIRST (A)={+, a }, FIRST (S) = {(, e}
(2) FIRST (D) = {(, a}, FIRST (C) = {*, d }, FIRST (B) = FIRST (D), FIRST (A)={+, c }, FIRST (S) = {(, a}
(3) FIRST (D) = {(, a}, FIRST (C) = {*, e }, FIRST (B) = FIRST (D), FIRST (A)={+, e }, FIRST (S) = {(, a}
(4) FIRST (D) = {(, e}, FIRST (C) = {*, a }, FIRST (B) = FIRST (D), FIRST (A)={+, e }, FIRST (S) = {(, a}
Конфликт перенос-свертка может быть решен следующими методами:
(1) вводя новые нетерминалы matched_statement и unmatched_statement
(2) явным образом разрешая конфликт при его возникновении
(3) вводя новые терминалы matched_statement и unmatched_statement
Лексический анализатор в следующем контексте:fi (x == y) { ... }:
(1) проигнорирует ошибку
(2) не сможет обнаружить ошибку
(3) сможет обнаружить ошибку
Преобразование, при котором программист должен написать что-нибудь для того, чтобы это преобразование было выполнено называется:
(1) неявным
(2) приведением
(3) явным
(4) назначением
В данном примере:public static void Main() { Int32 v = 5; Object o = v; v = 123; Console.WriteLine (v + ", " + (Int32) o); }операция упаковки производится:
(1) 0 раз
(2) 1 раз
(3) 2 раза
(4) 3 раза
В каком году Шорром и Уэйтом был предложен алгоритм с обращением указателей?
(1) 1965
(2) 1968
(3) 1971
(4) 1974
К упрощениям выражений можно отнести:
(1) константные вычисления
(2) упрощения с использованием алгебраических тождеств
(3) понижение силы операций
(4) контекстные вычисения
Иерархия вложенных зон - это один из способов:
(1) описать структуру программы
(2) описать динамическую структуру программы
(3) описать циклическую структуру программы
(4) описать вложенную структуру программы
Итеративный подход дает:
(1) не дает решения
(2) точное или приближенное решение
(3) только точное решение
(4) только приближенное решение
В случае наличия вложенных блоков их рекомендуется ограничивать вызовами:
(1) BeginScope() и EndScope()
(2) DeclareLocal и DeclareGlobal
(3) StartTry и EndTry
(4) MarkLabel и DefineLabel
Извлечение оптимального вывода из разметки - это:
(1) упаковка
(2) свертка
(3) распаковка
(4) итерация
Язык Cи-бемоль был разработан:
(1) путем усечения C#
(2) путем дополнения C#
(3) путем усечения C++
(4) путем дополнения C++
Какие фазы иногда объединяют вместе под названием front-end?
(1) лексический анализ
(2) синтаксический анализ
(3) видозависимый анализ
(4) некоторые оптимизации
При определении синтаксиса языков Pascal и Modula-2 Вирт использовал расширенную форму Бэкуса-Наура (EBNF):
(1) нетерминалы записываются как отдельные слова
(2) символ равенства используется вместо символа ::=
(3) символ точка используется для обозначения конца правила
(4) комментарии заключаются между символами (* … *)
При лексическом анализе программ на C# после прочтения символа > необходимо прочитать:
(1) последующие символы
(2) предыдущие символы
(3) специальные символы
Леворекурсивные грамматики не обладают свойством:
(1) LL(k) ни для какого k
(2) LR(k) ни для какого k
(3) LM(k) ни для какого k
(4) LN(k) ни для какого k
В процессе разбора входной цепочки id (id, id), при содержимом стека - $ id (id, необработанная часть представляет собой:
(1) id (id, id)
(2) (id, id)
(3) , id)
(4) id, id)
60% ошибок в программе - это:
(1) ошибки в операторах и операндах
(2) ошибки в ключевых словах
(3) пунктуационные ошибки
(4) все прочие ошибки
Атрибутное дерево разбора является, самой распространенной формой организации:
(1) внешнего представления программы
(2) логического представления программы
(3) внутреннего представления программы
(4) системного представления программы
В .NET исходные тексты программ компилируются в специальное промежуточное представление, которое называется:
(1) Microsoft Intermediate Language
(2) IL
(3) SIL
(4) MSIL
Управление памятью при разработке компилятора является вопросом одновременно:
(1) машинно-зависимым
(2) языково-зависимым
(3) структурно-зависимым
(4) системно-зависимым
Эффективность оптимизации зависит от:
(1) стоимости программы
(2) от отношения эквивалентности
(3) от размера участка экономии
Анализ потока управления производится над:
(1) секцией потока управления
(2) блоком потока управления
(3) подграфом потока управления
(4) графом потока управления
Общая семантика присваивания заключается в вычислении выражения, стоящего:
(1) в правой части
(2) в левой части
(3) в обоих частях
MSIL, является:
(1) виртуальной машиной
(2) языком высокого уровня некоторой виртуальной машины
(3) языком высокого уровня
(4) языком ассемблера некоторой виртуальной машины
В задачу выбора инструкций входит:
(1) выбор наилучших режимов адресации
(2) выбор размещений для переменных и промежуточных результатов
(3) выбор произвольных режимов адресации
(4) сопоставление конструкциям исходной программы последовательностей машинных инструкций
Упрощение языка C# выразилось в:
(1) запрете прямой манипуляции памятью
(2) более строгих правилах преобрзования типов
(3) запрещении множественного наследования
(4) отказе от провала в следующую ветку в switch
Трансляторы бывают следующих типов:
(1) compiler
(2) interpreter
(3) analysis
(4) synthesis
Множество лексем разбивается:
(1) на непересекающиеся подмножества
(2) на лексические классы
(3) на пересекающиеся подмножества
(4) на специальные классы
Грамматики представляют собой мощный формализм:
(1) написания языков программирования
(2) описания языков программирования
(3) определения языков программирования
Процесс построения дерева разбора, начиная с листьев и двигаясь вверх к корню дерева разбора может быть представлен как:
(1) "свертка" символа w к аксиоме грамматики
(2) "перенос" исходной строки w к аксиоме грамматики
(3) "свертка" исходной строки w к аксиоме грамматики
(4) "перенос" символа строки w к аксиоме грамматики
Генератор анализаторов YACC был разработан:
(1) в начале 60-х годов прошлого века
(2) в конце 60-х годов прошлого века
(3) в начале 70-х годов прошлого века
(4) в конце 70-х годов прошлого века
Нельзя убедиться в правильности использования типов в какой-нибудь конструкции до тех пор, пока не определены:
(1) типы специальных частей
(2) типы частей описания
(3) типы основных частей
(4) типы всех ее составных частей
С помощью какого механизма в .NET происходит обработка ошибок?
(1) исключительных ситуаций
(2) исключительных событий
(3) внутренней верификации
(4) встроенной верификации
К проблемам управления пмятью можно отнести:
(1) память не бесконечна
(2) ошибки явного управления памятью
(3) ошибки при работе с памятью труднонаходимы
(4) проблема освобождения ресурса
В зависимости от уровня представления программы различают следующие виды оптимизации:
(1) оптимизацию на уровне исходного языка
(2) машинно-независимую оптимизацию
(3) межпроцедурную оптимизацию
(4) машинно-зависимую оптимизацию
Последовательность вершин, такая, что между каждой последующей и предыдущей вершиной в графе существует ребро - это:
(1) дуга в графе
(2) путь в графе
(3) блок вершин
(4) блок секций
На смысл каждой конструкции может оказывать влияние любая конструкция, из которой:
(1) в этом графе достижима любая
(2) в этом графе не достижима данная
(3) в этом графе достижима данная
Основными чертами архитекутры виртуальной машины MSIL являются:
(1) машина является стековой, причем стек является статически типизированным
(2) ячейки стека представлены как 4-байтовые или 8-байтовые знаковые целовые
(3) стек используется как правило только для хранения промежуточных результатов вычисления
(4) большинство команд MSIL получают свои аргументы на стеке, удаляют их со стека и помещают вместо них результат(ы) вычисления
(5) машина является объектно-ориентированной
Выписыванием пометок вершин при простом обходе дерева слева-направо и сверху-вниз можно получить:
(1) прямую запись дерева
(2) локальную запись дерева
(3) скобочную запись дерева
(4) рефлексивную запись дерева
В C# значениям переменных булевского типа:
(1) не соответствует никаких численных эквивалентов
(2) соответствуют численные эквиваленты
(3) соответствуют специальные численные эквиваленты
Для интерпретатора верны следующие утверждения:
(1) анализирует программу на входном языке
(2) создает промежуточное представление
(3) не создает никакой новой программы
(4) выполняет операции, содержащиеся в тексте программы
Получение любого предложения языка в грамматике начинается с этого:
(1) начальный символ
(2) теорема
(3) специальный символ
(4) аксиому
В следующем операторе языка Pascalconst pi = 3.1416;";" представляет лексический класс:
(1) Number_LC
(2) Relation_LC
(3) Identifier_LC
(4) Const_LC
(5) Semicolon_LC
Процесс, который определяет, принадлежит ли некоторая последовательность лексем языку, порождаемому грамматикой называется:
(1) синтаксический анализ
(2) семантический анализ
(3) видозависимый анализ
(4) лексический анализ
При LR(k)-анализе применяется метод:
(1) shift-reduce
(2) shift-shift
(3) reduce-reduce
(4) reduce-shift
Входом программы YACC является:
(1) грамматика языка
(2) некоторая дополнительная информация
(3) программа на языке C
(4) файл со спецификациями
Каждое вхождение идентификатора в программу является либо:
(1) определяющим
(2) не использующим
(3) не определяющим
(4) использующим
Извлечение из MSIL исходных текстов путем дизассемблированя вряд ли имеет смысл, так как имена локальных переменных, констант и параметров сохраняются только:
(1) в программной версии
(2) в тестовой версии
(3) в буферной версии
(4) в отладочной версии
Примерами различных путей доступа к структуре являются:
(1) два указателя, указывающих на один и тот же адрес
(2) два указателя, указывающих на различные адреса
(3) передача массива параметром в процедуру
Возможны следующие зависимости между оптимизирующими преобразованиями:
(1) независимость
(2) повторность
(3) неопределенность
(4) тупиковость
Отношение обязательного предшествования:
(1) рефлексивно
(2) симметрично
(3) транзитивно
С помощью какого способа можно решать задачи анализа потоков данных?
(1) интерактивного алгоритма анализа потоков данных
(2) итеративного алгоритма анализа потоков данных
(3) локального алгоритма анализа потоков данных
(4) глобального алгоритма анализа потоков данных
Локальная память выделяется:
(1) для временных переменных
(2) для автоматических переменных
(3) для констант
(4) для параметров
Одним из способов задания деревянных языков являются:
(1) полуавтоматные деревянные грамматики
(2) автоматные деревянные грамматики
(3) автоматические деревянные грамматики
(4) статические деревянные грамматики
Классы в C# предоставляют следующие возможности:
(1) модификаторы доступа
(2) конструкторы/деструкторы
(3) интерпретаторы
(4) методы классов и их параметры
(5) свойства и доступ к ним
(6) индексаторы
(7) события и представители
Объектная программа может быть:
(1) последовательностью абсолютных машинных команд
(2) последовательностью перемещаемых машинных команд
(3) программой на языке ассемблера
(4) программой на некотором другом языке
Несмотря на эквивалентность определяемых языков, одна грамматика может быть значительно удобнее другой с точки зрения ее использования:
(1) в интерпретаторе
(2) в трансляторе
(3) в виртуальной машине
(4) в компиляторе
В Алголе 68 и Фортране, пробелы являются значащими только:
(1) в логических значениях
(2) в строковых литералах
(3) в массивах
(4) в структурах
Дерево разбора и таблицы - это:
(1) вход семантического анализатора
(2) выход семантического анализатора
(3) выход синтаксического анализатора
(4) вход синтаксического анализатора
LR(k)-анализатор состоит из:
(1) входной цепочки
(2) выхода
(3) управляющей программы и таблицы
(4) магазина
Какой из следующих файлов содержит сгенерированную YACC'ом программу анализатора:
(1) name.yy.c
(2) y.output
(3) yy.lrt
(4) name.c
Цель идентификации идентификаторов - это:
(1) определить тип использующего вхождения идентификатора
(2) определить тип определяющего вхождения идентификатора
(3) определить тип вхождения идентификатора
Основные сервисы .NET сосредоточены в пространстве имен:
(1) Object
(2) Class
(3) Services
(4) System
Информация, известная во время компиляции - это:
(1) динамическая информация
(2) системная информация
(3) логичекая информация
(4) статическая информация
Стадиями оптимизации являются:
(1) фрагментация
(2) проверка контекстных условий
(3) структуризация
(4) преобразование
Взаимно однозначное отображение множества вершин графа на отрезок натурального ряда [1..|V|] называется:
(1) нумерация
(2) подграф
(3) дерево
(4) обратная дуга
В выяснении, где именно устанавливаются значения того или иного вхождения данной переменной заключается:
(1) задача не достижимых определений
(2) задача достижимых определений
(3) задача глобальных определений
(4) задача произвольных определений
Если язык допускает использование вложенных процедур в качестве переменных процедурного типа, то единственным способом для реализации такого механизма в безопасном режиме является:
(1) построение в глобальной среде замыкания процедуры
(2) построение в объемлющей среде замыкания процедуры
(3) построение в куче замыкания процедуры
В деревянном образце нетерминалами могут быть помечены:
(1) вершины
(2) дуги
(3) графы
(4) листья
Корректными примерами конструкторов являются следующие:
(1) public Matrix() { for (int i=0; i<n; i++) for (int j=0; j<n; j++) elements[i,j] = 0; }
(2) public Matrix (val) { for ( i=0; i<n; i++) for (int j=0; j<n; j++) elements[i]; }
(3) public Matrix (int val) { for (int i=0; i<n; i++) for (int j=0; j<n; j++) elements[i,j] = val; }
Преимуществами трансляции в ассамблер являются:
(1) уровень ассемблера выше, чем у машинного кода
(2) использование ассемблера позволяет отследить целый ряд ошибок
(3) порождаемый текст на ассемблере значительно читабельней, чем машинный код
Согласно иерархии Хомского, если любое правило из P имеет вид A->xB или A->x, где A, B - нетерминалы, а x - терминал, то грамматика G называется:
(1) выровненной вправо
(2) без ограничений
(3) бесконтекстной
(4) праволинейной
Если определен тип, соответствующий указателю в эту таблицу - ReprInd, и тип, служащий для представления позиции в исходном файле - FilePos, то можно полностью определить лексему следующим образом:
(1) struct LEXEME { ushort LexClass; ReprInd ReprTabPtr; FilePos beg; }
(2) struct LEXEME { ushort LexClass; ReprInd ReprTabPtr; FilePos beg; FilePos end; FilePos out; }
(3) struct LEXEME { ReprInd ReprTabPtr; FilePos beg; FilePos end; }
(4) struct LEXEME { ushort LexClass; ReprInd ReprTabPtr; FilePos beg; FilePos end; }
В узлах синтаксического дерева корнем являются:
(1) аксиомы грамматики
(2) терминальные символы
(3) нетерминальные символы
(4) пустые строки
Функция goto получает:
(1) состояние и символ грамматики
(2) состояние и секцию грамматики
(3) блок и символ грамматики
(4) блок и секцию грамматики
В файле name.y секция описаний содержит:
(1) описания переменных языка C
(2) определения типов
(3) объявления терминальных символов грамматики
(4) объявления нетерминальных символов грамматики
(5) определения ассоциативности и приоритетов операций
Таблица внешних представлений содержит:
(1) значение hash-функции для лексемы
(2) лексический класс
(3) лексическую марку
(4) ссылку на внешнее представление
(5) ссылку на предыдущее определение идентификатора
(6) ссылку на определение идентификатора
Причиной появления понятия сборки можно считать:
(1) комплексность установки Windows-приложений
(2) многоэтапность установки Windows-приложений
(3) простоту установки Windows-приложений
(4) трудности установки Windows-приложений
Где используется сборка мусора, как методика управления памятью:
(1) Java
(2) платформа .NET
(3) C
(4) Fortran
Одним из самых простых видов оптимизаций является:
(1) локальная оптимизация
(2) глобальная оптимизация
(3) межпроцедурная оптимизация
(4) покадровая оптимизация
Существует следующие типы дуг графа по отношению к данному глубинному остовному дереву:
(1) деревянные
(2) прямые
(3) обратные
(4) поперечные
Анализ потоков данных состоит из следующих стадий:
(1) глобальной
(2) внутренней
(3) внешней
(4) локальной
Присваивание указателей на локальные переменные в другие переменные:
(1) запрещено
(2) разрешено
(3) разрешено в безопасном режиме
(4) разрешено в специальном режиме
Образцом в данной последовательности троек:(p1,v1,R1),(p2,v2,R2),…,(pk,vk,Rk)будет:
(1) R1
(2) R2
(3) vk
(4) pi
Данный пример:private int m_stateOfVeryCriticalResource; public int stateOfVeryCriticalResource { get { if (IsAllowedUser()) return m_stateOfVeryCriticalResource; } set { if (IsAdmin()) m_stateOfVeryCriticalResource = value; } } ... stateOfVeryCriticalResource = vcrCompletelyScrewedUp;позволяет проверить достаточность полномочий запрашивающего приложения:
(1) для доступа к данному объекту
(2) для доступа к данной строке
(3) для доступа к данному классу
(4) для доступа к данному полю
Методиками разработки компиляторов являются следующие:
(1) метод раскрутки
(2) метод генерации
(3) использование кросс-трансляторов
(4) использование виртуальных машин
(5) компиляция "на лету"
В качестве примеров распознавателей можно назвать:
(1) машину Тьюринга
(2) конечные автоматы
(3) бесконечные автоматы
(4) магазинные автоматы
Какой специальный класс содержит система классов .NET, с помощью которого легко реализовать функциональность хэш-таблиц:
(1) TableFunc
(2) Hash
(3) TableHash
(4) HashTable
От листьев к корню узлы синтаксического дерева строятся:
(1) в top-down алгоритмах
(2) в bottom-down алгоритмах
(3) в right-down алгоритмах
(4) в left-down алгоритмах
Входная цепочка может начинаться с любого:
(1) нетерминального символа
(2) контекстного символа
(3) терминального символа
Объявлением нетерминальных символов грамматики являются:
(1) %token MINUS_LC PLUS_LC TIMES_LC
(2) %token PLUS_TO_LC TIMES_TO_LC
(3) %{ int myCount; }%
(4) %type <id1> conditional_stmt
При занесении информации об идентификаторе в таблицу идентификаторов синтаксическим анализатором, происходят следующие действия:
(1) создается новый элемент таблицы идентификаторов
(2) в поле toRepr таблицы идентификаторов помещается rpr
(3) в поле toRepr таблицы идентификаторов помещается rpt
Каждая сборка имеет уникальное имя, которое состоит из следующих частей:
(1) префикса
(2) простого текстового имени
(3) номера версии
(4) информации о локализации
Когда большинство исследователей было уверено, что неявное управление памятью окончательно вытеснило все остальные методы:
(1) в середине 60-х годов
(2) в конце 60-х годов
(3) в середине 70-х годов
(4) в конце 70-х годов
Программу для оптимизации удобно представлять в виде:
(1) размеченного графа блока управления
(2) размеченного графа процесса управления
(3) размеченного графа стурктуры управления
(4) размеченного графа потока управления
Дуги, чей конец достижим из начала в остовном дереве называются:
(1) поперечные
(2) деревянные
(3) обратные
(4) прямые
Поточечное распространение отношений равенства и порядка вводит:
(1) аналогичные отношения на множестве разметок
(2) аналогичные отношения на множестве функций
(3) аналогичные отношения на множестве разметок и функций
Какая команда MSIL осуществляет загрузку адреса статического поля:
(1) ldsflda
(2) ldloca
(3) ldflda
(4) ldstr
Любая деревянная грамматика может быть приведена к эквивалентной:
(1) содержащей цепные правила
(2) не содержащей цепных правил
(3) не содержащей сложных правил
(4) содержащей сложные правила
В данном примере:using System; public delegate void EventHandler (string strText); class EventSource { public event EventHandler TextOut; public void TriggerEvent() { if (TextOut != null) TextOut("Event triggered..."); } } class TestApp { public static void Main() { EventSource evsrc = new EventSource(); evsrc.TextOut += new EventHandler(CatchEvent); evsrc.TriggerEvent(); evsrc.TextOut -= new EventHandler(CatchEvent); evsrc.TriggerEvent(); TestApp theApp = new TestApp(); evsrc.TextOut += new EventHandler(theApp.InstanceCatch); evsrc.TriggerEvent(); } public static void CatchEvent(string strText) { WriteLine(strText); } public void InstanceCatch(string strText) { WriteLine("Instance "+strText); } происходят:
(1) подписка на событие
(2) обработка события с помощью зарегистрированного обработчика
(3) получение события
(4) отказ от дальнейшей обработки события
Под переносимой (portable) программой понимается программа, которая:
(1) может без перетрансляции выполняться на одной платформе
(2) не может без перетрансляции выполняться на нескольких платформах
(3) может без перетрансляции выполняться на нескольких платформах
В конечных автоматах цепочка считается принадлежащей языку, если хотя бы одна из последовательностей шагов:
(1) завершается в начальном состоянии
(2) завершается в состоянии перехода
(3) завершается в состоянии распознавания
(4) завершается в заключительном состоянии
Пустое множество и множество, состоящее только из пустой строки, являются:
(1) регулярными выражениями
(2) хэш-функцией
(3) таблицами представлений
С помощью каких грамматик можно определить большинство использующихся в настоящее время языков программирования?
(1) LR-грамматики
(2) LN-грамматики
(3) LT-грамматики
(4) LL-грамматики
Данная ситуация:[S->(.L)] [L->.L, S] [L->.S] [S->.(L)] [S->.x]определяет состояние:
(1) 0
(2) 1
(3) 2
(4) 3
В секции правил грамматики литерал может состоять:
(1) из литер, заключенных в кавычки
(2) из литер, заключенных в круглые скобки
(3) из литер, заключенных в квадратные скобки
(4) из литер, заключенных в апострофы
Примитивными типами являются:
(1) boolean
(2) char
(3) array
(4) integer
(5) real
(6) void
Моделями обеспечения безопасности в .NET являются:
(1) модель политик доступа
(2) модель ролей
(3) модель прав
(4) модель ограничений
(5) модель полномочий
Перемещение указателя стека - это:
(1) простая утилизация памяти
(2) сложная утилизация памяти
(3) системная утилизация памяти
(4) структурная утилизация памяти
При описании программ с использованием потока управления необходимо, чтобы разметка графа потока управления сопоставляла пустой оператор только тем вершинам, для которых число исходящих дуг:
(1) не превосходит единицы
(2) превосходит единицы
(3) не превосходит две
(4) превосходит две
Состояние вершины, когда вершина еще рассматривается алгоритмом обозначается:
(1) InProcess
(2) Init
(3) Start
(4) Done
Набор потоковых утверждений - это:
(1) набор утверждений о параметрах потоков данных
(2) набор утверждений о инструкциях потоков данных
(3) набор утверждений о свойствах потоков данных
(4) набор утверждений о секциях потоков данных
Команда stind берет со стека адрес значения вместе с самим значением:
(1) и удаляет значение по выбранному адресу
(2) и записывает значение по произвольному адресу
(3) и удаляет значение по произвольному адресу
(4) и записывает значение по выбранному адресу
Чтобы проверить применимость правила для текущей вершины, проверяется соответствие этой вершины образцу в правой части правила - для этого используется функция:
(1) Build
(2) Closure
(3) Builder
(4) Match
В C# есть специальное ключевое слово params, которое позволяет:
(1) задать целый список атрибутов
(2) задать целый список параметров
(3) задать целый список объектов
(4) задать целый список значений
Сегодня идея виртуальных машин приобрела широкую известность благодаря языку:
(1) Java
(2) C++
(3) C
(4) Fortran
Следующий набросок программы:q = q0; c = GetChar(); while (c != eof) { q = move (q, c); c = GetChar(); } if (q is in F) return "yes"; else return "no"; демонстрирует (предполагается, что входная лента заканчивается символом end_of_file):
(1) моделирование конечного автомата
(2) моделирование бесконечного автомата
(3) моделирование магазинного автомата
(4) моделирование машины Тьюринга
Lex, состоит из:
(1) Lex-языка
(2) Lex-компилятора
(3) Lex-интерпретатора
(4) Lex-транслятора
К простейшим формулам можно отнести:
(1) числа
(2) деление
(3) вычитание
(4) сложение
В данном примере: goto (I, X) { J={}; for (каждой ситуации [A->w.Xv] из I) { J+=[A->wX.v]; } return closure (J); }происходит:
(1) переход из одного состояния в другое под воздействием символа J
(2) переход из одного состояния в другое под воздействием символа I
(3) переход из одного состояния в другое под воздействием символа A
(4) переход из одного состояния в другое под воздействием символа X
Аксиому можно определить в секции объявлений так:
(1) %start
(2) %start axiom
(3) %begin axiom
(4) %begin
Тип row строится из примитивных типов следующим образом:
(1) struct (lexeme*array (1..15, char))
(2) struct ((address*integer)-(lexeme*array (1..15, char)))
(3) struct (address*integer+lexeme*array (1..15, char))
(4) struct ((address*integer)x(lexeme*array (1..15, char)))
Какие типы данных являются основными в системе типов данных .NET:
(1) типы-значения
(2) ссылочные типы
(3) объектные типы
(4) интерфейсные типы
Простые переменные, структуры и массивы фиксированного размера, составляют набор данных следующих языков:
(1) Фортран
(2) Си
(3) Паскаль
(4) Кобол
При использовании def-use chains отображение DU описывает, как:
(1) используются полученные процессами результаты
(2) используются полученные процедурами результаты
(3) используются выработанные блоками результаты
(4) используются выработанные операторами результаты
Произвольный подграф графа управления называется:
(1) элемент
(2) контур
(3) ядро
(4) фрагмент
Для определения завершаемости алгоритма используется принцип:
(1) принцип достижения подвижной точки
(2) принцип достижения неподвижной точки
(3) принцип достижения специальной точки
(4) принцип достижения центральной точки
К командам целочисленной арифметики относятся:
(1) ADD
(2) SUB
(3) SUP
(4) DIV
(5) MUL
(6) MOD
Дерево t выводится в грамматике G=(A,N,S,R) тогда и только тогда, когда:
(1) C[root(t)][S] непусто, где S - стартовый терминал G
(2) C[root(t)][S] пусто, где S - стартовый нетерминал G
(3) C[root(t)][S] непусто, где S - стартовый нетерминал G
(4) C[root(t)S] пусто, где S - стартовый нетерминал G
Из привычного набора макросов в препроцесоре C# оставлены следующие:
(1) #define и #undef для определения идентификаторов и отмены определения
(2) механизм условной компиляции, основанный на директивах #if, #else, #endif
(3) генерация предупреждений и ошибок с помощью макросов #warning и #error
Использование какой связки позволяет заметно повысить скорость выполнения исходной программы:
(1) "компилятор+интерпретатор+JIT-компилятор"
(2) "интерпретатор+JIT-компилятор"
(3) "компилятор+интерпретатор"
(4) "компилятор+интерпретатор+JIT-компилятор+интепретатор"
Следующий алгоритм: удаление всех недостижимые состояния, разбивка множества всех достижимых состояний на классы эквивалентности неразличимых состояний, из каждого класса эквивалентности берется только по одному представителю - это:
(1) алгоритм минимизации
(2) алгоритм отладки
(3) алгоритм выделения представителей
(4) алгоритм достижимых и недостижимих состояний
Большинство средств для создания лексических анализаторов основывается:
(1) на специальных функциях
(2) на регулярных выражениях
(3) на таблицах представлений
(4) на хэш-функциях
Обрабатывать формулы, содержащие операции типа умножения будет процедура:
(1) Term
(2) Plus
(3) P_Term
(4) p_Plus
Алгоритм построения управляющей таблицы автомата состоит из следующих шагов:
(1) пополнение грамматики
(2) построение множества состояний
(3) построение множества переходов
(4) построение множества сверток
Все имена и литералы, содержащиеся в правой части правила нумеруются:
(1) слева направо, начиная с единицы
(2) слева направо, начиная с нуля
(3) слева направо, начиная с десяти
(4) слева направо, начиная с тысячи
Использование dag'ов более предпочтительно, чем деревьев, поскольку в этом случае происходит:
(1) значительное сокращение кода
(2) экономия времени при компиляции
(3) упрощение инструкций
(4) иногда весьма значительная экономия памяти
Полный набор примитивных типов .NET поддерживает:
(1) C
(2) C++
(3) C#
(4) Java
Для стекового управления память верны следующие утверждения:
(1) простейший метод распределения памяти времени выполнения
(2) освобождение памяти в обратном порядке
(3) подходит для языков со строго вложенной структурой
(4) используется для точек возврата из подпрограмм и локальных сред
В данном примере: jmp .L1 .L1: movl buffer, %eax addl %edx, %eax movl buffer, %eax addl %edx, %eaxпроисходит:
(1) удаление перехода на следующую инструкцию
(2) удаление перехода на переход
(3) удаление перехода на предыдующую инструкцию
Свойства альтов дают возможность использовать их для определения:
(1) отношения предшествования
(2) отношения не обязательного предшествования
(3) отношения простого предшествования
(4) отношения обязательного предшествования
Дистрибутивная функция всегда:
(1) монотонна
(2) не монотонна
(3) ограничена
Какие команды MSIL реализуют функциональность упаковки и распаковки значений:
(1) BOX
(2) OUTBOX
(3) INBOX
(4) UNBOX
BURS позволяет построить алгоритм выбора инструкций, который:
(1) при определенных допущениях строит оптимальный код
(2) при определенных условиях строит оптимальный код
(3) при определенных допущениях строит необходимый код
(4) при определенных условиях строит необходимый код
В C# информация, записанная в атрибутах, во время компиляции:
(1) теряется
(2) сохраняется в метаданных программы
(3) не сохраняется в метаданных программы
(4) сохраняется в специальном блоке
В разборе входной цепочки и выделении некоторых более "крупных" единиц, которые удобнее для последующего разбора заключается задача:
(1) фазы синтаксического анализа
(2) фазы видозависимого анализа
(3) фазы генерации кода
(4) фазы лексического анализа
Если существует, по крайней мере, одна выводимая в грамматике цепочка, для которой существует более одного вывода, то такая грамматика является:
(1) однозначной
(2) естественной
(3) произвольной
(4) неоднозначной
В Lex-программе секция описаний включает:
(1) описания переменных
(2) констант
(3) определения макросимволов
(4) регулярных определений
Обрабатывать формулы, содержащие операции типа сложения будет процедура:
(1) P_Expression
(2) P_Term
(3) Term
(4) Expression
Для данной грамматики:(1) E->T (2) E->T (3) T->T*F (4) T->F (5) F-> (E) (6) F->idsi - это:
(1) перенос и переход в состояние i
(2) свертка по правилу i
(3) переход в состояние i
Какая из процедур реализует лексический анализ и возвращает лексический класс лексемы:
(1) int yyparse (void)
(2) int yyerror (char * s)
(3) int yylex (void)
Можно выделить следующие виды контроля типов:
(1) статический
(2) динамический
(3) логический
(4) линейный
При создании ссылочные типы инициализируются значением:
(1) true
(2) false
(3) 1
(4) null
Невозможно гарантировать последовательность выходов из процедур и потому чисто стековый механизм управления памятью недостаточен:
(1) при отсутствии системного параллелизма
(2) при наличии системного параллелизма
(3) при отсутствии параллелизма
(4) при наличии параллелизма
Для проведения чистки циклов вверх необходима фрагментация программы на уровне:
(1) не сильно связных подграфов
(2) сильно связных графов
(3) не сильно связных графов
(4) сильно связных подграфов
Сильно связный подграф - это:
(1) фрагмент, состоящий из не достижимых вершин
(2) фрагмент, состоящий из достижимых вершин
(3) фрагмент, состоящий из взаимно не достижимых вершин
(4) фрагмент, состоящий из взаимно достижимых вершин
Полурешетка конечной высоты L, представляет собой:
(1) множество потоковых фактов
(2) блок потоковых фактов
(3) множество фактов
(4) секцию потоковых фактов
В .NET предусмотрен специальный механизм доступа к метаданным приложения, который называется:
(1) рефлексия
(2) распаковка
(3) генерация
(4) итерация
Поскольку системы команд предоставляют большое разнообразие способов вычислений, ожидается, что:
(1) практически любая грамматика будет однозначной
(2) практически любая грамматика будет неоднозначной
(3) практически любая грамматика будет простой
(4) практически любая грамматика будет сложной
Информация, записанная в пользовательских атрибутах, может быть использована во время исполнения программы с помощью:
(1) механизма рефлексии
(2) механизма распаковки
(3) механизма упаковки
(4) механизма перезагрузки операторов
В дереве разбора программы внутренние узлы соответствуют:
(1) операциям
(2) операндам
(3) классам
(4) подклассам
Магазинные автоматы, известны также как:
(1) автоматы с магазинной памятью
(2) МА-автоматы
(3) МП-автоматы
В регулярных выражениях в Lex-программе допустимы следующие способы кодирования символа а:
(1) a
(2) "a"
(3) /a
(4) \a
Метод returnChar:
(1) извлекает из входного потока все цифры
(2) выдает очередную литеру из входного потока
(3) возвращает true только в том случае, когда ее параметр является цифрой
(4) возвращает неиспользованную литеру обратно во входной поток
Неоднозначность грамматики приводит:
(1) к компактности управляющей таблицы анализатора LR(k)-языка
(2) к конфликтам при построении управляющей таблицы анализатора LR(k)-языка
(3) к непротиворечивости управляющей таблицы анализатора LR(k)-языка
Для того, чтобы получить управляющую таблицу анализатора достаточно запустить программу YACC с ключом:
(1) -a
(2) -g
(3) -m
(4) -v
Эквивалентность типов бывает:
(1) структурная
(2) именная
(3) естественная
(4) не структурная
Процесс преобразования типа-значения в ссылочный тип называется:
(1) распаковкой
(2) упаковкой
(3) шифрованием
(4) дешифованием
Самый простой способ отслеживания свободной памяти заключается в приписывании:
(1) двум объектам в памяти специального счетчика ссылок
(2) каждому объекту в памяти специального счетчика ссылок
(3) одному объекту в памяти специального счетчика ссылок
(4) специальному объекту в памяти специального счетчика ссылок
Раскрутка циклов заключается в дублировании:
(1) тела цикла и сокращении числа итераций
(2) тела цикла и расширенного числа итераций
(3) тела цикла и произвольного числа итераций
Компонента сильной связности, являющееся областью своей вершины, имеющей минимальный номер в нумерации Post среди всех остальных вершин этой компоненты называется:
(1) моновершиной
(2) минивершиной
(3) максивершиной
(4) бивершиной
В качестве полурешетки потоковых фактов фиксируется:
(1) множество подмножеств присваиваний с операцией объединения
(2) множество присваиваний с операцией объединения
(3) подмножество присваиваний с операцией пересечения
(4) множество подмножеств присваиваний с операцией пересечения
Данная программа:class LowLevelSample { public static void Run() { int i; i = 0; try { Start: if (i == 10) throw new Exception(); Console.WriteLine (i); i = i + 1; goto Start; } catch (Exception) { Console.WriteLine ("Finished"); } } }может использоваться в качестве примера:
(1) генерации кода для виртуальной машины
(2) рефлексии кода для виртуальной машины
(3) итерации кода для виртуальной машины
Стоимость вывода аддитивна относительно:
(1) стоимостей вершин
(2) стоимостей инструкций
(3) стоимостей правил
(4) стоимостей листьев
Какие механизмы реализованы в C#:
(1) исключения
(2) контроль версий
(3) межъязыковая разработка и отладка
(4) работа с переполнением
Наиболее распространенными оптимизациями являются:
(1) константные вычисления
(2) уменьшение силы операций
(3) выделение общих подвыражений
(4) чистка циклов
Детерминированные МП-автоматы описывают только подмножество всего класса КС-языков - это подмножество называется:
(1) детерминированными КС-языками
(2) недетерминированными КС-языками
(3) детерминированными языками
(4) недетерминированными языками
В Lex'е указателем на отождествленную цепочку символов, оканчивающуюся нулем является:
(1) yyleng
(2) yytext
(3) yymore()
(4) yylval
В LL(k)-грамматике для любых двух левых выводов:S =>* wAv => wuv =>* wx S =>* wAv => wu1v =>* wyдля которых FIRSTk (x) = FIRSTk (y)вытекает, что:
(1) k=k1
(2) k(x)=k(y)
(3) wx=wy
(4) u=u1
Альтернативой построению новой грамматики может служить "соглашение", что в случае конфликта перенос-свертка:
(1) перенос является предпочтительным действием
(2) свертка является предпочтительным действием
(3) происходит игнорирование переноса
Обычно, фазы оптимизации и генерации:
(1) не обнаруживают ошибки
(2) обнаруживают ошибки
(3) игнорируют ошибки
(4) осуществляют поиск ошибок
Промежуточный язык можно воспринимать как интерфейс между:
(1) логикой и структурой программы
(2) лесическим и синтаксическим анализом
(3) внутренней и внешней частью программы
(4) анализом и синтезом программы
Языки программирования C# или Visual Basic.NET, поддерживают операции упаковки и распаковки:
(1) прозрачно для программиста
(2) не прозрачно для программиста
(3) открыто для программиста
Исследования показали, что для большинства программ верны следующие предположения:
(1) чем моложе объект, тем меньше его ожидаемое время жизни
(2) чем старше объект, тем больше его ожидаемое время жизни
(3) сжатие части кучи обычно медленнее, чем сжатие всей кучи
(4) сжатие части кучи обычно быстрее, чем сжатие всей кучи
Если среди всех вычисляемых на участке экономии выражений выделяются эквивалентные, и затем их вхождения заменяются на вхождение новой переменной, хранящей заранее вычисленное значение этого общего выражения, то это:
(1) экономия общих выражений
(2) экономия общих подвыражений
(3) экономия общих вычислений
Стягивание линейных компонент переводит граф:
(1) в луч
(2) в дугу
(3) в область
(4) в контур
При итеративном перевычислении разметок с использованием рабочего списока вершин - опустошение списка свидетельствует о том, что:
(1) достигнута подвижная точка
(2) достигнута неподвижная точка
(3) не достигнута неподвижная точка
(4) не достигнута подвижная точка
Какой метод по массиву, содержащему типы параметров конструктора, находит в типе соответствующий конструктор:
(1) GetConstructor
(2) OpCodes.Newobj
(3) GetMethod
(4) System.Exception
Действия на каком шаге позволяют от исходного размеченного дерева перейти к дереву, в котором вершины уже соответствуют машинным инструкциям, но их операнды еще известны не полностью:
(1) упаковка
(2) рефлексия
(3) представление выводов
(4) свертка
Из типов данных язык Cи-бемоль поддерживает следующие:
(1) встроенные типы
(2) классы
(3) многомерные массивы
(4) интерфейсы
(5) одномерные массивы
(6) тип данных "множество"
Процесс обработки всего, возможно, уже преобразованного, текста исходной программы называется:
(1) passes
(2) control
(3) analysis
(4) audit
Следующее правило:REF to MODE NEST assignation: REF to MODE NEST destination, becomes token, MODE NEST source. определяет:
(1) массив
(2) цикл с постусловием
(3) цикл с предусловием
(4) присваивание
В .NET использовать механизм регулярных выражений можно с помощью следующих клссов:
(1) Regex
(2) Match
(3) Text
(4) RegularExpressions
Данная грамматика:E -> T | TE' E' -> +T | +TE' T -> F | FT' T'-> *F | *FT' F -> (E) | num обладает свойством:
(1) LR(k)
(2) LR(1)
(3) LL(k)
(4) LL(1)
В данной грамматике:E –> id | num | E* E | E + E операции сложения и умножения выполняются:
(1) в соответствии с приоритетами операций
(2) в порядке появления во входной последовательности
(3) в порядке появления во выходной последовательности
Error-правила в YACC'е имеет один из следующих видов:
(1) A: w error
(2) A: w1 error w2
(3) w1 error w2 :A
(4) w error :A
Выражение (a+b)*(c-d) в польской записи может быть представлено как:
(1) ab-cd
(2) *+cd-ab
(3) *ab-cd+
(4) *+ab-cd
Во время трансляции в .NET промежуточное представление не интерпретируется, а вместо этого используется механизм::
(1) компиляции времени исполнения, который генерирует машинный код
(2) компиляции времени исполнения, который не генерирует машинный код
(3) трансляции времени исполнения, который генерирует машинный код
(4) трансляции времени исполнения, который не генерирует машинный код
На компилятор языка программирования возлагается ответственность:
(1) за распределение физической памяти
(2) за обеспечение доступа к физической памяти
(3) за оптимизацию физической памяти
(4) за утилизация физической памяти
Полезность применения оптимизации обусловлена следующими причинами:
(1) распространением языков сверхвысокого уровня
(2) необходимостью поддержки и сопровождения готовой программы
(3) усилением контроля семантических ошибок
Основное употребление анализа потока управления в оптимизации - это:
(1) преобразование
(2) проверка контекстных условий
(3) фрагментация
(4) проверка логических условий
В случае, когда выражение в правой части не имеет побочных эффектов, а переменная в левой части более нигде не используется, данный оператор становится:
(1) не эквивалентен пустому
(2) равен 1
(3) эквивалентен пустому
(4) равен 2
Программы на MSIL переводятся в исполняемый код реального процессора:
(1) лишь непосредственно перед исполнением
(2) задолго до исполнения
(3) после исполнения
(4) лишь непосредственно после исполнения
Для решения задачи построения генератора кода применяется теория:
(1) деревянных языков и грамматик
(2) формальных языков и грамматик
(3) высокоуровневых языков и грамматик
(4) языков и грамматик
Fall-through в C# - это:
(1) ветка
(2) проблема "провала"
(3) наследование
(4) проблема компиляции
(5) неявные преобразования
(6) переполнение
Какая часть компилятора разбивает исходную программу на составляющие ее элементы и создает промежуточное представление исходной программы:
(1) analysis
(2) synthesis
(3) interpreter
(4) begin
Идея создания некоторого обобщенного алгоритма, проверяющего за конечное число шагов принадлежность данной цепочки языку является альтернативой:
(1) механизму интерпретации
(2) механизму видозависимого анализа
(3) механизму грамматик
(4) механизму анализа на входе
Во время синтаксического анализа все идентификаторы можно считать:
(1) одинаковыми
(2) разными
(3) простыми
(4) сложными
Компиляторы, разработанные на базе грамматик:
(1) не могут быть расширены
(2) могут быть расширены
(3) могут быть легко расширены
(4) не могут быть достаточно легко расширены
В следующей грамматике:S->aABe A->Abc A->b B->d цепочка abbcde может быть свернута в аксиому следующим образом:
(1) abbcde, aAbcde, aAde, aABe, S
(2) abbcde, aAbcde, aAde, aABe
(3) abbcde, aAbcde, aAde, aABe, abbd, S
(4) aAbcde, aAde, aABe, S
Генератор анализаторов YACC был создан для следующих операционных систем:
(1) UNIX
(2) Windows
(3) OS/2
Чтобы выяснить правильность оператора присваивания надо знать:
(1) типы его получателя
(2) источника
(3) левой части
(4) правой части
При создании .NET основной упор был сделан на следующие языки:
(1) C++-подобные
(2) Java-подобные
(3) Pascal-подобные
(4) Lisp-подобные
(5) Perl-подобные
Освобождение ресурсов, ассоциированных с какими-либо внешними сущностями, обычно требует:
(1) явных операций по закрытию
(2) явных операций по открытию
(3) неявных операций по закрытию
(4) неявных операций по открытию
С точки зрения эффективности наиболее предпочтительной является:
(1) оптимизацию на уровне исходного языка
(2) машинно-независимую оптимизацию
(3) машинно-зависимую оптимизацию
Любая вершина обязательно предшествует:
(1) конечной вершине
(2) предыдущей вершине
(3) себе самой
(4) последующей вершине
Для правильного учета контекста необходимо учесть влияние всех путей до данной вершины, сначала определив влияние каждого пути, а затем:
(1) выделив локальную часть
(2) выделив специальную часть
(3) выделив общую часть
(4) выделив глобальную часть
В MSIL существуют следующие варианты хранения переменных:
(1) в статической области памяти, существующей все время выполнения программы
(2) в локальной области, которая выделяется при входе в метод
(3) в глобальной области, которая выделяется при входе в метод
(4) внутри объекта, размещенного в куче
(5) внутри объекта, размещенного в блоке
Через root(t) обозначается:
(1) корень дерева t
(2) поддерево дерева t
(3) множество сыновей вершины v
Все ссылочные типы произведены от базового типа object, являющегося точным эквивалентом класса:
(1) System.Object
(2) System.Link
(3) Object.Goto
(4) System.Object.Links
Цепочка символов, составляющая исходную программу на языке программирования является:
(1) входом компилятора
(2) выходом компилятора
(3) процессом компиляции
(4) процессом интерпретации
В формальном определении грамматики нетерминалы обозначаются:
(1) строчными буквами
(2) пустой строкой
(3) прописными буквами
В следующем операторе языка Pascalconst pi = 3.1416;"pi" представляет лексический класс:
(1) Identifier_LC
(2) Number_LC
(3) Semicolon_LC
(4) Const_LC
Анализаторы реально используемых языков обычно имеют:
(1) системную сложность
(2) контекстную сложность
(3) линейную сложность
(4) квадратную сложность
(5) сложность построения
Метод "перенос-свертка" использует:
(1) конечный автомат
(2) магазинный автомат
(3) машину Тьюринга
(4) бесконечный автомат
На вход YACC получает файл со спецификациями, который должен иметь расширение:
(1) "c"
(2) "cpp"
(3) "n"
(4) "y"
(5) "cc"
(6) "a"
Определяющим вхождением идентификатора является:
(1) int i
(2) i = 5
(3) i+15
(4) a+2
(5) int a
(6) a = 10
Для изучения сгенерированного MSIL-кода можно использовать утилиту:
(1) ILDasm
(2) MSILDasm
(3) MILDasm
(4) MSILAsm
Какие противоположные полюсы существует у проблемы утилизации мусора:
(1) висячие ссылки
(2) мусор
(3) ссылки
(4) указатели
Преобразования T1 и T2 называются независимыми, если применение одного из них к программе:
(1) влияет на применимость другого
(2) не влияет на применимость другого
(3) не влияет на сохранность другого
(4) влияет на сохранность другого
Отношение непосредственного предшествования - это:
(1) дуга
(2) вершина
(3) подграф
(4) дерево
В данном примере:struct S {int a; int b}; int F (int n, struct S * v) { int i, s = 0; for (i=0; i<n; i++) { int q = (v+i)->a - (v+i)->b; --- 1 if (q < 0) s += (v+i)->a + (v+i)->>b; --- 2 else (v+i)->b = q; (v+i)->a = (v+i)->b; --- 3 } return s; } эквивалентны следующие вхождения выражения (v+i)->b:
(1) 2 и 3
(2) 1 и 3
(3) 1 и 2
Куча предназначена для хранения:
(1) динамических объектов
(2) статических объектов
(3) глобальных объектов
(4) локальных объектов
Деревянная грамматика в нормальной форме - это четверка, содержащая:
(1) входной алфавит
(2) алфавит нетерминалов
(3) стартовый нетерминал
(4) множество правил
(5) стартовый терминал
(6) алфавит терминалов
В C# имеются следующие модификаторы:
(1) доступа
(2) элементов класса
(3) класса
(4) типов
(5) секций
(6) стека
Создание единого перемещаемого объектного сегмента из набора различных сегментов осуществляется программой, которая называется:
(1) редактором сегментов
(2) редактором связей
(3) редактором объектов
(4) редактором наборов
Определение грамматик не накладывает никаких ограничений на количество:
(1) терминалов в левой части правил
(2) нетерминалов в левой части правил
(3) пустых строк в левой части правил
Какие особенности некоторых языков могут существенно затруднять лексический анализ:
(1) фиксированный формат программы
(2) трактовка пробела как незначащего символа
(3) использование ключевых слов как идентификаторов
Синтаксический анализатор обращается к лексическому анализатору каждый раз, когда у него появляется потребность:
(1) в очередном терминальном символе
(2) в пустой строке
(3) в очередном операторе
(4) в очередном нетерминальном символе
(5) в очередном операнде
Управляющая программа:
(1) одинакова для всех LR-анализаторов
(2) различна для всех LR-анализаторов
(3) не существует для LR-анализаторов
Какой из следующих файлов создается при задании параметра -h, - описания, которые также генерирует YACC:
(1) name.yy.h
(2) name.h
(3) y.output
(4) yy.lrt
Если все определяющие вхождения идентификаторов должны быть расположены текстуально перед использующими вхождениями, то:
(1) можно выполнить идентификацию на фазе синтаксического анализа
(2) можно выполнить идентификацию на фазе лексического анализа
(3) можно выполнить идентификацию на фазе семантического анализа
(4) можно выполнить идентификацию на фазе видозависимого анализа
В .NET единая модель объектов распространяется сразу на:
(1) все языки программирования
(2) все платформы
(3) все операционные системы
(4) все средства разрботки приложений
Какие языки разрешают описание массивов с границей, неизвестной во время компиляции:
(1) Алгол 68
(2) Паскаль
(3) PL/I
(4) С/С++
(5) C#
Выделение некоторого участка программы, к которому может быть применено преобразование - это:
(1) фрагментация
(2) преобразование
(3) проверка контекстных условий
(4) проверка логических условий
Дерево, содержащее все вершины графа и некоторые его дуги:
(1) глубинное остовное дерево
(2) глубинное дерево
(3) остовное дерево
(4) простое дерево
К классическим задачам анализа потоков данных можно отнести:
(1) достижимые определения
(2) живые переменные
(3) не достижимые определения
(4) живые константы
Машина MSIL ориентирована на безопасность работы:
(1) с указателями
(2) с полями
(3) с переменными
(4) с константами
Тривиальное дерево, состоящее из одной вершины, является:
(1) образцом
(2) стандартом
(3) спецификцией
(4) инструкцией
Все активные действия программ на C# выполняются:
(1) в методах классов
(2) в методах объектов
(3) в методах секций
(4) в методах блоков
Для представления компилятора мы можем использовать так называемые:
(1) P-диаграммы
(2) T-диаграммы
(3) R-диаграммы
(4) S-диаграммы
(5) E-диаграммы
(6) D-диаграммы
Согласно иерархии Хомского, если любое правило из P имеет вид A->a, где A - нетерминал, a - нетерминал или терминал то грамматика G называется:
(1) бесконтекстной
(2) неукорачивающей
(3) контекстно-зависимой
(4) праволинейной
(5) контекстно-свободной
(6) выровненной вправо
Процесс замены идентификаторов на ссылку в таблицу представлений называется:
(1) свертыванием
(2) подменой
(3) подстановкой
(4) разветыванием
В узлах синтаксического дерева листьями являются:
(1) нетерминальные символы
(2) аксиомы грамматики
(3) терминальные символы
LR(0)-анализатор принимает решение о своих действиях только на основании содержимого магазина:
(1) учитывая символы выходной цепочки
(2) учитывая символы входной цепочки
(3) не учитывая символы входной цепочки
(4) не учитывая символы выходной цепочки
Описания переменных языка C в файле name.y заключаются в:
(1) <...>
(2) /{ … }/
(3) %{ … }%
(4) <?...?>
(5) &%...%&
(6) /%...%/
Элемент таблицы идентификаторов можно организовать так:
(1) struct ReprItem { HashInd toHash; unsigned short LexClass; unsigned short LexMark; IdInd toId; }
(2) struct ReprItem { HashInd toHash; unsigned short LexClass; unsigned short LexMark; TypeInd toMode; }
(3) struct IdItem { ReprInd toRepr; TypeInd toMode; IdInd toId; }
(4) struct IdItem { ReprInd toRepr; TypeInd toMode; unsigned short LexClass; unsigned short LexMark; IdInd toId; }
Для того чтобы сборки действительно были независимыми от системы и от других сборок, необходимо, чтобы они сопровождались явным описанием:
(1) предоставляемых ими сервисов
(2) зависимостей от внешнего мира
(3) системных зависимостей
В последнее время в развитии языков программирования наблюдается полный или частичный отказ от предоставления программисту:
(1) неявных средств управления памятью
(2) логических средств управления памятью
(3) явных средств управления памятью
(4) системных средств управления памятью
Для реализации покадровой оптимизации используют понятие:
(1) "окна"
(2) "кадра"
(3) "frame"
(4) "пакета"
Необходимо различать:
(1) просто обратные дуги в графе
(2) обратные дуги по отношению к глубинному остовному дереву
(3) сложные обратные дуги в графе
(4) обратные дуги по отношению к глубинному дереву
В учете влияния отдельного оператора в предположении, что уже имеется решение задачи анализа потоков данных перед этим оператором заключается:
(1) внутренняя стадия анализа потоков данных
(2) внешняя стадия анализа потоков данных
(3) локальная стадия анализа потоков данных
(4) глобальная стадия анализа потоков данных
В .NET SDK входит программа PEVerify, которая осуществляет:
(1) проверку контекстной корректности безопасного модуля
(2) проверку типовой корректности входящего модуля
(3) проверку типовой корректности исполняемого модуля
(4) проверку корректности главного модуля
Данная грамматика:G=(A, N, Expr, R) A={‘+’, ‘-’, const, var} N={Expr, Opnd} R={ Opnd: const, Opnd: var, Expr: Opnd Expr: ‘+’ (Expr, Expr), Expr: ‘-’ (Expr) }порождает деревья выражений из:
(1) констант
(2) переменных
(3) унарных операций
(4) бинарных операций
(5) логических операций
При таком описании класса:public class Matrix { public const int n = 10; public int[,] elements = new int[n,n]; public int this[int i, int j] { get { return elements[i,j]; } set { elements[i,j] = value; } } } допустимо следующее использование:
(1) Matrix a = new Matrix();
(2) b[0,0] = -4; b[1,5] = 10;
(3) Matrix b = new Matrix();
(4) a[0,0] = 1; a[1,5] = 5;
В каком году Вирт написал с использованием раскрутки транслятор языка Pascal:
(1) 1969
(2) 1970
(3) 1971
(4) 1972
(5) 1973
Путем задания некоторого множества допустимых заключительных состояний распознавателя определяется:
(1) грамматика
(2) язык
(3) лексема
(4) виртуальная машина
Для настройки хэш-таблицы на необходимый тип данных нужно реализовать методы:
(1) GetHashCode
(2) GetHash
(3) Equals
(4) HashFunc
LL-грамматики обладают следующими свойствами:
(1) они могут быть проанализированы без возвратов
(2) первая буква L означает, что мы просматриваем входную цепочку слева направо
(3) вторая буква L означает, что строится левый вывод цепочки
(4) они не могут быть проанализированы без возвратов
Данная ситуация:[S'->.S] [S-gt;.x] [S-gt;.(L)]определяет состояние:
(1) 0
(2) 1
(3) 2
(4) 3
Секция грамматических правил, состоит из правил, которые записываются следующим образом:
(1) A: production_body;
(2) .production_body;
(3) production_body :A;
(4) A:= production_body;
В программе следующей структуры:{int n; …; n++; .. {float n; … n = 3.14; … } …n--; … }при входе во внешний блок:
(1) идентификатор n будет занесен в таблицу представлений
(2) будет создан элемент таблицы представлений
(3) будет создан элемент таблицы идентификаторов
(4) идентификатор n будет занесен в таблицу идентификаторов
Общие сборки сопровождаются номером версии в следующем формате:
(1) incompatible.compatible.hotfix
(2) compatible.hotfix
(3) incompatible.hotfix
(4) incompatible.compatible.path
Что помогло неявному управлению памятью возвратить себе позиции среди практических языков программирования:
(1) удешевление аппаратуры
(2) желание избавиться от ошибок управления памятью
(3) удешевление операционных систем
(4) удешевление средств разработки
Граф потока управления удовлетворяет следующим требованиям:
(1) в start не входит ни одна дуга
(2) из stop не выходит ни одна дуга
(3) любая вершина достижима из start
(4) из любой вершины достижима вершина stop
Дуги, чье начало достижимо из конца в остовном дереве называются:
(1) прямые
(2) поперечные
(3) обратные
(4) деревянные
Разметку Us назовем неподвижной точкой отображения функции перехода F тогда и только тогда, когда:
(1) F(Us)=Us
(2) F()=Us
(3) F=Us
(4) F(Us)=F(Us)
(5) F()=F(Us)
Какая команда MSIL осуществляет загрузку адреса поля объекта:
(1) ldind
(2) ldloca
(3) ldsflda
(4) ldstr
(5) ldflda
(6) ldimm
Для деревянной грамматики, у которой в правой части правил находятся образцы произвольного вида, существует:
(1) эквивалентная грамматика в нормальной форме
(2) эквивалентная грамматика в деревянной форме
(3) эквивалентная грамматика в произвольной форме
(4) эквивалентная грамматика в дистрибутивной форме
Какая операция используется для того, чтобы сократить и привести к привычному виду запись операций над объектами, определенными программистом?
(1) индексирование
(2) присваивание
(3) перегрузка операторов
(4) упорядочивание операторов
Компиляторы генерирующие объектную программу на языке более высокого уровня, чем язык ассемблера называют:
(1) конвертерами
(2) генераторами
(3) кросс-компиляторами
(4) исполнителями
Язык распознается конечным автоматом, если:
(1) им распознается каждое слово языка
(2) им распознается хотя бы одно слово языка
(3) им не распознается ни одно слово языка
(4) им распознается ключевое слово языка
Для любых регулярных выражений P и Q следующие множества также являются регулярными выражениями:
(1) PQ
(2) P|Q
(3) P-Q
(4) P+Q
Одним из наиболее популярных методов нисходящего синтаксического анализа является:
(1) recursive descent method
(2) recursive top-down method
(3) recursive method
(4) descent method
Данная ситуация:[S'->S.$]определяет состояние:
(1) 0
(2) 1
(3) 2
(4) 3
Backslash в секции правил грамматики используется:
(1) для задания управляющей последовательности
(2) для описания комментария
(3) для задания линейной последовательности
(4) для описания директив компилятора
Для построения более сложных типов из примитивных обычно используются следующие конструкторы:
(1) Массивы
(2) Произведение
(3) Структуры
(4) Указатели
(5) Функции
Поддерживает ли .NET удаленный вызов объектов?
(1) Да
(2) Нет
(3) Да, только в Linux
Можно выделить следующие основные методы управления памятью:
(1) представление памяти в виде кучи
(2) статическое распределение памяти
(3) представление памяти в виде секций
(4) стековое распределение памяти
При описании программ с использованием потока управления, два слова в алфавите операторов объявляются эквивалентными в том и только том случае, когда:
(1) они равны с точностью до вхождения не пустых операторов
(2) они равны с точностью до вхождения пустых операторов
(3) они не равны с точностью до вхождения пустых операторов
(4) они не равны с точностью до вхождения не пустых операторов
Для определения типа дуги используется:
(1) состояние конечной вершины
(2) нумерация Post
(3) нумерация Pre
(4) состояние начальной вершины
Процесс решения задачи анализа потоков данных может быть описан как:
(1) последовательное уточнение функции, отталкиваясь от некоторой начальной
(2) последовательное уточнение разметки, отталкиваясь от некоторой конечной
(3) последовательное уточнение разметки, отталкиваясь от некоторой начальной
(4) последовательное уточнение функциии, отталкиваясь от некоторой конечной
Команды stloc, stfld, stsfld эквивалентны следующим парам команд:
(1) ldxxxxa; stind
(2) ldxxxa; ldind
(3) ldxxxxa; stin
(4) ldxxxa; ldin
После вывода нового нетерминала в разметке строится ее замыкание относительно цепных правил с помощью функции:
(1) Match
(2) Builder
(3) BuildClosure
(4) Closure
(5) Close
(6) Open
Для params верно:
(1) должен сопровождаться типом параметров
(2) быть последним параметром
(3) быть первым параметром
(4) не должен сопровождаться типом параметров
Компиляторы языка Java генерируют:
(1) бит-код
(2) объектный код
(3) байт-код
Два детерминированных автомата называются эквивалентными, если они:
(1) распознают один и тот же язык
(2) распознают один язык
(3) распознают определенное множество языков
(4) распознают специальные языки
Спецификации лексического анализатора на языке Lex подготавливаются в виде программы:
(1) lex.l
(2) lex
(3) .lex
(4) lex.1x
К формулам, содержащим операции типа умножения можно отнести:
(1) умножение
(2) деление
(3) сложение
(4) вычитание
(5) числа
Поскольку для символа $ операция goto (I, $) не определена, можно выполнить:
(1) действие to
(2) действие accept
(3) действие close
(4) действие alt
Фрагменты программ на языке С, заключенные в фигурные скобки - это:
(1) лексемы
(2) анализаторы
(3) семантики
(4) секции
Функция, определенная как:function f (a, b: char) : ^integer;имеет тип:
(1) proc (int *int, int)
(2) proc (int *char, int)
(3) proc (charxchar, pointer (integer))
(4) proc (charxint, pointer (integer))
В С# возможно определение:string s = "Hello C#";под которым подразумевается следующее присваивание:
(1) System.String s = .String(); s = "Hello C#";
(2) System.String s = new System.String(); s = "Hello C#";
(3) .String s = new System.String(); s = "Hello C#";
(4) System.String = System.String(); s = "Hello C#";
В Фортране вся память может быть выделена статически и во время выполнения программы будут меняться только значения простых переменных и элементы массива, а для этого каждая функция транслируется:
(1) в динамически выделенную область памяти
(2) в логически выделенную область памяти
(3) в статически выделенную область памяти
(4) в системно-выделенную область памяти
Для формализации удаления пустого оператора требуется представление программы в виде:
(1) графа потока управления с пустым оператором
(2) графа блока управления с пустым оператором
(3) графа потока управления с не пустым оператором
(4) графа блока управления с не пустым оператором
Альтом называется:
(1) фрагмент, имеющий две начальных вершину
(2) фрагмент, имеющий одну начальную вершину
(3) фрагмент, не имеющий начальных вершин
Если функция сохраняет отношение порядка, то она называется:
(1) монотонной
(2) дистрибутивной
(3) не дистрибутивной
(4) интегрируемой
В MSIL существуют следующие команды вызова:
(1) CALLGLOB
(2) CALL
(3) CALLVIRT
(4) CALLLOC
Деревянные грамматики лежат в основе:
(1) систем восходящего записывания деревьев
(2) систем нисходящего переписывания деревьев
(3) систем восходящего переписывания деревьев
(4) систем нисходящего записывания деревьев
В C# механизм условной компиляции, основан на директивах:
(1) #warning,#error
(2) #define,#undef
(3) #if,#else,#endif
Процесс создания компилятора можно свести к решению нескольких задач, которые принято называть:
(1) compilation steps
(2) compilation phases
(3) compilation rounds
(4) compilation stages
Классы языков, определяемых праволинейной грамматикой являются:
(1) эквивалентными
(2) не эквивалентными
(3) формализмами
Общая схема работы Lex заключается в преобразовании Lex-программы:
(1) в объектную программу на целевом языке
(2) в открытую программу на целевом языке
(3) в регулярные выражения
(4) в исходный код
Как мы можем понять, что имеем дело с формулой, содержащей операции типа умножения?
(1) в момент встречи операции умножения
(2) в момент встречи операции деления
(3) в момент встречи вычитания
(4) в момент встречи сложения
Сколько символов входной цепочки использует для принятия решения LR(1)-анализатор:
(1) 0
(2) 1
(3) 2
(4) 3
(5) 4
(6) 5
Данное правило:A: B { $$ = 1; } C { x = $2; y = $3; } ;эквивалентно следующему:
(1) $$1: /* пустая правая часть */ { $$ = 1; } ; A: B $$1 C { x = $2; y = $3; }
(2) $1: /* пустая правая часть */ { $$ = 1; } ; A: B $1 { x = $2; y = $3; } ;
(3) $$1: /* пустая правая часть */ { $$ = 1; } ; A: B $$1 C { x = $2; y = $3; } ;
Какой способ кодирования типов был использован в компиляторе C, разработанном Ричи (D.M.Ritchie)?
(1) деревья
(2) DAG
(3) линейное представление dag'ов
(4) битовые шкалы
В C# объявить value type можно так:
(1) RectVal { public int x, y, cx, cy; }
(2) struct RectVal { x, y, cx, cy; }
(3) struct RectVal { public int x, y, cx, cy; }
(4) struct { x, y, cx, cy; }
Языками, пригодными для стекового управления памятью, являются:
(1) Алгол 68
(2) Паскаль
(3) Модула 2
(4) Си++
В данном примере: jne .L1 movl buffer, %eax jmp .L3 .L1: jmp .L2 jne .L2 movl buffer, %eax jmp .L3 происходит:
(1) удаление перехода на переход
(2) удаление перехода на предыдующую инструкцию
(3) удаление перехода на следующую инструкцию
Луч - это:
(1) линейная последовательность вершин
(2) не линейная последовательность вершин
(3) прямая последовательность вершин
(4) обратная последовательность вершин
Если L - ограниченная полурешетка конечной высоты, f - монотонная функция, то тогда можно показать что:
(1) функция f обладает хотя бы одной неподвижной точкой
(2) множество всех неподвижных точек f является ограниченной полурешеткой конечной высоты
(3) наименьшая неподвижная точка f может быть получена итерированием функции f начиная с наименьшего элемента L
(4) функция f не обладает ни одной неподвижной точкой
MSIL содержит следующие команды для обработки исключений:
(1) THROW
(2) RETHROW
(3) ENDFINALLY
(4) ENDFILTER
(5) LEAVE
Деревянные грамматики представляются естественным выбором как механизм описания выбора команд, поскольку являются:
(1) удобной формализацией сопоставления образцов
(2) удобной формализацией сопоставления
(3) удобной формализацией сопоставления с образцом
С помощью какого атрибута в данном примере:using System.Runtime.InteropServices; public class AppMain { [DllImport("user32.dll")] public static extern int MessageBoxA(int handle, string message, string caption,int flags); public static void Main(){ MessageBoxA(0,"Hello World","Native Message Box",0); } [conditional("DEBUG")] public static void SayHello() { Console.WriteLine("Hello, World!"); return; } } обеспечивается взаимодействие с функцией MessageBoxA из Win32 API:
(1) conditional
(2) SayHello
(3) DllImport
(4) caption
На этапе лексического анализа обычно выполняются такие действия, как:
(1) удаление комментариев
(2) обработка директив условной компиляции
(3) игнорирование комментариев
(4) обработка операторов
Любая КС-грамматика может быть приведена к нормальному виду Хомского, в котором все правила имеют один из следующих видов:
(1) A->BC, где А, B и C - нетерминалы
(2) A->a, где a - терминал
(3) AB->a, где a - терминал
(4) BC->A, где А, B и C - нетерминалы
В Lex-программе функция yywrap() определяет:
(1) что делать при достижении автоматом конца выходного файла
(2) что делать при достижении автоматом конца входного файла
(3) что делать при достижении автоматом конца строки
(4) что делать при достижении автоматом конца инструкции
Параметром процедуры Expression является:
(1) вещественное значение
(2) целочисленное значение
(3) логическое значение
(4) строковое значение
При пополнении какой грамматики правилом S' -> Sможно получить следующие состояния:0: {[S'-gt;.S, $], [S-gt;.AA, $], [A-gt;.aA, a], [A-gt;.aA, b], [A-gt;.b, a], [A-gt;.b, b]} 1: {[S'-gt;S., $]} 2: {[S'-gt;A.A, $], A-gt;.aA, $], [A-gt;.b, $]} 3: {[A-gt;a.A, a], [A-gt;a.A, b], [A-gt;.a.A, a], [A-gt;.a.A, b], [A-gt;.b, a], [A-gt;.b, b]} 4: {[A-gt;b., a], [A-gt;b., b]} 5: {[S-gt;AA. $]} 6: {[A-gt;a.A, $], [A-gt;.aA, $], [A-gt;.b, $]} 7: {[A-gt;b., $]} 8: {[A-gt;aA.,a], [A-gt;aA.,b]} 9: {[A-gt;aA.,$]}:
(1) грамматика G1 с правилами:S -> AA A -> aA A -> b
(2) грамматика G1 с правилами:S -> AA A -> a A -> b
(3) грамматика G1 с правилами:S -> Ab A -> aA A -> A
(4) грамматика G1 с правилами:S -> Ab A -> ab A -> b
При использовании какого параметра программы YACC будет построен заголовочный файл с именем f:
(1) -Cf
(2) -Df
(3) -v
(4) -a
(5) -Tf
(6) -Nf
Если контроль типов осуществляется во время трансляции программы, то - это:
(1) динамический контроль типов
(2) статический контроль типов
(3) логический контроль типов
(4) линейный контроль типов
В C# ссылочные типы можно создать так:
(1) class RectRef {public int x, y, cx, cy; }
(2) RectRef {public int x, y, cx, cy; }
(3) class {public int x, y, cx, cy; }
(4) class RectRef { x, y, cx, cy; }
(5) class { x, y, cx, cy; }
(6) class.RectRef {public.int x, y, cx, cy; }
Блок памяти, части которого выделяются и освобождаются способом, не подчиняющимся какой-либо структуре - это:
(1) секция
(2) куча
(3) раздел
(4) ссылка
При чистке циклов вниз, выходной вершиной является такая вершина, среди непосредственных преемников которой есть вершина:
(1) не принадлежащая данному графу
(2) имеющая только две дуги
(3) не принадлежащая данному подграфу
(4) не имеющая дуг
Множества входных и начальных вершин для компонент сильной связности:
(1) совпадают
(2) не совпадают
(3) эквивалентны
(4) не эквивалентны
Если фактически разметка before ассоциируется с входящими ребрами вершины, а разметка after - с исходящими, то такая задача называется:
(1) кривой
(2) обратной
(3) прямой
(4) развернутой
Классы с каким суффиксом предназначены для генерации описываемых сущностей?
(1) Builder
(2) Type
(3) Define
(4) Field
(5) Info
(6) Assembly
В грамматиках восходящего переписывания каждое правило описывает либо:
(1) машинную команду
(2) команду языка высокого уровня
(3) операнд языка высокого уровня
(4) операнд машинной команды
Для написания опасного кода необходимо пометить метод или блок ключевым словом:
(1) unsafe
(2) safe
(3) fixed
(4) undef
Видозависимый анализ иногда называют:
(1) semantic analysis
(2) syntax analysis
(3) lexical analysis
(4) code optimization
На каждом шаге работы МП-автомат может либо:
(1) занести что-то в магазин
(2) снять какие-то значения с его вершины
(3) удалить вершину
(4) удалить магазин
Следующая грамматика регулярного выражения:<p><p> в Lex-программе обозначает:
(1) повторение m раз
(2) необязательный фрагмент
(3) любое из выражений
(4) фрагмент в конце строки
(5) фрагмент в начале строки
(6) конкатенацию
Метод рекурсивного спуска без возвратов можно использовать только для:
(1) LL(1)-грамматик
(2) LR(1)-грамматик
(3) LP(1)-грамматик
(4) LM(1)-грамматик
Имеется следующая входная цепочка: if E1 then if E2 then S1 else S2, при содержимом стека - $ if E1 then if E2 then S1 необработанной частью входной цепочки является:
(1) else S2
(2) then S1 else S2
(3) E2 then S1 else S2
(4) if E1 then if E2 then S1 else S2
(5) E1 then if E2 then S1 else S2
(6) S1 else S2
Ошибки, которых в программе на самом деле нет, могут возникнуть в результате не совсем корректной работы транслятора после обнаружения какой-нибудь ошибки - это:
(1) корректные ошибки
(2) наведенные ошибки
(3) псевдоошибки
(4) скрытые ошибки
Если два типа структурно эквивалентны тогда и только тогда, когда они идентичны, то - это:
(1) естественная эквивалетность типо
(2) именная эквивалетность типов
(3) структурная эквивалентность типов
(4) не структурная эквивалетность типо
В ходе распаковки проверяется, что исходная ссылочная переменная:
(1) не равняется null
(2) равняется null
(3) не равняется 1
(4) не равняется 1
(5) не равняется true
(6) не равняется false
В отличие от счетчиков ссылок, механизм разметки памяти не приводит:
(1) к ускорению программ, использующих сборку мусора
(2) к замедлению программ, использующих сборку мусора
(3) к замедлению программ, не использующих сборку мусора
(4) к ускорению программ, не использующих сборку мусора
Замена (в частных случаях) использования более дорогих операций более дешевыми - это:
(1) удаление пустого оператора
(2) понижение силы операций
(3) чистка циклов вверх
(4) объединение циклов
Набор областей всех вершин при нумерации Post является:
(1) иерархией вложенных фрагментов
(2) иерархией вложенных зон
(3) иерархией вложенных контуров
(4) иерархией вложенных областей
Живые переменные - это:
(1) прямая задача
(2) развернутая задача
(3) обратная задача
(4) кривая задача
Атрибут RunAndSave означает, что:
(1) данная сборка может быть удалена с диска
(2) данная сборка может быть исполнена
(3) данная сборка может быть сохранена на диске
Построение замыкания по цепным правилам аналогично:
(1) обычному замыканию в контекстных грамматиках
(2) замыканию по цепным правилам в деревянных грамматиках
(3) обычному замыканию в деревянных грамматиках
(4) замыканию по цепным правилам в контекстных грамматиках
Отключить контроль переполнения можно с помощью ключевого слова:
(1) unchecked
(2) checked
(3) control
(4) syscontrol
(5) unsafe
(6) fixed
На этапе генерации кода необходимо решить множество следующих сопутствующих проблем:
(1) распределение памяти
(2) распределение регистров
(3) распределение блоков
(4) распределение стеков
Форма Бэкуса-Наура был разработана для описания:
(1) Фортрана
(2) Паскаля
(3) Алгола-60
(4) Кобола
В Lex'е вернуть последние n символов цепочки обратно во входной поток можно с помощью:
(1) yyless(n)
(2) yyunput(c)
(3) yyleng
(4) yytext
Грамматика называется леворекурсивной, если среди ее нетерминалов имеется по крайней мере один:
(1) леворекурсивный терминал
(2) леворекурсивный нетерминал
(3) праворекурсивный нетерминал
(4) праворекурсивный терминал
Конфликт перенос-перенос возникает, когда на вершине стека анализатора возникает строка терминалов, к которой:
(1) может быть применен перенос по двум различным правилам
(2) могут быть применены свертка и перенос по двум различным правилам
(3) может быть применена свертка по двум различным правилам
Контроль типов осуществляется во время обхода:
(1) синтаксического дерева
(2) лексического дерева
(3) семантичесого дерева
(4) специального дерева
Подход, в котором один входной язык проецируется сразу на множество целевых платформ с помощью единого промежуточного языка называется:
(1) MSIL
(2) Java bytecode
(3) GNU RTL
При недостаточном понимании происходящих "за кадром" процессов операции упаковки и распаковки, прозрачных для программиста, может потерять:
(1) структуры
(2) эффективности
(3) модульности
(4) переносимости
Основными механизмом работы с памятью в .NET являются:
(1) неявное управления памятью
(2) стековый механизм выделения памяти
(3) сборка мусора
(4) механизм "разметки-и-уплотнения"
При глобалной оптимизации данного фрагмента исходной программы:y = f(x); a = y*2; if (y == f(x)) z = y*2+a; else z = f(x)*2+a; t = f(x)*2+a+z;возможной остаточной программой будет:
(1) y=f(x); a=y<<1; if(y==f(x)) z = y<<1+a; else z = f(x)<<1+a; t = f(x)<<1+a+z;
(2) y=f(x); a=y<<1; if (y==f(x)) z=a<<1; else z=f(x)<<1+a; t=f(x)<<1+a+z;
(3) t = f(x)<<3;
Признаком чего является то, что вершина со следующим номером - во-первых, является бивершиной, а во-вторых, ее номер - максимальный среди номеров всех потомков вершин текущей линейной компоненты:
(1) старта линейной компоненты
(2) продления линейной компоненты
(3) завершения линейной компоненты
(4) завершаемости линейной компоненты
Следующие шаги, необходимы для решения задачи анализа потока данных с помощью итеративного подхода:
(1) формализовать решение задачи с помощью подходящей полурешетки
(2) описать преобразование потоков данных при проходе через вершину графа управления с помощью монотонной, а лучше дитрибутивной функции
(3) применить итеративный алгоритм
(4) применить интерактивный алгоритм
(5) формализовать решение задачи с помощью подходящей вершины
Какой метод завершает генерацию try-catch блока:
(1) EmitWriteLine
(2) BeginCatchBlock
(3) SetEntryPoint
(4) LowLevelSample
(5) EndExceptionBlock
(6) EndTry
Входной файл lburg поделен на следующие секции:
(1) описание терминалов и стартового нетерминала грамматики
(2) описания правил, снабженных семантиками
(3) пролог
(4) эпилог
Из управляющих конструкций в языке Cи-бемоль допускаются:
(1) if-then-else
(2) while-do
(3) do-while
(4) присваивания
(5) вызовы
(6) repeat-until
Backpatching - это:
(1) внутренний интерфейс
(2) техника "заплат"
(3) внешний интерфейс
(4) тестирование программы
Синтаксические диаграммы или синтаксические схемы имеют форму:
(1) блок-схем
(2) блоков
(3) прямоугольников
(4) квадратов
В данном примере:void DumpHrefs(String inputString) { Regex r; Match m; r = new Regex("href\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))", RegexOptions.IgnoreCase|RegexOptions.Compiled); for (m = r.Match(inputString); m.Success; m = m.NextMatch()) { Console.WriteLine("Found href " + m.Groups[1] + " at " + m.Groups[1].Index); } } класс Regex:
(1) обрабатывает результаты применения регулярного выражения
(2) задает регулярное выражение для поиска
(3) применяет результаты регулярного выражения
Синтаксический разбор в демонстрационном компиляторе Си-бимоль реализован с помощью:
(1) рекурсивного спуска с возвратами
(2) рекурсивного спуска без возвратов
(3) линейного спуска с возвратами
(4) линейного спуска без возвратами
При анализе строки 1+2+3 (содержимое стека - $E+) необработанная часть входной цепочки будет представлять собой:
(1) 2+3
(2) 1+2+3
(3) +2+3
(4) +2+3
(5) +3
Правила, которые будут использоваться в случае ошибки называются:
(1) "error productions"
(2) "error rules"
(3) "error set"
(4) "error stop"
Низкоуровневые формализмы записи промежуточного представления программы, приближающие программу к объектному коду - это:
(1) триады
(2) тетрады
(3) деревья
(4) DAG