Files
FoxLang/doc/DOCUMENTATION.md
2026-01-15 19:10:16 +05:00

177 lines
5.3 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");`.
**ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:**
* **ВаТная информация:** ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² связи с оссобСнностями c++, Ссли Π² скриптС Π΅ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅ скрипта Ρ‚ΠΎ ΠΎΠ½Π° Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ ΠΈ ошибкам.
**ΠŸΡ€ΠΈΠΌΠ΅Ρ€:**
`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-Π°Ρ€Ρ‚ лисы. |