Анализ программ 4MIT весна 2018 — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Лекции)
(Практика)
Строка 25: Строка 25:
 
=== Задание к лекции 2 ===
 
=== Задание к лекции 2 ===
  
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis]в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.
+
# Дописать реализацию класса [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/TypeAnalysis.scala TypeAnalysis] в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.
 
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.
 
# Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.
 
# (опционально) Реализуйте пункт 2 в рамках пункта 1.
 
# (опционально) Реализуйте пункт 2 в рамках пункта 1.
 
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.
 
# Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.
 +
 +
=== Задание к лекции 3 ===
 +
 +
* Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?
 +
* Допишите метод transfer в трейте IntraprocSignAnalysisFunctions [https://github.com/vorpal-research/TIP/blob/master/src/tip/analysis/SignAnalysis.scala здесь].
 +
* Реализуйте класс PowersetLattice в файле [https://github.com/vorpal-research/TIP/blob/master/src/tip/lattices/GenericLattices.scala GenericLattices].

Версия 18:19, 27 февраля 2018

Преподаватели:

Ахин Марат (akhin@kspt.icc.spbstu.ru )

Беляев Михаил (belyaev@kspt.icc.spbstu.ru )

Лекции

Лекция 1

Введение в предмет курса. Слайды

Лекция 2

Анализ на основе систем типов. Слайды

Лекция 3

Теория решеток и монотонный фреймворк. Слайды

Практика

НЕ ВЫКЛАДЫВАЙТЕ РЕШЕНИЯ В ОТКРЫТЫЙ ДОСТУП - это просьба от коллег из университета Архуса, откуда взяли существенную часть этого курса. В частности, не выкладывайте решения в открытые репозитории на GitHub. Используйте сервисы закрытых репозиториев (например, Gitlab или Bitbucket).

Задание к лекции 2

  1. Дописать реализацию класса TypeAnalysis в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.
  2. Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.
  3. (опционально) Реализуйте пункт 2 в рамках пункта 1.
  4. Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.

Задание к лекции 3

  • Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?
  • Допишите метод transfer в трейте IntraprocSignAnalysisFunctions здесь.
  • Реализуйте класс PowersetLattice в файле GenericLattices.