/pythonishc

Simple python-like language compiler

Primary LanguageC++MIT LicenseMIT

Компилятор типизированного структурного языка, основанный на 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

Для разработки и сборки на хост-машине потребуются:

Примеры

Вычисление квадратного корня

Исходный код:

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