Files
FoxLang/README.md
T
2026-01-22 21:31:57 +05:00

172 lines
5.3 KiB
Markdown

# 🦊 FoxLang
![Version](https://img.shields.io/badge/version-5.0.1-orange) ![Language](https://img.shields.io/badge/language-C++17-blue) ![License](https://img.shields.io/badge/license-MIT-green)
**FoxLang** β€” соврСмСнный ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмы ΠΈ строгой Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.
## ✨ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ возмоТности
- **πŸ”§ ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:** Полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
- **πŸ“ ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ систСма:** ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Ρ‡Π΅Ρ€Π΅Π· `include("lib.fox")` с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
- **πŸ”€ Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ синтаксис:** Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ с подчСркиваниями (`user_name`, `get_data`)
- **πŸ“¦ ΠœΠ°ΡΡΠΈΠ²Ρ‹:** ВстроСнная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° создания, чтСния ΠΈ записи массивов
- **πŸ”„ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ:** Π¦ΠΈΠΊΠ»Ρ‹ `while`, `for` ΠΈ условия `if/else`
- **πŸ”’ Бтрогая типизация:** `int`, `float`, `string`, `bool`, `void` с автоматичСским ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ
- **🧠 ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹:** ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° `&&`, `||`, `!` для boolean Π»ΠΎΠ³ΠΈΠΊΠΈ
- **πŸ›  Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ:** Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΊΡ€Π°ΡˆΠ΅ΠΉ, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ошибки синтаксиса
- **🎲 ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:** ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°, Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, гСнСрация чисСл, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²
## πŸš€ Быстрый старт
### 1. Π‘Π±ΠΎΡ€ΠΊΠ°
```bash
cd src
g++ main.cpp Lexer.cpp Parser.cpp -o foxlang
```
### 2. Запуск
```bash
./foxlang script.fox
```
## πŸ’» ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°
### ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
```cpp
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
void main() {
int result = factorial(5);
print("5! = " + result);
}
main();
```
### Π Π°Π±ΠΎΡ‚Π° с массивами
```cpp
void bubble_sort(array arr, int size) {
int i = 0;
while (i < size - 1) {
int j = 0;
while (j < size - i - 1) {
if (get(arr, j) > get(arr, j + 1)) {
int temp = get(arr, j);
set(arr, j, get(arr, j + 1));
set(arr, j + 1, temp);
}
j = j + 1;
}
i = i + 1;
}
}
```
### ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½Π°Ρ систСма
```cpp
// math_lib.fox
int add(int a, int b) {
return a + b;
}
float average(int a, int b) {
return (a + b) / 2.0;
}
// main.fox
include("math_lib.fox");
int sum = add(10, 20);
float avg = average(15, 25);
print("Sum: " + sum + ", Average: " + avg);
```
### Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²
```cpp
// config.txt содСрТит: server_port=8080
string config = read_file("config.txt");
print("Config: " + config);
// ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ чтСния
if (config != "") {
print("βœ… Config loaded successfully");
} else {
print("❌ Failed to load config");
}
```
### FastAPI-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π²Π΅Π±-сСрвСр
```cpp
// ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ сСтСвой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
include("src/net.fox");
// ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ API
void api_home() {
json_response("{\"message\":\"🦊 Welcome to FoxLang API!\"}");
}
void api_users() {
json_response("{\"users\":[{\"id\":1,\"name\":\"Alice\"}]}");
}
// Запуск сСрвСра
void main() {
start_server(8080);
register_get("/", "api_home");
register_get("/users", "api_users");
print("πŸš€ Server: http://localhost:8080");
}
main();
```
## πŸ“‚ Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°
* `src/` β€” Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° (C++)
* `test/` β€” ВСсты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
* `doc/` β€” ДокумСнтация
* `CHANGELOG.md` β€” Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
* `DOCUMENTATION.md` β€” Полная докумСнтация языка
## πŸ€– Telegram Bot
FoxLang поставляСтся с Telegram Π±ΠΎΡ‚ΠΎΠΌ, написанным Π½Π° чистом FoxLang!
### Быстрый запуск Π±ΠΎΡ‚Π°:
```bash
# НастройтС Ρ‚ΠΎΠΊΠ΅Π½ Π±ΠΎΡ‚Π°
cd telegram_bot
nano token.txt # Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ‚ΠΎΠΊΠ΅Π½ ΠΎΡ‚ @BotFather
# ЗапуститС Π±ΠΎΡ‚Π°
./run_bot.sh
```
ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅: [telegram_bot/README.md](telegram_bot/README.md)
## πŸ§ͺ ВСстированиС
```bash
# Запуск всСх тСстов
./test_all.sh
# ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ тСсты
./src/foxlang test/variables.fox # ВСст ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ‚ΠΈΠΏΠΎΠ²
./src/foxlang test/functions.fox # ВСст ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
./src/foxlang test/arrays.fox # ВСст массивов
./src/foxlang test/control_flow.fox # ВСст Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈ условий
./src/foxlang test/math_operations.fox # ВСст матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ
./src/foxlang test/modules.fox # ВСст ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ систСмы
./src/foxlang test/builtin_functions.fox # ВСст встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
```
---
**Author:** [SkrinVex](https://skrinvex.su)
**License:** MIT