World Conquest Chronicles

World Conquest Chronicles

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

Интерпретатор языка программирования Tick-tock.

Support expression evaluation with numbers and lists.

Change Log

  • commands:
    • support:
      • variable definition;
      • expression evaluation;
    • remove:
      • out command;
      • sleep command;
      • exit command;
  • 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 (%);
      • for lists:
        • in-place definition ([..., ..., ...]);
        • construction from a head and a tail (... : ...);
        • concatenation (+);
        • indexing (...[...]);
      • function call;
  • рантайм:
    • константы:
      • общие константы:
        • 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.