Каковы основные вопросы в разработке интерпретатора для функционального языка?

Мне особенно нравится схема в Код, Завершенный , в котором Вы запускаете только с унаследованного кода, прямоугольника нечеткой серой структуры. Тогда при замене части его у Вас есть нечеткий серый внизу, чистый белый наверху, и зубчатая строка, представляющая интерфейс между двумя.

таким образом, все - или 'противный старый материал' или 'хороший новый материал'. Одна сторона строки или другого.

строка является зубчатой, потому что Вы перемещаете различные части системы на различных уровнях.

, Как Вы работаете, зубчатая строка постепенно убывает, пока Вы не имеете более белый, чем серый, и в конечном счете просто серый.

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

11
задан 3 revs, 2 users 100% 1 November 2009 в 19:48
поделиться

4 ответа

Я настоятельно рекомендую Структура и интерпретация компьютерных программ (SICP) в качестве отправной точки. Эта книга познакомит вас с идеей написания интерпретатора (и компилятора), и ее, как правило, необходимо прочитать всем, кто разрабатывает языки.

Реализация интерпретатора для функционального языка вряд ли будет слишком сложной задачей. отличается от реализации интерпретатора для любого другого языка общего назначения. Есть лексический анализ, синтаксический анализ, построение AST, семантический анализ, а также выполнение (для чистого интерпретатора) или генерация и оптимизация кода (для компилятора, даже компиляция в байт-код, например Java / Perl / Python). SICP представит разницу между оценкой «аппликативный порядок» и «нормальный порядок»,

3
ответ дан 3 December 2019 в 11:52
поделиться

Я думаю, что почти для любого языкового интерпретатора или компилятора основные проблемы одинаковы.

Вам необходимо определить некоторые базовые характеристики языка (семантику, а не синтаксис), и основная часть конструкции следует из этого.

  • Например, есть ли в вашем языке система типов? Если да, то какие Типы у него есть? Это будет статически типизированный, динамически типизированный, утиный тип?

  • Какие у тебя выражения? планируете поддержать? Вам нужно определить порядок действий? Будет у вас даже есть операторы?

  • Что вы будете использовать в качестве среды выполнения представление программы? Будет вы конвертируете текст в байт-код представление, или AST, или токенизированная форма исходного текста?

Существуют наборы инструментов, которые помогут избавиться от утомительности фактического синтаксического анализа текста (ANTLR и Bison, чтобы назвать два), но я не знаю ничего, что помогло бы с собственно интерпретация часть задачи. Я уверен, что кто-нибудь что-нибудь предложит.

1
ответ дан 3 December 2019 в 11:52
поделиться

Основная проблема заключается в наличии семантики для языка, который вы реализуете - с этим реализация становится простой. В противном случае этот вопрос невероятно широкий, и на него сложно ответить.

0
ответ дан 3 December 2019 в 11:52
поделиться

Я бы порекомендовал «Основы языков программирования» как хорошее дополнение к SICP, особенно если вас интересуют переводчики: официальный сайт EOPL. Вы можете попробовать третье издание - сайт еще не обновлен.

Edit: защита от спама заставляет меня выбирать между ссылками, поэтому официальная страница теперь не обновляется. Однако это легко сделать в Google.

0
ответ дан 3 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: