Статический анализатор для функциональных языков программирования, например, Схема - PullRequest
4 голосов
/ 09 марта 2011

Я редко вижу статический анализатор для функциональных языков программирования, таких как Racket / Scheme, я даже сомневаюсь, есть ли такие.Я хотел бы написать статический анализатор для функциональных языков, скажем, Scheme / Racket.Как мне это сделать?

Ответы [ 3 ]

6 голосов
/ 10 марта 2011

Уже есть, например, набранная ракетка: http://docs.racket -lang.org / ts-guide / index.html Так как действительный код ракетки является действительной типизированной ракеткой, вам просто нужно изменить язык, на котором вы работаете. Затем для библиотек с типизированными версиями загрузите их вместо нетипизированных версий, и определенные ошибки типов могут уже статически обнаруживаться. К вашему собственному коду могут быть добавлены дополнительные аннотации типов, чтобы получить гарантии правильности типов помимо этого ...

6 голосов
/ 09 марта 2011

Да, есть некоторые работы по статическому анализу динамических языков, таких как Scheme.Например, см. Работу Олина Шиверса (http://www.ccs.neu.edu/home/shivers/citations.html) и Мануэля Серрано (http://www -sop.inria.fr / members / Manuel.Serrano / index-1.html ).

3 голосов
/ 12 марта 2011

Сначала прочитайте эту статью Шиверса, объяснив, почему на схеме нет статической диаграммы управления потоком.

Может быть реализовано k-CFA на схеме .Сайт Мэтта Мейта и blog является хорошей отправной точкой для изучения статического анализа языков высшего порядка.

Я также сделал несколько реализаций статического анализа для Scheme в Java:

...