Команда (фрилансеры)

Набираем команду фрилансеров, Вы:

  • Программист,
  • Дизайнер,
  • SEO-специалист,
  • Менеджер

Разработка на заказ

Наша команда фрилансеров выполнит
работы на заказ:

Создание и раскрутка сайтов
Разработка приложений (мобайл, десктоп, сервер)
Разработка игр (веб, мобайл, 3D)
Аутсорсинг, фриланс

Контакты
vk.com/sitev_ru
Skype: sitev.ru
E-mail: mike@sitev.ru
github.com/sitev

Рейтинг@Mail.ru

Besucherzahler
счетчик посещений
Сайт на C++
Наш сайт работает на C++ и это очень круто! =))

Как работает компилятор

Начинаем разрабатывать компилятор языка программирования Cj. Кстати, данный пост, возможно, пригодится для написания транслятора/компилятора/интерпретатора других языков, так что не зря пишу).

Мы будет сразу и писать компилятор (класс Compiler) и, одновременно, разбираться как он работает. Поехали!

Процесс компиляции можно разбить на 5 этапов.

1. Лексический анализ

На этом этапе анализируемый текст разбивается на слова (лексемы) нашего языка программирования. Осуществлять такой анализ будем с помощью лексера (класс Lexer) - лексического анализатора.

2. Синтаксический анализ

Для этого этапа мы напишем парсер (класс Parser) - синтаксический анализатор, на вход которому подаются лексемы, а на выходе получаем синтаксическое дерево, которое представляет из себя дерево элементов языка Cj (переменные, функции и т.д.).

3. Семантический анализ

По аналогии с предыдущими этапами, напишем семантический анализатор (класс Semantic). На данном этапе синтаксическое дерево обрабатывается и наполняется смыслом, то есть семантикой. Например, привязка идентификаторов к их декларациям, типам, проверка совместимости, определение типов выражений и т. д..

Важной частью семантического анализа являются различные проверки. И если в программе имеется ошибка, то компилятор должен сообщить об этом.

4. Оптимизация кода

Удаляем излишние конструкций и упрощаем код с сохранением его смысла, главное не удалить лишнее)). Напишем для этого этапа класс Optimizer.

5. Генерация кода

Тут всё просто - из промежуточного представления генерируем код на целевом языке (класс Generator).

Теперь мы разобрались как работает любой, даже самый сложный, компилятор. Всё, на самом деле, очень просто и понятно! Я уже начал писал компилятор своего языка, а вдруг и Вы захотите?

Чтобы мой труд не пропал даром, я создам библиотеку абстрактного языка и назову её lang. Она уже на Гитхабе: github.com/sitev/lang!

В ней будут представлены выше перечисленные классы, в которых будет реализован общий функционал.

Подключайте, расширяйте данные классы как Вашей душе угодно и пишите свой язык, свой компилятор!


Отправить комментарий
Наш проект: язык Cj
Cj - язык программирования (C++ & Javascript)
Новый язык программирования, для разработки веб, мобайл, десктоп-приложений, игр... подробнее...

Хотите поддержать проект?

  • Оставляйте ссылки на наш сайт
  • Станьте спонсором проекта
подробнее...

Концепция SITEV.ru

SITEV.ru - это социальная сеть для ИТ-специалистов (программистов, дизайнеров, seo-специалистов, рекламных менеджеров, маркетологов), в том числе фрилансеров, бизнесменов... а также обычных пользователей, для которых и делается ИТ

Реклама


Поиск работы по всему миру