Другие языки программирования и технологии

Как создать свой язык программирования ?

Выучил языки программирования: С, С++, Java, HTML&CSS&PHP, JavaScript. Хочу узнать, как начать писать библиотеку своего языка программирования.
В КГТУ (Технологическом университете) на третьем курсе у нас был курсовик по этой теме. Задача - создать простую систему программирования, работающую как интерпретатор. Делали мы эту систему в команде из трех человек: Катя, Слава и я. Использовали C++ Builder.

В начале мы подробно разобрали, какие конструкции будут использоваться в нашем языке. Расписали их на бумаге при помощи диаграмм Вирта и получили более-менее ясную картину того, что нам нужно предусмотреть. Этим занималась Катя. Интерфейс программы тоже сделала она.

Затем Слава взялся за реализацию процедуры лексического разбора. Суть: есть программный код (коллекция строк), необходимо его разобрать на элементарные составные элементы - лексемы. К лексемам относятся: переменные, константы (числа и строки), знаки операций, ключевые слова...

На входе - читабельный код. На выходе - список лексем.

После этого я взялся за реализацию синтаксического разбора. Я создал около полусотни детерминированных автоматов для отслеживания любой синтаксической конструкции, для которой Катя составила диаграмму Вирта. Сюда относились арифметические выражения (с учетом приоритетов операций); операторы присвоения, условия, цикла и вызова функции и т. д.

На входе - список лексем. На выходе - синтаксическое дерево, в котором каждая конструкция - это раскрываемый элемент [+], включающий в себя лексемы и более мелкие конструкции.

Наконец мы вместе со Славой работали над выполнением программы по синтаксическому дереву. Для каждой переменной выделяли память и по мере выполнения программы меняли их значения. Там был какой-то хитрый принцип перехода по программе, которого я сейчас уже не припомню в точности: вместе с имеющимися операциями мы хранили все инструкции из дерева и знали наперед, куда нам следует переходить в том или ином случае.

Получилось здорово. Система поддерживала основные арифметические операции, работу со строками, ввод и вывод, функции и массивы. Для примера мы написали программу, решающую квадратное уравнение (корень из D считали подбором).

На защите нашу программу слегка "сломали", указав некорректный размер массива. Но остались довольны. Отл. :)
Артём Татаровский
Артём Татаровский
83 739
Лучший ответ
Файзулло Насулаевич Браво, маэстро. Восхищен.
Сергей Маслов Хороший пример. Читать приятно )
Надо таким родится, но увы ты таким не родился.
Sabur Berdeli
Sabur Berdeli
54 369
Егор, все таки: язык, библиотеку, интерпретатор/компилятор, или IDE? Это 4 больших разницы. Если Вы, как говорите, "выучили языки программирования: С, С++, Java, HTML&CSS&PHP, JavaScript", то должны ЭТО понимать.
Тоже делала курсовик с интерпретатором, интересно, и не очень сложно. Компилятор сложней на порядок, полное IDE еще сложней.

А свой язык это абсолютно другое! Для начала, надо определить требования к языку, потом его объекты, и операции, потом синтаксис, и все это должно решать определенный класс задач, и должно быть удобно для программиста, человека! Только потом делать реализацию, а можно не делать: удачный язык это уже труд жизни!
Иван Бойко
Иван Бойко
48 987
Вопрос хороший.. И очень распространёный. Но даже если Вы и выучили эти языки и при этом спрашиваете как всё-же создать свой язык программирования, то я могу сделать только один вывод - у Вас нет опыта работы с этими языками и с технологиями, использующими эти самые языки..
Если была бы практика, Вы бы поняли, что изобретать свой велосипед на тему "Мой ОО язык программирования" , уж очень неразумная и трудоёмкая задача. Если иметь ввиду что Вы хотите чтоб Ваш язык как минимум не сильно отставал от уже существующих.
Но подобную тему проходят во многих Вузах, правда в общеобразовательных целях. Вам для этого понадобится Ассемблер либо С++. Но со вторым будут дополнительные проблемы.
Статей в нете много. Но это пустая трата времени.
Если Вы Java выучите хотябы процентов на 80 то поймёте что Вам не нужен собствственный язык пограммирования )
Денис Лухин
Денис Лухин
4 603
#define
или
typedef
Ravin Hesenov
Ravin Hesenov
371
если мозг способин на етого - ответу найдетса сам
Для начала, теперь забудь все те знания, полученные тобой, входе изучения тобой, языков программирования С++, Java, и т. п.!..