Добавил документацию и лицензию
This commit is contained in:
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2025 [Your Name or Nickname]
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
@@ -0,0 +1,177 @@
|
|||||||
|
# 📚 Документация 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-арт лисы. |
|
||||||
Reference in New Issue
Block a user