Files
FoxLang/DOCUMENTATION.md
T
SkrinVex 06bca5fcc1 doc
2026-01-21 13:28:09 +05:00

7.8 KiB

📚 Документация FoxLang v5.0

Оглавление

  1. Основы синтаксиса
  2. Переменные и Типы
  3. Пользовательские функции
  4. Математика и Логика
  5. Управляющие конструкции
  6. Массивы
  7. Модули и Импорт
  8. Встроенные функции
  9. Современный синтаксис

1. Основы синтаксиса

FoxLang использует синтаксис, похожий на C++ и Java.

  • Каждая команда обязана заканчиваться точкой с запятой ;.
  • Блоки кода выделяются фигурными скобками { ... }.
  • Комментарии начинаются с // и идут до конца строки.
  • Поддерживаются идентификаторы с подчеркиваниями (user_name, get_data).
// Это комментарий
print("Hello"); // Команда
string user_name = "john_doe"; // Современный синтаксис

2. Переменные и Типы

Язык поддерживает пять основных типов данных:

  • int — Целые числа.
  • float — Дробные числа с плавающей точкой.
  • string — Текст в двойных кавычках.
  • bool — Логический тип (true или false).
  • void — Тип для функций без возвращаемого значения.

Объявление:

int health = 100;
float gravity = 9.8;
string player_name = "Player1";
bool is_alive = true;

Присваивание:

health = 90;
gravity = 1.62;
player_name = "Player2";
is_alive = false;

3. Пользовательские функции

FoxLang поддерживает полноценные пользовательские функции с параметрами и возвратом значений.

Объявление функций

// Функция с возвращаемым значением
int add(int a, int b) {
    return a + b;
}

// Функция без возвращаемого значения
void greet(string name) {
    print("Hello, " + name + "!");
}

// Функция без параметров
string get_version() {
    return "FoxLang 5.0";
}

Вызов функций

int result = add(5, 3);
greet("Alice");
string version = get_version();
print("Version: " + version);

Рекурсивные функции

int factorial(int n) {
    if (n <= 1) {
        return 1;
    }
    return n * factorial(n - 1);
}

int fact5 = factorial(5); // 120

Локальные переменные

int calculate_area(int width, int height) {
    int area = width * height; // Локальная переменная
    return area;
}

Важно: Нельзя объявить переменную с именем, которое уже существует в текущей области видимости. При присваивании дробного значения переменной типа int, оно будет автоматически преобразовано в целое (отброшена дробная часть).


3. Математика и Логика

Поддерживаются стандартные арифметические операции с учетом приоритета.

Операторы

Оператор Описание Пример
+ Сложение / Конкатенация строк 5 + 5 или "A" + "B"
- Вычитание 10 - 2
* Умножение 2 * 2
/ Деление 10 / 2
% Остаток от деления 10 % 3 (вернет 1)
++ Инкремент (увеличение на 1) i++ (вернет старое значение, затем увеличит переменную)

Сравнение

Операторы сравнения возвращают 1 (истина) или 0 (ложь).

  • == (Равно)
  • != (Не равно)
  • < (Меньше)
  • > (Больше)

4. Управляющие конструкции

Условия (If / Else)

int x = 10;
if (x == 10) {
    print("X is ten");
} else {
    print("X is not ten");
}

Циклы (While)

Выполняет блок кода, пока условие истинно.

int i = 0;
while (i < 5) {
    print("Loop iteration: " + i);
    i++;
}

Циклы (For)

Классический цикл for, состоящий из инициализации, условия и шага.

for (int i = 0; i < 5; i++) {
    print("For loop: " + i);
}

Области видимости (Scope)

Блоки кода { ... } создают новую область видимости. Переменные, объявленные внутри блока, недоступны снаружи.

int global = 10;
{
    int local = 5;
    print(global); // 10
    print(local);  // 5
}
// print(local); // Ошибка! Переменная local не существует здесь.

5. Функции

Функции могут быть объявлены с типом возвращаемого значения или void.

Определение:

void myFunc() {
    print("Hello from function!");
}

int square(int x) {
    return x * x;
}

Вызов:

myFunc();
int result = square(5);

6. Массивы

Массивы в FoxLang имеют фиксированный размер при создании.

  1. Создание: array имя размер;
  2. Запись: set(имя, индекс, значение);
  3. Чтение: get(имя, индекс)
  4. Размер: size(имя)
array chest 3;     // Массив на 3 элемента
set(chest, 0, 55); // Записать 55 в индекс 0
print(get(chest, 0)); // Выведет 55

7. Модули и Импорт

FoxLang поддерживает импорт внешних модулей. Используйте include("путь/к/файлу.fox");.

Особенности:

  • При подключении внешних модулей код, находящийся вне функций, будет выполнен при импорте. Глобальные переменные и функции становятся доступными в текущем файле.

8. Встроенные функции

Функция Описание
print(expr) Выводит текст или результат выражения в консоль.
input() Останавливает программу и ждет ввода строки от пользователя.
round(expr) Округляет дробное число до ближайшего целого.
random() Генерирует случайное число от 0 до 99.
read_file(filename) Читает первую непустую строку из файла (игнорирует комментарии #).
http_get(url) Выполняет HTTP GET запрос и возвращает ответ сервера.
fox() Пасхалка: выводит название языка.