2024-07-29 17:52:22 +03:00
2024-07-29 02:41:13 +03:00
2024-07-29 02:41:13 +03:00
2024-07-29 13:31:43 +03:00
2024-07-29 01:48:32 +03:00
2024-07-29 17:52:22 +03:00
2024-07-26 23:09:10 +03:00
2024-07-29 13:31:43 +03:00
2024-07-29 01:48:32 +03:00
2024-07-28 18:37:16 +03:00

Sust

язык саст LOL

код хеллоу ворлда:

INIT_VAR string text       # создать переменную с текстом
SET_VAR text Hello World!  # установить текст в переменную
TEMP_VAR char br 10        # создать временную переменную с символом перехода на следующую строку
ADD_STR text br            # добавить символ перехода на следующую строку в переменную с текстом
WRITE text cout            # написать текст в консоль
DROP_VAR text              # дропнуть переменную с текстом

минимальный код для хеллоу ворлда (без перехода на следующую строку):

TEMP_VAR string text Hello World!
WRITE text cout

Синтаксис

Типичный синтаксис языка:

FUNC null println text string # println function
    TEMP_VAR char new_line 10 # init line break var
    ADD_STR text new_line     # add line break to text var
    WRITE text cout           # write text var to console
FUNC_END                      # end println function

TEMP_VAR string text Hello World!
USE_FUNC println null text

С каждой стороны команды табы и пробелы разрешены, но в этом есть минус в том что нельзя установить текст в переменную где в конце будет пробел / таб / переход на новую строку в одну команду Эта проблема решается добавлением отдельных char к переменной

Комментарии пишутся как в петухоне, в конце строки

COMMAND arg1 arg2 # комментарий!!! # ну пример того что ничо не будет если написать два хештега

Переменные

Тут нельзя сделать

print("123", end="")

Тут надо сначала создать переменную а потом запихнуть в функцию

INIT_VAR string text # создать переменную
SET_TEXT text 123    # запихнуть текст в переменную
WRITE text cout      # написать текст в консоль
DROP_VAR text        # дропнуть переменную

Кстати, тут в теории можно поставить абсолютно любое название переменной, хоть с числа, хоть с 未来15年内分子制造技术的进展从很多角度来说都是方案的专家所说的“关键的不确定性”的一个典型例子。

Типы переменных

Type Example Command Example Value
bool SET_VAR var true true / false
string SET_VAR var some_text some_text
integer SET_VAR var 123 123
float SET_VAR var 14.48 14.48
char SET_VAR var 255 0 - 255
list[type] SET_VAR var.index value value
map[key_type,value_type] SET_VAR var.key value value
optional[type] SET_VAR var (value) (value) / none
in_stream OPEN_FILE_IN path var
out_stream OPEN_FILE_OUT path var

Стандартные переменные

Переменная Описание Тип
args Аргументы при вызове программы list[string]
cout Вывод консоли out_stream
cin Ввод консоли in_stream

Команды

Весь язык строится на командах, структура команды:

КОМАНДА параметр1 параметр2 параметр3 ... параметрN

Тип параметра зависит от команды

Переменные

Команда Параметры Описание
INIT_VAR type_var, name_var Инициализировать переменную name_var с типом type_var
SET_VAR name_var, value_var Установить значение переменной в name_var
TEMP_VAR type_var, name_var, value_var Переменная name_var инициализируется с типом type_var и присваивается value_var, переменная дропается через одну команду
MOVE_VAR source_var, target_var Переместить значение переменной с source_var в target_var
COPY_VAR source_var, target_var Скопировать значение переменной с source_var в target_var
DROP_VAR name_var Дропнуть переменную name_var
HAS_VAR name_var, result_var В переменную result_var записывается bool существует ли переменная name_var

Преобразование переменных

Команда Параметры Описание
TO_STRING source_var, result_var Скопировать значение переменной с source_var в result_var, переводя в string
TO_CHARS str_var, result_var Скопировать строку str_var в result_var, переводя в list[char]
TO_INTEGER source_var, result_var Скопировать строку source_var (тип переменной: string/char) в result_var, переводя в integer
TO_CHAR source_var, result_var Скопировать строку source_var (тип переменной: string/integer) в result_var, переводя в char
TO_BOOL source_var, result_var Скопировать строку source_var (тип переменной: string/integer) в result_var, переводя в bool
TO_FLOAT source_var, result_var Скопировать строку source_var в result_var, переводя в float
GET_SYMBOL str_var, index_var, result_var Скопировать символ из строки str_var по индексу index_var и записать в result_var
GET_ITEM list_var, index_var, result_var Скопировать предмет из списка str_var по индексу index_var и записать в result_var
GET_VALUE map_var, key_var, result_var Скопировать предмет из мапы map_var по ключу key_var и записать в result_var
ADD_INT int_var1, int_var2 Прибавить к числу int_var1 значение int_var2
ADD_FLOAT float_var1, float_var2 Прибавить к числу float_var1 значение float_var2
ADD_STR str_var, value_var Прибавить к строке str_var значение value_var (может быть типа string/char/list[char])
SUB_STR str_var, start_index, end_index Сделать подстроку из строки str_var и сохранить туда же
SUB_LIST list_var, start_index, end_index Сделать подсписок из списка list_var и сохранить туда же
NONE_OPTIONAL var Установить пустой optional в var
PACK_OPTIONAL var, result_var Упаковать var в optional и установить в result_var
UNPACK_OPTIONAL optional_var, result_var Достать данные из optional_var и установить в result_var
LIST_SIZE list_var, result_var Получить размер списка и записать в переменную result_var типа int
STRING_SIZE string_var, result_var Получить размер строки и записать в переменную result_var типа int
MAP_SIZE map_var, result_var Получить размер мапы и записать в переменную result_var типа int

Функции

Команда Параметры Описание
FUNC result_type, func_name, [arg_name_1 arg_type] ... [arg_name_N arg_type] Создать функцию с типом результата result_type, названием func_name и аргументами [arg_name_1 arg_type] ... [arg_name_N arg_type]. Установить результат переменной можно изменив переменную result внутри функции. Все команды после этой и до FUNC_END будут командами функции. Функции внутри функций не могут быть.
RETURN Досрочно выйти из функции, также работает как выход из скрипта
FUNC_END Маркер, что команды функции тут заканчиваются
USE_FUNC func_name, result_var, [arg_var1] ... [arg_varN] Функция func вызывается с переданными аргументами и устанавливает результат в переменную result_var, если название result_var - null, то результат никуда не записывается

Создание функций

Пример функции:

FUNC result_type func_name arg_name type arg_name2 type # Создание функции
  SET_VAR result var    # Установить результат функции
  RETURN                # Для досрочного выхода из функции
FUNC_END

Логические операции

Команда Параметры Описание
EQUALS var, other_var, result_var Узнать, равен ли var и other_var записать результат в result_var
MORE var, other_var, result_var Узнать, больше ли в var чем в other_var записать результат в result_var
LESS var, other_var, result_var Узнать, меньше ли в var чем в other_var записать результат в result_var
AND var, other_var, result_var Если var и other_var равны true, то результат true, иначе false, записать результат в result_var
OR var, other_var, result_var Если var или other_var равен true, то результат true, иначе false, записать результат в result_var
NOT var, result_var Если var равен true, то результат false, иначе true, записать результат в result_var
IF bool_var, func Если var равен true то вызвать функцию func
HAS_STR string_var, substring, result_var Узнать, имеет ли строка var в себе подстроку substring и записать результат в result_var
HAS_ITEM list_var, item_var, result_var Узнать, имеет ли список list_var значение item_var и записать результат в result_var
HAS_ENTRY map_var, key_var, value_var, result_var Узнать, имеет ли мап map_var поле с ключом key_var и значением value_var и записать результат в result_var
HAS_KEY map_var, key_var, result_var Узнать, имеет ли мап map_var поле с ключом key_var и записать результат в result_var
HAS_VALUE map_var, value_var, result_var Узнать, имеет ли мап map_var поле с значением value_var и записать результат в result_var
HAS_OPTIONAL optional_var, result_var Узнать, имеет ли данные опшнл optional_var и записать результат в result_var

