Skip to content

SamuraiGalahad/PifagorIDE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pifagor IDE

Данный репозиторий хранит исходный код для интегрированной программной среды для языка программирования Пифагор.

Про проект

Язык программирования Пифагор является функционально-потоковым языком программирования. Для разработки на данном языке используется схема, отличная от привычных.

Перед запуском кода необходимо использовать функционал трансляции -- исходный текст программы преобразуется в промежуточный вид: информационный граф, который затем используется при этапе интерпретации.

Затем происходит выбор выполняемой функции и ввод аргумента в поле.

Последний этап -- запуск самой программы.

Подробнее про язык и исполняемый файл можно прочитать на сайте разработчика языка.

Примеры программ на ЯП Пифагор

//=============================================================================
// Некоторые примеры из статьи: "На пути к мобильным параллельным программам".
// Открытые системы, №5-6.
//=============================================================================

//--------------------------------------------------------------------
// Функция, осуществляющая скалярное произведение двух векторов.
// Используется параллельный список
//....................................................................
// Примеры данных:
// ((1,2,3),(4,5,6))
// ((3, 5), (-4, 2))
//....................................................................
//
ScalMultVec << funcdef W { (W:#:[]:*) >> return }

//--------------------------------------------------------------------
// Функция, суммирующая элементы вектора.
//....................................................................
// Примеры данных:
// (1,2,3,4,5,6)
// (3, 5, -4, 2)
//
VecSum << funcdef Param {
// Формат аргумента: (x1,... ,xn), где x1,... ,xn - числа	
  Len<<Param:|;
  return<< .^[((Len,2):[<,=,>]):?]^
  (
    {Param:[]},
    {Param:+},
    {
      block {
        OddVec << Param:[(1,Len,2):..];
        EvenVec << Param:[(2,Len,2):..];
        ([OddVec,EvenVec]: VecSum):+
      >>break
      } // конец блока
    } // конец задержанного списка
  )
}

//--------------------------------------------------------------------
// Функция, выполняющая произведение двух векторов. 
// Древовидная свертка. Результатом является скаляр.
//....................................................................
// Примеры данных:
// ((1,2,3),(4,5,6)) => 32
//....................................................................
//
VecMult<< funcdef x{
  x:ScalMultVec:VecSum >> return
}


//--------------------------------------------------------------------
// Функция, осуществляющая сложение элементов вектора.
// Используется правая свертка.
//....................................................................
// Примеры данных:
// (1,2,3,4,5,6)
// (3, 5, -4, 2)
//....................................................................
//
SeqVecSum << funcdef Param {
// Формат аргумента: (x1,... ,xn), где x1,... ,xn - числа
  Len<<Param:|;
  return<< .^[((Len,2):[<,>=]):?]^
  (
    {Param:[]},
    {(Param:1, Param:-1:SeqVecSum)	:+}
  )
}

//--------------------------------------------------------------------
// Функция, выполняющая произведение двух векторов. 
// Правая свертка. Результатом является скаляр.
//....................................................................
// Примеры данных:
// ((1,2,3),(4,5,6)) => 32
//....................................................................
//
SeqVecMult<< funcdef x{
  x:ScalMultVec:SeqVecSum >> return
}

Использованные фреймворки и ресурсы

Библиотека интерпретатора и транслятора языка находится в каталоге QTTranslator. Изначально сама библиотека представлена в виде файла с расшерением ".a". Были проблемы с подключением библиотеки, потэтому ее файлы были подключены напрямую в CMakeLists.txt. Похожая проблема и возможное ее решение описано в файле со ссылками на статьи с решениями проблем.

Программа написана с использованием фреймворка Qt версии 6.5.0. Данный выбор обусловлен легкостью интеграции библиотеки при написании приложения на C++ с использованием CMakeLists.txt, а также кроссплатформенностью создаваемых приложений.

Также были использованы иконки для создания ToolButton's, с привязкой к методам интерпретатоара и транслятора. Данные иконки распростаняются под лицензией "CC BY-NC 3.0" и были взяты с открытого электронного ресурса: https://freeicons.io. Автор иконок.

About

Интегрированная программная среда для языка программирования Пифагор

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages