Для каких реальных языков программирования легко писать интерпретаторы?
-
22-07-2019 - |
Вопрос
Для каких реальных языков программирования легко писать интерпретаторы?
"Настоящие" языки для меня - это языки, на которых вы действительно можете написать небольшой проект, а не один из простых Эзотерические языки программирования.
(Я спрашиваю, потому что хочу заняться каким-нибудь хобби-проектом.)
Решение
Метациркулярный оценщик в SICP - это упражнение по написанию интерпретатора схемы в Scheme.Это обычный CS-проект для первокурсников.
Другие советы
Написать интерпретатор для программирования очень просто язык Вперед (как только вы узнаете, как - но это хорошо задокументировано ).Forth используется для решения реальных задач более 40 лет.
Возможно, это слишком просто, но в процессе вы многому научитесь.
Беззаботное (онлайн) введение находится в глава 9 из книги Лео Броуди "Начинаем дальше".
Оригинальный язык Pascal Вирта является хорошим кандидатом и часто используется в качестве демонстрации в генераторах синтаксических анализаторов.Его грамматика LL(1), а в остальном довольно строгая, поэтому ее легко разобрать.С точки зрения функциональности это также довольно ограничено.
Однако, возможно, вам захочется немного повозиться с этим - напримервозможно, вы захотите игнорировать указатели, но поддерживать первоклассные строки.
Далее.Хорошо, сейчас я набираю это только потому, что мне нужно не менее 15 символов в ответе, но наименьшие реализации Forth составляют пару КБ.Трудно представить себе какой-либо другой язык, который мог бы иметь такое маленькое ядро.Возможно, оригинальный Лисп McCarthy 1958, где функции были скомпилированы вручную.
Схема или любой вариант lisp.
На занятиях по операционным системам в моем колледже мы написали интерпретатор для Db (D-flat).Это было очень просто и четко определено.
Я бы подумал, что это язык синтаксиса разметки, Liran.Синтаксическая структура облегчает синтаксический анализ, поскольку блоки кода четко разграничены между тегами begin и end.Теоретически вы могли бы легко создать интерпретатор уровня 1, который анализирует и запускает код напрямую.
Тем не менее, не существует никаких языков разметки, которые делали бы значимые вещи в том контексте, к которому, как мне кажется, вы стремитесь (возможно, вы захотите написать свой собственный).Следующим лучшим выбором, вероятно, будут языки с минимальной функциональностью и предпочтительно не поддерживающие процедурное программирование.Для такого языка, как BASIC, должно быть легко создать интерпретатор 1-го уровня.
Следующая лучшая вещь, возможно, - это ранние скриптовые языки, которые не предлагали много синтаксических элементов и были довольно короткими по сложности.Однако мне ничего не приходит в голову.
Но, возможно, лучший вариант из всех - это для вас разработать свой собственный язык.Создавать интерпретатор становится проще, потому что вы обладаете глубокими знаниями синтаксиса языка и можете управлять своей собственной языковой структурой и семантикой в интерпретаторе.
...
Настойчивость в использовании переводчика 1-го уровня объясняется тем, что вы упомянули, что хотите, чтобы это было легко.