Циклы

Команда Параметры Описание
FOR func(int), start_index, end_index Функция func (с единственным аргументом с типом int) вызывается с start_index до end_index включительно, start_index и end_index это названия переменных
FOR_MAP func(any, any), map_var Функция func вызывается для каждого key, value переменной map_var
FOR_LIST func(any), list_var Функция func вызывается для каждого предмета переменной list_var
FOR_STRING func(char), string_var Функция func вызывается для каждого символа строки string_var
WHILE func -> bool Функция func (с результатом bool) вызывается, пока функция выдает true

Работа со стримами

Команда Параметры Описание
WRITE name_var, stream_var Вывести переменную name_var в stream_var
READ name_var, stream_var Прочитать с stream_var в переменную name_var типа list[char]/string
READ_CHAR name_var, stream_var Прочитать с stream_var один символ в переменную name_var типа char
READ_LENGTH name_var, length_var, stream_var Прочитать с stream_var ровно length_var байтов в переменную name_var типа list[char]/string
READ_ALL name_var, stream_var Прочитать с stream_var все имеющиеся байты в переменную name_var типа list[char]/string
READ_LINE name_var, stream_var Прочитать с stream_var одну строку в переменную name_var типа list[char]/string

Файлы

Команда Параметры Описание
OPEN_FILE_IN path_var, stream_var Открыть файл по пути path_var (path_var, stream_var - переменные) для чтения и записать стрим для чтения в переменную stream_var
OPEN_FILE_OUT path_var, stream_var Открыть файл по пути path_var (path_var, stream_var - переменные) для записи и записать стрим для записи в переменную stream_var

Система

Команда Параметры Описание
SLEEP time_var Ждать миллисекунд из переменной time_var (тип переменной: int)
NEW_THREAD func Вызвать функцию func в новом потоке
RANDOM min_var, max_var, result_var Получить рандомное число от min_var до max_var включительно и записать в result_var

Команды в разработке

Команда Параметры Категория Описание
FILE_EXISTS path_var, result_var Файлы Узнать существует ли файл по пути path_var и записать результат в result_var (КОМАНДА В РАЗРАБОТКЕ)
IS_FOLDER path_var, result_var Файлы Узнать является ли папкой path_var и записать результат в result_var (КОМАНДА В РАЗРАБОТКЕ)
FOLDER_LIST path_var, result_var Файлы Получить все пути до файлов внутри папки path_var и записать результат в result_var: list[string] (КОМАНДА В РАЗРАБОТКЕ)
IMPORT script_path Система Импортировать код из скрипта по пути (путь должен быть с расширением файла) (путь это переменная) (КОМАНДА В РАЗРАБОТКЕ)
IMPORT_TEXT script_text_var Система Импортировать код из текста переменной в скрипт (КОМАНДА В РАЗРАБОТКЕ)
OPEN_TCP_CONNECTION addr_var, port_var, in_stream, out_stream Нетворк Подключиться по addr_var:port_var (addr_var: string, port_var: int, in_stream: in_stream, out_stream: out_stream - переменные) и записать стримы для чтения и записи в in_stream и out_stream (КОМАНДА В РАЗРАБОТКЕ)
OPEN_TCP_LISTENER addr_var, port_var, accept_func(string,int,in_stream,out_stream) Нетворк Ожидание подключений с addr_var:port_var (addr_var: string, port_var: int - переменные), при подключениях вызывается функция accept_func (КОМАНДА В РАЗРАБОТКЕ)
Description
язык саст LOL
Readme WTFPL 110 KiB
Languages
Rust 100%