@NonameProgrammer

Сложно ли сделать свой гибридный компилятор?

Вопросы:
1. Где можно взять доп. лит-ру на русском языке? Все те же правила, но не так научно, как в книге дракона.
2. Возможно ли написать гибридный компилятор (без оптимизации и т.д) (компилятор + интерпретатор байткода) или писать что-то отдельное ?
*Ну тут сразу оговорюсь, что есть вариант написать под .NET CLR либо под Oracle JVM*
  • Вопрос задан
  • 657 просмотров
Решения вопроса 1
cjey
@cjey
Сложно )

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

Я думаю полгода - год у вас на это уйдет.

Потом возьмите какой-нибудь простой знакомый язык, basic / подмножество Java. Напишите интерпретатор.
Потом переделаете интерпретатор в генератор промежуточного кода.
Потом сделаете компилятор промежуточного кода под одну конкретную платформу.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
32bit_me
@32bit_me
Программист, встраиваемые системы
> Где можно взять доп. лит-ру на русском языке?
Её нет и не будет. Выучите английский.
Ответ написан
@potan
Функциональный программист
А что за возможности в Java, которые хороши для разработки компиляторов?
Компиляторы лучше писать на Scala или Haskell.
Ответ написан
гибридный компилятор
Компилятор компилирует исходную программу в файл с целевыми инструкциями для процессора или виртуальной машины для байткода (JVM/CLR и т.д), а интерпретатор - интерпретирует код по ходу чтения.
Интерпретатор по-проще реализовать будет. Можно написать также транслятор на другой язык. Обычно используют либо Си, либо JavaScript (ECMAScript). Если в Си, то в схеме участвует сторонний компилятор Си.
Целевые программы на JavaScript будут выполнены либо в браузере, либо в интерпретаторах JavaScript.

Лучше читать источники на английском:
Compiler Construction (PDF) Никлауса Вирта - создателя языков Паскаль, Модула, Оберон, Лола.

Полезный ресурс лектора по компьютерным наукам Охфорда Spivey's Corner
Course outline (Compilers)
Glossary (Compilers)
На его сайте есть информация по виртуальным машинам для байткода.

Добавлено:
есть также интересный проект - компилятор компиляторов Coco/R. При помощи грамматики EBNF твоего языка он сможет сгенерировать код самого компилятора языка на C#, Java и некоторых других. Этот код может быть хорошей отправной точкой. Можно экспериментировать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы