/Scripty

My first attempt to write a programming language

Primary LanguageC++

Интерпретируемый язык программирования Scripty

Особенности и возможности

  • Язык имеет динамическую типизацию
  • TODO: придумать что нибудь еще :)

Сборка и использование

Для сборки проекта необходим компилятор поддерживающий С++ 17, а так же, опционально, .NET Core 2.2 для сборки проекта автотестов.

Для сборки под Windows рекомендуется использовать Visual Stutio 2017 и выше.
Для сборки под Linux - gcc 7.0 и выше или clang 4.0 и выше.

Возникли проблемы при сборке?

Решение некоторых известных проблем при сборке проекта

Неправильная версия Windows SDK

При сборке проекта под Windows с помощью Visual Studio может появиться сообщение о несоответствии версии Windows SDK. 
Вы можете либо обновить установленный у вас Windows SDK, либо выбрать ту версию, которая установлена у вас.
Это никак не отразится на работоспособности интерпретатора.

Запуск интерпретатора

Для выполнения скрипта необходимо передать путь к файлу в параметрах интерпретатора:

Scripty.exe -f /path/to/your/script.vsc

Синтаксис

for ( <initialization>; <condition>; <increment>) <block>

while <condition> <block>

do (<block>) while <condition>

if (<condition>) <block>

if (<condition>) <block> else <block>

return [<expression>]

break

continue

var <name> [= <expression>]{, <name> [= <expression>]}

function <name> (<parameters>) <block>

Типы данных

Array

var array = [1, 2.5, "hello", {a: 3, b: 42}];

Object

var object = {
    str: "string",
    number: 42,
    bool: true
};

String

var string1 = "Hello, World";
var string2 = 'Hello, World';

Number

var number = 3.1415;

Boolean

var bool = true;

Functions

function isOdd(number) {
    return number % 2;
}

Комментарии

# Однострочный комментарий
/*
Многострочный
комментарий
*/

Операторы

Бинарные

  • + - сложение
  • - - вычитание
  • * - умножение
  • / - десятичное деление
  • % - получение остатка от целочисленного деления
  • // - целочисленное деление

Унарные

  • + - унарный плюс. Например: +2
  • - - унарный минус. Например: -6

Составные

  • +=, -=, *=, /=, %=, //=

Логические

  • ==, >=, <=, <, >, &&, ||, !

Что планируется добавить

  • Константы
  • Лямбда-функции
  • Uniform Function Call Syntax
  • Модули
  • Возможность работы с динамическими библиотеками написанными на C/C++
  • Range (диапазоны) и Range-based for loop
  • Нормальнй вывод об ошибках парсинга и выполнения скрипта
  • Контроль количества параметров передаваемых в функцию
  • Добавить больше стандартных функций