Files
FoxLang/doc/DOCUMENTATION.md
T

177 lines
5.5 KiB
Markdown

# 📚 Документация FoxLang v4.0
## Оглавление
1. [Основы синтаксиса](#1-основы-синтаксиса)
2. [Переменные и Типы](#2-переменные-и-типы)
3. [Математика и Логика](#3-математика-и-логика)
4. [Управляющие конструкции](#4-управляющие-конструкции)
5. [Функции](#5-функции)
6. [Массивы](#6-массивы)
7. [Модули и Импорт](#7-модули-и-импорт)
8. [Встроенные функции](#8-встроенные-функции)
---
## 1. Основы синтаксиса
FoxLang использует синтаксис, похожий на C++ и Java.
* Каждая команда **обязана** заканчиваться точкой с запятой `;`.
* Блоки кода выделяются фигурными скобками `{ ... }`.
* Комментарии начинаются с `//` и идут до конца строки.
```cpp
// Это комментарий
print("Hello"); // Команда
```
---
## 2. Переменные и Типы
Язык поддерживает два основных типа данных:
* `int` — Целые числа (внутри хранятся как double).
* `string` — Текст в двойных кавычках.
**Объявление:**
```cpp
int health = 100;
string name = "Player1";
```
**Присваивание:**
```cpp
health = 90;
name = "Player2";
```
> **Важно:** Нельзя объявить переменную с именем, которое уже существует в текущей области видимости.
---
## 3. Математика и Логика
Поддерживаются стандартные арифметические операции с учетом приоритета (умножение/деление выполняются раньше сложения/вычитания).
### Операторы
| Оператор | Описание | Пример |
| --- | --- | --- |
| `+` | Сложение / Конкатенация строк | `5 + 5` или `"A" + "B"` |
| `-` | Вычитание | `10 - 2` |
| `*` | Умножение | `2 * 2` |
| `/` | Деление | `10 / 2` |
| `%` | Остаток от деления | `10 % 3` (вернет 1) |
### Сравнение
Операторы сравнения возвращают `1` (истина) или `0` (ложь). Работают и с числами, и со строками.
* `==` (Равно)
* `!=` (Не равно)
* `<` (Меньше)
* `>` (Больше)
---
## 4. Управляющие конструкции
### Условия (If / Else)
```cpp
int x = 10;
if (x == 10) {
print("X is ten");
} else {
print("X is not ten");
}
```
### Циклы (While)
Выполняет блок кода, пока условие истинно.
```cpp
int i = 0;
while (i < 5) {
print("Loop iteration: " + i);
i = i + 1;
}
```
---
## 5. Функции
Функции объявляются ключевым словом `void`. Они имеют доступ к глобальным переменным (общая память).
**Определение:**
```cpp
void myFunc() {
print("Hello from function!");
}
```
**Вызов:**
```cpp
myFunc();
```
---
## 6. Массивы
Массивы в FoxLang имеют фиксированный размер при создании.
1. **Создание:** `array имя размер;`
2. **Запись:** `set(имя, индекс, значение);`
3. **Чтение:** `get(имя, индекс)`
4. **Размер:** `size(имя)`
```cpp
array chest 3; // Массив на 3 элемента [0, 0, 0]
set(chest, 0, 55); // Записать 55 в индекс 0
print(get(chest, 0)); // Выведет 55
```
---
## 7. Модули и Импорт
FoxLang v4.0 поддерживает умный импорт.
Используйте `include("путь/к/файлу.fox");`.
**Особенности:**
* Поддерживаются **относительные пути** (например, `../lib/utils.fox`).
* **Режим Импорта:** При подключении файла интерпретатор выполняет **только** объявления переменных и функций. Команды вызова функций или `print` внутри подключаемого файла **игнорируются**. Это позволяет безопасно подключать библиотеки, содержащие тестовый код.
**Пример:**
`lib.fox`:
```cpp
void hello() { print("Hi!"); }
hello(); // ЭТО НЕ ВЫПОЛНИТСЯ ПРИ ИМПОРТЕ
```
`main.fox`:
```cpp
include("lib.fox");
hello(); // А вот теперь мы вызываем функцию сами
```
---
## 8. Встроенные функции
| Функция | Описание |
| --- | --- |
| `print(expr)` | Выводит текст или результат выражения в консоль. |
| `input()` | Останавливает программу и ждет ввода строки от пользователя. |
| `round(expr)` | Округляет дробное число до ближайшего целого. |
| `random()` | Генерирует случайное число от 0 до 99. |
| `fox()` | Пасхалка: выводит ASCII-арт лисы. |