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

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

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

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

Ещё один шаг навстречу С++

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

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

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

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

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

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

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

Добро пожаловать на сайт разработчиков компилятора Primula C!

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