acwj README

The project's README from github.com/DoctorWkt/acwj. As one markdown file: README.md.

A Compiler Writing Journey

In this Github repository, I'm documenting my journey to write a self-compiling compiler for a subset of the C language. I'm also writing out the details so that, if you want to follow along, there will be an explanation of what I did, why, and with some references back to the theory of compilers.

But not too much theory, I want this to be a practical journey.

Here are the steps I've taken so far:

I've stopped work on acwj and now I'm writing a new language called alic from scratch. Check it out!

Copyrights

I have borrowed some of the code, and lots of ideas, from the SubC compiler written by Nils M Holm. His code is in the public domain. I think that my code is substantially different enough that I can apply a different license to my code.

Unless otherwise noted,

acwj (DoctorWkt/acwj)

Searching Database…

13.5K ·GitHub
Что это такое?Это документированная серия обучающих материалов, в которых автор строит самокомпилирующийся компилятор для подмножества языка C. Материал разбит примерно на 64 последовательные части; в каждой есть рабочий исходный код и письменное объяснение теории, стоящей за ним.
Это работающий компилятор или просто учебник?И то, и другое. Каждая пронумерованная часть добавляет настоящий исходный код на C в растущий компилятор и сопровождается объяснением того, что изменилось и почему. В итоге у вас получается работающий компилятор и история того, как он был создан.
С чего начать чтение?Начните с Части 0 (Introduction to the Journey) и читайте части по порядку до Части 64. Код каждой части напрямую опирается на предыдущую.
Нужно ли что-то особенное, чтобы следовать за материалом?Достаточно компилятора C и базовых знаний C. Проект полностью написан на C, не имеет внешних зависимостей, а из инструментов сборки нужны только стандартные средства, никакого Docker.
Проект всё ещё активно обновляется?Нет. Автор перестал добавлять новые части в acwj и перешёл к созданию нового языка 'alic' с нуля.
Весь репозиторий распространяется под одной лицензией?Нет. Исходный код и скрипты распространяются под GPL-3.0, а написанные на английском документы и изображения лицензированы отдельно по Creative Commons BY-NC-SA 4.0, которая ограничивает коммерческое использование текста.
Для какой платформы компилятор генерирует код?Начиная примерно с Части 14 он напрямую генерирует ассемблер ARM, а в последующих частях добавлены альтернативные бэкенды: на основе QBE (Часть 63) и для процессора 6809 (Часть 64).
Компилирует ли он весь язык C?Нет, только намеренно ограниченное подмножество C — ровно столько, чтобы компилятор мог быть самокомпилирующимся, то есть в итоге смог компилировать собственный исходный код.
Автор написал каждую часть с нуля?Не полностью. Часть кода и многие идеи взяты из публичного компилятора SubC Нильса М. Хольма, находящегося в общественном достоянии. Однако автор считает результат достаточно отличающимся, чтобы лицензировать его отдельно.
Creator
DoctorWkt
Size
4 MB
Stars
13.5K
Updated
CommitJun 06
Age
7y
Commits · 90 Days