Почему и для чего нам нужен компилятор

Похоже, настало время пояснить, для каких целей нам нужен компилятор. В разделе «О проекте» упомнинался разработка микропроцессора.  Мы постараемся слегка приоткрыть завесу над этой «тайной». Для начала подумаем, что же есть вычислительной ядро в современных многопроцессорных системах. Ответ на этот вопрос зависит от архитектуры. В архитектуре Xameleon ядром процессора мы называем декодер команд — функциональный блок, производящий разбор и выполнение инструкц...
Дальше...

Рефакторинг, рефакторинг, рефакторинг

Сложно назвать точную цифру, но навскидку — сложность разбора синтаксиса C++ где-то в три раза выше сложности разбора обычного Си. В этом сообщении не будет новых примеров, показывающих чему научился синтаксический анализатор за прошедшую неделю. Эта неделя ушла на рефакторинг кода, в результате которого анализатор научился делать то, что умел и неделю назад. Видимые изменения коснулись разбора статических членов класса — теперь они распознаются корректно. Помимо этого пришлос...
Дальше...

Робкий взгляд на C++

Мы показали проект компилятора нескольким знакомым программистам и все они задали одинаковый вопрос — будет ли компилятор поддерживать язык  Си++? Мы не ставили перед собой задачу в полном объёме поддерживать современные стандарты этого языка. Однако, при написании синтаксического анализатора, мы активно использовали объектно-ориентированное программироввание — большая часть анализатора реализована с использованием классов. Например, элементы дерева синтаксического разбора...
Дальше...

Проблема разбора одной из конструкций языка С++

Поскольку синтаксический анализатор языка Си практически готов, у нас возник вопрос — что делать дальше, приступить к генерации кода или попробовать разбор конструкций С++?  Так или иначе, но для того, чтобы в будущем компилятор смог собрать себя сам, нам понадобится поддержка классов. Если сейчас заняться генерацией кода, то при добавлении конструкций языка С++ придётся переписывать много кода. Поэтому мы решили попробовать реализовать разбор конструкций C++. Хотя бы ча...
Дальше...

Один год работы над компилятором

Разработка компилятора — сложный, длительный и трудоёмкий процесс. В Сети немало обсуждений и комментариев на эту тему. Некоторые начинающие программисты берутся за эту задачу, но лишь немногие достигают видимого успеха. Согласитесь, с точки зрения семантики — язык Си один из самых сложных языков. Программируя много лет на Си, мы не  задумывается, насколько сложными мог...
Дальше...