Хелпикс

Главная

Контакты

Случайная статья





Вопросы по теории компиляторов



Вопросы по теории компиляторов

  1. Классификация трансляторов. Компиляторы, интерпретаторы.
  2. Структура компилятора. Этапы (фазы) компиляции, их назначение.
  3. Лексический анализ. Задачи лексического анализа. Понятия лексемы и токена. Классы токенов.
  4. Лексический анализ. Предпросмотр (backtracking, lookahead) и примеры его применения при лексическом анализе языков программирования.
  5. Регулярные выражения. Назначение, базовые конструкции, составные конструкции.
  6. Формальные языки. Алфавит языка.
  7. Функция значения (meaning function).
  8. Лексические спецификации. Использование лексических спецификаций для лексического анализа.
  9. Правило «maximal munch». Проблемы применения и способы их решения.
  10. Конечные автоматы в лексическом анализе. Понятия «accept» и «reject». Связь между конечными автоматами и регулярными языками.
  11. Детерминированные и недетерминированные конечные автоматы (ДКА и НКА).
  12. Этапы построения лексического анализатора. НКА для простых и составных регулярных выражений.
  13. Построение НКА для сложного регулярного выражения.
  14. Понятие ε-замыкания. Преобразование НКА в ДКА.
  15. Программная реализация конечных автоматов.
  16. Иерархия Хомского. Понятие грамматики. Проблема использования регулярных выражений в синтаксическом анализе.
  17. Синтаксический анализ. Задачи синтаксического анализа. Понятие дерева разбора.
  18. Контекстно-свободные грамматики (КСГ). Понятия терминала, нетерминала, продукции. Связь КСГ с лексическим анализом.
  19. Порождения. Левое и правое порождения.
  20. Неоднозначность. Проблемы использования неоднозначных грамматик в синтаксическом анализе. Примеры языков программирования, имеющих неоднозначные грамматики.
  21. Способы устранения неоднозначностей. Понятие ассоциативности, связь ассоциативности и приоритетов с неоднозначными грамматиками.
  22. Обработка ошибок компилятором. Способы обработки ошибок, их преимущества и недостатки.
  23. Абстрактные синтаксические деревья (AST). Связь AST с деревьями разбора.
  24. Классификация методов синтаксического анализа. Метод рекурсивного спуска: теория.
  25. Метод рекурсивного спуска: программная реализация.
  26. Левая рекурсия, связанные с ней проблемы и способы её устранения.
  27. Предиктивный анализ. Понятие LL(k)-грамматик. Левая факторизация грамматики.
  28. LL(1)-разбор.
  29. First-множества в LL(1)-анализе.
  30. Follow-множества в LL(1)-анализе.
  31. Построение таблицы LL(1)-разбора. Выявление грамматик, не являющихся LL(1)-грамматиками.
  32. Восходящий разбор: отличия от нисходящих методов, преимущества. Понятие свёртки.
  33. Операции сдвига и свёртки в восходящем разборе. Виды конфликтов.
  34. Семантический анализ. Задачи семантического анализа. Области видимости и способы их определения в различных языках.
  35. Семантический анализ. Таблицы символов.
  36. Семантический анализ. Понятие типа, виды типизации.
  37. Оптимизация и генерация кода. Способы оптимизации. Проблемы оптимизации.


  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.