Компилятор типизированного структурного языка, основанный на LLVM
Компилирует Python-подобный строго типизированный язык
- компилирует исходный код в объектный файл с машинным кодом под ту платформу и ОС, на которой запущен
- в качестве runtime языка используется библиотека языка C целевой ОС
Возможности:
- поддержка арифметических операций над числами, операций сравнения, логических операций и конкатенации строк
- поддержка структурного программирования:
if
,if..else
,while
,do..while
- строгая типизация с поддержкой типов Boolean, Number, String
- типы локальных переменных выводятся автоматически
- поддерка функций с параметрами и возвращаемым значением
- типы параметров и возвращаемого значения задаются явно
- поддержка печати в консоль
Системные требования
Поскольку сборка происходит в docker с помощью bash скриптов, достаточно иметь bash и docker.
Для запуска компилятора в docker proxy-скриптом bin/pythonish
потребуется python3, также он потребуется для запуска тестов скриптом bin/run-tests
Для разработки и сборки на хост-машине потребуются:
- LLVM версии 3.9, lemon произвольной версии
- Для ОС Ubuntu: установите пакеты
lemon
,clang
,llvm-dev
,cmake
- Для ОС Windows: установите CMake, загрузите и установите Clang, соберите Lemon из исходных кодов (hwaci.com), соберите библиотеки LLVM из исходников с помощью CMake.
Примеры
Вычисление квадратного корня
Исходный код:
function not(x Boolean) Boolean
return x == false
end
function sqrt(x Number) Number
if x < 0
return 0
end
root = 1
mustContinue = false
do
newRoot = 0.5 * (root + x / root)
mustContinue = not(newRoot == root)
root = newRoot
while mustContinue end
return root
end
function main() Number
print "sqrt(2):"
print sqrt(2)
end
Вывод запущенной программы:
sqrt(2):
1.414214