На каких реальных языках программирования легко писать интерпретаторы? - PullRequest
6 голосов
/ 06 августа 2009

На каких реальных языках программирования легко писать интерпретаторы?

«Реальные» языки для меня - это языки, на которых можно написать небольшой проект, а не один из простых эзотерических языков программирования .

(я спрашиваю, потому что хочу сделать какой-нибудь хобби-проект.)

Ответы [ 7 ]

11 голосов
/ 06 августа 2009

Metacircular Evaluator в SICP - это упражнение для написания интерпретатора Scheme в Scheme. Это обычный проект CS первого года.

6 голосов
/ 06 августа 2009

Очень легко написать интерпретатор для программирования язык Forth (когда вы знаете, как - но это хорошо документально). Forth был использован для реальных проблем на протяжении более 40 лет.

Возможно, это слишком просто, но вы многому научитесь в процессе.

Безумное (онлайн) введение в глава 9 из книги Лео Броди "Старт ФОРТА".

5 голосов
/ 06 августа 2009

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

Возможно, вы захотите немного поиграться с этим, например - например, Вы можете игнорировать указатели, но поддерживать строки первого класса.

4 голосов
/ 06 августа 2009

Forth. Хорошо, теперь я только набираю это, потому что мне нужно не менее 15 символов в ответе, но самые маленькие реализации Forth - пара КБ. Трудно думать о каком-либо другом языке, который мог бы иметь такое маленькое ядро. Может быть, оригинальный McCarthy 1958 Lisp, где функции были скомпилированы вручную.

3 голосов
/ 06 августа 2009

Схема, или любой другой вариант.

1 голос
/ 06 августа 2009

В моем классе операционных систем колледжа мы написали переводчик для Db (D-flat) Это было очень просто и четко определено.

0 голосов
/ 06 августа 2009

Я думаю, язык синтаксиса разметки, Лиран. Синтаксическая структура облегчает синтаксический анализ, поскольку блоки кода четко разграничены между начальным и конечным тегами. Вы можете теоретически легко создать интерпретатор уровня 1, который будет анализировать и запускать код напрямую.

Это сказало, что нет никаких языков разметки, которые делают значимые вещи в контексте, к которому я, кажется, вы стремитесь (вы можете написать свой собственный). Следующим лучшим выбором, вероятно, будут языки с минимальной функциональностью и предпочтительно не поддерживающие процедурное программирование. Такой язык, как BASIC, должен легко создавать интерпретатор уровня 1.

Следующая лучшая вещь, возможно, это ранние скриптовые языки, которые не предлагали много синтаксических элементов и были довольно коротки по сложности. Я не могу думать ни о чем, хотя.

Но, пожалуй, лучший из всех вариантов для вас - создать свой собственный язык. Интерпретатор становится легче построить, потому что вы хорошо знаете синтаксис языка и можете управлять своей собственной структурой и семантикой языка в интерпретаторе.

...

Настойчивость в переводчике 1-го уровня заключается в том, что вы упомянули, что хотите легко.

...