Как стать автором
Обновить

Ponyscript — язык программирования пони

Уровень сложностиПростой

Начнем с небольшого предисловия. Мне очень нравится сериал «Дружба это чудо». И недавно я решил изучить тему компиляции языков.

Смотря полнометражку «New generation» я заметил, что у пегасов есть смартфоны и моей голове всплыла логическая цепочка

  • В полнометражке new generation и сериале make your mark у пегасов были смартфоны

  • По сюжету new generation мы узнаем, что в Эквестрии какое то время отсутствовала магия

  • Значит, пегасы научились производить чипы

  • Значит, они умеют писать бинарный код

  • Но с бинарным кодом они бы замучались, значит у них есть свой ассемблер или фортран

  • А отсюда следует, что должны существовать и человекопонятные(понипонятные ) языки программирования

  • Такие, как си

  • Но, я сомневаюсь, что они бы сделали смартфоны без ООП
    А это значит, что в мире МЛП есть c++

Такой логической цепочкой я дошел до мысли о том, что должен существовать какой-то язык поняшный программирования. В одном брони чате мне рассказали про интересный проект FIM++. Тут, на Хабре, я нашел статью от 2012 года, где автор рассказал про этот язык. Но его стилистические особенности отсылают нас к письмам и героям сериала "Дружба это чудо". Моей же целью является создание правдоподобного, Тьюринг полного, строго типизированного языка.


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

Компилятор я решил писать на 2х языках python и c++. На питоне я написал лексический анализатор понискрипта и основной код компилятора. Для упрощения себе жизни, компилировать я его решил в плюсы, что немного облегчает задачу.

Часть анализатора
Часть анализатора

Основной логикой компиляции занимается python, инструкции которому сообщает программа на плюсах. Скрипт на пайтоне переводит некоторые пони команды по словарю в плюсовые функции, так же пони функции лежат в файле lib.cpp, который является основной, автоподключаемой библиотекой

Компиляция — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, выполняемая компилятором. В данном случае компиляция идет в c++, а из него уже по средством gcc, программа переводится в машинные команды

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

Папка с пони проектом после сборки
Папка с пони проектом после сборки

.ponycfg - файл конфигурации сборки, в котором прописываются параметры сборки (Например имя выходного файла)

psc - файл скрипта

psh - заголовочный файл

Синтаксис языка я покажу на примере программы Hello World

friend "class.h"

using libspace std; 

int main->>()
{
	int a = suma(1, 4);
	neighln->>(a);
	string x = "";
	read->>(x);
}

В данный момент язык еще не доделан и его набор команд скромный, но в моих планах его активно развивать

Исходный код проекта, находится в открытом репозитории на github.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.