Интерпретатор ЯП Tick-tock, v1.1
Posted on

Интерпретатор языка программирования Tick-tock.
Support expression evaluation with numbers and lists.
Change Log
- commands:
- support:
- variable definition;
- expression evaluation;
- remove:
outcommand;sleepcommand;exitcommand;
- support:
- support expression evaluation:
- support types:
- nil;
- real numbers;
- LISP-like lists;
- strings (based on lists);
- support operations:
- for numbers:
- addition (
+); - subtraction (
-); - negation (unary
-); - multiplication (
*); - division (
/); - modulo (
%);
- addition (
- for lists:
- in-place definition (
[..., ..., ...]); - construction from a head and a tail (
... : ...); - concatenation (
+); - indexing (
...[...]);
- in-place definition (
- function call;
- for numbers:
- support types:
- рантайм:
- константы:
- общие константы:
nil: nil— значение нулевого типа;
- математические константы:
nan: num;inf: num— положительная бесконечность;pi: num;e: num;
- общие константы:
- функции:
- общие функции:
type(value: any): str— возвращает имя типа значенияvalue;
- математические функции:
floor(x: num): num;ceil(x: num): num;trunc(x: num): num;round(x: num): num;sin(x: num): num;cos(x: num): num;tn(x: num): num;arcsin(x: num): num;arccos(x: num): num;arctn(x: num): num;angle(x: num, y: num): num— atan2;pow(base: num, exponent: num): num;sqrt(x: num): num;exp(x: num): num;ln(x: num): num;lg(x: num): num;abs(x: num): num;- генерация псевдослучайных чисел:
seed(seed: num): nil— устанавливает начальное состояние генератора псевдослучайных чисел;random(): num— возвращает псевдослучайное число в диапазоне [0; 1);
- функции для работы со списками:
size(list: list<any>): num— возвращает размер (длину) спискаlist;head(list: list<any>): any— возвращает голову спискаlist; список не должен быть пустым;tail(list: list<any>): list<any>— возвращает хвост спискаlist; список не должен быть пустым;
- функции для работы со строками:
num(text: str): nil|num— парсит число из строкиtext; при ошибке парсинга будет возвращёнnil;str(value: any): str— преобразует значениеvalueв строку;strs(text: str): str— преобразует строкуtextв другую строку, экранируя её символы и окружая всю строку кавычками;strl(list: list<str>): str— преобразует список строкlistв строку, отображая при этом строки как строки;
- системные функции:
env(name: str): nil|str— возвращает значение указанной переменной окружения, если она установлена; в противном случае возвращаетсяnil;time(): num— возвращает текущее UNIX-время по UTC в секундах;sleep(duration: num): nil— останавливает выполнение скрипта наdurationсекунд;durationможет быть вещественным числом;exit(exitCode: num): nil— завершает выполнение скрипта; код возврата будет равенexitCode;- функции для ввода/вывода:
in(count: num): nil|str— считываетcountсимволов из stdin и возвращает их в виде строки; если количество будет отрицательным, то будут считаны все доступные символы; при ошибке чтения будет возвращёнnil;inln(count: num): nil|str— считываетcountсимволов из stdin и возвращает их в виде строки; если количество будет отрицательным, то будут считаны все символы до символа'\n'или, если он отсутствует, все доступные символы; при ошибке чтения будет возвращёнnil;out(text: str): nil— выводит строкуtextв stdout;outln(text: str): nil— выводит строкуtextв stdout и переводит строку (добавляет символ'\n');err(text: str): nil— выводит строкуtextв stderr;errln(text: str): nil— выводит строкуtextв stderr и переводит строку (добавляет символ'\n');
- общие функции:
- константы:
- add the new example with pi evaluation.
Описание
Репозиторий
Ссылка: https://github.com/thewizardplusplus/tick-tock/tree/v1.1.
Содержание: код, документация, инструменты (подсветка синтаксиса) и примеры.
Лицензия:
- кода — MIT;
- документации — CC BY 4.0.