Анализ программ 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
- Дописать реализацию класса TypeAnalysis в TIP. Подумайте, как будет работать анализ, если в программе есть рекурсивный тип.
- Попробуйте добавить в описанную в лекции систему типов тип Bool, не меняя синтаксис языка. Перепишите правила так, чтобы они продолжали работать на основе имеющегося алгоритма унификации.
- (опционально) Реализуйте пункт 2 в рамках пункта 1.
- Попробуйте добавить в описанную в лекции систему типов тип массива (при этом меняется синтаксис, см. слайды). Перепишите правила и попробуйте протипизировать программу из лекции.
Задание к лекции 3
- Подумайте, выразим ли анализ типов в монотонном фреймворке? А наоборот?
- Допишите метод transfer в трейте IntraprocSignAnalysisFunctions здесь.
- Реализуйте класс PowersetLattice в файле GenericLattices.