Фиксация мамы нолнан с сфере IT с симпатией к атусу стоещему на полигоне

с афроо лошадьми
This commit is contained in:
SkrinVex
2026-01-20 22:04:44 +05:00
parent 024444abdb
commit 4365a50cda
45 changed files with 2941 additions and 470 deletions
+115 -31
View File
@@ -1,14 +1,15 @@
# 📚 Документация FoxLang v4.0
# 📚 Документация FoxLang v5.0
## Оглавление
1. [Основы синтаксиса](#1-основы-синтаксиса)
2. [Переменные и Типы](#2-переменные-и-типы)
3. [Математика и Логика](#3-математика-и-логика)
4. [Управляющие конструкции](#4-управляющие-конструкции)
5. [Функции](#5-функции)
3. [Пользовательские функции](#3-пользовательские-функции)
4. [Математика и Логика](#4-математика-и-логика)
5. [Управляющие конструкции](#5-управляющие-конструкции)
6. [Массивы](#6-массивы)
7. [Модули и Импорт](#7-модули-и-импорт)
8. [Встроенные функции](#8-встроенные-функции)
9. [Современный синтаксис](#9-современный-синтаксис)
---
@@ -17,42 +18,108 @@ FoxLang использует синтаксис, похожий на C++ и Java
* Каждая команда **обязана** заканчиваться точкой с запятой `;`.
* Блоки кода выделяются фигурными скобками `{ ... }`.
* Комментарии начинаются с `//` и идут до конца строки.
* Поддерживаются идентификаторы с подчеркиваниями (`user_name`, `get_data`).
```cpp
// Это комментарий
print("Hello"); // Команда
string user_name = "john_doe"; // Современный синтаксис
```
---
## 2. Переменные и Типы
Язык поддерживает два основных типа данных:
Язык поддерживает пять основных типов данных:
* `int` — Целые числа (внутри хранятся как double).
* `int` — Целые числа.
* `float` — Дробные числа с плавающей точкой.
* `string` — Текст в двойных кавычках.
* `bool` — Логический тип (`true` или `false`).
* `void` — Тип для функций без возвращаемого значения.
**Объявление:**
```cpp
int health = 100;
string name = "Player1";
float gravity = 9.8;
string player_name = "Player1";
bool is_alive = true;
```
**Присваивание:**
```cpp
health = 90;
name = "Player2";
gravity = 1.62;
player_name = "Player2";
is_alive = false;
```
---
## 3. Пользовательские функции
FoxLang поддерживает полноценные пользовательские функции с параметрами и возвратом значений.
### Объявление функций
```cpp
// Функция с возвращаемым значением
int add(int a, int b) {
return a + b;
}
// Функция без возвращаемого значения
void greet(string name) {
print("Hello, " + name + "!");
}
// Функция без параметров
string get_version() {
return "FoxLang 5.0";
}
```
### Вызов функций
```cpp
int result = add(5, 3);
greet("Alice");
string version = get_version();
print("Version: " + version);
```
### Рекурсивные функции
```cpp
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int fact5 = factorial(5); // 120
```
### Локальные переменные
```cpp
int calculate_area(int width, int height) {
int area = width * height; // Локальная переменная
return area;
}
```
> **Важно:** Нельзя объявить переменную с именем, которое уже существует в текущей области видимости.
> При присваивании дробного значения переменной типа `int`, оно будет автоматически преобразовано в целое (отброшена дробная часть).
---
## 3. Математика и Логика
Поддерживаются стандартные арифметические операции с учетом приоритета (умножение/деление выполняются раньше сложения/вычитания).
Поддерживаются стандартные арифметические операции с учетом приоритета.
### Операторы
@@ -63,10 +130,11 @@ name = "Player2";
| `*` | Умножение | `2 * 2` |
| `/` | Деление | `10 / 2` |
| `%` | Остаток от деления | `10 % 3` (вернет 1) |
| `++` | Инкремент (увеличение на 1) | `i++` (вернет старое значение, затем увеличит переменную) |
### Сравнение
Операторы сравнения возвращают `1` (истина) или `0` (ложь). Работают и с числами, и со строками.
Операторы сравнения возвращают `1` (истина) или `0` (ложь).
* `==` (Равно)
* `!=` (Не равно)
@@ -96,15 +164,39 @@ if (x == 10) {
int i = 0;
while (i < 5) {
print("Loop iteration: " + i);
i = i + 1;
i++;
}
```
### Циклы (For)
Классический цикл `for`, состоящий из инициализации, условия и шага.
```cpp
for (int i = 0; i < 5; i++) {
print("For loop: " + i);
}
```
### Области видимости (Scope)
Блоки кода `{ ... }` создают новую область видимости. Переменные, объявленные внутри блока, недоступны снаружи.
```cpp
int global = 10;
{
int local = 5;
print(global); // 10
print(local); // 5
}
// print(local); // Ошибка! Переменная local не существует здесь.
```
---
## 5. Функции
Функции объявляются ключевым словом `void`. Они имеют доступ к глобальным переменным (общая память).
Функции могут быть объявлены с типом возвращаемого значения или `void`.
**Определение:**
@@ -112,12 +204,17 @@ while (i < 5) {
void myFunc() {
print("Hello from function!");
}
int square(int x) {
return x * x;
}
```
**Вызов:**
```cpp
myFunc();
int result = square(5);
```
---
@@ -132,7 +229,7 @@ myFunc();
4. **Размер:** `size(имя)`
```cpp
array chest 3; // Массив на 3 элемента [0, 0, 0]
array chest 3; // Массив на 3 элемента
set(chest, 0, 55); // Записать 55 в индекс 0
print(get(chest, 0)); // Выведет 55
```
@@ -141,27 +238,12 @@ print(get(chest, 0)); // Выведет 55
## 7. Модули и Импорт
FoxLang v4.0 поддерживает импорт внешних модулей.
FoxLang поддерживает импорт внешних модулей.
Используйте `include("путь/к/файлу.fox");`.
**Особенности:**
* **Важная информация:** При подключении внешних модулей в связи с оссобенностями c++, если в скрипте есть вызов функции в корне скрипта то она тоже будет выполнена при импорте. Это может привести к неожиданным результатам и ошибкам.
**Пример:**
`lib.fox`:
```cpp
void hello() { print("Hi!"); }
hello(); // Это выполнтся при импорте
```
`main.fox`:
```cpp
include("lib.fox");
hello(); // Мы так же можем вызывать функции из модулей.
```
* При подключении внешних модулей код, находящийся вне функций, будет выполнен при импорте. Глобальные переменные и функции становятся доступными в текущем файле.
---
@@ -173,4 +255,6 @@ hello(); // Мы так же можем вызывать функции из м
| `input()` | Останавливает программу и ждет ввода строки от пользователя. |
| `round(expr)` | Округляет дробное число до ближайшего целого. |
| `random()` | Генерирует случайное число от 0 до 99. |
| `fox()` | Пасхалка: выводит ASCII-арт лисы. |
| `read_file(filename)` | Читает первую непустую строку из файла (игнорирует комментарии #). |
| `http_get(url)` | Выполняет HTTP GET запрос и возвращает ответ сервера. |
| `fox()` | Пасхалка: выводит ASCII-арт лисы. |